С чего начать Первые шаги трек · 15 ступеней
Linux Labs

fdisk и parted — разметка диска

6 мин Ubuntu 24.04 · util-linux 2.39 · parted 3.6

fdisk и parted создают на диске таблицу разделов (GPT или MBR) и разделы; parted -s работает без вопросов.

Шпаргалка

8 команд Версия для печати
  • lsblk какие диски есть
  • sudo fdisk -l /dev/vdb таблица разделов диска
  • sudo parted /dev/vdb print то же через parted
  • sudo parted -s /dev/vdb mklabel gpt новая таблица (стирает старую)
  • sudo parted -s /dev/vdb mkpart data ext4 1MiB 100%
  • sudo parted /dev/vdb unit MiB print free разделы и свободное место
  • sudo fdisk /dev/vdb по шагам: g, n, w
  • sudo partprobe /dev/vdb перечитать таблицу в ядре

Обзор

Новый диск — ряд пустых блоков. Чтобы положить на него файлы, его размечают: в начало диска пишут таблицу разделов — где начинается и кончается каждый раздел. Ядро показывает раздел отдельным устройством: /dev/vdb1 у диска /dev/vdb, /dev/nvme0n1p1 у NVMe, /dev/loop0p1 у loop-устройства. Дальше на разделе создают файловую систему (mkfs) и монтируют её (mount).

Таблица Где встречается
GPT (gpt) новые системы; до 128 разделов, диски больше 2 ТиБ
MBR (msdos) старые системы; 4 основных раздела, диск до 2 ТиБ

Обе программы делают одно и то же, но по-разному сохраняют:

  • fdisk копит изменения в памяти и пишет их на диск только по команде w. Выход по q ничего не меняет — удобно учиться.
  • parted выполняет каждую команду сразу. С ключом -s (--script) он не задаёт вопросов, поэтому годится для скриптов и подготовки машин.

Тип в mkpart data ext4 — только пометка в таблице. Файловую систему parted не создаёт: после разметки нужен mkfs.

Ключи

10

У parted ключей мало, работа идёт командами: mklabel, mkpart, print, rm, resizepart, name. fdisk внутри ждёт однобуквенных команд, список — по m. Полный список — man parted, man fdisk.

Ключ Что делает Пример
-s --script Не задавать вопросов — и не переспрашивать перед стиранием таблицы. опасно sudo parted -s /dev/vdb mklabel gpt
mklabel gpt|msdos Записать новую пустую таблицу разделов; прежние разделы пропадают. опасно sudo parted -s /dev/vdb mklabel gpt
mkpart NAME FS START END Создать раздел; в MBR первым идёт тип primary вместо имени. sudo parted -s /dev/vdb mkpart data ext4 1MiB 100%
print Показать таблицу; с free — и свободное место. sudo parted /dev/vdb unit MiB print free
-l --list Показать таблицы разделов дисков и выйти. sudo fdisk -l /dev/vdb
g / o Команды внутри fdisk — новая пустая таблица GPT (g) или MBR (o). опасно sudo fdisk /dev/vdb
n / p / w / q Новый раздел, показать таблицу, записать и выйти, выйти без записи. sudo fdisk /dev/vdb
unit MiB|GiB|s|% В каких единицах печатать и понимать границы разделов. sudo parted /dev/vdb unit MiB print
rm N Удалить раздел номер N из таблицы. опасно sudo parted -s /dev/vdb rm 2
partprobe DISK Попросить ядро перечитать таблицу разделов диска. sudo partprobe /dev/vdb

Ничего не найдено. Попробуй запрос короче.

Рецепты

6

Разметить пустой диск одной командой

bash
lsblk /dev/vdb                       # тот ли диск, пустой ли
sudo parted -s /dev/vdb mklabel gpt mkpart data ext4 1MiB 100%
lsblk /dev/vdb                       # появился vdb1

Раздел начинают с 1 MiB: в начале диска лежит таблица, а с такого отступа раздел выровнен под блоки диска. 100% — до конца диска. Так выглядит учебный диск на 512 МиБ после этой команды:

