Nenhuma das outras soluções funcionará se o volume for usado como um dispositivo raiz (inicializável).
O disco recém-criado está sem a partição de inicialização, portanto, ele precisa ter o GRUB instalado e alguns sinalizadores configurados corretamente antes que uma instância possa usá-lo como um volume raiz.
Minha solução (a partir de hoje, funcionamento ) para encolher um volume raiz é:
Antecedentes: Temos uma instância A, cujo volume de raiz queremos encolher. Vamos chamar esse volume VA. Queremos encolher VA de 30GB para digamos 10GB
- Crie uma nova instância ec2, B, com o mesmo sistema operacional que a instância A. Como armazenamento, escolha um volume do mesmo tipo que VA, mas com um tamanho de 10 GB. (ou seja qual for o tamanho do seu alvo). Então, agora temos uma instância B que usa esse novo volume (vamos chamá-lo de VB) como um volume raiz.
- Quando a nova instância (B) estiver em execução. Pare e separe seu volume de raiz (VB).
NOTA: As etapas a seguir são tomadas principalmente a partir da solução da @bill:
-
Pare a instância que você deseja redimensionar (A).
-
Crie um instantâneo do volume VA e crie um volume "General Purpose SSD" desse instantâneo. Este volume vamos chamá-lo VASNAP.
-
Gire uma nova instância com o amazon Linux, chamaremos essa instância C. Vamos usar essa instância para copiar o conteúdo do VASNAP para o VB. Provavelmente poderíamos usar também a instância A para executar essas etapas, mas eu prefiro fazer isso em uma máquina independente.
-
Anexe os seguintes volumes à instância C.
/ dev / xvdf para o VB.
/ dev / xvdg para VASNAP.
-
Instância de reinicialização C.
-
Faça login na instância C via SSH.
-
Crie estes novos diretórios:
mkdir /source /target
- Formate a partição principal do VB com um sistema de arquivos ext4:
mkfs.ext4 /dev/xvdf1
Se você não receber nenhum erro, vá para a Etapa 11. Caso contrário, se você não tiver /dev/xvdf1
, será necessário criar a partição fazendo o seguinte i-vii:
i) Se /dev/xvdf1
não existir por qualquer motivo, você precisará criá-lo. Primeiro digite:
sudo fdisk /dev/xvdf
.
ii) Limpe o disco inserindo:
wipefs
iii) Crie uma nova partição digitando:
n
iv) Digite p
para criar uma partição primária
v) Continue pressionando enter para continuar com as configurações padrão.
vi) Quando ele pedir um comando novamente, digite w
para gravar as alterações e sair.
vii) Verifique se você tem a partição /dev/xvdf1
fazendo:
lsblk
Você deve ver algo como:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
└─xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
└─xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
└─xvdg1 202:97 0 250G 0 part
Agora prossiga para o passo 11.
- Monte-o neste diretório:
mount -t ext4 /dev/xvdf1 /target
- Isso é muito importante, o sistema de arquivos precisa de um e2label para o Linux reconhecê-lo e inicializá-lo, use "e2label / dev / xvda1" em uma instância ativa para ver o que deveria ser, neste caso o rótulo é: " / "
e2label /dev/xvdf1 /
- Monte o VASNAP na / fonte:
mount -t ext4 /dev/xvdg1 /source
- Copie o conteúdo:
rsync -vaxSHAX /source/ /target
Nota: não há "/" após "/ target". Além disso, pode haver alguns erros sobre links simbólicos e attrs, mas o redimensionamento ainda foi bem-sucedido
- Umount VB:
umount /target
-
De volta ao AWS Console: Detecte o VB da instância C e também remova o VA de A.
-
Anexe o novo tamanho do volume (VB) à instância como: "/ dev / xvda"
-
Instância de inicialização A, agora seu dispositivo raiz é 10 GB:)
-
Exclua as instâncias B e C e também todos os volumes, exceto VB, que agora é o volume raiz da instância A.