SFDISK(8) دستورات مدیریت سیستم SFDISK(8)

sfdisk - ابزار اسکریپتپذیر برای دستکاری جدول پارتیشن

sfdisk [گزینه‌ها] دستگاه [-N شماره-پارتیشن]

sfdisk [گزینه‌ها] دستور

دستور sfdisk ابزاری غیرتعاملی و اسکریپتپذیر برای نمایش، ایجاد و مدیریت جداول پارتیشن دیسک است. در صورت اجرا در یک ترمینال (هنگامی که stdin به یک ترمینال اشاره دارد) در حالت تعاملی اجرا می‌شود.

از نسخه 2.26 به بعد، دستور sfdisk از برچسب‌های دیسک MBR (DOS)، GPT، SUN و SGI پشتیبانی می‌کند، اما دیگر هیچ قابلیتی برای آدرس‌دهی CHS (سیلندر-هد-سکتور) ارائه نمی‌دهد. روش CHS هرگز برای لینوکس حیاتی نبوده و این مفهوم آدرس‌دهی برای دستگاه‌های جدید هیچ کاربردی ندارد.

هنگام ایجاد یک برچسب دیسک جدید، دستور sfdisk از سکتور اول دیسک محافظت می‌کند. گزینه --wipe always این محافظت را غیرفعال می‌سازد. توجه داشته باشید که fdisk(8) و cfdisk(8) این ناحیه را به‌طور پیش‌فرض کاملاً پاک می‌کنند.

دستور sfdisk (از نسخه 2.26) هنگام مشخص شدن اندازه‌های نسبی، استفاده از مقادیر پیش‌فرض یا استفاده از پسوندهای ضرب‌شونده (مانند MiB) برای اندازه‌ها، شروع و پایان پارتیشن‌ها را با محدودیت‌های ورودی/خروجی دستگاه بلوکی هم‌تراز (align) می‌کند. در صورتی که افست شروع دقیقاً بر حسب سکتورها و اندازه پارتیشن به صورت نسبی یا با پسوندهای ضرب‌شونده تعیین شده باشد، این امکان وجود دارد که اندازه پارتیشن به دلیل هم‌ترازی بهینه‌سازی (کمتر یا بیشتر) شود.

روش توصیه‌شده این است که افست شروع را اصلاً مشخص نکنید و اندازه پارتیشن را بر حسب MiB، GiB (یا موارد مشابه) تعیین نمایید. در این حالت sfdisk تمامی پارتیشن‌ها را با محدودیت‌های I/O دستگاه بلوکی (یا در صورت کوچک بودن بیش از حد این محدودیت‌ها، با مرزهای مگابایتی جهت حفظ سازگاری و قابلیت حمل چیدمان دیسک) تراز می‌کند. اگر این رفتار پیش‌فرض مطلوب نیست (معمولاً برای پارتیشن‌های بسیار کوچک)، افست‌ها و اندازه‌ها را بر حسب سکتور مشخص کنید. در این صورت، sfdisk بدون هیچ‌گونه بهینه‌سازی دقیقاً از اعداد تعیین‌شده پیروی می‌کند.

دستور sfdisk بر خلاف fdisk(8)، پارتیشن‌های سیستمی استاندارد را برای برچسب‌های دیسک SGI و SUN ایجاد نمی‌کند. لازم است تمام پارتیشن‌ها از جمله پارتیشن‌های سیستمی کل دیسک به صورت صریح ایجاد شوند.

دستور sfdisk از ioctl مربوط به BLKRRPART (خواندن مجدد جدول پارتیشن) استفاده می‌کند تا مطمئن شود دستگاه توسط سیستم یا ابزارهای دیگر استفاده نمی‌شود (همچنین گزینه --no-reread را ببینید). ممکن است این ویژگی یا فعالیت دیگری از sfdisk با systemd-udevd(8) دچار تداخل رقابتی (race condition) شود. روش توصیه‌شده برای جلوگیری از برخوردهای احتمالی، استفاده از گزینه --lock است. قفل انحصاری باعث می‌شود systemd-udevd از پردازش رویدادها روی آن دستگاه صرف‌نظر کند.

اعلان (پرامپت) sfdisk صرفاً یک راهنمایی برای کاربران است و شماره پارتیشن نمایش‌داده‌شده لزوماً به این معنی نیست که همان ورودی در جدول پارتیشن ایجاد خواهد شد (در صورتی که -N مشخص نشده باشد)، به‌ویژه برای جداولی که دارای شکاف و فضاهای خالی هستند.

دستورات با یکدیگر مانعة‌الجمع هستند.

[-N شماره-پارتیشن] دستگاه

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

اگر گزینه -N مشخص شده باشد، تغییرات بر روی پارتیشن تعیین‌شده توسط شماره-پارتیشن اعمال می‌شوند. فیلدهای مشخص‌نشده پارتیشن دست‌نخورده باقی می‌مانند.

توجه داشته باشید که با -N امکان آدرس‌دهی یک پارتیشن استفاده‌نشده نیز وجود دارد. به عنوان مثال، یک MBR همیشه شامل ۴ پارتیشن است، اما تعداد پارتیشن‌های مورداستفاده ممکن است کمتر باشد. در این حالت sfdisk از مقادیر پیش‌فرض جدول پارتیشن پیروی می‌کند و از مقادیر پیش‌فرض توکار برای پارتیشن استفاده‌نشده مشخص‌شده با -N استفاده نمی‌کند. همچنین گزینه --append را ببینید.

