| SFDISK(8) | دستورات مدیریت سیستم | SFDISK(8) |
نام (NAME)
sfdisk - ابزار اسکریپتپذیر برای دستکاری جدول پارتیشن
خلاصه دستور (SYNOPSIS)
sfdisk [گزینهها] دستگاه [-N شماره-پارتیشن]
sfdisk [گزینهها] دستور
توضیحات (DESCRIPTION)
دستور 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 مشخص نشده باشد)، بهویژه برای جداولی که دارای شکاف و فضاهای خالی هستند.
دستورات (COMMANDS)
دستورات با یکدیگر مانعةالجمع هستند.
[-N شماره-پارتیشن] دستگاه
اگر گزینه -N مشخص شده باشد، تغییرات بر روی پارتیشن تعیینشده توسط شماره-پارتیشن اعمال میشوند. فیلدهای مشخصنشده پارتیشن دستنخورده باقی میمانند.
توجه داشته باشید که با -N امکان آدرسدهی یک پارتیشن استفادهنشده نیز وجود دارد. به عنوان مثال، یک MBR همیشه شامل ۴ پارتیشن است، اما تعداد پارتیشنهای مورداستفاده ممکن است کمتر باشد. در این حالت sfdisk از مقادیر پیشفرض جدول پارتیشن پیروی میکند و از مقادیر پیشفرض توکار برای پارتیشن استفادهنشده مشخصشده با -N استفاده نمیکند. همچنین گزینه --append را ببینید.
-A, --activate دستگاه [شماره-پارتیشن...]
دستور فعالسازی فقط برای MBR و PMBR پشتیبانی میشود. اگر برچسب GPT شناسایی شود، sfdisk یک هشدار چاپ کرده و به طور خودکار وارد PMBR میشود.
اگر هیچ شماره-پارتیشن مشخص نشود، پارتیشنهایی که پرچم فعال دارند فهرست میشوند.
--backup-pt-sectors دستگاه
--delete دستگاه [شماره-پارتیشن...]
-d, --dump دستگاه
-g, --show-geometry [دستگاه...]
-J, --json دستگاه
-l, --list [دستگاه...]
-F, --list-free [دستگاه...]
--part-attrs دستگاه شماره-پارتیشن [ویژگیها]
Bit 0 (RequiredPartition)
Bit 1 (NoBlockIOProtocol)
Bit 2 (LegacyBIOSBootable)
Bits 3-47
Bits 48-63
--part-label دستگاه شماره-پارتیشن [برچسب]
--part-type دستگاه شماره-پارتیشن [نوع]
آرگومان نوع برای MBR به صورت هگزادسیمال، برای GPT به صورت GUID، نام مستعار نوع (مانند "linux") یا میانبر نوع (مانند 'L') است. برای سازگاری رو به عقب، گزینههای -c و --id همان معنای این گزینه را دارند.
--part-uuid دستگاه شماره-پارتیشن [uuid]
--disk-id دستگاه [شناسه]
--discard-free دستگاه
هشدار (Warning)
تمام دادههای موجود در نواحی دور انداختهشده روی دستگاه از بین خواهند رفت! اگر مطمئن نیستید از این گزینه استفاده نکنید.
توجه داشته باشید که دستور 'T' در fdisk یک کادر تعاملی برای مشخص کردن ناحیه آزاد موردنظر جهت دیسکارد فراهم میکند. با این حال، sfdisk همیشه تمامی نواحی پارتیشنبندینشده را دور میاندازد (به جز مناطقی که امکان ایجاد پارتیشن در آنها وجود ندارد، مانند ابتدای دستگاه).
-r, --reorder دستگاه
-s, --show-size [دستگاه...]
-T, --list-types
-V, --verify [دستگاه...]
--relocate عملیات دستگاه
gpt-bak-std
gpt-bak-mini
گزینهها (OPTIONS)
-a, --append
توجه داشته باشید که در این حالت ممکن است یک پارتیشن استفادهنشده دوباره استفاده شود، حتی اگر آخرین پارتیشن در جدول نباشد. همچنین برای تعیین مدخل مشخص در جدول پارتیشن گزینه -N را ببینید.
-b, --backup
--color[=چه_زمان]
-f, --force
--Linux
--lock[=حالت]
-n, --no-act
--no-reread
--no-tell-kernel
-O, --backup-file مسیر
--move-data[=مسیر]
آرگومان اختیاری مسیر نام فایل گزارش (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
-o, --output فهرست
در صورت تعیین به قالب +فهرست، ستونهای پیشفرض گسترش مییابند (مانند -o +UUID).
-q, --quiet
--sector-size اندازه_سکتور
-u, --unit S
-X, --label نوع
-Y, --label-nested نوع
-w, --wipe چه_زمان
-W, --wipe-partitions چه_زمان
-v, --version
-h, --help
قالبهای ورودی (INPUT FORMATS)
دستور sfdisk از دو قالب ورودی و خطوط هدر عمومی پشتیبانی میکند.
خطوط هدر (Header lines)
خطوط هدر اختیاری، اطلاعات عمومی اعمالشده بر جدول پارتیشن را مشخص میکنند. قالب خط هدر عبارت است از:
<name>: <value>
هدرهایی که در حال حاضر شناسایی میشوند عبارتند از:
unit
label
label-id
first-lba
last-lba
table-length
grain
sector-size
توجه داشته باشید که استفاده از خطوط هدر تنها قبل از تعیین اولین پارتیشن در ورودی مجاز است.
قالب فیلدهای بدون نام (Unnamed-fields format)
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'
S - alias 'swap'
Ex - alias 'extended'
H - alias 'home'
U - alias 'uefi'
R - alias 'raid'
V - alias 'lvm'
مقدار پیشفرض type برابر linux است.
میانبر 'X' برای پارتیشن توسعهیافته لینوکس (85) به نفع 'Ex' منسوخ شده است.
فیلد bootable به صورت [*|-] تعیین میشود که حالت پیشفرض آن غیرقابل راهاندازی (not-bootable) است. مقدار این فیلد برای لینوکس بیاهمیت است - زیرا لینوکس در زمان اجرا قبلاً بوت شده است - اما ممکن است برای برخی از بارگذارندههای بوت (بوتلودرها) و سایر سیستمهای عامل اهمیت داشته باشد.
قالب فیلدهای نامگذاریشده (Named-fields format)
این قالب خواناتر، مقاومتر، قابلتوسعهتر بوده و امکان تعیین اطلاعات تکمیلی (مانند UUID) را فراهم میکند. استفاده از این قالب برای خواناتر نگهداشتن اسکریپتها توصیه میشود.
[دستگاه :]
نام[=مقدار],
...
فیلد دستگاه اختیاری است. دستور sfdisk شماره پارتیشن را از نام دستگاه استخراج میکند. این ویژگی امکان تعیین پارتیشنها با ترتیبی تصادفی را میدهد. این قابلیت بیشتر توسط --dump استفاده میشود. اگر مطمئن نیستید از آن استفاده نکنید.
مقدار مقدار میتواند بین گیومه قرار گیرد (مثلاً name="This is partition name"). فیلدهای start= و size= از نشانههای '+' و '-' دقیقاً مشابه قالب فیلدهای بدون نام پشتیبانی میکنند.
فیلدهایی که در حال حاضر پشتیبانی میشوند عبارتند از:
start=عدد
size=عدد
bootable
attrs=رشته
uuid=رشته
name=رشته
type=کد
برچسب دیسک خالی (EMPTY DISK LABEL)
دستور sfdisk به طور پیشفرض جدول پارتیشن بدون پارتیشن ایجاد نمیکند. به طور پیشفرض وجود خطوط حاوی پارتیشن در اسکریپت مورد انتظار است. جدول پارتیشن خالی باید به صورت صریح با خط هدر اسکریپت "label: <name>" بدون هیچگونه خط پارتیشن درخواست شود. برای مثال:
echo 'label: gpt' | sfdisk /dev/sdb
یک جدول پارتیشن خالی GPT ایجاد میکند. توجه داشته باشید که گزینه --append این ویژگی را غیرفعال میسازد.
پشتیبانگیری از جدول پارتیشن (BACKING UP THE PARTITION TABLE)
توصیه میشود چیدمان دستگاههای خود را ذخیره کنید. sfdisk از دو روش پشتیبانی میکند.
خروجی در قالبی سازگار با 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) تمام قابلیتهای لازم را فراهم میکند.
رنگها (COLORS)
رنگیسازی خروجی توسط قابلیتهای 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
محیط (ENVIRONMENT)
SFDISK_DEBUG=all
LIBFDISK_DEBUG=all
LIBBLKID_DEBUG=all
LIBSMARTCOLS_DEBUG=all
LOCK_BLOCK_DEVICE=<حالت>
نکات (NOTES)
از نسخه 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 را ارائه نمیدهد.
مثالها (EXAMPLES)
sfdisk --list --label-nested=mbr /dev/sda
echo -e ',10M,L\n,10M,L\n,+,\n' | sfdisk /dev/sdc
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
sfdisk --part-type /dev/sdc 3 swap
sfdisk --delete /dev/sdc 2
echo "+,+" | sfdisk -N 3 --move-data /dev/sdc
نویسندگان (AUTHORS)
Karel Zak <kzak@redhat.com>
پیادهسازی فعلی sfdisk بر اساس sfdisk اصلی اثر Andries E. Brouwer توسعه یافته است.
همچنین ببینید (SEE ALSO)
گزارش باگ (REPORTING BUGS)
برای گزارش باگها از سامانه پیگیری خطاها استفاده کنید: issue tracker https://github.com/util-linux/util-linux/issues.
دسترسپذیری (AVAILABILITY)
دستور sfdisk بخشی از بسته util-linux است که میتوان آن را از آرشیو هسته لینوکس دریافت کرد: Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux.
| مه ۲۰۲۵ | util-linux |