EC2 Não é possível redimensionar o volume após aumentar o tamanho

95

Eu segui as etapas para redimensionar um volume EC2

  1. Interrompeu a instância
  2. Tirou um instantâneo do volume atual
  3. Criou um novo volume a partir do instantâneo anterior com um tamanho maior na mesma região
  4. Desanexou o volume antigo da instância
  5. Anexou o novo volume à instância no mesmo ponto de montagem

O volume antigo era de 5 GB e o que criei tem 100 GB. Agora, quando eu reinicio a instância e executo, df -h Iainda vejo isso

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            4.7G  3.5G 1021M  78% /
tmpfs                 296M     0  296M   0% /dev/shm

Isso é o que eu ganho quando corro

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!

Se eu correr cat /proc/partitionseu vejo

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2

Pelo que entendi, se segui os passos certos, xvde deve ter os mesmos dados que xvde1, mas não sei como usá-los

Como posso usar o novo volume ou umount xvde1 e montar xvde em vez disso?

Não consigo entender o que estou fazendo de errado

Eu também tentei sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem

A propósito, esta é uma caixa de linux com centos 6.2 x86_64

Agradeço antecipadamente por sua ajuda

Wilman Arambillete
fonte

Respostas:

70

Obrigado Wilman seus comandos funcionaram corretamente, pequenas melhorias precisam ser consideradas se estamos aumentando EBSs em tamanhos maiores

  1. Pare a instância
  2. Crie um instantâneo do volume
  3. Crie um novo volume com base no instantâneo aumentando o tamanho
  4. Verifique e lembre-se do ponto de montagem do volume atual (ou seja /dev/sda1)
  5. Desligue o volume atual
  6. Anexe o volume criado recentemente à instância, definindo o ponto de montagem exato
  7. Reinicie a instância
  8. Acesse via SSH para a instância e execute fdisk /dev/xvde

    AVISO: o modo compatível com DOS está obsoleto. É altamente recomendável desligar o modo (comando 'c') e alterar as unidades de exibição para setores (comando 'u')

  9. Pressione ppara mostrar as partições atuais

  10. Pressione dpara excluir as partições atuais (se houver mais de uma, você deve excluir uma de cada vez) NOTA: Não se preocupe, os dados não são perdidos
  11. Clique npara criar uma nova partição
  12. Pressione ppara defini-lo como primário
  13. Pressione 1para definir o primeiro cilindro
  14. Defina o novo espaço desejado (se vazio, todo o espaço é reservado)
  15. Pressione apara torná-lo inicializável
  16. Clique 1e wpara escrever mudanças
  17. Reinicie a instância OU use partprobe(do partedpacote) para informar o kernel sobre a nova tabela de partição
  18. Faça login via SSH e execute resize2fs / dev / xvde1
  19. Por fim, verifique o novo espaço executando df -h
DCF
fonte
1
"AVISO: o modo compatível com DOS está obsoleto. É altamente recomendável desligar o modo (comando 'c') e alterar as unidades de exibição para setores (comando 'u')" Isso não era necessário para mim (Ubuntu 13.04). Ele já havia desativado a compatibilidade com DOS e usado Setores por padrão. Pressionando ce urealmente mudou PARA os modos obsoletos.
wisbucky,
6
A solução funcionou muito bem, mas a instância ficou presa em "1/2 verificação aprovada" com um sinal de exclamação (ReadHat 6.5). Para corrigir isso, configurei o "primeiro cilindro" para 16 (como era anteriormente). Depois disso, a instância começou normal com "2/2 verificações aprovadas". Espero que isso ajude alguém ...
user3586516
1
Eu também tive que trocar o primeiro cilindro, mas tive que mudá-lo para 2048. Eu recomendaria verificar sua configuração de partição atual antes de excluí-la.
Doyley de
9
Depois de reinicializar minha instância, não consigo me conectar via SSH. A conexão atinge o tempo limite e o console do aws mostra que não pode iniciar suas verificações de status. Eu acho que está morto. alguma ideia do que fazer?
Richard
5
Esta resposta agora está obsoleta, agora que a AWS oferece suporte para redimensionamento online para volumes EBS.
Dale Anderson
303

Não há necessidade de parar a instância e desanexar o volume do EBS para redimensioná-lo mais!

13 de fevereiro de 2017, a Amazon anunciou: " Atualização do Amazon EBS - Novos volumes elásticos mudam tudo "

O processo funciona mesmo se o volume a ser estendido for o volume raiz da instância em execução!


Digamos que queremos aumentar a unidade de inicialização do Ubuntu de 8G para 16G "on-the-fly".

etapa 1) faça login no console da web da AWS -> EBS -> clique com o botão direito do mouse naquele que deseja redimensionar -> "Modificar volume" -> altere o campo "Tamanho" e clique no botão [Modificar]

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui


etapa 2) ssh na instância e redimensionar a partição:

vamos listar os dispositivos de bloqueio anexados à nossa caixa:
lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0   8G  0 part /