-A, --activate دستگاه [شماره-پارتیشن...]

فعال‌سازی پرچم راه‌اندازی (bootable) برای پارتیشن‌های مشخص‌شده و غیرفعال‌سازی آن برای تمامی پارتیشن‌های مشخص‌نشده. از نویسه خاص '-' می‌توان به جای شماره پارتیشن‌ها برای غیرفعال کردن پرچم بوت در تمام پارتیشن‌ها استفاده کرد.

دستور فعال‌سازی فقط برای MBR و PMBR پشتیبانی می‌شود. اگر برچسب GPT شناسایی شود، sfdisk یک هشدار چاپ کرده و به طور خودکار وارد PMBR می‌شود.

اگر هیچ شماره-پارتیشن مشخص نشود، پارتیشن‌هایی که پرچم فعال دارند فهرست می‌شوند.

--backup-pt-sectors دستگاه

پشتیبان‌گیری از سکتورهای فعلی جدول پارتیشن در قالب باینری و خروج. بخش پشتیبان‌گیری از جدول پارتیشن (BACKING UP THE PARTITION TABLE) را ببینید.

--delete دستگاه [شماره-پارتیشن...]

حذف تمام یا پارتیشن‌های مشخص‌شده.

-d, --dump دستگاه

خروجی گرفتن (Dump) از پارتیشن‌های یک دستگاه در قالبی که بتوان از آن به عنوان ورودی sfdisk استفاده کرد. بخش پشتیبان‌گیری از جدول پارتیشن (BACKING UP THE PARTITION TABLE) را ببینید.

-g, --show-geometry [دستگاه...]

فهرست کردن هندسه (geometry) تمام دستگاه‌ها یا دستگاه‌های مشخص‌شده. برای سازگاری رو به عقب، گزینه منسوخ‌شده --show-pt-geometry همان معنای این گزینه را دارد.

-J, --json دستگاه

خروجی گرفتن از پارتیشن‌های یک دستگاه در قالب JSON. توجه داشته باشید که sfdisk قادر به استفاده از JSON به عنوان فرمت ورودی نیست.

-l, --list [دستگاه...]

فهرست کردن پارتیشن‌های تمام دستگاه‌ها یا دستگاه‌های مشخص‌شده. این دستور را می‌توان همراه با --verify استفاده کرد.

-F, --list-free [دستگاه...]

فهرست کردن فضاهای آزاد پارتیشن‌بندی‌نشده در تمام دستگاه‌ها یا دستگاه‌های مشخص‌شده.

--part-attrs دستگاه شماره-پارتیشن [ویژگی‌ها]

تغییر بیت‌های ویژگی (attribute) پارتیشن GPT. اگر ویژگی‌ها مشخص نشود، تنظیمات فعلی پارتیشن چاپ می‌شود. آرگومان ویژگی‌ها فهرستی از شماره بیت‌ها یا نام بیت‌ها است که با کاما یا فاصله از هم جدا شده‌اند. به عنوان مثال، رشته "RequiredPartition,50,51" سه بیت را تنظیم می‌کند. بیت‌های ویژگی که در حال حاضر پشتیبانی می‌شوند عبارتند از:

Bit 0 (RequiredPartition)

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

Bit 1 (NoBlockIOProtocol)

سفت‌افزار EFI باید از محتوای پارتیشن چشم‌پوشی کرده و سعی در خواندن از آن نداشته باشد.

Bit 2 (LegacyBIOSBootable)

پارتیشن ممکن است توسط سفت‌افزار بایوس قدیمی (Legacy BIOS) قابل راه‌اندازی (بوت) باشد.

Bits 3-47

تعریف‌نشده و باید صفر باشند. برای توسعه در نسخه‌های آینده مشخصات UEFI رزرو شده‌اند.

Bits 48-63

برای استفاده خاص GUID رزرو شده‌اند. کاربرد این بیت‌ها بسته به نوع پارتیشن متغیر است. برای مثال، مایکروسافت از بیت ۶۰ برای فقط‌خواندنی، ۶۱ برای نسخه سایه (shadow copy) از پارتیشن دیگر، ۶۲ برای پارتیشن‌های مخفی و ۶۳ برای غیرفعال کردن اتصال خودکار (automount) استفاده می‌کند.

--part-label دستگاه شماره-پارتیشن [برچسب]

تغییر نام (برچسب) پارتیشن GPT. اگر برچسب مشخص نشود، برچسب فعلی پارتیشن چاپ می‌شود.

--part-type دستگاه شماره-پارتیشن [نوع]

تغییر نوع پارتیشن. اگر نوع مشخص نشود، نوع فعلی پارتیشن چاپ می‌شود.

آرگومان نوع برای MBR به صورت هگزادسیمال، برای GPT به صورت GUID، نام مستعار نوع (مانند "linux") یا میانبر نوع (مانند 'L') است. برای سازگاری رو به عقب، گزینه‌های -c و --id همان معنای این گزینه را دارند.

