| FDISK(8) | دستورات مدیریت سیستم | FDISK(8) |
نام (NAME)
fdisk - ابزار مدیریت و دستکاری جدول پارتیشنهای دیسک
خلاصه دستور (SYNOPSIS)
fdisk [گزینهها] دستگاه
fdisk -l [دستگاه...]
توضیحات (DESCRIPTION)
دستور fdisk ابزاری قدرتمند و مبتنی بر گفتگو برای ایجاد، حذف و دستکاری جداول پارتیشنهای مختلف دیسک از جمله GPT, MBR, Sun, SGI است. این ابزار همچنین از جداول پارتیشن BSD نیز پشتیبانی میکند.
دستگاههای بلوکی میتوانند به یک یا چند دیسک منطقی به نام پارتیشن (افراز) تقسیم شوند. این تقسیمبندی در جدول پارتیشن (partition table) ثبت میشود که معمولاً در سکتور ۰ دیسک قرار دارد. (در دنیای BSD اصطلاحات «اسلایس دیسک» ('disk slices') و «برچسب دیسک» ('disklabel') به کار میروند.)
به طور پیشفرض تمام پارتیشنبندی بر اساس محدودیتهای ورودی/خروجی (I/O) دستگاه (توپولوژی) هدایت میشود. ابزار fdisk قادر است چیدمان دیسک را برای اندازه سکتور 4K بهینهسازی کند و از آفست همترازی (alignment offset) در دستگاههای مدرن برای MBR و GPT بهره ببرد. همیشه توصیه میشود از مقادیر پیشفرض fdisk پیروی کنید، زیرا مقادیر پیشفرض (مانند اولین و آخرین سکتور پارتیشن) و اندازههای پارتیشن مشخصشده با ساختار +/-<size>{M,G,...} همواره متناسب با ویژگیهای دستگاه همتراز میشوند.
آدرسدهی CHS (سیلندر-هد-سکتور) منسوخ شده و به طور پیشفرض استفاده نمیشود. لطفاً از مقالات و توصیههای قدیمی حاوی دستوراتی مانند fdisk -S <n> -H <n> برای حافظههای SSD یا دستگاههای با سکتور 4K پیروی نکنید.
توجه داشته باشید که partx(8) رابط مناسبی برای اسکریپتها جهت چاپ چیدمان دیسک ارائه میدهد، در حالی که fdisk عمدتاً برای کاربران انسانی طراحی شده است. سازگاری رو به عقب در خروجی متنی fdisk تضمین نمیشود، اما ورودیها (دستورات ارسالی) همواره باید سازگاری رو به عقب را حفظ کنند.
گزینهها (OPTIONS)
-b, --sector-size sectorsize
-B, --protect-boot
-c, --compatibility[=mode]
-L, --color[=when]
-l, --list
اگر دستگاهی مشخص نشود، از دستگاههای ذکرشده در /proc/partitions (در صورت وجود این فایل) استفاده میشود. دستگاهها همواره به ترتیبی که در خط فرمان مشخص شدهاند یا به ترتیبی که هسته در /proc/partitions فهرست کرده است نمایش داده میشوند.
-x, --list-details
--lock[=mode]
-n, --noauto-pt
-o, --output list
فهرست پیشفرض ستونها را میتوان در صورتی که list با قالب +list مشخص شود، گسترش داد (به عنوان مثال، -o +UUID).
-s, --getsz
-t, --type type
-u, --units[=unit]
-C, --cylinders number
-H, --heads number
-S, --sectors number
-w, --wipe when
-W, --wipe-partitions when
-h, --help
-V, --version
دستگاهها (DEVICES)
دستگاه معمولاً /dev/sda, /dev/sdb یا مواردی از این دست است. نام دستگاه به کل دیسک اشاره دارد. سیستمهای قدیمی بدون libata (کتابخانهای در هسته لینوکس برای پشتیبانی از کنترلرها و دستگاههای میزبان ATA) میان دیسکهای IDE و SCSI تفاوت قائل میشدند. در چنین مواردی نام دستگاه /dev/hd* (برای IDE) یا /dev/sd* (برای SCSI) بود.
پارتیشن نام دستگاه به همراه شماره پارتیشن است. به عنوان مثال، /dev/sda1 اولین پارتیشن در اولین دیسک سخت سیستم است. مستندات هسته لینوکس (فایل Documentation/admin-guide/devices.txt) را نیز ببینید.
اندازهها (SIZES)
بخش گفتگوی «آخرین سکتور» (last sector) اندازه پارتیشن را بر حسب تعداد سکتورها یا ساختار +/-<size>{K,B,M,G,...} میپذیرد.
اگر اندازه با پیشوند '+' مشخص شود، به صورت نسبی نسبت به اولین سکتور پارتیشن تفسیر میشود. اگر اندازه با پیشوند '-' مشخص شود، به صورت نسبی نسبت به حد بالا (آخرین سکتور در دسترس برای پارتیشن) تفسیر میشود.
در صورتی که اندازه بر حسب بایت مشخص شود، عدد میتواند با پسوندهای ضربی KiB (۱۰۲۴ بایت)، MiB (۱۰۲۴*۱۰۲۴ بایت)، و به همین ترتیب GiB, TiB, PiB, EiB, ZiB و YiB همراه باشد. پسوند "iB" اختیاری است؛ به عنوان مثال "K" معنایی معادل با "KiB" دارد.
اندازههای نسبی اگر با پسوندهای ضربی مشخص شوند (مانند +100MiB)، همواره بر اساس محدودیتهای ورودی/خروجی (I/O) دستگاه همتراز میشوند. استفاده از نشانهگذاری +/-<size>{K,B,M,G,...} توصیه میشود.
اگر اندازه با ساختار +<sectors> مشخص شود، آخرین سکتور پارتیشن دقیقاً به صورت <start> + <size> (بدون -1) محاسبه میشود. در این حالت، اندازه با محدودیتهای I/O دستگاه همتراز نخواهد شد.
برای سازگاری رو به عقب، fdisk همچنین پسوندهای KB (۱۰۰۰ بایت)، MB (۱۰۰۰*۱۰۰۰ بایت) و به همین ترتیب برای GB, TB, PB, EB, ZB و YB را میپذیرد. این پسوندهای بر مبنای 10^N منسوخ شدهاند.
فایلهای اسکریپت (SCRIPT FILES)
ابزار fdisk خواندن فایلهای اسکریپت سازگار با sfdisk(8) را (با دستور 'I') فراهم میسازد. اسکریپت روی جدول پارتیشن در حافظه اعمال میشود، و سپس میتوان جدول پارتیشن را قبل از نوشتن روی دستگاه تغییر داد.
و بالعکس، این امکان وجود دارد که چیدمان دیسک موجود در حافظه را با دستور 'O' در یک فایل اسکریپت ذخیره کرد.
فایلهای اسکریپت میان cfdisk(8), sfdisk(8), fdisk و سایر برنامههای مبتنی بر libfdisk سازگار هستند. برای جزئیات بیشتر به sfdisk(8) مراجعه کنید.
برچسبهای دیسک (DISK LABELS)
GPT (GUID Partition Table)
توجه داشته باشید که بر اساس مشخصات فنی GPT، سکتور اول همچنان برای یک protective MBR (حفاظتی) رزرو شده است. این بخش از شناسایی نادرست و رونویسی روی دیسکهای GPT توسط ابزارهای قدیمی پارتیشنبندی که فقط MBR را میشناسند جلوگیری میکند.
ساختار GPT همواره انتخابی بهتر از MBR است، به ویژه در سختافزارهای امروزی با بوتلودر UEFI.
DOS-type (MBR)
در جدول پارتیشن نوع DOS، آفست شروع و اندازه هر پارتیشن به دو روش ذخیره میشود: به عنوان یک عدد سکتور مطلق (در ۳۲ بیت)، و به صورت سهگانه سیلندر/هد/سکتور (Cylinders/Heads/Sectors) (در ۱۰+۸+۶ بیت). روش اول مناسب است — با سکتورهای ۵۱۲ بایتی تا ۲ ترابایت کار میکند. روش دوم دو مشکل دارد. اول اینکه این فیلدهای C/H/S تنها زمانی میتوانند پر شوند که تعداد هدها و تعداد سکتورها در هر شیار مشخص باشند. دوم، حتی اگر بدانیم این اعداد چه باید باشند، ۲۴ بیت موجود کفایت نمیکند. سیستمعامل DOS فقط از C/H/S استفاده میکند، Windows از هر دو بهره میبرد، و Linux هرگز از C/H/S استفاده نمیکند. آدرسدهی C/H/S منسوخ شده است و ممکن است در برخی نسخههای بعدی fdisk پشتیبانی نشود.
اگر پارتیشنهای سازگار با DOS میخواهید، لطفاً بخش حالت DOS را مطالعه فرمایید. ابزار fdisk به طور پیشفرض مرزهای سیلندر را در نظر نمیگیرد.
BSD/Sun-type
IRIX/SGI-type
قبل از خروج، هنگامی که جدول پارتیشن بهروزرسانی شده باشد، یک فراخوانی sync(2) و یک ioctl(BLKRRPART) (خواندن مجدد جدول پارتیشن از دیسک) انجام میشود.
هشدار حالت DOS و DOS 6.X (DOS MODE AND DOS 6.X WARNING)
توجه داشته باشید که تمامی این موارد منسوخ شدهاند. در سیستمعاملهای مدرن نیازی نیست نگران مسائلی چون هندسه دیسک (geometry) و سیلندرها باشید. اگر واقعاً به پارتیشنبندی سازگار با DOS نیاز دارید، باید حالت DOS و واحدهای سیلندر را با استفاده از گزینههای خط فرمان '-c=dos -u=cylinders' در fdisk فعال کنید.
دستور FORMAT در DOS 6.x اطلاعات خاصی را در اولین سکتور از ناحیه دادههای پارتیشن جستجو میکند و این اطلاعات را معتبرتر از اطلاعات موجود در جدول پارتیشن تلقی میکند. دستور FORMAT در DOS انتظار دارد که DOS FDISK هر زمان تغییری در اندازه رخ میدهد، ۵۱۲ بایت اول ناحیه دادههای پارتیشن را صفر کند. DOS FORMAT به این اطلاعات اضافی نگاه خواهد کرد حتی اگر فلگ /U داده شده باشد — ما این مورد را یک باگ در DOS FORMAT و DOS FDISK در نظر میگیریم.
نتیجه این است که اگر از fdisk یا cfdisk(8) برای تغییر اندازه یک مدخل جدول پارتیشن DOS استفاده میکنید، باید پیش از استفاده از DOS FORMAT برای قالببندی پارتیشن، با استفاده از dd(1) مقدار ۵۱۲ بایت اول آن پارتیشن را صفر کنید. به عنوان مثال، اگر از fdisk برای ایجاد یک مدخل جدول پارتیشن DOS برای /dev/sda1 استفاده کردهاید، پس از خروج از fdisk و راهاندازی مجدد لینوکس (تا اطلاعات جدول پارتیشن معتبر شود)، از دستور dd if=/dev/zero of=/dev/sda1 bs=512 count=1 برای صفر کردن ۵۱۲ بایت اول پارتیشن استفاده کنید.
ابزار fdisk معمولاً هندسه دیسک را به طور خودکار به دست میآورد. این لزوماً هندسه فیزیکی دیسک نیست (در واقع دیسکهای امروزی واقعاً چیزی شبیه به هندسه فیزیکی ندارند، قطعاً نه چیزی که بتوان در ساختار سادهلوحانه سیلندر/هد/سکتور توصیف کرد)، اما این هندسه دیسکی است که MS-DOS برای جدول پارتیشن استفاده میکند.
معمولاً به طور پیشفرض همه چیز به خوبی پیش میرود و اگر لینوکس تنها سیستم موجود روی دیسک باشد مشکلی پیش نخواهد آمد. با این حال، اگر دیسک باید با سیستمعاملهای دیگر به اشتراک گذاشته شود، اغلب فکر خوبی است که اجازه دهید برنامه fdisk متعلق به یک سیستمعامل دیگر حداقل یک پارتیشن بسازد. هنگامی که لینوکس بوت میشود، جدول پارتیشن را بررسی کرده و سعی میکند استنباط کند چه هندسهای (جعلی) برای همکاری مطلوب با سیستمهای دیگر مورد نیاز است.
هر زمان که یک جدول پارتیشن در حالت DOS چاپ میشود، یک بررسی یکپارچگی روی مدخلهای جدول پارتیشن صورت میگیرد. این بررسی تایید میکند که نقاط شروع و پایان فیزیکی و منطقی یکسان هستند و هر پارتیشن در یک مرز سیلندر آغاز شده و پایان مییابد (به جز پارتیشن اول).
برخی از نسخههای MS-DOS پارتیشن اولیهای ایجاد میکنند که از مرز سیلندر آغاز نمیشود، بلکه از سکتور ۲ از اولین سیلندر شروع میشود. پارتیشنهایی که در سیلندر ۱ آغاز میشوند نمیتوانند در مرز سیلندر آغاز شوند، اما بعید است که این مورد مشکلی ایجاد کند مگر اینکه سیستمعامل OS/2 روی سیستم خود داشته باشید.
برای دریافت بهترین نتیجه، همواره باید از برنامه جدول پارتیشن مخصوص همان سیستمعامل استفاده کنید. به عنوان مثال، پارتیشنهای DOS را با برنامه DOS FDISK و پارتیشنهای لینوکس را با برنامههای fdisk لینوکس یا cfdisk(8) لینوکس بسازید.
رنگها (COLORS)
رنگیسازی خروجی توسط قابلیتهای terminal-colors.d(5) پیادهسازی شده است. رنگآمیزی ضمنی را میتوان با یک فایل خالی غیرفعال کرد:
/etc/terminal-colors.d/fdisk.disable
برای دستور fdisk، یا برای تمامی ابزارها با فایل:
/etc/terminal-colors.d/disable
از نسخه 2.41، متغیر محیطی $NO_COLOR نیز برای غیرفعالسازی رنگی کردن خروجی پشتیبانی میشود، مگر اینکه صراحتاً توسط یک گزینه خط فرمان فعال شده باشد.
تنظیمات مختص به کاربر در $XDG_CONFIG_HOME/terminal-colors.d یا $HOME/.config/terminal-colors.d بر تنظیمات سراسری اولویت دارند.
توجه داشته باشید که ممکن است رنگیسازی خروجی به طور پیشفرض فعال باشد، و در این حالت نیازی نیست پوشههای terminal-colors.d از قبل وجود داشته باشند.
نامهای منطقی رنگهای پشتیبانیشده توسط fdisk عبارتند از:
header
help-title
warn
welcome
متغیرهای محیطی (ENVIRONMENT)
FDISK_DEBUG=all
LIBFDISK_DEBUG=all
LIBBLKID_DEBUG=all
LIBSMARTCOLS_DEBUG=all
LIBSMARTCOLS_DEBUG_PADDING=on
LOCK_BLOCK_DEVICE=<mode>
نویسندگان (AUTHORS)
Karel Zak <kzak@redhat.com>, Davidlohr Bueso <dave@gnu.org>
نسخه اولیه توسط Andries E. Brouwer, A. V. Le Blanc و دیگران نوشته شده است.
همچنین ببینید (SEE ALSO)
گزارش باگها (REPORTING BUGS)
برای گزارش باگها از سامانه پیگیری مشکلات استفاده کنید: issue tracker https://github.com/util-linux/util-linux/issues.
در دسترس بودن (AVAILABILITY)
دستور fdisk بخشی از بسته util-linux است که میتوان آن را از آرشیو کرنل لینوکس دانلود کرد: Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux.
| مه ۲۰۲۵ | util-linux |