Я пытаюсь уменьшить размер корневого тома Amazon Linux 1 AMI, используя процедуру, описанную вэта документация(с некоторыми изменениями, внесенными после того, как это не было сделано) и постоянно сталкиваемся с ошибками на шаге:
$ sudo grub-install --root-directory=/mnt/new-volume/ --force /dev/xvdf
Это устаревшая версия GRUB (версия 0.97-94.32.amzn1
)
Сначала я получил следующую ошибку:
Unrecognized option `--force'
и в результате снял --force
флаг и просто использовал:
$ sudo grub-install --root-directory=/mnt/new-volume/ /dev/xvdf
что с тех пор привело к:
/dev/xvdf does not have any corresponding BIOS drive
Я попытался создать загрузочный раздел BIOS с помощью parted или fdisk, следуя инструкциям, указанным вэта темано каждый метод привел к той же ошибке. Обратите внимание, что конкретный тип экземпляра, который я использую (r5.large), переименовывает диски в соответствующие имена "nvme*", как указано в выводе lsblk:
nvme0n1 259:3 0 200G 0 disk
├─nvme0n1p1 259:4 0 200G 0 part /
└─nvme0n1p128 259:5 0 1M 0 part
nvme1n1 259:0 0 40G 0 disk
├─nvme1n1p2 259:2 0 40G 0 part /mnt/new-volume
└─nvme1n1p1 259:1 0 1M 0 part
Одна статья, имеющая отношение к сообщению об ошибке, была найдена в этомВопросы по Linux постно это не решило мою проблему. Я пробовал через chroot-ing в раздел и столкнулся с той же проблемой, и пробовал использовать промежуточный хост Amazon Linux 1 или Amazon Linux 2, но проблема все равно осталась.
Я заметил, что та же проблема возникает при использовании только корневого тома в Amazon Linux 1:
grub-install /dev/sda OR grub-install /dev/sda1
Но независимо от этого новый диск не может быть загружен, если он не указан как вторичный диск. Используя grub
команду только изруководство Legacy GRUBустановить тоже не удалось. Я ищу неправильную процедуру создания нового меньшего корневого тома или я что-то упускаю из шагов выше? Могу предоставить дополнительные подробности по мере необходимости.
решение1
Следовал той же инструкции, и вот что, как мне кажется, помогло:
В Ubuntu 20 /boot/grub/grub.cfg
был неправильный uuid, поэтому мне нужно было исправить это: /etc/default/grub.d/40-force-partuuid.cfg
а затем повторно сгенерировать новый /boot/grub/grub.cfg
с помощьюgrub-mkconfig -o ...
Кроме того, я разбил новый EBS, том, что, кажется, вы сделали тоже самое:
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 411647 409600 200M BIOS boot
/dev/nvme0n1p2 411648 104857566 104445919 49.8G Linux filesystem
Хотя не уверен, было ли это необходимо.
решение2
Вам необходимо указать правильное блочное устройство, которое вы используете.nvmeустройство вместоxvdf
sudo grub-install --root-directory=/mnt/new-volume/ --force /dev/nvme1n1
решение3
Я нашел обходной путь для Amazon Linux 1, выполнив следующие действия, но все равно готов к дальнейшей проверке.
Запустите новый экземпляр, используя тот же AMI, но изменив размер корневого тома на желаемое значение.
Остановите новый экземпляр, отсоедините меньший том EBS и присоедините его к текущему экземпляру, к которому присоединен больший корневой том (в остановленном состоянии).
Запустите текущий экземпляр (теперь с меньшим томом EBS, подключенным в качестве вторичного диска).
Для копирования содержимого корневого тома (предполагается, что он смонтирован в )
/mnt/new-volume
:$ rsync -axv / /mnt/новый-том
Остановите текущий экземпляр, отсоедините оба тома.
Присоедините новый корневой том меньшего размера к экземпляру.
Запустить экземпляр
Это не такой уж элегантный способ решения проблемы, но его оказалось достаточно, поскольку неясно, как создается исходный корневой том и как с него загружается.