Como você pode ver, / dev / xvda1 ainda é uma partição de 8 GiB em um dispositivo de 16 GiB e não há outras partições no volume. Vamos usar "growpart" para redimensionar a partição 8G para 16G:

# install "cloud-guest-utils" if it is not installed already
apt install cloud-guest-utils

# resize partition
growpart /dev/xvda 1

Vamos verificar o resultado (você pode ver que / dev / xvda1 agora é 16G):

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0  16G  0 part /

Muitas respostas do SO sugerem o uso do fdisk com deletar / recriar partições, o que é um processo desagradável, arriscado e sujeito a erros, especialmente quando mudamos a unidade de inicialização.


etapa 3) redimensionar o sistema de arquivos para crescer totalmente e usar totalmente o novo espaço de partição
# Check before resizing ("Avail" shows 1.1G):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.3G  1.1G  86% /

# resize filesystem
resize2fs /dev/xvda1

# Check after resizing ("Avail" now shows 8.7G!-):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G  6.3G  8.7G  42% /

Portanto, temos tempo de inatividade zero e muito espaço novo para usar.
Aproveitar!

Update: Update: Use sudo xfs_growfs / dev / xvda1 em vez de resize2fs quando for sistema de arquivos XFS.

Dmitry Shevkoplyas
fonte
redimensionar a partição foi uma grande ajuda .... !! A coisa mais maravilhosa é que funcionou até para o volume da raiz.
piyushmandovra
4
Alguém aceitará isso como a resposta correta? Só porque ... é.
eduardohl
Sólido, muitíssimo obrigado ... Eu estava tão cético em realizar as etapas mencionadas nas respostas acima, mas isso foi tão legal ...
AAgg
4
Huh, os documentos oficiais não mencionam growpart, e é por isso que eu não consegui fazer isso funcionar antes. Obrigado!
Ibrahim
1
@Shihas, sim. Esse é o ponto principal. Mesmo a unidade montada "root" inicializável pode ser aumentada com segurança sem a necessidade de reinicialização!
Dmitry Shevkoplyas
42

Comentário do prefeito por jperelli acima.

Eu enfrentei o mesmo problema hoje. A documentação da AWS não menciona claramente o growpart. Descobri da maneira mais difícil e, de fato, os dois comandos funcionaram perfeitamente em M4.large e M4.xlarge com Ubuntu

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1
Sachin Shintre
fonte
a segunda resposta para anexar e esta resposta é para redimensionar
Adiii
Surpreendente! trabalhou na minha instância t2.small. Uau. Achei que seria mais sangrento do que isso. Obrigado!
publicknowledge
Não consigo instalar utils-convidado da nuvem que contém o growpart. Versão Linux 3.16.0-4-amd64
nettie
15

[RESOLVIDO]

Isso é o que tinha que ser feito

  1. Pare a instância
  2. Crie um instantâneo do volume
  3. Crie um novo volume com base no instantâneo aumentando o tamanho
  4. Verifique e lembre-se do ponto de montagem do volume atual (ou seja, / dev / sda1)
  5. Desligue o volume atual
  6. Anexe o volume criado recentemente à instância, definindo o ponto de montagem exato
  7. Reinicie a instância
  8. Acesse via SSH para a instância e execute fdisk /dev/xvde
  9. Pressione ppara mostrar as partições atuais
  10. Pressione dpara excluir as partições atuais (se houver mais de uma, você deve excluir uma de cada vez) NOTA: Não se preocupe, os dados não são perdidos
  11. Clique npara criar uma nova partição
  12. Pressione ppara defini-lo como primário
  13. Pressione 1para definir o primeiro cilindro
  14. Defina o novo espaço desejado (se vazio, todo o espaço é reservado)
  15. Pressione apara torná-lo inicializável
  16. Clique 1e wpara escrever mudanças
  17. Reiniciar instância
  18. Faça login via SSH e execute resize2fs /dev/xvde1
  19. Por fim, verifique o novo espaço em execução df -h

É isso

Boa sorte!

Wilman Arambillete
fonte
1
Em volumes do Amazon EBS, parece ser importante usar o mesmo ponto de montagem em resize2fs que você usa com fdisk. df mostra algo como / dev / xvda1 como o volume EBS anexado, mas o comando resize2fs só funcionou para mim quando usei o identificador / dev / sdf1, que usei quando fiz a nova partição no fdisk.
Garreth McDaid
Isso está na documentação da AWS. O que é ruim é que seus procedimentos ainda estão incompletos após 3 anos disso. Se você tem uma imagem, pode cair para trás, com certeza. Sempre é possível suspender temporariamente o novo disco de uma instância executando um desktop também, mas precisar que ele seja montado para um redimensionamento pode ser um problema se você estiver pensando em usar o gparted. gcloud redimensiona instantaneamente.
mckenzm
Meu dispositivo de armazenamento (/ dev / xvda1) começou no setor 16065, não no setor 1. Portanto, a etapa 13 (Hit 1 para definir o primeiro cilindro) teve que ser 16065 no meu caso.
Simon Paarlberg
Não vá com essas soluções, você pode perder seus dados. Na verdade, descobri que não vá para a opção de exclusão de partição se mostrar os valores da lista de partição na tabela de partição, porque se a lista estiver lá, ela literalmente exclui a partição, então os dados serão perdidos mesmo se a resposta disser "Não excluir". Existe uma maneira de estender o tamanho da partição, verifique na parte inferior há outros utilitários que ajudarão a estender o tamanho da partição sem problemas.
piyushmandovra
6
  1. faça login no console da web da AWS -> EBS -> clique com o botão direito do mouse naquele que deseja redimensionar -> "Modificar Volume" -> altere o campo "Tamanho" e clique no botão [Modificar]

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