--part-uuid دستگاه شماره-پارتیشن [uuid]

تغییر UUID پارتیشن GPT. اگر uuid مشخص نشود، UUID فعلی پارتیشن چاپ می‌شود.

--disk-id دستگاه [شناسه]

تغییر شناسه دیسک. اگر شناسه مشخص نشود، شناسه فعلی چاپ می‌شود. شناسه برای GPT به صورت UUID یا برای MBR به صورت یک عدد صحیح بدون علامت است.

--discard-free دستگاه

صرف‌نظر کردن و دور انداختن (Discard) سکتورهای استفاده‌نشده (پارتیشن‌بندی‌نشده) در دستگاه. برای دریافت فهرستی از نواحی آزاد، از گزینه --list-free استفاده کنید. همچنین blkdiscard(8) را ببینید.

هشدار (Warning)

تمام داده‌های موجود در نواحی دور انداخته‌شده روی دستگاه از بین خواهند رفت! اگر مطمئن نیستید از این گزینه استفاده نکنید.

توجه داشته باشید که دستور 'T' در fdisk یک کادر تعاملی برای مشخص کردن ناحیه آزاد موردنظر جهت دیسکارد فراهم می‌کند. با این حال، sfdisk همیشه تمامی نواحی پارتیشن‌بندی‌نشده را دور می‌اندازد (به جز مناطقی که امکان ایجاد پارتیشن در آن‌ها وجود ندارد، مانند ابتدای دستگاه).

-r, --reorder دستگاه

شماره‌گذاری مجدد پارتیشن‌ها و مرتب‌سازی آن‌ها بر اساس افست شروع.

-s, --show-size [دستگاه...]

فهرست کردن اندازه تمامی دستگاه‌ها یا دستگاه‌های مشخص‌شده بر حسب واحدهای ۱۰۲۴ بایتی. این دستور منسوخ شده و به جای آن باید از blockdev(8) استفاده شود.

-T, --list-types

چاپ تمامی نوع‌های پشتیبانی‌شده برای برچسب دیسک فعلی یا برچسب مشخص‌شده توسط --label.

-V, --verify [دستگاه...]

بررسی صحت و درستی جدول پارتیشن و پارتیشن‌ها.

--relocate عملیات دستگاه

تغییر مکان هدر جدول پارتیشن. این دستور در حال حاضر فقط برای هدر GPT پشتیبانی می‌شود. آرگومان عملیات می‌تواند یکی از موارد زیر باشد:

gpt-bak-std

انتقال هدر پشتیبان GPT به محل استاندارد در انتهای دستگاه.

gpt-bak-mini

انتقال هدر پشتیبان GPT به بعد از آخرین پارتیشن. توجه داشته باشید که استاندارد UEFI ایجاب می‌کند که هدر پشتیبان در انتهای دستگاه باشد و ابزارهای پارتیشن‌بندی ممکن است به طور خودکار مکان هدر را مطابق استاندارد تغییر دهند.

-a, --append

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

توجه داشته باشید که در این حالت ممکن است یک پارتیشن استفاده‌نشده دوباره استفاده شود، حتی اگر آخرین پارتیشن در جدول نباشد. همچنین برای تعیین مدخل مشخص در جدول پارتیشن گزینه -N را ببینید.

-b, --backup

پشتیبان‌گیری از سکتورهای فعلی جدول پارتیشن پیش از شروع پارتیشن‌بندی. نام پیش‌فرض فایل پشتیبان ~/sfdisk-<device>-<offset>.bak است؛ برای تعیین نام دیگر گزینه‌های -O و --backup-file را ببینید. برای جزئیات بیشتر بخش پشتیبان‌گیری از جدول پارتیشن (BACKING UP THE PARTITION TABLE) را ببینید.

--color[=چه_زمان]

رنگی کردن خروجی. آرگومان اختیاری چه_زمان می‌تواند auto، never یا always باشد. در صورت حذف آرگومان، مقدار پیش‌فرض auto است. رنگ‌ها را می‌توان غیرفعال کرد؛ برای بررسی پیش‌فرض توکار فعلی خروجی --help را ببینید. همچنین بخش رنگ‌ها (COLORS) را بررسی کنید.

-f, --force

غیرفعال‌سازی تمامی بررسی‌های سازگاری و اعتبارسنجی.

--Linux

گزینه منسوخ‌شده و نادیده‌گرفته‌شده. پارتیشن‌بندی سازگار با لینوکس (و سایر سیستم‌های عامل مدرن) به عنوان پیش‌فرض در نظر گرفته می‌شود.

--lock[=حالت]

استفاده از قفل انحصاری BSD برای دستگاه یا فایلی که روی آن عمل می‌کند. آرگومان اختیاری حالت می‌تواند yes، no (یا 1 و 0) یا nonblock باشد. اگر آرگومان حذف شود، مقدار پیش‌فرض yes خواهد بود. این گزینه بر متغیر محیطی $LOCK_BLOCK_DEVICE اولویت دارد. رفتار پیش‌فرض عدم استفاده از هیچ قفلی است، اما استفاده از آن برای جلوگیری از تداخل با systemd-udevd(8) یا سایر ابزارها توصیه می‌شود.

