فرمان‌های fdisk در لینوکس برای مدیریت پارتیشن‌ها شامل نمایش، ایجاد، تغییر ابعاد، حذف، کپی و جابجایی استفاده می‌شوند. fdisk مخفف عبارتی معادل دیسک تعمیر شده یا فرمت‌شده بوده و یکی از رایج‌ترین ابزارهای مدیریتی دیسک در محیط لینوکس یا یونیکس است. یک رابط کاربری ساده برای این ابزار ارائه شده و کار با آن بسیار راحت است.

فرمان‌های fdisk در لینوکس

این ابزار برای ایجاد پارتیشن‌های جدید، سازماندهی فضا برای درایوها، تنظیم دوباره درایوهای قدیمی و انتقال داده‌ها به دیسک‌های جدید بسیار سودمند است. در نتیجه شما می‌توانید حداکثر ۴ پارتیشن اصلی جدید بسازید و در عین حال، به تعداد دلخواه پارتیشن لوجیکال بر اساس فضای دیسک سخت سیستم‌تان ایجاد کنید.

در این مطلب قصد داریم که ۱۰ فرمان پایه fdisk را برای مدیریت یک مجموعه پارتیشن در سیستم‌های مبتنی بر لینوکس را بررسی کنیم. برای اجرای فرمان‌های fdisk در لینوکس لازم است که به صورت کاربر روت وارد شده باشید. در غیر این صورت با پیغام خطای “command not found” روبرو خواهید شد.

هشدار: هرگز پارتیشنی ایجاد یا حذف نکنید و تغییر ندهید. مگر اینکه واقعاً بدانید چه کار می‌کنید!

۱) نمایش تمام پارتیشن‌های دیسک در لینوکس

فرمان پایه‌ای که در ادامه می‌آید، لیست تمام پارتیشن‌های کنونی سیستم‌تان را نشان خواهد داد. گزینه –l همراه با فرمان fdisk به منظور دریافت لیست کل پارتیشن‌های در دسترس لینوکس به کار می‌رود. پارتیشن‌ها همراه با دستگاه‌های مربوطه نمایش داده می‌شوند. به عنوان مثال /dev/sda، /dev/sdb یا /dev/sdc.


[root@ariaservice.net ~]# 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

۲) نمایش یک پارتیشن خاص در لینوکس

برای نمایش تمام پارتیشن‌های یک هارد دیسک خاص می‌توانید از گزینه –l به همراه نام دستگاه استفاده کنید. به عنوان نمونه، فرمانی که در ادامه می‌آید، کل پارتیشن‌های دستگاه /dev/sda را به نشان خواهد داد. در صورتی که نام دیگری برای دستگاه‌تان دارید، حتماً آن را تغییر دهید.


[root@ariaservice.net ~]# 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

۳) بررسی دسترسی به فرمان‌های fdisk در لینوکس

اگر بخواهید تمام فرمان‌های در دسترس fdisk را مشاهده کنید، می‌توانید مطابق زیر به نام هارددیسک در فرمان اشاره کنید. خروجی چیزی شبیه به زیر خواهد بود.


[root@ariaservice.net ~]# 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):

برای دیدن وضعیت دسترسی به فرمان‌های fdisk در لینوکس مثلاً در هارددیسک /dev/sda، از حرف m استفاده کنید. با وارد کردن “m” تمام این فرمان‌ها نمایش داده می‌شوند.


[root@ariaservice.net~]# 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):

۴) چاپ جدول پارتیشن‌های لینوکس

برای چاپ تمام پارتیشن‌های یک هارد دیسک باید در حالت فرمان این هارددیسک قرار داشته باشید.


[root@ariaservice.net ~]# fdisk /dev/sda

در حالت فرمان، به جای حرف m که قبلاً وارد کردیم، این بار p را وارد کنید. در نتیجه، جدول پارتیشن /dev/sda چاپ می‌شود.


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):

۵) نحوه حذف یک پارتیشن در لینوکس

اگر بخواهید یک پارتیشن خاص از یک هارددیسک در لینوکس حذف کنید، باید در حالت فرمان fdisk باشید.


[root@ariaservice.net~]# fdisk /dev/sda

حالا برای شروع حذف پارتیشن‌ها حرف d را وارد کنید. وقتی d را می‌زنیم، سیستم از ما می‌خواهد که شماره پارتیشنی که می‌خواهیم از هارد دیسک حذف کنیم، وارد کنیم. فرض کنید که بخواهیم پارتیشن شماره ۴  را حذف کنیم. در نتیجه، پارتیشن ۴ حذف می‌شود و به جای آن، فضای خالی در جدول پارتیشن‌ها نمایش داده می‌شود. قبل از اینکه جایگزینی دیگری در جدول پارتیشن‌ها انجام دهید، کلید w را بزنید تا این جدول روی دیسک ذخیره شود. تغییرات پس از اولین راه‌اندازی دوباره سیستم انجام خواهند شد. این موضوع به‌خوبی از خروجی زیر روشن می‌شود.


[root@ariaservice.net ~]# 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

نکته: در انجام این مرحله احتیاط کامل داشته باشید. چرا که با استفاده از گزینه d پارتیشن به‌طور کلی از سیستم حذف می‌شود و شما تمام داده‌ها از دست خواهید داد.

