Недавно я изменил размер 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, используя:
x
для дополнительной функциональностиM
войти в защитную / гибридную MBRp
позволяет показать защитную MBR)r
для возврата в главное меню (все еще в защитном режиме MBR!)d
удалить защитный раздел MBR неправильного размераn
для создания нового раздела и 4xвойти принять настройки по умолчанию (основной, номер раздела 1 и полный размер)t
и ee
изменить тип на GPTx
для дополнительной функциональностиM
выйти из защитного / гибридного режима MBRr
чтобы вернуться в главное меню (теперь снова в режиме GPT)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