-n, --no-act

انجام تمامی مراحل به جز نوشتن واقعی روی دستگاه (حالت شبیه‌سازی).

--no-reread

عدم بررسی در حال استفاده بودن دستگاه از طریق فراخوانی ioctl بازخوانی جدول پارتیشن.

--no-tell-kernel

اطلاع ندادن به هسته درباره تغییرات پارتیشن. استفاده از این گزینه همراه با --no-reread برای اصلاح یک پارتیشن روی دیسک در حال استفاده توصیه می‌شود. پارتیشن اصلاح‌شده نباید در حال استفاده باشد (مثلاً نباید متصل/مونت شده باشد).

-O, --backup-file مسیر

بازنویسی و تعیین نام فایل پشتیبان پیش‌فرض. توجه داشته باشید که نام دستگاه و افست همیشه به نام فایل اضافه می‌شوند.

--move-data[=مسیر]

انتقال داده‌ها پس از تغییر مکان پارتیشن، به عنوان مثال هنگام انتقال ابتدای یک پارتیشن به مکان دیگری روی دیسک. اندازه پارتیشن باید ثابت بماند، اما مکان‌های جدید و قدیم ممکن است هم‌پوشانی داشته باشند. این گزینه نیازمند گزینه -N است تا عملیات تنها روی یک پارتیشن خاص پردازش شود.

آرگومان اختیاری مسیر نام فایل گزارش (log) را تعیین می‌کند. فایل گزارش حاوی اطلاعات مربوط به تمامی عملیات‌های خواندن/نوشتن بر روی داده‌های پارتیشن است. مقدار "@default" به عنوان مسیر باعث می‌شود sfdisk از فایل ~/sfdisk-<devname>.move برای لاگ استفاده کند. ثبت گزارش از نسخه v2.35 به بعد اختیاری است.

توجه داشته باشید که این عملیات مخاطره‌آمیز بوده و اتمیک (atomic) نیست. پشتیبان‌گیری از داده‌های خود را فراموش نکنید!

همچنین گزینه --move-use-fsync را ببینید.

در مثال زیر، دستور اول ۱۰۰ مگابایت فضای خالی قبل از اولین پارتیشن ایجاد کرده و داده‌های موجود در آن (مثلاً یک فایل‌سیستم) را جابه‌جا می‌کند، دستور بعدی یک پارتیشن جدید در این فضای خالی (در افست ۲۰۴۸) می‌سازد، و دستور آخر پارتیشن‌ها را مرتب می‌کند تا با ترتیب فیزیکی دیسک مطابقت داشته باشند (پارتیشن sdc1 اصلی تبدیل به sdc2 می‌شود).

echo '+100M,' | sfdisk --move-data /dev/sdc -N 1

echo '2048,' | sfdisk /dev/sdc --append

sfdisk /dev/sdc --reorder

--move-use-fsync

استفاده از فراخوانی سیستمی fsync(2) پس از هر بار نوشتن هنگام انتقال داده‌ها به مکان جدید توسط --move-data.

-o, --output فهرست

تعیین ستون‌های خروجی برای نمایش. برای دریافت فهرستی از تمامی ستون‌های پشتیبانی‌شده از --help استفاده کنید.

در صورت تعیین به قالب +فهرست، ستون‌های پیش‌فرض گسترش می‌یابند (مانند -o +UUID).

-q, --quiet

عدم نمایش پیام‌های اطلاعاتی اضافی (حالت خاموش).

--sector-size اندازه_سکتور

تعیین اندازه سکتور دیسک. مقادیر معتبر عبارتند از ۵۱۲، ۱۰۲۴، ۲۰۴۸ و ۴۰۹۶. هسته لینوکس از اندازه سکتور دستگاه‌های بلوکی معمولی آگاه است. از این گزینه تنها در هسته‌های بسیار قدیمی، هنگام کار با ایمیج‌های دیسک یا برای بازنویسی اندازه سکتور پیش‌فرض هسته استفاده کنید. از نسخه util-linux-2.17 به بعد، fdisk بین اندازه سکتور منطقی و فیزیکی تمایز قائل می‌شود. این گزینه هر دو اندازه سکتور را به مقدار مشخص‌شده تغییر می‌دهد.

-u, --unit S

گزینه منسوخ‌شده. تنها واحد سکتور پشتیبانی می‌شود. این گزینه هنگام استفاده از دستور --show-size پشتیبانی نمی‌شود.

-X, --label نوع

تعیین نوع برچسب دیسک (مانند dos، gpt و غیره). اگر این گزینه داده نشود، sfdisk به طور پیش‌فرض از برچسب موجود استفاده می‌کند؛ اما اگر هنوز هیچ برچسبی روی دستگاه نباشد، نوع پیش‌فرض dos خواهد بود. برچسب پیش‌فرض یا فعلی را می‌توان با خط هدر اسکریپت "label: <name>" بازنویسی کرد. گزینه --label دستور sfdisk را مجبور به ایجاد برچسب دیسک خالی نمی‌کند (بخش برچسب دیسک خالی (EMPTY DISK LABEL) را در زیر ببینید).

-Y, --label-nested نوع

