Fdisk مخفف "fixed disk" یا "format disk" است و یکی از رایج ترین ابزارهای خط فرمان مدیریت دیسک برای سیستم های linux/unix میباشد. با کمک دستور fdisk و با استفاده از اینترفیس کاربر پسند، شما میتوانید پارتیشن های روی یک هارد درایو را مشاهده، ایجاد، تغییر سایز، حذف، تغییر، فرمت، کپی و انتقال دهید.
Fdisk به منظور ایجاد فضا برای پارتیشن های جدید، مدیریت فضا برای درایورهای جدید، سازماندهی مجدد یک درایو قدیمی و کپی یا انتقال دیتا به دیسک های جدید بسیار مفید است. این ابزاربا توجه به سایز هارد دیسکی که روی سیستم تان دارید به شما امکان ایجاد حداکثر 4 پارتیشن جدید Primary و تعددای پارتیشن های logical (پارتیشن extended) را میدهد.
در این پست 10 دستور پایه از fdisk را برای مدیریت یک پارتیشن در سیستم عامل های لینوکس را مورد بحث قرار خواهیم داد. شما باید با کاربر root لاگین باشید تا بتوانید دستور fdisk را اجرا کنید در غیر اینصورت شما خطای "command not found" را دریافت خواهید کرد.
هشدار : تا زمانیکه نمیدانید دقیقا باید چکار کنید، پارتیشن ها را ایجاد، حذف یا تغییر ندهید. در صورتی که تسلط کافی بر روی دستورات ندارید پیشنهاد میشود از ابزارهای گرافیکی مانند GParted استفاده کنید.
همچنین توصیه میشود مطالعه کنید :
معرفی ابزارهای مختلف پارتیشن بندی در لینوکس
ابزار گرافیکی GParted برای پارتیشن بندی هارد در لینوکس
آموزش کامل پارتیشن بندی هارد دیسک با LVM (در 6 بخش آموزشی)
1 - نمایش همه پارتیشن های دیسک در لینوکس
کامند ابتدایی زیر تمامی پارتیشن های موجود روی دیسک سیستم تان را لیست میکند. آپشن -l (مخفف listing all partitions) برای نمایش تمامی پارتیشن های موجود روی لینوکس استفاده میشود. پارتیشن ها با نام دیوایس شان نمایش داده میشوند به طور مثال /dev/sda & /dev/sdb یا /dev/sdc
2 - نمایش پارتیشن های یک دیسک خاص در لینوکس
برای نمایش تمام پارتیشن های یک هارد دیسک مشخص از آپشن -l به همراه نام دیوایس استفاده کنید.به طور مثال دستور زیر تمام پارتیشن های دیوایس /dev/sda را نمایش میدهد. اگر شما نام دیوایس تان متفاوت هست باید به آسانی به جای sda آنرا جایگزین کنید. همانند /dev/sdb یا /dev/sdc
3 - بررسی تمام دستورات موجود fdisk
اگر بخواهید تمامی دستوراتی که برای fdisk موجود است را مشاهده کنید به آسانی از دستور زیر و با استفاده از نام هارد دیسک همانند /dev/sda همانطور که در زیر نشان داده شده استفاده کنید. دستور زیر خروجی شبیه به زیر به شما میدهد.
برای مشاهده لیست تمامی دستورات موجود در fdisk که میتوان روی هارد دیسک /dev/sda اعمال کرد از "m" استفاده میکنیم. بعد از اینکه من "m" را در صفحه تایپ کردم و اینتر زدم تمامی گزینه های موجود برای fdisk که میتوانید روی دیوایس /dev/sda استفاده کنید قابل مشاهده هستند.
4 - نمایش پارتیشن تیبل در لینوکس
برای نمایش کل partition table هارد دیسک شما باید از دستور زیر به همراه نام dev/sda استفاده کنید.
در همان مد کامند به جای "m"که در مرحله قبلتر استفاده کردیم از "p" استفاده میکنیم. بعد از اینکه من p را وارد کردم پارتیشن تیبل دیسک /dev/sda نمایش داده خواهد شد.
5 - نحوه حذف یک پارتیشن در لینوکس
اگر شما بخواهید یک پارتیشن خاص را (به طور مثال /dev/sda4) از هارد دیسک مشخص مانند /dev/sda حذف کنید ابتدا باید وارد مد دستور fdisk شوید :
سپس برای حذف هر پارتیشن از سیستم از حرف "d" استفاده میکنیم. بعد از اینکه من "d" را وارد کردم برنامه از من میخواهد که شماره پارتیشنی که میخواهم از هارد دیسک /dev/sda حذف کنم را وارد کنم. فرض کنید من در اینجا شماره 4 را وارد میکنم سپس پارتیشن شماره 4 دیسک (به طور مثال /dev/sda4) حذف خواهد شد و فضای خالی آن در پارتیشن تیبل نمایش داده خواهد شد. تغییرات جدید تنها بعد از ریبوت بعدی سیستم اعمال خواهد شد. سپس "w" را وارد کنید تا تغییرات جدید ذخیره شوند و بعد از ریبوت سیستم اعمال گردد. تمامی موارد بالا به سادگی در زیر قابل فهم هستند.
اخطار : زمانی که در حال اجرا کردن این مرحله هستید مراقب باشید زیرا استفاده از آپشن "d" به صورت کامل پارتیشن را از سیستم حذف میکند در نتیجه ممکن است تمامی دیتا روی پارتیشن را از دست بدهید.
6 - نحوه ایجاد یک پارتیشن جدید در لینوکس
اگر روی دیوایس تان مثلا /dev/sda فضای آزاد باقی مانده دارید و میخواهید که یک پارتیشن جدید تحت آن ایجاد کنید شما باید ابتدا در مد کامندی fdisk وارد شوید. دقت کنید نام دیسک مورد نظر (/dev/sda) را به همراه fdisk همانطور که درزیر مشاهده میکنید وارد کنید.
بعد از وارد شدن به مد دستور برای ایجاد یک پارتیشن جدید تحت دیسک /dev/sda و با سایز مشخص همانطور که در خروجی دستور زیر میبینید "n" را وارد میکنیم.
در طول ایجاد یک پارتیشن جدید، از شما دو آپشن در ایجاد پارتیشن میپرسد : extended یا primary
برای پارتیشن extended از "e" و برای پارتیشن primary از "p" استفاده کنید. سپس از شما میخواهد که شماره پارتیشن خود (Partition number (1-4, default 1)) را وارد کنید. در صورتی که عددی وارد نکنید و Enter را بزنید، برنامه fdisk به صورت پیش فرض عدد 1 را انتخاب خواهد کرد. یک دیسک فقط 4 پارتیشن primary میتواند داشته باشد. (عدد 1 تا 4 برای primary اختصاص داده شده است)
سپس از شما میخواهد که دو ورودی زیر را وارد کنید :
شما میتوانید سایز پارتیشن را با اضافه کردن +5000M در قسمت Last sector نیز وارد کنید. در اینجا + یعنی جمع و 5000M یعنی سایز پارتیشن جدید (یعنی 5000 MB). لطفا در خاطر داشته باشید که بعد از ایجاد یک پارتیشن جدید کامند "w" را برای ذخیره کردن تغییرات جدید روی پارتیشن تیبل اجرا کنید و در نهایت سیستم تان را برای اعمال تغییرا ت پارتیشن جدید reboot کنید.
نکته : در صورتی که هارد دیسک خود را برای نصب لینوکس پارتیشن میکنید، شما با روش بالا یک پارتیشن "/" و "swap" ایجاد کنید. اگر قصد دارید پارتیشن های دیگری همانند home / var و غیره نیز اضافه کنید، برای این موارد ابتدا یک پارتیشن extended ایجاد کنید، سپس پارتیشن های home، var و ... را با عنوان lgical درون extended ایجاد کنید. برای اینکه بهتر متوجه شوید در زیر من یک سناریو مثال میزنم. فرض کنید یک دیسک 4GB داریم و میخواهیم آنرا برای نصب لینوکس پارتیشن کنیم. من 1GB به پارتیشن root اختصاص میدهم و 2.5GB هم به پارتیشن home اختصاص میدهم و مابقی فضا را هم به عنوان پارتیشن swap در نظر میگیرم. بعد از ایجاد پارتیشن extended دوم که برای /home در نظر گرفتیم ما باید logical drive های خود را ایجاد کنیم. به همین منظور بعد از ایجاد پارتیشن های primery و extended وقتی حرف "n" را برای ایجاد پارتیشن جدید وارد میکنید از شما میخواهد که درایور logical خود را بسازید. (درایو primary مثل درایو C ویندوز هست و درایوهای logical همانند مابقی پارتیشن ها D, E, F و ... هستند. در اصل شما ابتدا باید primary خود را ایجاد کنید، سپس extended را ایجاد کرده و درون extended باید پارتیشن های logical خود را ایجاد کنید. برای درک بهتر به عکس زیر توجه فرمایید.)
7 - نحوه عوض کردن Type یک پارتیشن در لینوکس
وقتی شما یک پارتیشنی را ایجاد میکنید به صورت پیش فرض type آن را برنامه fdisk بنابر نوع پارتیشن آن را ایجاد میکند. مثلا شما فرض کنید یک پارتیشن برای swap ایجاد کرده اید و میخواهید type آنرا هم به swap تغییر دهید. برای این کار بعد از وارد شدن به مد fdisk هارد دیسک مورد نظرتان، دستور "t" را وارد کنید سپس از شما میخواهد که شماره پارتیشنی که قصد دارید تایپ آنرا عوض کنید انتخاب کرده، در اینجا من پارتیشن شماره 3 خود را میخواهم type آنرا تغییر دهم. بعد از وارد کردن شماره پارتیشن از شما میخواهد که type code خود را انتخاب کنید. در صورتی که type code را نمیدانید میتوانید حرف "L" را تایپ کنید که لیست آنها را به شما نمایش دهد.
با تایپ کردن "p" میتوانید بررسی کنید که type پارتیشن شما تغییر کرده است.
8 - نحوه فرمت یک پارتیشن در لینوکس
بعد از اینکه پارتیشن جدید ایجاد شد فراموش نکنید که آنرا با استفاده از دستور mkfs فرمت کنید. دستور زیر را در ترمینال برای فرمت یک پارتیشن وارد کنید در اینجا پارتیشن جدیدا ساخته شده ما /dev/sda4 میباشد.
9 - نحوه چک کردن سایز یک پارتیشن در لینوکس
بعد از فرمت کردن پارتیشن جدید سایز آنرا با استفاده از آپشن -s (برای نمایش سایز in block) و به همراه دستور fdisk بررسی میکنیم. به این شیوه شما میتوانید سایز هر پارتیشنی را بررسی کنید.
10 - نحوه تعمیر order پارتیشن تیبل
اگر شما یک پارتیشن logical را حذف کرده باشید و مجدد آنرا ایجاد کنید شما ممکن است با مشکل "partition out of order" یا پیغام خطای شبیه به "partition table entries are not in disk order" رو به رو شوید.
به طور مثال زمانیکه سه پارتیشن logical همانند sda4 & sda5 و sda6 حذف شده باشند و پارتیشن جدید ایجاد شده باشد شما ممکن است انتظار داشته باشید نام پارتیشن جدید sda4 باشد. اما سیستم آنرا با عنوان sda5 ایجاد میکند. این به این دلیل است که بعد از حذف پارتیشن ها، پارتیشن sda7 با عنوان sda4 انتقال یافته و فضای خالی به انتهای دیسک منتقل شده است.
برای رفع مشکل order پارتیشن و اختصاص دادن sda4 به پارتیشن جدیدا ایجاد شده x را برای وارد شدن به یک بخش کاربردی وارد کنید و سپس از دستور پیشرفته "f" برای fix کردن order پارتیشن تیبل را همانند زیر استفاده کنید.
بعد از اجرا کردن دستور "f" فراموش نکنید که برای ذخیره کردن و خارج شدن از مد دستور fdisk حرف "w" را تایپ کنید. بعد از اینکه order در پارتیشن تیبل درست شد شما دیگر پیغام خطا را دریافت نخواهید کرد.
11 - نحوه غیر فعال کردن Boot Flag (*) در یک پارتیشن
به صورت پیش فرض fdisk علامت boot flag (به طور مثال *) روی هر پارتیشن را نمایش میده اگر شما بخواهید که boot flag را روی پارتیشن خاص فعال یا غیر فعال کنید همانند مراحل زیر پیش بروید.
سپس برای نمایش پارتیشن تیبل جاری "p" را فشار دهید شما خواهید دید که یک flag بوت (علامت ستاره "*" به رنگ نارنجی) روی دیسک /dev/sda1 موجود است.
سپس کامند 'a' را برای غیر فعال کردن boot flag وارد کنید و بعد از آن شماره پارتیشن را مشخص نمایید در اینجا ما از 1 استفاده میکنیم زیرا پارتیشن مورد نظرمان /dev/sda1 میباشد. با این کار boot flag روی پارتیشن /dev/sda1 غیرفعال خواهد شد. flag ستاره نیز حذف خواهد شد.
من تمام تلاشم را کردم که اکثر همه کامندهای پایه fdisk را در این پست عنوان کنم اما همچنان fdisk شامل تنوعی از دستورات حرفه ای و پیشرفته ای است که شما میتوانید با استفاده از دستور x در مد کامند لاین fdisk استفاده کنید. برای جزییات بیشتر صفحه man دستور fdisk را در ترمینال بررسی کنید.
همچنین توصیه میشود مطالعه کنید :
نحوه بازیابی فایل های حذف شده در Linux
نحوه پیدا کردن بدسکتور (Bad Sector / Bad Block ها) در هارد دیسک لینوکس
نحوه Defragment کردن هارد در لینوکس (تعمیر و Defrag پارتیشن ها و دایرکتوری ها)
دستور df در لینوکس برای نمایش فضای مصرفی دیسک به همراه 12 مثال عملی
دستور du در لینوکس برای پیدا کردن فضای مصرفی توسط فایل ها و دایرکتوری ها
اگر هر بخش مهمی از این دستور را فراموش کردم باعث خوشحالیست که شما آنرا کامل کنید.
Fdisk به منظور ایجاد فضا برای پارتیشن های جدید، مدیریت فضا برای درایورهای جدید، سازماندهی مجدد یک درایو قدیمی و کپی یا انتقال دیتا به دیسک های جدید بسیار مفید است. این ابزاربا توجه به سایز هارد دیسکی که روی سیستم تان دارید به شما امکان ایجاد حداکثر 4 پارتیشن جدید Primary و تعددای پارتیشن های logical (پارتیشن extended) را میدهد.
در این پست 10 دستور پایه از fdisk را برای مدیریت یک پارتیشن در سیستم عامل های لینوکس را مورد بحث قرار خواهیم داد. شما باید با کاربر root لاگین باشید تا بتوانید دستور fdisk را اجرا کنید در غیر اینصورت شما خطای "command not found" را دریافت خواهید کرد.
هشدار : تا زمانیکه نمیدانید دقیقا باید چکار کنید، پارتیشن ها را ایجاد، حذف یا تغییر ندهید. در صورتی که تسلط کافی بر روی دستورات ندارید پیشنهاد میشود از ابزارهای گرافیکی مانند GParted استفاده کنید.
همچنین توصیه میشود مطالعه کنید :
معرفی ابزارهای مختلف پارتیشن بندی در لینوکس
ابزار گرافیکی GParted برای پارتیشن بندی هارد در لینوکس
آموزش کامل پارتیشن بندی هارد دیسک با LVM (در 6 بخش آموزشی)
1 - نمایش همه پارتیشن های دیسک در لینوکس
کامند ابتدایی زیر تمامی پارتیشن های موجود روی دیسک سیستم تان را لیست میکند. آپشن -l (مخفف listing all partitions) برای نمایش تمامی پارتیشن های موجود روی لینوکس استفاده میشود. پارتیشن ها با نام دیوایس شان نمایش داده میشوند به طور مثال /dev/sda & /dev/sdb یا /dev/sdc
کد PHP:
[root@linux-zone.org ~]# fdisk -l
Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 2624 20972857+ 83 Linux
/dev/sda3 2625 4582 15727635 83 Linux
/dev/sda4 4583 77541 586043167+ 5 Extended
/dev/sda5 4583 5887 10482381 83 Linux
/dev/sda6 5888 7192 10482381 83 Linux
/dev/sda7 7193 7845 5245191 83 Linux
/dev/sda8 7846 8367 4192933+ 82 Linux swap / Solaris
/dev/sda9 8368 77541 555640123+ 8e Linux LVM
Disk /dev/sdb: 3.8 GiB, 4009754624 bytes, 7831552 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1c01bde6
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8064 7831551 7823488 3.7G b W95 FAT32
2 - نمایش پارتیشن های یک دیسک خاص در لینوکس
برای نمایش تمام پارتیشن های یک هارد دیسک مشخص از آپشن -l به همراه نام دیوایس استفاده کنید.به طور مثال دستور زیر تمام پارتیشن های دیوایس /dev/sda را نمایش میدهد. اگر شما نام دیوایس تان متفاوت هست باید به آسانی به جای sda آنرا جایگزین کنید. همانند /dev/sdb یا /dev/sdc
کد PHP:
[root@linux-zone.org ~]# fdisk -l /dev/sda
Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 2624 20972857+ 83 Linux
/dev/sda3 2625 4582 15727635 83 Linux
/dev/sda4 4583 77541 586043167+ 5 Extended
/dev/sda5 4583 5887 10482381 83 Linux
/dev/sda6 5888 7192 10482381 83 Linux
/dev/sda7 7193 7845 5245191 83 Linux
/dev/sda8 7846 8367 4192933+ 82 Linux swap / Solaris
/dev/sda9 8368 77541 555640123+ 8e Linux LVM
3 - بررسی تمام دستورات موجود fdisk
اگر بخواهید تمامی دستوراتی که برای fdisk موجود است را مشاهده کنید به آسانی از دستور زیر و با استفاده از نام هارد دیسک همانند /dev/sda همانطور که در زیر نشان داده شده استفاده کنید. دستور زیر خروجی شبیه به زیر به شما میدهد.
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help):
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help):
4 - نمایش پارتیشن تیبل در لینوکس
برای نمایش کل partition table هارد دیسک شما باید از دستور زیر به همراه نام dev/sda استفاده کنید.
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
کد PHP:
Command (m for help): p
Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 2624 20972857+ 83 Linux
/dev/sda3 2625 4582 15727635 83 Linux
/dev/sda4 4583 77541 586043167+ 5 Extended
/dev/sda5 4583 5887 10482381 83 Linux
/dev/sda6 5888 7192 10482381 83 Linux
/dev/sda7 7193 7845 5245191 83 Linux
/dev/sda8 7846 8367 4192933+ 82 Linux swap / Solaris
/dev/sda9 8368 77541 555640123+ 8e Linux LVM
Command (m for help):
5 - نحوه حذف یک پارتیشن در لینوکس
اگر شما بخواهید یک پارتیشن خاص را (به طور مثال /dev/sda4) از هارد دیسک مشخص مانند /dev/sda حذف کنید ابتدا باید وارد مد دستور fdisk شوید :
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): d
Partition number (1-4): 4
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
You have new mail in /var/spool/mail/root
6 - نحوه ایجاد یک پارتیشن جدید در لینوکس
اگر روی دیوایس تان مثلا /dev/sda فضای آزاد باقی مانده دارید و میخواهید که یک پارتیشن جدید تحت آن ایجاد کنید شما باید ابتدا در مد کامندی fdisk وارد شوید. دقت کنید نام دیسک مورد نظر (/dev/sda) را به همراه fdisk همانطور که درزیر مشاهده میکنید وارد کنید.
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
برای پارتیشن extended از "e" و برای پارتیشن primary از "p" استفاده کنید. سپس از شما میخواهد که شماره پارتیشن خود (Partition number (1-4, default 1)) را وارد کنید. در صورتی که عددی وارد نکنید و Enter را بزنید، برنامه fdisk به صورت پیش فرض عدد 1 را انتخاب خواهد کرد. یک دیسک فقط 4 پارتیشن primary میتواند داشته باشد. (عدد 1 تا 4 برای primary اختصاص داده شده است)
سپس از شما میخواهد که دو ورودی زیر را وارد کنید :
- شماره اولین سکتور (First sector) پارتیشنی که میخواهیم ایجاد کنیم. (اگر عددی وارد نکنید و Enter را بزنید، برنامه fdisk به صورت پیش فرض اولین سکتور نمایش داده شده را انتخاب خواهد کرد.)
- و سپس شماره آخرین سکتور (Last sector) پارتیشنی که میخواهیم ایجاد کنیم. (اگر عددی وارد نکنید و Enter را بزنید، برنامه fdisk به صورت پیش فرض آخرین سکتور نمایش داده شده را انتخاب خواهد کرد.)
کد PHP:
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-7831551, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-7831551, default 7831551):+5000M
Created a new partition 1 of type 'Linux' and of size 5.3 GiB.
Command (m for help):
کد PHP:
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
نکته : در صورتی که هارد دیسک خود را برای نصب لینوکس پارتیشن میکنید، شما با روش بالا یک پارتیشن "/" و "swap" ایجاد کنید. اگر قصد دارید پارتیشن های دیگری همانند home / var و غیره نیز اضافه کنید، برای این موارد ابتدا یک پارتیشن extended ایجاد کنید، سپس پارتیشن های home، var و ... را با عنوان lgical درون extended ایجاد کنید. برای اینکه بهتر متوجه شوید در زیر من یک سناریو مثال میزنم. فرض کنید یک دیسک 4GB داریم و میخواهیم آنرا برای نصب لینوکس پارتیشن کنیم. من 1GB به پارتیشن root اختصاص میدهم و 2.5GB هم به پارتیشن home اختصاص میدهم و مابقی فضا را هم به عنوان پارتیشن swap در نظر میگیرم. بعد از ایجاد پارتیشن extended دوم که برای /home در نظر گرفتیم ما باید logical drive های خود را ایجاد کنیم. به همین منظور بعد از ایجاد پارتیشن های primery و extended وقتی حرف "n" را برای ایجاد پارتیشن جدید وارد میکنید از شما میخواهد که درایور logical خود را بسازید. (درایو primary مثل درایو C ویندوز هست و درایوهای logical همانند مابقی پارتیشن ها D, E, F و ... هستند. در اصل شما ابتدا باید primary خود را ایجاد کنید، سپس extended را ایجاد کرده و درون extended باید پارتیشن های logical خود را ایجاد کنید. برای درک بهتر به عکس زیر توجه فرمایید.)
کد PHP:
Command (m for help): n => create new "primery" partition (/root)
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-7831551, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-7831551, default 7831551): +1500M
Created a new partition 1 of type 'Linux' and of size 1.5 GiB.
Command (m for help): n => create new "extended" partition (/swap)
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2): 2
First sector (3074048-7831551, default 3074048):
Last sector, +sectors or +size{K,M,G,T,P} (3074048-7831551, default 7831551): +2048MB
Created a new partition 2 of type 'Extended' and of size 1.9 GiB.
Command (m for help): n => create new "primery" partition (/home)
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): p
Partition number (3,4, default 3): 3
First sector (7073792-7831551, default 7073792):
Last sector, +sectors or +size{K,M,G,T,P} (7073792-7831551, default 7831551):
Created a new partition 3 of type 'Linux' and of size 370 MiB.
Command (m for help): n => create new "logical" partition (/home)
All space for primary partitions is in use.
Adding logical partition 5
First sector (3076096-7073791, default 3076096):
Last sector, +sectors or +size{K,M,G,T,P} (3076096-7073791, default 7073791):
Created a new partition 5 of type 'Linux' and of size 1.9 GiB.
Command (m for help): p
Disk /dev/sdb: 3.8 GiB, 4009754624 bytes, 7831552 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf7772fb3
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 3074047 3072000 1.5G 83 Linux
/dev/sdb2 3074048 7073791 3999744 1.9G 5 Extended
/dev/sdb3 7073792 7831551 757760 370M 83 Linux
/dev/sdb5 3076096 7073791 3997696 1.9G 83 Linux
Filesystem/RAID signature on partition 1 will be wiped.
Filesystem/RAID signature on partition 5 will be wiped.
Partition table entries are not in disk order.
Command (m for help):
7 - نحوه عوض کردن Type یک پارتیشن در لینوکس
وقتی شما یک پارتیشنی را ایجاد میکنید به صورت پیش فرض type آن را برنامه fdisk بنابر نوع پارتیشن آن را ایجاد میکند. مثلا شما فرض کنید یک پارتیشن برای swap ایجاد کرده اید و میخواهید type آنرا هم به swap تغییر دهید. برای این کار بعد از وارد شدن به مد fdisk هارد دیسک مورد نظرتان، دستور "t" را وارد کنید سپس از شما میخواهد که شماره پارتیشنی که قصد دارید تایپ آنرا عوض کنید انتخاب کرده، در اینجا من پارتیشن شماره 3 خود را میخواهم type آنرا تغییر دهم. بعد از وارد کردن شماره پارتیشن از شما میخواهد که type code خود را انتخاب کنید. در صورتی که type code را نمیدانید میتوانید حرف "L" را تایپ کنید که لیست آنها را به شما نمایش دهد.
کد PHP:
Command (m for help): p
Disk /dev/sdb: 3.8 GiB, 4009754624 bytes, 7831552 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf7772fb3
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 3907583 3905536 1.9G 83 Linux
/dev/sdb2 3907584 6838271 2930688 1.4G 5 Extended
/dev/sdb3 6838272 7831551 993280 485M 83 Linux
/dev/sdb5 3909632 6838271 2928640 1.4G 83 Linux
Filesystem/RAID signature on partition 3 will be wiped.
Partition table entries are not in disk order.
Command (m for help): t
Partition number (1-3,5, default 5): 3
Hex code (type L to list all codes): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden or c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi ea Rufus alignment
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fd Linux raid auto
1c Hidden W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep
1e Hidden W95 FAT1 80 Old Minix be Solaris boot ff BBT
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'.
کد PHP:
Command (m for help): p
Disk /dev/sdb: 3.8 GiB, 4009754624 bytes, 7831552 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf7772fb3
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 3907583 3905536 1.9G 83 Linux
/dev/sdb2 3907584 6838271 2930688 1.4G 5 Extended
/dev/sdb3 6838272 7831551 993280 485M 82 Linux swap / Solaris
/dev/sdb5 3909632 6838271 2928640 1.4G 83 Linux
8 - نحوه فرمت یک پارتیشن در لینوکس
بعد از اینکه پارتیشن جدید ایجاد شد فراموش نکنید که آنرا با استفاده از دستور mkfs فرمت کنید. دستور زیر را در ترمینال برای فرمت یک پارتیشن وارد کنید در اینجا پارتیشن جدیدا ساخته شده ما /dev/sda4 میباشد.
کد PHP:
[root@linuxzone ~]# mkfs.ext4 /dev/sda4
9 - نحوه چک کردن سایز یک پارتیشن در لینوکس
بعد از فرمت کردن پارتیشن جدید سایز آنرا با استفاده از آپشن -s (برای نمایش سایز in block) و به همراه دستور fdisk بررسی میکنیم. به این شیوه شما میتوانید سایز هر پارتیشنی را بررسی کنید.
کد PHP:
[root@linuxzone ~]# fdisk -s /dev/sda2
5194304
10 - نحوه تعمیر order پارتیشن تیبل
اگر شما یک پارتیشن logical را حذف کرده باشید و مجدد آنرا ایجاد کنید شما ممکن است با مشکل "partition out of order" یا پیغام خطای شبیه به "partition table entries are not in disk order" رو به رو شوید.
به طور مثال زمانیکه سه پارتیشن logical همانند sda4 & sda5 و sda6 حذف شده باشند و پارتیشن جدید ایجاد شده باشد شما ممکن است انتظار داشته باشید نام پارتیشن جدید sda4 باشد. اما سیستم آنرا با عنوان sda5 ایجاد میکند. این به این دلیل است که بعد از حذف پارتیشن ها، پارتیشن sda7 با عنوان sda4 انتقال یافته و فضای خالی به انتهای دیسک منتقل شده است.
برای رفع مشکل order پارتیشن و اختصاص دادن sda4 به پارتیشن جدیدا ایجاد شده x را برای وارد شدن به یک بخش کاربردی وارد کنید و سپس از دستور پیشرفته "f" برای fix کردن order پارتیشن تیبل را همانند زیر استفاده کنید.
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): x
Expert command (m for help): f
Done.
Expert command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
11 - نحوه غیر فعال کردن Boot Flag (*) در یک پارتیشن
به صورت پیش فرض fdisk علامت boot flag (به طور مثال *) روی هر پارتیشن را نمایش میده اگر شما بخواهید که boot flag را روی پارتیشن خاص فعال یا غیر فعال کنید همانند مراحل زیر پیش بروید.
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
کد PHP:
[root@linuxzone ~]# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 2624 20972857+ 83 Linux
/dev/sda3 2625 4582 15727635 83 Linux
/dev/sda4 4583 77541 586043167+ 5 Extended
/dev/sda5 4583 5887 10482381 83 Linux
/dev/sda6 5888 7192 10482381 83 Linux
/dev/sda7 7193 7845 5245191 83 Linux
/dev/sda8 7846 8367 4192933+ 82 Linux swap / Solaris
/dev/sda9 8368 77541 555640123+ 8e Linux LVM
کد PHP:
Command (m for help): a
Partition number (1-9): 1
Command (m for help): p
Disk /dev/sda: 637.8 GB, 637802643456 bytes
255 heads, 63 sectors/track, 77541 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 13 104391 83 Linux
/dev/sda2 14 2624 20972857+ 83 Linux
/dev/sda3 2625 4582 15727635 83 Linux
/dev/sda4 4583 77541 586043167+ 5 Extended
/dev/sda5 4583 5887 10482381 83 Linux
/dev/sda6 5888 7192 10482381 83 Linux
/dev/sda7 7193 7845 5245191 83 Linux
/dev/sda8 7846 8367 4192933+ 82 Linux swap / Solaris
/dev/sda9 8368 77541 555640123+ 8e Linux LVM
Command (m for help):
همچنین توصیه میشود مطالعه کنید :
نحوه بازیابی فایل های حذف شده در Linux
نحوه پیدا کردن بدسکتور (Bad Sector / Bad Block ها) در هارد دیسک لینوکس
نحوه Defragment کردن هارد در لینوکس (تعمیر و Defrag پارتیشن ها و دایرکتوری ها)
دستور df در لینوکس برای نمایش فضای مصرفی دیسک به همراه 12 مثال عملی
دستور du در لینوکس برای پیدا کردن فضای مصرفی توسط فایل ها و دایرکتوری ها
اگر هر بخش مهمی از این دستور را فراموش کردم باعث خوشحالیست که شما آنرا کامل کنید.