Назад | Перейти на главную страницу

Ошибка изменения размера раздела fdisk с недопустимым аргументом

Недавно я изменил размер VPS с SSD на 50 ГБ на SSD на 300 ГБ через панель управления моего хостера. Теперь я пытаюсь изменить размер основного раздела с помощью fdisk, чтобы использовать все новое пространство. Однако при запуске fdisk выдает предупреждение:

GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).
GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).

Кажется очевидным, что это в шесть раз больше предыдущего размера, когда я перешел с 50 ГБ до 300 ГБ. Итак, я решаю последовать подсказке и написать таблицу ...

Command (m for help): w
GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).
fdisk: failed to write disklabel: Invalid argument

.. что не работает. Я не могу нигде найти причину этой ошибки, несмотря на множество поисковых запросов. Я не использую LVM, и моя таблица разделов выглядит так:

Disk /dev/vda: 300 GiB, 322122547200 bytes, 629145600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 30D92031-0C13-42FF-AC16-D34F36DD3907

Device        Start       End  Sectors Size Type
/dev/vda1      2048     32767    30720  15M BIOS boot
/dev/vda2     32768  16809983 16777216   8G Linux swap
/dev/vda3  16809984 104857566 88047583  42G Linux filesystem

Обратите внимание на то, что на диске это 300 ГБ, поэтому он распознает изменение размера.

Мне удалось решить это довольно просто. Я установил parted, и когда я запустил, он сообщил мне, что таблица разделов не покрывает весь диск (да), поэтому он спросил меня Fix/Cancel на что я ответил Fix. По-видимому, это помогло, поскольку я смог изменить раздел до полного размера, используя sudo fdisk /dev/vda, но потом мне нужно было запустить sudo resize2fs /dev/vda3 чтобы изменения вступили в силу.

Проблема в том, что защитная MBR (PMBR) слишком мала. Вы можете изменить защитную MBR, используя:

  1. x для дополнительной функциональности
  2. M войти в защитную / гибридную MBR
  3. (p позволяет показать защитную MBR)
  4. r для возврата в главное меню (все еще в защитном режиме MBR!)
  5. d удалить защитный раздел MBR неправильного размера
  6. n для создания нового раздела и 4xвойти принять настройки по умолчанию (основной, номер раздела 1 и полный размер)
  7. t и ee изменить тип на GPT
  8. x для дополнительной функциональности
  9. M выйти из защитного / гибридного режима MBR
  10. r чтобы вернуться в главное меню (теперь снова в режиме GPT)
  11. w написать

С этим я мог исправить несоответствие размера GPT PMBR.

Чтобы исправить проблему с меткой диска, мне пришлось сбросить таблицу разделов, используя O и измените last-lba в экспортированном скрипте на размер диска, как указано в fdisk, минус 34 (для вторичных GPT). Затем я повторно импортировал скрипт, используя I.

Это то, что у меня сработало при попытке увеличить раздел GPT. Как всегда, при изменении таблицы разделов жизненно важно резервное копирование, если все пойдет не так, как планировалось.

Во-первых, не все fdisks созданы равными. В Ubuntu 18.04 я использую следующую версию fdisk:

$ fdisk -v
fdisk from util-linux 2.31.1

Запустите fdisk. Распечатайте свою таблицу разделов с помощью 'p' и убедитесь, что существующая таблица разделов является GPT:

Disklabel type: gpt

Скопируйте и вставьте информацию о разделе в другое окно, чтобы вы могли воссоздать разделы с точно такими же начальными секторами.

Замените старую таблицу разделов GPT новой таблицей разделов GPT, нажав «g».

Снова нажмите «p», чтобы распечатать информацию о новой таблице и убедиться, что теперь она имеет больший размер.

Нажмите 'n', чтобы воссоздать ваши разделы. Все разделы должны быть воссозданы с одинаковыми начальным и последним секторами, за исключением вашего последнего раздела, который должен иметь тот же начальный сектор, но может иметь больший конечный сектор.

Если на ваших разделах есть файловые системы, вы должны увидеть что-то вроде этого:

Partition #1 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: N

Ответьте "N", если вы хотите сохранить подписи файловой системы.

Вернувшись к приглашению fdisk, еще раз введите «p», чтобы посмотреть на таблицу и убедиться, что все выглядит так, как должно.

Наберите 'w', чтобы записать (зафиксировать) изменения.

Оттуда выйдите из fdisk и следуйте стандартной процедуре, чтобы изменить размер файловой системы (например, e2fsck -f затем resize2fs если ext4). Если вы работаете с файлом необработанного образа диска (например, для QEMU), вы можете использовать kpartx -av disk.img чтобы получить устройства петли для ваших разделов, чтобы вы могли запускать e2fsck и resize2fs на этих петлевых устройствах.

Вам может потребоваться удалить раздел vda3 без записи изменений в таблицу разделов, нажав «w», а затем заново создать раздел с новым размером сектора, чтобы не потерять данные. Возможно, вам потребуется размонтировать раздел и выполнить e2fsck перед выполнением следующего:

Например: fdisk / dev / vda

Enter p
Delete the partition 'd' (Partition number is 3)'
Create new partition 'n'
Select the Start sector:
Select the end sector:(New Size)
Write the changes to the disk:
Update the partition table: (partprobe /dev/vda)
#resize2fs /dev/vda3
#mount the partition