اجبار به ویرایش یک برچسب دیسک تودرتو (nested). برچسب دیسک اصلی باید از قبل وجود داشته باشد. این گزینه برای مثال امکان ویرایش MBR ترکیبی یا محافظتی (hybrid/protective) را روی دستگاه‌های دارای GPT فراهم می‌سازد.

-w, --wipe چه_زمان

پاک‌سازی امضاهای فایل‌سیستم، RAID و جدول پارتیشن از روی دستگاه به منظور جلوگیری از تداخل‌های احتمالی. آرگومان چه_زمان می‌تواند auto، never یا always باشد. اگر این گزینه داده نشود، پیش‌فرض auto است که در آن امضاها تنها در حالت تعاملی پاک می‌شوند؛ به جز امضاهای جدول پارتیشن قدیمی که در صورت نبود مقدار never، همیشه قبل از ایجاد جدول پارتیشن جدید پاک می‌شوند. حالت auto سکتور اول (سکتور بوت) را پاک نمی‌کند؛ برای پاک‌سازی این ناحیه استفاده از حالت always الزامی است. در تمامی موارد، امضاهای شناسایی‌شده قبل از ایجاد جدول پارتیشن جدید با پیام‌های هشدار گزارش می‌شوند. همچنین دستور wipefs(8) را ببینید.

-W, --wipe-partitions چه_زمان

پاک‌سازی امضاهای فایل‌سیستم، RAID و جدول پارتیشن از روی پارتیشن تازه ایجادشده، به منظور جلوگیری از تداخل‌های احتمالی. آرگومان چه_زمان می‌تواند auto، never یا always باشد. اگر این گزینه داده نشود، پیش‌فرض auto است که در آن امضاها تنها در حالت تعاملی و پس از تایید کاربر پاک می‌شوند. در تمامی موارد، امضاهای شناسایی‌شده پس از ایجاد پارتیشن جدید با پیام‌های هشدار گزارش می‌شوند. همچنین دستور wipefs(8) را ببینید.

-v, --version

نمایش اطلاعات نسخه و خروج.

-h, --help

نمایش متن راهنما و خروج.

دستور sfdisk از دو قالب ورودی و خطوط هدر عمومی پشتیبانی می‌کند.

خطوط هدر اختیاری، اطلاعات عمومی اعمال‌شده بر جدول پارتیشن را مشخص می‌کنند. قالب خط هدر عبارت است از:

<name>: <value>

هدرهایی که در حال حاضر شناسایی می‌شوند عبارتند از:

unit

تعیین واحد پارتیشن‌بندی. تنها واحد پشتیبانی‌شده sectors است.

label

تعیین نوع جدول پارتیشن. برای مثال dos یا gpt.

label-id

تعیین شناسه جدول پارتیشن. برای MBR باید یک عدد هگزادسیمال (با پیشوند 0x) و برای GPT یک UUID باشد.

first-lba

تعیین اولین سکتور قابل استفاده برای پارتیشن‌های GPT. اگر اندازه سکتور اسکریپت و دستگاه متفاوت باشد، از این هدر صرف‌نظر می‌شود. در این حالت sfdisk از پیش‌فرض برچسب مربوطه استفاده می‌کند.

last-lba

تعیین آخرین سکتور قابل استفاده برای پارتیشن‌های GPT. اگر اندازه سکتور اسکریپت و دستگاه متفاوت باشد، از این هدر صرف‌نظر می‌شود. در این حالت sfdisk از پیش‌فرض برچسب مربوطه استفاده می‌کند. در صورت مشخص شدن --force، هدر last-lba نادیده گرفته می‌شود تا اسکریپت روی دیسک‌هایی با اندازه‌های مختلف قابل استفاده باشد.

table-length

تعیین حداکثر تعداد پارتیشن‌های GPT.

grain

تعیین حداقل اندازه به بایت جهت محاسبه هم‌ترازی (alignment) پارتیشن‌ها. مقدار پیش‌فرض 1MiB است و قویاً توصیه می‌شود از مقدار پیش‌فرض استفاده کنید. اگر مطمئن نیستید این متغیر را تغییر ندهید.

sector-size

اندازه سکتور استفاده‌شده در ورودی را مشخص می‌کند. دستور sfdisk در داخل خود همیشه از اندازه سکتور دستگاه ارائه‌شده توسط هسته برای دستگاه بلوکی، یا مقداری که کاربر در خط فرمان مشخص کرده (گزینه --sector-size را ببینید) استفاده می‌کند. از نسخه 2.39 به بعد، اگر هدر sector-size و اندازه سکتور دستگاه متفاوت باشند، sfdisk اندازه‌ها را از روی ورودی دوباره محاسبه می‌کند.

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

start size type bootable

که در آن هر خط توصیف‌کننده یک پارتیشن است.

فیلدها با فاصله، کاما (توصیه‌شده) یا نقطه‌ویرگول که احیاناً فاصله‌ای در پی دارند از هم جدا می‌شوند؛ فاصله‌های ابتدایی و انتهایی نادیده گرفته می‌شوند. اعداد می‌توانند در مبنای ۸ (اکتال)، مبنای ۱۰ (دسیمال) یا مبنای ۱۶ (هگزادسیمال) باشند؛ مبنای ۱۰ حالت پیش‌فرض است. هنگامی که یک فیلد وجود ندارد، خالی است یا به صورت '-' مشخص شده است، مقدار پیش‌فرض به کار می‌رود. اما وقتی گزینه -N (تغییر یک پارتیشن منفرد) داده می‌شود، پیش‌فرض هر فیلد مقدار قبلی آن است.