text
student@ubuntu:~$ sudo parted /dev/loop0 unit MiB print free
Model: Loopback device (loopback)
Disk /dev/loop0: 512MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start    End      Size     File system  Name  Flags
        0.02MiB  1.00MiB  0.98MiB  Free Space
 1      1.00MiB  511MiB   510MiB                data
        511MiB   512MiB   0.98MiB  Free Space

Свободные кусочки по краям — место таблицы GPT и её копии в конце диска.

Два раздела на одном диске

bash
sudo parted -s /dev/vdb mklabel gpt
sudo parted -s /dev/vdb mkpart data ext4 1MiB 50%
sudo parted -s /dev/vdb mkpart logs ext4 50% 100%

Добавить раздел в свободное место

bash
sudo parted /dev/vdb unit MiB print free    # где Free Space
sudo parted -s /dev/vdb mkpart logs ext4 2048MiB 100%

mklabel здесь не нужен: он заменил бы таблицу и убрал из неё прежние разделы.

То же в fdisk по шагам

text
sudo fdisk /dev/vdb
  g        новая пустая таблица GPT (o — MBR)
  n        новый раздел: номер, начало, конец — Enter
  p        посмотреть, что получится
  w        записать и выйти (q — выйти без записи)

Размер можно задать в конце раздела: +10G вместо Enter.

Таблица MBR для старой системы

bash
sudo parted -s /dev/vdb mklabel msdos mkpart primary ext4 1MiB 100%

В MBR у mkpart первым идёт тип раздела (primary), а не имя.

Ядро не видит новые разделы

bash
sudo partprobe /dev/vdb      # перечитать таблицу
lsblk /dev/vdb

Неполадки

5

Error: /dev/vdb: unrecognised disk label

На диске ещё нет таблицы разделов — обычное состояние нового диска: print показывает Partition Table: unknown. Создай таблицу: sudo parted -s /dev/vdb mklabel gpt.

mount: wrong fs type, bad option, bad superblock

Монтируют диск или раздел, на котором нет файловой системы. Разметка создаёт только разделы, файловую систему делает mkfs. Подробнее — в mount.

Раздел создан, но /dev/vdb1 нет

Ядро не перечитало таблицу: диск занят или изменения сделаны в обход него. Выполни sudo partprobe /dev/vdb. У loop-устройства разделы появляются, если оно подключено с losetup -P — см. loop-устройство.

The kernel still uses the old table

fdisk записал таблицу, но ядро держит прежнюю: на диске смонтирован раздел. Отмонтируй разделы этого диска и выполни partprobe; системный диск обновится после перезагрузки.

Warning: The resulting partition is not properly aligned

Начало раздела задано в секторах или байтах не кратно блокам диска. Задавай границы в MiB или процентах: 1MiB, 50%.

Опасно

2

mklabel на размеченном диске

mklabel пишет новую пустую таблицу. Прежние разделы из неё пропадают, а с ними и доступ к данным. С -s parted даже не переспросит. Перед разметкой сверь имя диска и его разделы через lsblk и findmnt.

Не тот диск

/dev/vdb на одной машине и /dev/vdb на другой (или после перезагрузки) могут быть разными дисками. Смотри размер и содержимое в lsblk -f прямо перед командой.

Термины

2
раздел диска partition
Непрерывный участок диска, записанный в таблице разделов. Ядро показывает его отдельным устройством (/dev/vdb1, /dev/loop0p1), на нём создают файловую систему. Ещё встречается в: Память и swap: free, available и кэш страниц, mv
таблица разделов partition table
Запись в начале диска о том, где начинается и кончается каждый раздел. Форматы — GPT (новые системы) и MBR (msdos); создают её fdisk или parted, тип показывает blkid -p (PTTYPE). Ещё встречается в: blkid, mkfs

См. также

  • lsblk — найти новый диск и проверить разделы после разметки.
  • mkfs — создать файловую систему на разделе.
  • blkid — UUID и метка раздела для fstab.
  • mount — подключить раздел и записать его в fstab.
  • loop-device — учебный диск из файла.
  • lvm — гибкие тома поверх разделов.
Загрузка…