Nenhuma das outras soluções funcionará se o volume for usado como um dispositivo raiz (inicializável).
O disco recém-criado está ausente na partição de inicialização, portanto, é necessário ter o GRUB instalado e alguns sinalizadores configurados corretamente antes que uma instância possa usá-lo como volume raiz.
Minha (a partir de hoje, trabalhando ) solução para reduzir um volume raiz é:
Antecedentes: Temos uma instância A, cujo volume raiz queremos reduzir. Vamos chamar esse volume de VA. Queremos reduzir o VA de 30 GB para, digamos, 10 GB
- Crie uma nova instância do ec2, B, com o mesmo sistema operacional da instância A. Como armazenamento, escolha um volume do mesmo tipo que o VA, mas com um tamanho de 10 GB. (ou qualquer que seja o tamanho desejado). Então agora temos uma instância B que usa esse novo volume (vamos chamá-lo de VB) como volume raiz.
- Depois que a nova instância (B) estiver em execução. Pare e desanexe seu volume raiz (VB).
NOTA: As etapas a seguir são tomadas principalmente na solução da @bill:
Pare a instância que você deseja redimensionar (A).
Crie uma captura instantânea do volume VA e crie um volume "General Purpose SSD" a partir dessa captura instantânea. Esse volume será chamado de VASNAP.
Gire uma nova instância com o amazon Linux, que chamaremos de instância C. Apenas usaremos essa instância para copiar o conteúdo do VASNAP para o VB. Provavelmente, também poderíamos usar a instância A para executar essas etapas, mas prefiro fazê-lo em uma máquina independente.
Anexe os seguintes volumes à instância C. / dev / xvdf para VB. / dev / xvdg para VASNAP.
Reinicie a instância C.
Faça logon 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 não houver erros, continue na Etapa 11. Caso contrário, se você não tiver /dev/xvdf1
, precisará criar a partição executando 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 digitando:
wipefs
iii) Crie uma nova partição digitando:
n
iv) Enter p
para criar a partição primária
v) Continue pressionando enter para continuar com as configurações padrão.
vi) Quando solicitar um comando novamente, digite w
para escrever as alterações e sair.
vii) Verifique se você possui a /dev/xvdf1
partição executando:
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 vá para a Etapa 11.
- Monte-o neste diretório:
mount -t ext4 /dev/xvdf1 /target
- Isso é muito importante, o sistema de arquivos precisa de um e2label para Linux para reconhecê-lo e inicializá-lo; use "e2label / dev / xvda1" em uma instância ativa para ver o que deve ser; nesse caso, o rótulo é: "/"
e2label /dev/xvdf1 /
- Monte o VASNAP em / fonte:
mount -t ext4 /dev/xvdg1 /source
- Copie o conteúdo:
rsync -vaxSHAX /source/ /target
Nota: não há "/" following "/ target". Além disso, pode haver alguns erros sobre links simbólicos e atrs, mas o redimensionamento ainda foi bem-sucedido
- Umount VB:
umount /target
De volta ao console da AWS: desanexe o VB da instância C e também desanexe o VA de A.
Anexe o novo volume de tamanho (VB) à instância como: "/ dev / xvda"
Instância de inicialização A, agora seu dispositivo raiz tem 10 GB :)
Exclua as instâncias B e C e também todos os volumes, exceto o VB, que agora é o volume raiz da instância A.