Изменение таблицы разделов — одна из самых опасных операций. Ошибка в одной цифре может стоить всех данных на диске, а «отмена» здесь не работает. Поэтому сначала — главное правило: перед любыми действиями с gdisk или parted сделайте резервную копию важных файлов на другой физический носитель и сохраните дамп таблицы разделов. Ниже — как пройти этот путь аккуратно и какие проверки выполнить до записи изменений.

Подготовка и идентификация диска

Сначала точно определите устройство. Имена /dev/sdb и /dev/nvme0n1 могут измениться после перезагрузки, поэтому ориентируйтесь на серийный номер и модель. Команда lsblk -o NAME,SIZE,MODEL,SERIAL,FSTYPE,MOUNTPOINTS показывает дерево устройств, а blkid — типы файловых систем и UUID. Убедитесь, что раздел не смонтирован: изменение таблицы на занятом разделе ядро может не применить или применить частично.

Проверьте, не лежат ли на диске LVM, RAID или шифрованный контейнер. В таких схемах сначала нужно остановить верхний слой, иначе parted увидит физический диск, а файловая система останется занятой. Для корневого раздела потребуется загрузка с live-носителя: менять разделы работающей системы — плохая идея.

lsblk -o NAME,SIZE,MODEL,SERIAL,FSTYPE,MOUNTPOINTS
sudo blkid /dev/sdb
findmnt /dev/sdb1
sudo lsof /dev/sdb

Резервная копия таблицы разделов

GPT хранит основную таблицу в начале диска и резервную копию в конце. sgdisk умеет сохранять обе структуры в бинарный файл, который потом можно загрузить обратно. Это не заменяет копию данных, но спасает от ошибки в разметке. Сохраните дамп на другой носитель и проверьте, что файл не нулевой. Дополнительно пригодится текстовый вывод sfdisk --dump: его удобно читать и хранить в документации.

sudo sgdisk --backup=/root/sdb-gpt.bak /dev/sdb
sudo sgdisk --verify /dev/sdb
sudo sfdisk --dump /dev/sdb > /root/sdb-sfdisk.txt
ls -l /root/sdb-gpt.bak /root/sdb-sfdisk.txt

Восстановление выполняется командой sgdisk --load-backup=/root/sdb-gpt.bak /dev/sdb. Но сначала убедитесь, что диск тот самый: загрузка чужой таблицы на другой носитель уничтожит его разметку. Держите резервную копию вне изменяемого диска — на флешке, сетевом ресурсе или другом разделе.

gdisk: работа с GPT

gdisk — интерактивный редактор GPT. После запуска команда p печатает текущую таблицу, n создаёт новый раздел, d удаляет, t меняет тип, c задаёт имя. Изменения накапливаются в памяти и применяются только по команде w. Это важное свойство: до записи можно несколько раз проверить раскладку через p и выйти через q, ничего не изменив. Команда o создаёт новую пустую таблицу — не нажимайте её на диске с данными.

sudo gdisk /dev/sdb
# в интерактивном режиме: p, n, t, c, p, w
sudo gdisk -l /dev/sdb
sudo sgdisk --print /dev/sdb

При создании раздела gdisk предложит первый и последний сектор. По умолчанию он выравнивает границы, и это правильно: не стоит вручную задавать секторы «на глаз». Для раздела данных подойдёт тип Linux filesystem, для EFI — EF00, для swap — 8200. Если диск был в MBR, gdisk может предложить конвертацию; делайте это только после резервной копии и понимания, что загрузчик настроен на GPT.

parted: просмотр и изменение разделов

parted удобен для сценариев и точных операций. Указывайте единицы явно, например unit MiB, иначе размеры будут в секторах. Команда print free показывает таблицу и свободные промежутки — по ним проще планировать изменения. Перед записью проверьте, что не задеваете соседние разделы и служебные области в начале и конце диска.

sudo parted /dev/sdb unit MiB print free
sudo parted /dev/sdb unit MiB mkpart data ext4 20480 40960
sudo parted /dev/sdb unit MiB resizepart 2 61440
sudo partprobe /dev/sdb

После изменения таблицы ядро должно перечитать её. partprobe просит ядро обновить сведения, а udevadm settle даёт время создать устройства. Если раздел был занят, перечитывание может не сработать — тогда поможет размонтирование или перезагрузка. Не создавайте файловую систему поверх существующей: mkfs уничтожит данные. Сначала проверьте blkid и lsblk -f.

Расширение файловой системы

Увеличение раздела — только половина дела. Файловая система внутри должна узнать о новом пространстве. Для ext4 растущий раздел можно расширить на смонтированной файловой системе командой resize2fs. Для XFS используется xfs_growfs по точке монтирования, и XFS умеет только расти. Btrfs расширяется командой btrfs filesystem resize max по точке монтирования. Сначала проверьте тип через lsblk -f, чтобы не применить неподходящую команду.

sudo resize2fs /dev/sdb1
sudo xfs_growfs /mnt/data
sudo btrfs filesystem resize max /mnt/data
df -h /mnt/data

Сжатие сложнее и опаснее. ext4 можно уменьшить только на размонтированном разделе: сначала e2fsck -f, затем resize2fs до меньшего размера и только потом parted resizepart. Порядок нельзя менять: если сначала сжать раздел, файловая система выйдет за его границы. XFS сжимать не умеет — надёжный путь здесь только создание новой файловой системы и перенос данных.

Риски и типичные ошибки

  • Выбран не тот диск: перепутаны /dev/sdb и /dev/sdc.
  • Раздел смонтирован, и ядро не применило новую таблицу.
  • Границы заданы в секторах вместо MiB и задели соседний раздел.
  • Файловая система не расширена после увеличения раздела.
  • Раздел уменьшен до сжатия файловой системы.
  • Резервная копия GPT осталась на том же диске.
  • Изменение выполняется на работающей корневой системе без live-носителя.

Если таблица повреждена, не создавайте новые разделы и не форматируйте диск. Сначала попробуйте восстановить резервную копию GPT через sgdisk, затем проверьте результат через parted print. Для поиска потерянных разделов используйте testdisk, но работайте с копией диска, если данные действительно ценны.

Чек-лист перед записью

  • Важные данные скопированы на другой носитель.
  • Дамп GPT и вывод sfdisk --dump сохранены вне диска.
  • Устройство идентифицировано по модели и серийному номеру.
  • Раздел размонтирован, верхние слои LVM/RAID остановлены.
  • План разделов проверен по print free.
  • Единицы измерения — MiB, границы выровнены.
  • После записи выполнены partprobe и проверка lsblk.
  • Файловая система расширена отдельной командой.

Итог

gdisk и parted — точные инструменты, но они не прощают невнимательности. Сначала резервная копия данных и таблицы разделов, затем идентификация диска, размонтирование и только потом изменения. Помните, что расширение раздела и расширение файловой системы — разные шаги, а сжатие XFS невозможно. При малейших сомнениях остановитесь и проверьте раскладку ещё раз: восстановление данных всегда дороже пары минут внимания.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте