Como aumentar o tamanho de um disco em uma instância em execução no Amazon EC2

13

Eu tenho uma instância em execução de uma configuração de servidor EC 2 com o Ubunto. Qual é a melhor maneira de aumentar o tamanho do disco sem tempo de inatividade e risco mínimo?

Lendo os guias, uma maneira seria criar um novo disco, migrar dados, desativar o disco de troca da instância e ativá-lo novamente. Essa abordagem parece um pouco arriscada, exigindo algum tempo de inatividade. Gostaria de saber se existe uma abordagem melhor?

googletorp
fonte

Respostas:

14

O Amazon AWS acaba de lançar (em 13 de fevereiro de 2017) um novo recurso que permite alterar o tamanho de um volume EBS.

fonte: https://aws.amazon.com/blogs/aws/amazon-ebs-update-new-elastic-volumes-change-everything/

Isso permite aumentar o tamanho de um volume EBS em uma instância existente, enquanto estiver em execução.

É importante observar que alterar o tamanho do volume não altera o tamanho do sistema de arquivos no volume (para a maioria dos sistemas de arquivos). Etapas adicionais podem ser necessárias (dependendo do sistema de arquivos) no próprio sistema operacional. Por exemplo, um sistema resizefsde ext4arquivos usado pela maioria dos sistemas operacionais Linux atualmente.

A documentação completa da AWS que descreve o processo pode ser encontrada em http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html

Em alguns casos, o dispositivo de bloco mapeou partições e somente então uma (ou mais) das partições inclui um sistema de arquivos. Nesse caso, a partição precisará ser redimensionada primeiro e somente depois o sistema de arquivos. Esse processo também é descrito na documentação .

O novo recurso de redimensionamento "online" descrito no blog se aplica apenas às instâncias de geração atual e há outras considerações e limitações que precisam ser verificadas antes de tentar um redimensionamento de volume.

Evgeny
fonte
Antes de redimensionar o sistema de arquivos, você também precisará redimensionar a partição subjacente, o que está realmente bloqueando as partições físicas para um redimensionamento a quente.
Tensibai
@ Tensibai desculpe, eu não entendo o que significa "bloquear partições físicas para um redimensionamento a quente". Você quer dizer que modificar o tamanho do volume usando as APIs da AWS bloqueará gravações / leituras no volume?
Evgeny 01/03
Não, quero dizer que o disco será maior, mas a partição permanecerá a mesma, você precisará fdiskredimensioná-lo. Em relação à partição raiz, geralmente não é possível gravar a tabela de partição do disco enquanto ela estiver montada, e você não pode desmontar. Você terá que reiniciar em um ponto :)
Tensibai
Certo, se você usar várias partições antes de adicionar a camada do sistema de arquivos - as partições precisarão ser redimensionadas primeiro. Obrigado, tentarei adicioná-lo à resposta, citando um guia sobre como é feito.
Evgeny
A pergunta mencionada sem tempo de inatividade. No entanto, para redimensionar um volume raiz, parece que você precisaria desmontar a instância para executar esta etapa?
22617 Chris Stryczynski
2

O que faço (e isso não está respondendo exatamente à sua pergunta) é o seguinte:

  1. Crie um volume EBS e anexe-o ao documento da instância aqui
  2. Verifique novamente os barramentos scsi echo '- - -' > /sys/bus/scsi/devices/host1/scsi_host/host1/scan(pode ser necessário adaptar o número do host)
  3. Crie um volume físico com pvcreateo novo disco encontrado ( fdisk -lpara listar todos os discos)
  4. Crie um grupo de volumes e, em seguida, um volume lógico ( vgcreatee lvcreate)
  5. Formate o volume lógico com o sistema de arquivos desejado
  6. tar o ponto de montagem de destino para restaurá-lo.
  7. Monte este volume onde precisar de novo espaço.
  8. Restaure o alcatrão neste espaço recém-montado.

As etapas 6 e 8 são opcionais se você usar um novo espaço antes de instalar algo. Se você deseja substituir um diretório existente, é obvio que você deve evitar que algo seja escrito entre o final do arquivo e a restauração.

Você pode repetir as etapas de 4 a 8 para diferentes pontos de montagem, permitindo ampliar o espaço necessário e redimensionar esses volumes on-line sem interrupção.

Tensibai
fonte
0

Escala de armazenamento do sistema de arquivos ZFS Zero Downtime na AWS (ou em outro local)

upsize

  1. Instale o ZFS no EC2.

    http://serverascode.com/2016/09/05/aws-zfs-user-data.html

  2. Faça um zpool para seus dados em massa usando um volume EBS.
  3. Adicione outro EBS para obter mais armazenamento em bloco. (ou defina o pool autoexpand = true e apenas aumente seu EBS)
  4. Adicione o novo EBS ao seu zpool para disponibilizar o espaço. (a menos que você tenha usado a expansão automática e aumentado o tamanho do EBS)

Downsize

  1. Faça um novo zpool no novo EBS grande o suficiente para armazenar os dados encolhidos. (ainda não precisa ser montado ou no mesmo EC2)
  2. instantâneo do velho zpool grande demais
  3. zfs-envia o instantâneo para o novo zpool
  4. promova o instantâneo recebido no novo pool e monte-o
  5. destruir a piscina velha
  6. destruir EBS da piscina antiga
Jeremy
fonte
0

Após redimensionar o volume EBS, eis o que acabei de executar quando precisei expandir um pool do ZFS:

parted -l # Get the list of partitions 
parted /dev/xvdf rm 9 # Remove the buffer partition
parted /dev/xvdf resizepart 1 100% # Resize the partition
zpool online -e <zfs partition name> /dev/xvdf # Expand the zpool and the filesystem it holds
Michael Pereira
fonte