Esta é uma versão direta da resposta de Dmitry Shevkoplyas. A documentação da AWS não mostra o growpartcomando. Isso funciona bem para o Ubuntu AMI.

Jperelli
fonte
6
  1. sudo growpart / dev / xvda 1
  2. sudo resize2fs / dev / xvda1

os dois comandos acima salvaram meu tempo para instâncias AWS ubuntu ec2.

HD298
fonte
5

Isso funcionará para o sistema de arquivos xfs, basta executar este comando

xfs_growfs /
Saurabh Chandra Patel
fonte
faça meu dia ... minha SEMANA!
Cristian Sepulveda
isso está realmente funcionando!
Corneliu Maftuleac
4

Apenas no caso de alguém aqui para a plataforma de nuvem do Google do GCP,
tente isto:

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1
Yunus
fonte
2

Você fez uma partição neste volume? Se você fez isso, você precisará aumentar a partição primeiro.

chantheman
fonte
não, eu não fiz. Eu deveria? Como faço isso? Lembre-se de que este novo volume que anexei deve ter todos os dados anteriores porque é um instantâneo do volume original
Wilman Arambillete
Não. Mas recebo esse erro se houver uma partição conectada. Vá e verifique se você ajustou o volume do tamanho correto e verifique se você montou o novo volume.
chantheman
Além disso, você não precisa interromper a instância para fazer isso. É seguro se você tiver gravações nesse volume, mas você pode fazer um instantâneo dele com a instância em execução.
chantheman
1

A flag inicializável (a) não funcionou no meu caso (EC2, centos6.5), então tive que recriar o volume do instantâneo. Depois de repetir todos os passos, EXCETO o sinalizador inicializável - tudo funcionou perfeitamente, então eu pude redimensionar2fs depois. Obrigado!

Sandr
fonte
1

Obrigado, @Dimitry, funcionou perfeitamente com uma pequena mudança para corresponder ao meu sistema de arquivos.

fonte: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux

Em seguida, use o seguinte comando, substituindo o ponto de montagem do sistema de arquivos (os sistemas de arquivos XFS devem ser montados para redimensioná-los):

[ec2-user ~]$ sudo xfs_growfs -d /mnt
meta-data=/dev/xvdf              isize=256    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 26214400

Nota Se você receber uma falha xfsctl: Erro não é possível alocar memória, pode ser necessário atualizar o kernel do Linux em sua instância. Para obter mais informações, consulte a documentação específica do sistema operacional. Se você receber uma mensagem O sistema de arquivos já tem nnnnnnn blocos de comprimento. Nada para fazer! erro, consulte Expanding a Linux Partition.

user2125117
fonte
0

Não tem representante suficiente para comentar acima; mas também observe pelos comentários acima que você pode corromper sua instância se iniciar em 1; se você clicar em 'u' depois de iniciar o fdisk antes de listar suas partições com 'p', isso lhe dará o número inicial correto para que você não corrompa seus volumes. Para centos 6.5 AMI, também como mencionado acima, 2048 foi correto para mim.

Reece
fonte
0

Portanto, no caso de alguém ter o problema em que encontrou esse problema com 100% de uso e sem espaço para executar o comando growpart (porque ele cria um arquivo em / tmp)

Aqui está um comando que descobri que ignora mesmo enquanto o volume do EBS está sendo usado, e também se você não tiver mais espaço no seu ec2, e você estiver em 100%

/sbin/parted ---pretend-input-tty /dev/xvda resizepart 1 yes 100%

veja este site aqui:

https://www.elastic.co/blog/autoresize-ebs-root-volume-on-aws-amis

CodeJunkie
fonte
Este comando deve ser seguido por sudo resize2fs /dev/xvda1to update /etc/fstab, somente depois disso df -hirá mostrar o espaço em disco aumentado
karmendra
0

Coloque um espaço entre o nome e o número, por exemplo:

sudo growpart /dev/xvda 1

Observe que há um espaço entre o nome do dispositivo e o número da partição.

Para estender a partição em cada volume, use os seguintes comandos growpart. Observe que há um espaço entre o nome do dispositivo e o número da partição.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

mwafi
fonte