مقدار پیش‌فرض start اولین سکتور تخصیص‌نیافته و هم‌تراز با محدودیت‌های I/O دستگاه است. افست شروع پیش‌فرض برای اولین پارتیشن 1 MiB است. اگر در پی افست پسوندهای ضرب‌شونده (KiB, MiB, GiB, TiB, PiB, EiB, ZiB و YiB) بیایند، عدد به عنوان افست بر حسب بایت تفسیر می‌شود. از نسخه v2.38، وقتی گزینه -N (تغییر یک پارتیشن منفرد) داده می‌شود، در صورت وجود فضای خالی پیش از پارتیشن، می‌توان از علامت '+' برای بزرگ‌تر کردن پارتیشن از طریق انتقال نقطه شروع آن استفاده کرد.

مقدار پیش‌فرض size نشان‌دهنده "حداکثر مقدار ممکن" است؛ یعنی تا پارتیشن بعدی یا انتهای دستگاه. یک آرگومان عددی به طور پیش‌فرض به عنوان تعداد سکتورها تفسیر می‌شود، با این حال اگر پس از اندازه یکی از پسوندهای ضرب‌شونده (KiB, MiB, GiB, TiB, PiB, EiB, ZiB و YiB) بیاید، عدد به عنوان اندازه پارتیشن به بایت تفسیر شده و سپس مطابق با محدودیت‌های ورودی/خروجی دستگاه هم‌تراز می‌شود. به جای یک عدد می‌توان از '+' برای بزرگ کردن پارتیشن تا حداکثر مقدار ممکن استفاده کرد. توجه داشته باشید که '+' معادل رفتار پیش‌فرض برای یک پارتیشن جدید است؛ پارتیشن‌های موجود در صورت نیاز تغییر اندازه خواهند داد.

نوع پارتیشن (type) برای MBR (DOS) به صورت هگزادسیمال داده می‌شود که پیشوند 0x در آن اختیاری است؛ برای GPT به صورت رشته GUID؛ یا یک میانبر یا نام مستعار. توصیه می‌شود برای کدهای هگزادسیمال MBR از دو حرف استفاده شود تا از تداخل میان میانبر منسوخ‌شده 'E' و کد هگزادسیمال '0E' در MBR جلوگیری گردد. برای سازگاری رو به عقب، sfdisk در اسکریپت‌های پارتیشن‌بندی ابتدا سعی می‌کند type را به عنوان یک میانبر تفسیر کند، اگرچه در جاهای دیگر (مانند دستور --part-type) میانبرها را به عنوان آخرین احتمال بررسی می‌کند.

از نسخه v2.36، کتابخانه libfdisk از نام‌های مستعار نوع پارتیشن به عنوان گسترشی برای میانبرها پشتیبانی می‌کند. نام مستعار یک کلمه ساده و خوانا برای انسان است (مانند "linux").

از نسخه v2.37، کتابخانه libfdisk از نام نوع پارتیشن در ورودی با نادیده گرفتن بزرگی و کوچکی حروف و کلیه کاراکترهای غیرحرفی و غیرعددی پشتیبانی می‌کند (مثلاً "Linux /usr x86" مشابه "linux usr-x86" است).

میانبرها و نام‌های مستعار پشتیبانی‌شده:

L - alias 'linux'

لینوکس؛ به معنای 83 برای MBR و 0FC63DAF-8483-4772-8E79-3D69D8477DE4 برای GPT.

S - alias 'swap'

فضای swap؛ به معنای 82 برای MBR و 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F برای GPT.

Ex - alias 'extended'

پارتیشن توسعه‌یافته MBR؛ به معنای 05 برای MBR. میانبر اصلی 'E' به دلیل تداخل با نوع پارتیشن 0x0E در MBR منسوخ شده است.

H - alias 'home'

پارتیشن home؛ به معنای 933AC7E1-2EB4-4F13-B844-0E14E2AEF915 برای GPT.

U - alias 'uefi'

پارتیشن سیستم EFI؛ به معنای EF برای MBR و C12A7328-F81F-11D2-BA4B-00A0C93EC93B برای GPT.

R - alias 'raid'

لینوکس RAID؛ به معنای FD برای MBR و A19D880F-05FC-4D3B-A006-743F0F84911E برای GPT.

V - alias 'lvm'

LVM؛ به معنای 8E برای MBR و E6D6D379-F507-44C2-A23C-238F2A3DF928 برای GPT.

مقدار پیش‌فرض type برابر linux است.

میانبر 'X' برای پارتیشن توسعه‌یافته لینوکس (85) به نفع 'Ex' منسوخ شده است.

