Определение простыми словами
fdisk — это базовая консольная утилита разметки дисков, которая идёт в каждом Linux из пакета util-linux. Она читает таблицу разделов выбранного блочного устройства и позволяет создать, удалить или изменить запись о разделе. Современные версии fdisk умеют работать как со старой схемой MBR, так и с GPT, поэтому отдельная утилита gdisk сейчас нужна редко.
В отличие от parted, fdisk запускается в интерактивном режиме с однобуквенными командами и записывает изменения только после явного w. Это удобно для аккуратной ручной разметки и снижает риск случайно сломать диск с данными — пока пользователь не подтвердит запись, реальная таблица не меняется.
Сравнение с альтернативами
| Утилита | Стиль | Поддержка GPT | Особенности |
|---|---|---|---|
| fdisk | Интерактивная | Да, с util-linux 2.23 | Универсальная, простой синтаксис |
| parted | Командная строка | Да | Скриптуемая, поддержка ресайза |
| gdisk | Интерактивная | Только GPT | Углублённая работа с GUID |
| cfdisk | Псевдографика | Да | Удобная для новичков |
Кейсы использования
- Подготовка нового диска под ext4 или XFS на свежем сервере.
- Просмотр таблицы разделов и UUID для подключения через fstab.
- Удаление лишних разделов перед клонированием системы или продажей б/у накопителя.
- Восстановление таблицы разделов после неудачного эксперимента, пока изменения не записаны.
- Скриптованная разметка одинаковых дисков на парке серверов через
echoи pipe.
Негативный сценарий: администратор перепутал устройства и запустил fdisk на /dev/sda вместо /dev/sdb, удалил все разделы и нажал w. Таблица перезаписана, диск с продакшеном размечен заново, восстановление возможно только через testdisk, и то не всегда. Перед записью fdisk показывает текущее имя устройства — на этот шаг стоит тратить отдельные пять секунд.
Технические детали
# список всех дисков и их разделов
sudo fdisk -l
# интерактивная разметка нового диска
sudo fdisk /dev/sdb
# в меню: g - новая GPT, n - новый раздел, w - записать
# неинтерактивная разметка для скриптов
printf 'gnnnnnnwn' | sudo fdisk /dev/sdb
# просмотр размера и геометрии
sudo fdisk -l /dev/sda | head -n 8
# создание файловой системы и метки
sudo mkfs.ext4 -L data /dev/sdb1
sudo blkid /dev/sdb1
После сохранения таблицы fdisk сообщает ядру о необходимости перечитать разделы. Если устройство занято, помогает partprobe или перезагрузка. Для сложных сценариев — выравнивание под 4K, ресайз томов, метки GPT с GUID-типами — гибче parted, а для виртуальных томов и зеркал лучше использовать LVM.
🔥 Где это применяется
Частые вопросы
Чем fdisk отличается от parted?
fdisk работает интерактивно через однобуквенные команды и удобен для ручной разметки. parted умеет в один вызов создавать разделы заданного размера и менять их границы, поэтому подходит для скриптов и автоматизации, а в новых версиях обе утилиты работают и с MBR, и с GPT.
Поддерживает ли fdisk GPT?
Да, начиная с util-linux 2.23 (примерно 2013 год). Команда g создаёт новую GPT-таблицу, t позволяет задать тип раздела по GUID. Для очень специфичных случаев с GPT удобнее использовать gdisk, но обычно хватает fdisk.
Можно ли потерять данные при работе с fdisk?
Да, если записать изменения командой w на диск с реальными данными. Пока запись не выполнена, таблица не меняется. Поэтому перед w полезно сравнить вывод с fdisk -l на другом терминале и убедиться, что выбрано правильное устройство.