Ampliar uma instância do EC2 é fácil como uma respiração (por exemplo, crie uma AMI, inicie uma instância a partir dela e altere o tamanho do armazenamento).
Mas reduzi-lo se torna mais difícil. Gostaria de reduzir o tamanho do volume raiz da instância do Amazon Web Services (AWS) EC2 Elastic Block Store (EBS). Existem alguns procedimentos antigos de alto nível na rede. A versão mais detalhada que encontrei é uma resposta de um ano sobre uma pergunta do StackOverflow: como posso reduzir minha capacidade de volume de ebs , as etapas têm um nível bastante alto:
Crie um novo volume EBS com o tamanho desejado (por exemplo, / dev / xvdg)
Inicie uma instância e anexe os dois volumes EBS a ela
Verifique o sistema de arquivos (do volume raiz original): (por exemplo) e2fsck -f / dev / xvda1
Reduza ao máximo o volume raiz original: (por exemplo, ext2 / 3/4) resize2fs -M -p / dev / xvda1
Copie os dados com dd:
Escolha um tamanho de bloco (eu gosto de 16 MB)
Calcule o número de pedaços (usando o número de blocos da saída resize2fs): blocks * 4 / (chunk_size_in_mb * 1024) - arredondar um pouco para segurança
Copie os dados: (por exemplo) dd se = / dev / xvda1 ibs = 16M de = / dev / xvdg obs = 16M count = 80
Redimensione o sistema de arquivos no novo volume EBS (menor): (por exemplo) resize2fs -p / dev / xvdg
Verifique o sistema de arquivos (do volume raiz original): (por exemplo) e2fsck -f / dev / xvdg
Desanexe seu novo volume raiz do EBS e anexe-o à sua instância original
Não consigo encontrar uma solução detalhada de como fazer passo a passo.
Meu volume raiz do EBS está anexado a uma instância do HVM Ubuntu.
Qualquer ajuda seria muito apreciada.
fonte
Respostas:
No console da AWS:
Pare a instância que você deseja redimensionar
Crie uma captura instantânea do volume ativo e crie um volume "General Purpose SSD" a partir dessa captura instantânea.
Crie outro volume "SSD de uso geral" para o tamanho desejado.
Anexe esses 3 volumes à instância como:
Inicie a instância.
Faça logon na nova instância via SSH.
crie estes novos diretórios:
mkdir /source /target
mkfs.ext4 /dev/xvdf
mount -t ext4 /dev/xvdf /target
e2label /dev/xvdf /
mount -t ext4 /dev/xvdg /source
rsync -ax /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 /target
umount /source
De volta ao console da AWS: pare a instância e desanexe todos os volumes.
Anexe o novo volume dimensionado à instância como: "/ dev / sda1"
Inicie a instância e ela deverá inicializar.
O PASSO 10 É IMPORTANTE : Rotule o novo volume com "e2label", como mencionado acima, ou a instância parecerá inicializar em aws, mas não passará na verificação de conexão.
fonte
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
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
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áriav) 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:
Agora vá para a Etapa 11.
mount -t ext4 /dev/xvdf1 /target
e2label /dev/xvdf1 /
mount -t ext4 /dev/xvdg1 /source
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 /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.
fonte
/dev/sda1
intstead do/dev/xvda
@RubenSerrate?Os seguintes passos funcionaram para mim
Etapa 1. Crie um instantâneo do volume raiz ebs e crie um novo volume a partir do instantâneo (vamos chamar isso de cópia de volume)
Etapa 2. Crie uma nova instância com o volume raiz do ebs com o tamanho desejado. (vamos chamar isso de redimensionado por volume) Este volume ebs terá a partição correta para a inicialização. (Criar um novo volume de ebs do zero não funcionou para mim)
Etapa 3. Anexe redimensionar volume e copiar volume a uma instância.
Etapa 4. Formate redimensionar volume.
Nota: verifique se o volume da partição está inserido
/dev/xvdf1
não/dev/xvdf
Etapa 5. Monte o redimensionamento de volume e copie o volume mkdir / mnt / copy mkdir / mnt / resize
Etapa 6. Copie arquivos
Etapa 7. Verifique se o e2label é igual ao volume raiz
Etapa 8. Atualize o grub.conf na cópia de volume para corresponder ao novo volume udid
Pesquise e substitua uudid em /boot/grub/grub.cfg
Etapa 9. Desmonte volumes
Etapa 10. Anexe o novo volume ebs redimensionado à instância / dev / sda1
fonte
blkid
semsudo
retornar resultados armazenados em cache sem validá-los. Então, parece que o UUID não mudou.Aqui está uma abordagem alternativa;
Anexe e monte o volume antigo do EBS em uma instância do EC2 em execução. Se você deseja copiar um volume de inicialização, é melhor fazê-lo em uma instância diferente, com o volume antigo montado como dados, e não com o volume sendo usado como um sistema ativo.
Crie um novo volume EBS do tamanho desejado.
Anexe o novo volume à instância e (com cuidado) formate um novo sistema de arquivos (por exemplo, usando mkfs). Monte-o.
Copie o conteúdo antigo do sistema de arquivos do volume antigo para o novo volume:
Desmonte o novo volume e desanexe-o da instância.
Se você estava copiando o sistema de arquivos raiz, então:
Crie uma captura instantânea do EBS do novo volume.
Registre o instantâneo como uma nova AMI.
fonte