فیلد bootable به صورت [*|-] تعیین می‌شود که حالت پیش‌فرض آن غیرقابل راه‌اندازی (not-bootable) است. مقدار این فیلد برای لینوکس بی‌اهمیت است - زیرا لینوکس در زمان اجرا قبلاً بوت شده است - اما ممکن است برای برخی از بارگذارنده‌های بوت (بوت‌لودرها) و سایر سیستم‌های عامل اهمیت داشته باشد.

این قالب خواناتر، مقاوم‌تر، قابل‌توسعه‌تر بوده و امکان تعیین اطلاعات تکمیلی (مانند UUID) را فراهم می‌کند. استفاده از این قالب برای خواناتر نگه‌داشتن اسکریپت‌ها توصیه می‌شود.

[دستگاه :] نام[=مقدار], ...

فیلد دستگاه اختیاری است. دستور sfdisk شماره پارتیشن را از نام دستگاه استخراج می‌کند. این ویژگی امکان تعیین پارتیشن‌ها با ترتیبی تصادفی را می‌دهد. این قابلیت بیشتر توسط --dump استفاده می‌شود. اگر مطمئن نیستید از آن استفاده نکنید.

مقدار مقدار می‌تواند بین گیومه قرار گیرد (مثلاً name="This is partition name"). فیلدهای start= و size= از نشانه‌های '+' و '-' دقیقاً مشابه قالب فیلدهای بدون نام پشتیبانی می‌کنند.

فیلدهایی که در حال حاضر پشتیبانی می‌شوند عبارتند از:

start=عدد

اولین سکتور تخصیص‌نیافته و هم‌تراز با محدودیت‌های I/O دستگاه. افست شروع پیش‌فرض برای اولین پارتیشن 1 MiB است. اگر پس از افست پسوندهای ضرب‌شونده (KiB, MiB, GiB, TiB, PiB, EiB, ZiB و YiB) قرار گیرند، عدد به عنوان افست بر حسب بایت تفسیر می‌شود.

size=عدد

تعیین اندازه پارتیشن بر حسب سکتورها. عدد می‌تواند با پسوندهای ضرب‌شونده (KiB, MiB, GiB, TiB, PiB, EiB, ZiB و YiB) همراه باشد که در این صورت به عنوان اندازه بر حسب بایت تفسیر شده و اندازه با توجه به محدودیت‌های ورودی/خروجی دستگاه تراز می‌شود.

bootable

علامت‌گذاری پارتیشن به عنوان قابل راه‌اندازی (bootable).

attrs=رشته

ویژگی‌های پارتیشن، معمولاً بیت‌های ویژگی پارتیشن GPT. برای جزئیات بیشتر درباره قالب رشته بیت‌های GPT گزینه --part-attrs را ببینید.

uuid=رشته

شناسه یکتای سراسری (UUID) پارتیشن GPT.

name=رشته

نام پارتیشن GPT.

type=کد

یک عدد هگزادسیمال (بدون 0x) برای پارتیشن MBR، یک GUID برای پارتیشن GPT، یک میانبر مانند قالب فیلدهای بدون نام یا یک نام نوع (مانند type="Linux /usr (x86)"). برای جزئیات بیشتر به بخش قالب فیلدهای بدون نام در بالا مراجعه کنید. برای سازگاری رو به عقب فیلد Id= دارای همین معنا است.

دستور sfdisk به طور پیش‌فرض جدول پارتیشن بدون پارتیشن ایجاد نمی‌کند. به طور پیش‌فرض وجود خطوط حاوی پارتیشن در اسکریپت مورد انتظار است. جدول پارتیشن خالی باید به صورت صریح با خط هدر اسکریپت "label: <name>" بدون هیچ‌گونه خط پارتیشن درخواست شود. برای مثال:

echo 'label: gpt' | sfdisk /dev/sdb

یک جدول پارتیشن خالی GPT ایجاد می‌کند. توجه داشته باشید که گزینه --append این ویژگی را غیرفعال می‌سازد.

توصیه می‌شود چیدمان دستگاه‌های خود را ذخیره کنید. sfdisk از دو روش پشتیبانی می‌کند.

برای ذخیره توصیفی از چیدمان دستگاه در یک فایل متنی از دستور --dump استفاده کنید. قالب خروجی برای ورودی‌های بعدی sfdisk مناسب است. برای مثال:

sfdisk --dump /dev/sda > sda.dump

این فایل بعداً می‌تواند با دستور زیر بازیابی شود:

sfdisk /dev/sda < sda.dump

توجه داشته باشید که sfdisk نوع‌های پارتیشن و UUIDهای پارتیشن را کاملاً بازیابی می‌کند. اگر همان چیدمان را روی دیسک‌های مختلف تکثیر کنید، ممکن است مشکل‌ساز شود چرا که می‌تواند منجر به ایجاد UUIDهای تکراری در سیستم شما شود.

اگر می‌خواهید یک پشتیبان کامل باینری از تمام سکتورهایی که جدول پارتیشن در آن‌ها ذخیره شده تهیه کنید، از دستور --backup-pt-sectors استفاده کنید. این دستور سکتورها را در فایل‌های ~/sfdisk-<device>-<offset>.bak می‌نویسد. نام پیش‌فرض فایل پشتیبان را می‌توان با گزینه --backup-file تغییر داد. فایل‌های پشتیبان تنها حاوی داده‌های خام از دستگاه هستند. برای مثال:

