Определение простыми словами
parted — инструмент GNU для создания, удаления и изменения разделов на блочных устройствах. Появился в 1999 году как ответ на ограничения старого fdisk: тот работает только с MBR (максимум 4 первичных раздела, до 2 ТБ на диск) и не понимает GPT. parted умеет MBR, GPT, BSD disklabel, Mac partition map, loop-устройства, способен расширять и переносить разделы.
parted — низкоуровневый инструмент, требующий аккуратности: ошибочная команда mklabel мгновенно стирает всю разметку диска. Безопасных подтверждений «да-нет» нет, поэтому в продакшене стандартная практика — снять снимок ВМ или сделать дамп таблицы разделов через sgdisk --backup перед работой. Графический фронтенд GParted прост и понятен, но недоступен на серверах без X11.
Сравнение (таблица)
| Параметр | parted | fdisk | sgdisk | cfdisk |
|---|---|---|---|---|
| MBR | Да | Да | Нет | Да |
| GPT | Да | Да (с util-linux 2.23+) | Только GPT | Да |
| Скриптовый режим | Да, отличный | Через here-doc, неудобно | Превосходный, для скриптов | Только интерактив |
| Изменение размера раздела | resizepart (без ФС) | Только пересоздание | Только пересоздание | Только пересоздание |
| Интерактивность | Командная строка с подсказками | Однобуквенные команды | Только аргументы | Псевдографика |
| Графическая версия | GParted | Нет | Нет | Нет |
Кейсы использования
- Разметка нового диска объёмом более 2 ТБ — здесь fdisk бессилен из-за ограничений MBR.
- Подготовка USB-флешки или внешнего SSD под несколько систем (живой Linux + общий exFAT-раздел).
- Скриптуемая разметка диска при автоматизированном развёртывании серверов через cloud-init или Ansible.
- Расширение раздела на VPS после увеличения объёма виртуального диска у провайдера:
parted resizepart+resize2fs/xfs_growfs. - Создание GPT-разметки с дополнительным разделом BIOS Boot Partition для загрузчика GRUB на дисках с GPT.
- Негативный сценарий: запуск parted в интерактивном режиме на боевом сервере без бэкапа таблицы разделов. Команды print free, mklabel, mkpart применяются мгновенно, без подтверждения вроде «вы уверены». Малейшая опечатка в имени устройства (sda вместо sdb) уничтожает таблицу разделов системного диска и делает сервер незагружаемым.
Технические детали
# Текущая разметка диска
sudo parted /dev/sdb print
# Создание GPT и нового раздела на весь диск (скриптовый режим)
sudo parted -s /dev/sdb mklabel gpt
sudo parted -s -a optimal /dev/sdb mkpart primary ext4 0% 100%
# Разметка GPT с тремя разделами
sudo parted -s /dev/sdc mklabel gpt
mkpart primary fat32 1MiB 512MiB
mkpart primary ext4 512MiB 50GiB
mkpart primary ext4 50GiB 100%
set 1 esp on
# Расширение раздела после увеличения виртуального диска
sudo parted /dev/sda resizepart 1 100%
sudo resize2fs /dev/sda1 # для ext4
sudo xfs_growfs / # для XFS
# Бэкап и восстановление таблицы GPT
sudo sgdisk --backup=/root/sdb-gpt.bin /dev/sdb
sudo sgdisk --load-backup=/root/sdb-gpt.bin /dev/sdb
# Проверка выравнивания раздела
sudo parted /dev/sdb align-check optimal 1
Параметр -a optimal при создании раздела гарантирует выравнивание по 1 МиБ — критично для производительности SSD и виртуальных дисков. Использование процентов вместо точных секторов (0% и 100%) автоматически учитывает выравнивание.
🔥 Где это применяется
Частые вопросы
Чем parted отличается от fdisk?
fdisk традиционно работает с MBR, parted с самого начала умеет GPT и большие диски. С 2013 года fdisk тоже понимает GPT, но parted удобнее в скриптах и единственный поддерживает онлайн-resizepart.
Изменения вступают в силу сразу?
Да, parted применяет команды немедленно. Нет «commit» и «save», как в fdisk. Поэтому перед работой с боевым диском всегда снимайте бэкап таблицы разделов через sgdisk --backup.
Безопасно ли использовать parted на смонтированном диске?
Создание новых разделов на свободном пространстве — безопасно. Расширение или перемещение существующего раздела требует размонтированной ФС или, для root-раздела, загрузки с LiveCD/rescue-системы хостинга.