۶) نحوه ایجاد یک پارتیشن جدید در لینوکس

اگر در یکی از هارددیسک‌های خود مانند /dev/sda، فضای خالی دارید و می‌خواهید یک پارتیشن جدید برای آن بسازید، باید در حالت فرمان fdisk برای این هارد دیسک باشید. برای این منظور از فرمان زیر استفاده کنید.


[root@ariaservice.net ~]# fdisk /dev/sda

پس از وارد شدن به این فرمان، کلید n را فشار دهید. در نتیجه خواهید توانست که یک پارتیشن با ابعاد جدید در هارد دیسک بسازید.


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‘ و ‘primary‘ در اختیار شما قرار می‌گیرند. برای انتخاب نوع پارتیشن اصلی یا لوجیکال، حرف p یا e را استفاده کنید. سپس از شما خواسته می‌شود که دو ورودی زیر را وارد کنید.

  • اولین عدد سیلندر پارتیشن نهایی
  • آخرین عدد سیلندر پارتیشن نهایی

می‌توانید ابعاد سیلندر را با اضافه کردن “+5000M” در آخرین سیلندر وارد کنید. در اینجا منظور از علامت + و 5000M، اندازه پارتیشن جدید است. به خاطر داشته باشید که بعد از ساخت یک پارتیشن جدید، باید فرمان w را اجرا کنید. در نتیجه تغییرات جدید جدول پارتیشن‌ها ذخیره می‌شوند. در نهایت، سیستم را دوباره راه‌اندازی کنید تا پارتیشن جدید تأیید شود.


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.

۷) نحوه فرمت یک پارتیشن در لینوکس

پس از ساخت پارتیشن جدید، حتماً با استفاده از فرمان mkfs آن را فرمت کنید. برای این منظور، فرمان زیر را در ترمینال تایپ کنید. در اینجا پارتیشن جدید ما /dev/sda4 نام دارد.


[root@ariaservice.net ~]# mkfs.ext4 /dev/sda4

۸) نحوه بررسی اندازه یک پارتیشن در لینوکس

پس از فرمت پارتیشن، نوبت به بررسی اندازه پارتیشن با استفاده از گزینه s در فرمان fdisk در لینوکس می‌رسد. به این طریق می‌توانید ابعاد یک پارتیشن را بررسی کنید.


[root@ariaservice.net ~]# fdisk -s /dev/sda2

 


5194304

۹) تنظیم ترتیب جدول پارتیشن‌ها

اگر یک پارتیشن لوجیکال را پاک کرده و دوباره ایجاد کرده باشید، احتمالاً با مشکل ‘partition out of order‘ برخورد کرده‌اید. یا مثلاً پیام‌هایی مانند ‘Partition table entries are not in disk order‘. فرض کنید که سه پارتیشن لوجیکال مانند sda4، sda5 و sda6 حذف شده باشند. ولی بعد سیستم آنها را دوباره با نام sda5 می‌سازد. به این دلیل که پس از حذف پارتیشن‌ها، پارتشین sd7 به عنوان sda4 جابجا می‌شود و فضای خالی نیز در انتها قرار می‌گیرد.

برای رفع چنین مشکلاتی و استفاده از عنوان sda4 به پارتیشن جدید، ابتدا با استفاده از کلید x یک بخش عملکرد اضافی باز کنید. سپس با گزینه f در فرمان expert، مطابق زیر ترتیب جدول پارتیشن‌ها را درست کنید.


[root@ariaservice.net ~]# 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.

پس از اجرای فرمان f، حتماً فرمان w را نیز اجرا کنید تا موارد را ذخیره کرده و از حالت فرمان fdisk خارج شوید. وقتی ترتیب پارتیشن‌ها تغییر پیدا کرد، دیگر با پیغام خطا روبرو نخواهید شد.

۱۰) چگونه علامت بوت ‘*‘ را از هر کدام از پارتیشن‌ها حذف کنیم؟

فرمان fdisk در لینوکس به صورت پیش‌فرض علامت بوت ‘*‘ را در هر پارتیشن نشان می‌دهد. اگر می‌خواهید این علامت را فعال یا غیرفعال کنید، مراحل زیر را انجام دهید.


[root@ariaservice.net ~]# fdisk  /dev/sda

فرمان p را تایپ کنید تا جدول کنونی پارتیشن‌ها را ببینید. اینجا مشاهده می‌کنید که علامت ستاره در کنار دیسک /dev/sda1 وجود دارد.


[root@ariaservice.net ~]# 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

سپس فرمان a را وارد کنید تا علامت بوت غیرفعال شود. به عنوام مثال در اینجا، پارتیشن شماره 1 را وارد کرده‌ایم. در نتیجه، دیگر علامت ستاره در کنار این پارتیشن دیده نمی‌شود.


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):

جمع‌بندی

در این مطلب سعی بر این بود که تقریباً تمام فرمان‌های پایه fdisk در لینوکس بررسی شوند. با این وجود، هنوز هم فرمان fdisk شامل فرمان‌های تخصصی دیگری است که می‌توانید آنها را با زدن کلید x پیدا کنید. برای کسب اطلاعات بیشتر می‌توانید از فرمان man fdisk در ترمینال استفاده کنید.

منبع: tecmint.com