sfdisk --backup-pt-sectors /dev/sda

هدر GPT را بعداً می‌توان با دستور زیر بازیابی کرد:

dd if=~/sfdisk-sda-0x00000200.bak of=/dev/sda seek=$((0x00000200)) bs=1 conv=notrunc

همچنین می‌توان از گزینه --backup برای ایجاد همین پشتیبان بلافاصله پس از راه‌اندازی برای سایر دستورات sfdisk استفاده کرد. برای مثال، پشتیبان‌گیری از جدول پارتیشن قبل از حذف تمامی پارتیشن‌ها از جدول:

sfdisk --backup --delete /dev/sda

مفهوم مشابهی از فایل‌های پشتیبان توسط wipefs(8) استفاده می‌شود.

توجه داشته باشید که sfdisk از نسخه 2.26 دیگر گزینه -I را برای بازیابی سکتورها ارائه نمی‌دهد. دستور dd(1) تمام قابلیت‌های لازم را فراهم می‌کند.

رنگی‌سازی خروجی توسط قابلیت‌های terminal-colors.d(5) پیاده‌سازی شده است. رنگ‌آمیزی ضمنی را می‌توان با ایجاد یک فایل خالی

/etc/terminal-colors.d/sfdisk.disable

برای دستور sfdisk یا برای تمامی ابزارها با فایل

/etc/terminal-colors.d/disable

غیرفعال کرد.

از نسخه 2.41، متغیر محیطی $NO_COLOR نیز برای غیرفعال کردن رنگی‌سازی خروجی پشتیبانی می‌شود، مگر اینکه صراحتاً توسط گزینه‌ای در خط فرمان فعال شده باشد.

تنظیمات اختصاصی کاربر در $XDG_CONFIG_HOME/terminal-colors.d یا $HOME/.config/terminal-colors.d بر تنظیمات سراسری سیستم ارجحیت دارند.

توجه داشته باشید که رنگی‌سازی خروجی ممکن است به طور پیش‌فرض فعال باشد، و در این حالت نیازی به وجود قبلی دایرکتوری‌های terminal-colors.d نیست.

نام رنگ‌های منطقی پشتیبانی‌شده توسط sfdisk عبارتند از:

header

سربرگ جداول خروجی.

warn

پیام‌های هشدار.

welcome

پیام خوش‌آمدگویی.

SFDISK_DEBUG=all

فعال‌سازی خروجی اشکال‌زدایی (دیباگ) sfdisk.

LIBFDISK_DEBUG=all

فعال‌سازی خروجی دیباگ libfdisk.

LIBBLKID_DEBUG=all

فعال‌سازی خروجی دیباگ libblkid.

LIBSMARTCOLS_DEBUG=all

فعال‌سازی خروجی دیباگ libsmartcols.

LOCK_BLOCK_DEVICE=<حالت>

استفاده از قفل انحصاری BSD. حالت "1" یا "0" است. برای جزئیات بیشتر --lock را ببینید.

از نسخه 2.26 به بعد، sfdisk دیگر گزینه‌های -R یا --re-read را برای وادار کردن هسته به خواندن مجدد جدول پارتیشن ارائه نمی‌دهد. به جای آن از blockdev --rereadpt استفاده کنید.

از نسخه 2.26، sfdisk گزینه‌های --DOS، --IBM، --DOS-extended، --unhide، --show-extended، --cylinders، --heads، --sectors، --inside-outer و --not-inside-outer را ارائه نمی‌دهد.

sfdisk --list --label-nested=mbr /dev/sda

چاپ MBR محافظتی روی دستگاه با برچسب دیسک GPT.

echo -e ',10M,L\n,10M,L\n,+,\n' | sfdisk /dev/sdc

ایجاد سه پارتیشن لینوکسی با نقطه شروع پیش‌فرض، که اندازه دو پارتیشن اول 10MiB است و پارتیشن آخر تمام فضای باقیمانده و موجود دستگاه را پر می‌کند.

echo -e 'size=10M, type=L\n size=10M, type=L\n size=+\n' | sfdisk /dev/sdc

مشابه مثال قبل، اما در قالب فیلدهای نام‌گذاری‌شده.

echo -e 'type=swap' | sfdisk -N 3 /dev/sdc

تنظیم نوع پارتیشن سوم به 'swap'.

sfdisk --part-type /dev/sdc 3 swap

مشابه مثال قبل، اما بدون استفاده از اسکریپت ورودی.

sfdisk --delete /dev/sdc 2

حذف پارتیشن دوم.

echo "+,+" | sfdisk -N 3 --move-data /dev/sdc

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

Karel Zak <kzak@redhat.com>

پیاده‌سازی فعلی sfdisk بر اساس sfdisk اصلی اثر Andries E. Brouwer توسعه یافته است.

fdisk(8), cfdisk(8), parted(8), partprobe(8), partx(8)

برای گزارش باگ‌ها از سامانه پیگیری خطاها استفاده کنید: issue tracker https://github.com/util-linux/util-linux/issues.

دستور sfdisk بخشی از بسته util-linux است که می‌توان آن را از آرشیو هسته لینوکس دریافت کرد: Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux.

مه ۲۰۲۵ util-linux