SFDISK(8) | Керування системою | SFDISK(8) |
НАЗВА¶
sfdisk - показ або керування таблицею розділів диска
КОРОТКИЙ ОПИС¶
sfdisk [options] device [-N partition-number]
sfdisk [options] command
ОПИС¶
sfdisk is a script-oriented tool for partitioning any block device. It runs in interactive mode if executed on a terminal (stdin refers to a terminal).
Починаючи з версії 2.26, у sfdisk передбачено підтримку міток дисків MBR (DOS), GPT, SUN та SGI, але більше не передбачено жодних функціональних можливостей для адресування CHS (Cylinder-Head-Sector або циліндр-голівка-сектор). CHS ніколи не була важливою для Linux, і ця концепція адресування немає жодного сенсу для нових пристрої.
sfdisk protects the first disk sector when create a new disk label. The option --wipe always disables this protection. Note that fdisk(8) and cfdisk(8) completely erase this area by default.
sfdisk (since version 2.26) aligns the start and end of partitions to block-device I/O limits when relative sizes are specified, when the default values are used or when multiplicative suffixes (e.g., MiB) are used for sizes. It is possible that partition size will be optimized (reduced or enlarged) due to alignment if the start offset is specified exactly in sectors and partition size relative or by multiplicative suffixes.
Рекомендованим способом є не визначення початкових відступів, а визначення розміру розділу у МіБ, ГіБ (або подібних одиницях). У цьому випадку sfdisk вирівнює усі розділ до обмежень введення-виведення блокового пристрою (або, якщо обмеження введення-виведення є надто низькими, межа у мегабайтах для збереження портативності компонування диска). Якщо ця типова поведінка є небажаною (зазвичай, для дуже малих розділів), вкажіть відступи і розміри у секторах. У цьому випадку sfdisk повністю використовує вказані числа без будь-якої оптимізації.
sfdisk does not create the standard system partitions for SGI and SUN disk labels like fdisk(8) does. It is necessary to explicitly create all partitions including whole-disk system partitions.
sfdisk uses BLKRRPART (reread partition table) ioctl to make sure that the device is not used by system or other tools (see also --no-reread). It’s possible that this feature or another sfdisk activity races with systemd-udevd(8). The recommended way how to avoid possible collisions is to use --lock option. The exclusive lock will cause systemd-udevd to skip the event handling on the device.
Запит sfdisk є лише підказкою для користувачів, а показаний номер розділу не означає, що буде створено той самий запис таблиці розділів (якщо не вказано -N), особливо для таблиць із прогалинами.
КОМАНДИ¶
Команди є взаємно виключними.
[-N номер_розділу] пристрій
Якщо вказано параметр -N, зміни буде застосовано до розділу, адресування якого вказано аргументом номер-розділу. Невказані поля розділу не буде змінено.
Зауважте, що можна адресувати невикористаний розділ за допомогою параметра -N. Наприклад, MBR завжди містить 4 розділи, але кількість використаних розділів може бути меншою. У цьому випадку sfdisk використовує типові значення з таблиці розділів і не використовує вбудовані типові значення для невикористаного розділу, які задано за допомогою -N. Див. також --append.
-A, --activate пристрій [номер_розділу...]
Підтримку команди активації передбачено лише для MBR і PMBR. Якщо виявлено мітку GPT, sfdisk виведе попередження і автоматично увійде до PMBR.
Якщо не вказано аргументу номер-розділу, буде виведено список розділів із прапорцем «enabled».
--backup-pt-sectors пристрій
--delete пристрій [номер_розділу...]
-d, --dump пристрій
-g, --show-geometry [пристрій...]
-J, --json пристрій
-l, --list [пристрій...]
-F, --list-free [пристрій...]
--part-attrs пристрій номер_розділу [атрибути]
Біт 0 (RequiredPartition)
Біт 1 (NoBlockIOProtocol)
Біт 2 (LegacyBIOSBootable)
Біти 3-47
Біти 48-63
--part-label пристрій номер-розділу [мітка]
--part-type пристрій номер-розділу [тип]
Аргумент тип має бути шістнадцятковим числом для MBR, GUID for GPT, альтернативною назвою типу (наприклад "linux") або скороченням типу (наприклад 'L'). Для зворотної сумісності параметри -c і --id мають те саме призначення, що і цей параметр.
--part-uuid пристрій номер-розділу [uuid]
--disk-id пристрій [ідентифікатор]
-r, --reorder пристрій
-s, --show-size [пристрій...]
-T, --list-types
-V, --verify [пристрій...]
--relocate дія пристрій
gpt-bak-std
gpt-bak-mini
ПАРАМЕТРИ¶
-a, --append
Зауважте, що у цьому випадку невикористаний розділ може бути повторно використано, хоча він не є останнім розділом у таблиці розділів. Див. також -N щодо визначення запису у таблиці розділів.
-b, --backup
--color[=умова]
-f, --force
--Linux
--lock[=режим]
-n, --no-act
--no-reread
--no-tell-kernel
-O, --backup-file шлях
--move-data[=шлях]
Необов’язковий аргумент шлях вказує назву файла журналу Файл журналу містить відомості щодо усіх дій читання-запису щодо даних розділу. Якщо вказано «@default», як шлях, B<sfdisk> у примусовому режимі використовуватиме ~/sfdisk-<назва-пристрою>.move для ведення журналу. Журнал є необов’язковим, починаючи з версії 2.35.
Зауважте, що ця дія є ризикованою і не є атомарною. Не забудьте створити резервну копію ваших даних!
Див. також --move-use-fsync.
У наведеному нижче прикладі перша команда створює вільну область у 100 МіБ до першого розділу і пересуває дані (наприклад файлову систему), які там містяться. Наступна команда створює розділ на основі вільного місця (із відступом 2048), а остання команда перевпорядковує розділи так, щоб вони відповідали порядку на диску (початковий 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
-u, --unit S
-X, --label тип
-Y, --label-nested тип
-w, --wipe умова
-W, --wipe-partitions умова
-v, --version
-h, --help
ФОРМАТИ ВХІДНИХ ДАНИХ¶
sfdisk supports two input formats and generic header lines.
Рядки заголовка¶
Необов’язкові рядки заголовка визначають загальні відомості, які застосовуються до таблиці розділів. Формат рядка заголовка є таким:
<name>: <value>
У поточній версії розпізнаваними заголовками є такі:
unit
label
label-id
first-lba
last-lba
table-length
grain
sector-size
Зауважте, що рядки заголовка можна використовувати лише до того, як у вхідних даних визначено перший розділ.
Формат полів без назви¶
початок
розмір тип
завантажуваність
де кожен рядок складається з одного дескриптора розділу.
Поля відокремлюють пробілами, комами (рекомендовано) або крапками з комами, за якими може бути використано пробіл; початковий та кінцевий пробіли буде проігноровано. Числа може бути записано у вісімковій, десятковій або шістнадцятковій системі; типовою є десяткова. Якщо поле пропущено, вказано порожнім або вказано як '-', буде використано типове значення. Але якщо вказано параметр -N (змінити окремий розділ), типовим для кожного з полів буде його попереднє значення.
Типовим значенням аргументу початок є перший непов’язаний сектор, який вирівняно відповідно до обмежень введення-виведення пристрою. Типовим початковим відступом для першого розділу є 1 МіБ. Якщо після відступу вказано суфікси множення (KiB, MiB, GiB, TiB, PiB, EiB, ZiB і YiB), число буде оброблено як відступ у байтах. Починаючи з v2.38, коли було реалізовано параметр -N (зміна окремого розділу), можна скористатися '+' для збільшення розділу пересуванням початку розділу, якщо перед розділом є вільне місце.
Типове значення аргументу розмір визначає поведінку «якомога більше»; тобто, аж до наступного розділу або кінця пристрою. Числовий аргумент типово буде оброблено як кількість секторів. Втім, якщо за числовим розміром вказано один із суфіксів-множників (KiB, MiB, GiB, TiB, PiB, EiB, ZiB або YiB), число буде оброблено як розмір розділу у байтах і вирівняно відповідно до обмежень на введення-виведення пристрою. Замість числа можна вказати '+'. Це значення призведе до максимального збільшення розділу. Зауважте, що '+' є еквівалентом типової поведінки для нового розділу; якщо потрібно, розмір наявних розділів буде змінено відповідним чином.
Значення тип для розділу задається у форматі шістнадцяткового числа для MBR (DOS), де префікс x є необов’язковим; рядка GUID для GPT; скорочення або альтернативної назви. Рекомендуємо користуватися двома літерами для шістнадцяткових кодів MBR, щоб уникнути плутанини між застарілим скороченням 'E' і шістнадцятковим кодом MBR '0E'. У скриптах поділу на розділи для зворотної сумісності sfdisk намагається спершу обробити тип як скорочення, хоча в інших місцях (наприклад у команді --part-type) програма намагається використати скорочення як останню можливість.
Починаючи з версії v2.36, у libfdisk передбачено підтримку альтернативних назв типів розділів, як розширення до скорочень. Альтернативною назвою є просте зручне для читання слово (наприклад "linux").
Починаючи з версії 2.37, у libfdisk передбачено надання вхідних даних щодо назв типів розділів без врахування регістру символів та усіх не буквенно-числових символів у назві (наприклад "Linux /usr x86" є тим самим, що і "linux usr-x86").
Підтримувані скорочення і альтернативи:
L - альтернатива 'linux'
S - альтернатива 'swap'
Ex - альтернатива 'extended'
H - альтернатива 'home'
U - інший запис «uefi»
R - інший запис «raid»
V - інший запис «lvm»
Типовим значенням типу є linux.
Скорочення «X» для розширеного розділу Linux (85) вважається застарілим, його замінило скорочення «Ex».
Аргумент завантажуваність вказують як [*|-]. Типовим є значення, яке вказує на непридатність до завантаження. Значення цього поля не беруть до уваги для Linux — якщо запущено Linux, його вже завантажено, — але він може братися до уваги для певних типів завантажувачів і для інших операційних систем.
Формат іменованих полів¶
Цей формат є зручнішими для читання, стійкішим та розширюванішим і надає змогу вказати додаткові відомості (наприклад UUID). Рекомендуємо користуватися цим форматом, щоб зробити ваші скрипти зручнішими для читання.
[пристрій
:]
назва[=значення],
...
Поле пристрій є необов’язковим. sfdisk видобуває номер розділу з назви пристрою. Поле надає змогу вказати розділи у випадковому порядку. Цю функціональну можливість, здебільшого, використовують для --dump. Не користуйтеся нею, якщо не впевнені у результатах.
Аргумент значення може бути вказано у лапках (наприклад, name="This is partition name") Для полів start= і size= передбачено підтримку значень '+' і '-', які мають таке саме призначення, що і у форматі неіменованих полів.
У поточній версії поточними підтримуваними полями є такі:
start=число
size=число
bootable
attrs=рядок
uuid=рядок
name=рядок
type=код
ПОРОЖНЯ МІТКА ДИСКА¶
sfdisk does not create partition table without partitions by default. The lines with partitions are expected in the script by default. The empty partition table has to be explicitly requested by "label: <name>" script header line without any partitions lines. For example:
echo 'label: gpt' | sfdisk /dev/sdb
створює порожню таблицю розділів GPT. Зауважте, що --append вимикає цю можливість.
РЕЗЕРВНЕ КОПІЮВАННЯ ТАБЛИЦІ РОЗДІЛІВ¶
Рекомендуємо зберегти компонування ваших пристроїв. У sfdisk передбачено підтримку двох способів.
Дамп у сумісному із sfdisk форматі¶
Скористайтеся командою --dump для збереження опису компонування розділів до текстового файла. Формат дампу є сумісним із вхідними командами sfdisk. Приклад:
sfdisk --dump /dev/sda > sda.dump
Копію пізніше може бути відновлено такою командою:
sfdisk /dev/sda < sda.dump
Зауважте, що sfdisk повністю відновлює типи та UUID розділів. Це, потенційно, може викликати проблеми, якщо ви дублюєте компонування на різних дисках, оскільки може призвести до дублювання UUID у межах вашої системи.
Повністю двійкова резервна копія¶
Якщо ви хочете виконати повне резервне копіювання двійкової копії усіх секторів, де зберігалася таблиця розділів, скористайтеся командою --backup-pt-sectors. Ця команда записує сектори до файлів ~/sfdisk-<пристрій>-<відступ>.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/{команда}.disable
для команди {команда} або для усіх інструментів
/etc/terminal-colors.d/disable
Специфічні для користувача $XDG_CONFIG_HOME/terminal-colors.d або $HOME/.config/terminal-colors.d мають пріоритет над загальними параметрами.
Зауважте, що можна типово увімкнути розфарбовування виведених даних і у цьому випадку каталоги terminal-colors.d не повинні існувати.
Логічними назвами кольорів, підтримку яких передбачено у sfdisk, є такі:
header
warn
welcome
СЕРЕДОВИЩЕ¶
SFDISK_DEBUG=all
LIBFDISK_DEBUG=all
LIBBLKID_DEBUG=all
LIBSMARTCOLS_DEBUG=all
LOCK_BLOCK_DEVICE=<режим>
ЗАУВАЖЕННЯ¶
Починаючи з версії 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
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
АВТОРИ¶
Karel Zak <kzak@redhat.com>
Поточну реалізацію sfdisk засновано на початковій версії sfdisk, автором якої є Andries E. Brouwer.
ТАКОЖ ПЕРЕГЛЯНЬТЕ¶
ЯК НАДІСЛАТИ ЗВІТ ПРО ВАДИ¶
Для звітування щодо вад скористайтеся системою стеження за вадами - <https://github.com/util-linux/util-linux/issues>.
ДОСТУП ДО ПРОГРАМИ¶
Програма sfdisk є частиною пакунка util-linux, який можна отримати з архіву ядра Linux <https://www.kernel.org/pub/linux/utils/util-linux/>.
2024-10-01 | util-linux 2.40.2 |