Tenho tentado reduzir o tamanho do volume raiz da AMI do Amazon Linux 1 usando o procedimento emesta documentação(com algumas modificações feitas após não fazê-lo) e continuamente encontra erros com a etapa:
$ sudo grub-install --root-directory=/mnt/new-volume/ --force /dev/xvdf
Este é o GRUB legado (versão 0.97-94.32.amzn1
)
Eu estava recebendo o seguinte erro no início:
Unrecognized option `--force'
e como resultado removeu a --force
bandeira e justificou:
$ sudo grub-install --root-directory=/mnt/new-volume/ /dev/xvdf
que desde então resultou em:
/dev/xvdf does not have any corresponding BIOS drive
Tentei criar a partição de inicialização do BIOS usando parted ou fdisk seguindo as instruções mencionadas emeste tópicomas todos os métodos levaram ao mesmo fracasso. Observe que o tipo de instância específico que estou usando (r5.large) renomeia as unidades para nomes "nvme*" correspondentes, conforme observado na saída 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
Um artigo relevante para a mensagem de erro foi encontrado nestePostagem de perguntas sobre Linuxmas isso não resolveu meu problema. Tentei fazer chroot na partição e encontrei o mesmo problema e tentei usar um host intermediário Amazon Linux 1 ou Amazon Linux 2, mas continuo enfrentando o problema.
Observo que esse mesmo problema ocorre ao usar apenas o volume raiz no Amazon Linux 1:
grub-install /dev/sda OR grub-install /dev/sda1
Mas, independentemente disso, o novo disco não pode ser inicializado, a menos que esteja listado como unidade secundária. Usando o grub
comando sozinho deo manual do GRUB legadoa instalação também falhou. Estou procurando o procedimento errado para criar um novo volume raiz menor ou há algo que estou faltando nas etapas acima? Pode fornecer mais detalhes conforme necessário.
Responder1
Segui o mesmo manual e foi o que eu acho que fez funcionar:
No Ubuntu 20 /boot/grub/grub.cfg
havia uuid errado, então eu precisava consertar aqui: /etc/default/grub.d/40-force-partuuid.cfg
e então gerar novamente o novo /boot/grub/grub.cfg
comgrub-mkconfig -o ...
Além disso particionei o novo EBS, volume, o que parece que você também fez:
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 411647 409600 200M BIOS boot
/dev/nvme0n1p2 411648 104857566 104445919 49.8G Linux filesystem
Não tenho certeza se era necessário, no entanto.
Responder2
Você deve especificar o dispositivo de bloco correto conforme está usandonvmedispositivo em vez dexvdf
sudo grub-install --root-directory=/mnt/new-volume/ --force /dev/nvme1n1
Responder3
Enquanto isso, encontrei uma solução alternativa para o Amazon Linux 1 fazendo o seguinte, mas ainda estaria aberto para uma inspeção mais aprofundada.
Inicie uma nova instância usando a mesma AMI, mas alterando o tamanho do volume raiz para a quantidade desejada.
Pare a nova instância, desconecte o volume menor do EBS e anexe-o à instância atual onde o volume raiz maior está conectado (no estado parado).
Inicie a instância atual (agora com o volume EBS menor anexado como unidade secundária).
Use o seguinte para copiar o conteúdo do volume raiz (assumindo que ele esteja montado em
/mnt/new-volume
:$ rsync -axv //mnt/novo-volume
Pare a instância atual e desconecte os dois volumes.
Anexe o novo volume raiz menor à instância.
Inicie a instância
Não é uma solução alternativa tão elegante, mas foi suficiente, pois não está claro como o volume raiz original é criado e inicializado.