Tamanhos crescentes de volume do Amazon EBS [fechado]

154

Estou bastante impressionado com os serviços EC2 e EBS da Amazon. Eu queria saber se é possível aumentar um volume EBS.

Por exemplo: Se eu tenho um volume de 50 GB e começo a ficar sem espaço, posso aumentar até 100 GB quando necessário?

Nikhil Gupte
fonte
2
Eu escrevi um tutorial para aumentar o tamanho do seu volume de EBS na - aws-musings.com/how-to-expand-your-ebs-volume
Vaibhav Puranik
8
Ótima pergunta (+1). Melhor ajuste para falha do servidor?
Jonik
1
Por favor upvote esta resposta, pois é muito mais até à data: stackoverflow.com/a/15229477/163461
David
1
@ Jonik eu concordo totalmente. Para aqueles que podem (e também concordam), vote para reabrir esta questão para que ela possa ser migrada. A menos que algum mod lendo isso possa fazer o mesmo?
Yuck
Isso deve ser migrado para a falha do servidor, se não por outro motivo, para permitir respostas mais atuais (como uma que faça referência à documentação da AWS sobre este tópico em docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
Jeromy French

Respostas:

9

Todas as ótimas recomendações e achei que adicionaria este artigo que encontrei, relacionado à expansão de uma instância do Windows Amazon EC2 EBS usando as ferramentas de interface da Web do Amazon Web para executar as alterações necessárias. Se você não estiver familiarizado com a CLI, isso facilitará sua atualização.

http://www.tekgoblin.com/2012/08/27/aws-guides-how-to-resize-a-ec2-windows-ebs-volume/

Obrigado ao TekGoblin por postar este artigo.

Pat McCarten
fonte
103

Você pode aumentar o armazenamento, mas não pode ser feito em tempo real. Você precisará tirar uma captura instantânea do bloco atual, adicionar um bloco novo e maior e reconectá-la.

Há uma explicação simples aqui baseada no uso das ferramentas de linha de comando EC2 da Amazon

ConroyP
fonte
2
Você também precisará redimensionar o sistema de arquivos. Você provavelmente está procurando "resize2fs - ext2 / ext3 / ext4 resizer do sistema de arquivos".
James Moore
8
Eu apenas tive que pesquisar isso no Google. Eu bati nesta pergunta e neste vídeo ao mesmo tempo. Esta é uma caminhada realmente ótima, muitos agradecimentos ao criador: youtube.com/watch?v=ouYjQ3_I3BA (eu descobri tudo sozinho, exceto o bit do redimensionador, como James Moore mencionou.)
Chris Allen Lane,
Também há uma maneira de definir o tamanho do volume do EBS usando o AWS-SDK consultando primeiro o VolumeSize do seu instantâneo como uma das flexibilidades no benefício usando o EBS .
Chetabahana
Você pode redimensionar um volume ao vivo agora no console da AWS . Parece funcionar apenas em instâncias SSD (gp2, io1) e você pode até mudar de um tipo para outro. Não tenho certeza de quando foi adicionado, mas isso resolve um grande problema.
STRML 27/04
44

Você não pode simplesmente "esbarrar" em mais espaço rapidamente, se precisar, mas pode redimensionar a partição com um instantâneo.

As etapas fazem isso:

  1. desmontar volume ebs
  2. criar um instantâneo do ebs
  3. adicione novo volume com mais espaço
  4. recriar a tabela de partição e redimensionar o sistema de arquivos
  5. montar o novo volume ebs

Veja http://aws.amazon.com/ebs/ - EBS Snapshot:

Os instantâneos também podem ser usados ​​para instanciar vários novos volumes, expandir o tamanho de um volume ou mover volumes pelas zonas de disponibilidade. Quando um novo volume é criado, existe a opção de criá-lo com base em um instantâneo existente do Amazon S3. Nesse cenário, o novo volume começa como uma réplica exata do volume original. Especificando opcionalmente um tamanho de volume diferente ou uma Zona de Disponibilidade diferente, essa funcionalidade pode ser usada como uma maneira de aumentar o tamanho de um volume existente ou criar volumes duplicados nas novas Zonas de Disponibilidade. Se você optar por usar capturas instantâneas para redimensionar seu volume, precisará garantir que seu sistema de arquivos ou aplicativo suporte o redimensionamento de um dispositivo.

eco
fonte
22

Eu segui toda a resposta, todos têm algo faltando com todo respeito.

Se você seguir estas etapas, poderá aumentar seu volume EBS e manter seus dados (isso não é para o volume raiz). Por uma questão de simplicidade, sugiro usar o consule da AWS para criar instantâneos, ... você também pode fazer isso usando as ferramentas de linha de comando da AWS.

Não estamos tocando no volume raiz aqui.

Vá para o console da AWS:

  1. Encerre sua instância (será apenas por alguns minutos)
  2. Desanexe o volume que você planeja aumentar (digamos / dev / xvdf)
  3. Crie uma captura instantânea do volume.
  4. Crie um novo volume com um tamanho maior usando o instantâneo que você acabou de criar
  5. Anexe o novo volume à sua instância
  6. Inicie sua instância

SSH para sua instância:

 $ sudo fdisk -l

Isso fornece algo como:

Disk /dev/xvdf: 21.5 GB, 21474836480 bytes
12 heads, 7 sectors/track, 499321 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd3a8abe4

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdf1            2048    41943039    20970496   83  Linux

Anote os valores de início e ID . (neste caso 2048 e 83)

Usando o fdisk, exclua a partição xvdf1 e crie uma nova que inicie exatamente no mesmo bloco (2048). Daremos o mesmo ID (83):

$ sudo fdisk /dev/xvdf 

Command (m for help): d
Selected partition 1

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
Using default value 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Esta etapa é bem explicada aqui: http://litwol.com/content/fdisk-resizegrow-physical-partition-without-losing-data-linodecom

Quase pronto, basta montar o volume e executar o resize2fs:

Monte o volume ebs: (o meu está em / mnt / ebs1)

$ sudo mount /dev/xvdf1 /mnt/ebs1

e redimensione-o:

$ sudo resize2fs -p /dev/xvdf1

resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/xvdf1 is mounted on /mnt/ebs1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/xvdf1 to 5242624 (4k) blocks.
The filesystem on /dev/xvdf1 is now 5242624 blocks long.

ubuntu@ip-xxxxxxx:~$ 

Feito! Use df -hpara verificar o novo tamanho.

Buscador
fonte
19

Desde que você esteja de acordo com alguns minutos de inatividade, Eric Hammond escreveu um bom artigo sobre como redimensionar o disco raiz em uma instância do EBS em execução: http://alestic.com/2010/02/ec2-resize-running-ebs -raiz

Jeff Bauer
fonte
1
Inspirado por isso, eu comecei a escrever "awscripts", @ github.com/moejay/awscripts que inclui comandos de Eric, bem como aqueles para os tipos de mudança exemplo, em um fácil, script 'crontabbable'
jay
5

Agora você pode fazer isso por meio do AWS Management Console. O processo é o mesmo das outras respostas, mas você não precisa mais ir para a linha de comando.

Boggin
fonte
7
Você pode postar mais informações sobre como isso é feito através do console da web? O console pode redimensionar o volume, mas como ele lida com o redimensionamento da partição dentro do volume, especialmente se for de um tipo como XFS, BRTFS, etc.?
Riyad Kalla
Isso deveria ter sido um comentário, pois apenas aumenta as respostas existentes e não adiciona nada de novo por si só.
Yuck
1
As instruções para utilizar o console da Web estão disponíveis aqui: docs.aws.amazon.com/AWSEC2/latest/UserGuide/...
Dan Osipov
4

Entre: Como nos discos físicos, pode ser útil usar o LVM; ex:

http://www.davelachapelle.ca/guides/ubuntu-lvm-guide/ http://www.centos.org/docs/5/html/Cluster_Logical_Volume_Manager/

Grande vantagem: Permite adicionar (ou remover) espaço dinamicamente.

Também pode ser facilmente movido entre / entre instâncias.

Ressalvas:

  • deve ser configurado com antecedência
  • uma configuração JBOD simples significa que você perde tudo se perder um "disco"
mvgfr
fonte
4

Meus passos:

  1. parar a instância
  2. encontre o volume ebs anexado à instância e crie uma captura instantânea dele
  3. crie um novo volume com maior espaço em disco usando o instantâneo acima. Infelizmente, a interface do usuário no console do aws para criar um instantâneo é quase inutilizável porque está listando todos os instantâneos no aws. Usar a ferramenta de linha de comando é muito mais fácil, assim:

    ec2-create-volume -s 100 --snapshot snap-a31fage -z us-east-1c
    
  4. desanexe o volume ebs (menor) existente da instância

  5. anexe o novo volume (maior) à instância e certifique-se de anexá-lo ao mesmo dispositivo que a instância está esperando (no meu caso, é / dev / sda1)
  6. iniciar a instância

Você terminou!

Além da etapa 3 acima, você pode fazer tudo usando o console de gerenciamento do aws.

Observe também como mencionado aqui:

/server/365605/how-do-i-access-the-attached-volume-in-amazon-ec2

o dispositivo na sua instância ec2 pode ser / dev / xv *, enquanto o console da web do aws informa que é / dev / s *.

Dexin Wang
fonte
2
A partir de novembro de 2013, você pode selecionar o instantâneo recém-criado e clicar em 'Criar volume' na parte superior da página. Isso criará um volume a partir do instantâneo e você pode evitar a etapa 3 acima na linha de comando.
Matt C
1
Uma observação é que você deve garantir a criação do volume na mesma zona de disponibilidade da instância, caso contrário, não será possível anexá-lo.
Codecowboy 23/05
3

Use o comando "diskpart" para o sistema operacional Windows, consulte aqui: http://support.microsoft.com/kb/300415 seguir estão as etapas que segui para um disco não raiz (disco básico não dinâmico)

Depois de tirar um instantâneo, desmontar o volume antigo do EBS (por exemplo, 600 GB) e criar um volume maior do EBS (por exemplo, 1 TB) e montar esse novo volume do EBS - você precisará informar o Windows sobre o redimensionamento (de 600 GB para 1 TB) no prompt de comando (executado como administrador)

diskpart.exe

selecionar disco = 9

selecione volume = Z

ampliar

[meu disco 9, volume rotulado como Z, era um volume de 1 TB criado a partir de um instantâneo ec2 de 600 GB - eu queria redimensionar 600 GB para 1 TB e, portanto, poderia seguir as etapas acima para fazer isso.]

dinn11
fonte
Funcionou muito bem no meu sistema Win Server 2003 R2 Datacenter. Obrigado pela dica!
217 Jeff Jeff
Ótimo post, me ajudou muito!
user1326293
0

Eu recomendo o Logical Volume Manager (LVM) para todos os volumes EBS, se o seu sistema operacional suportar. Distribuições Linux geralmente fazem. É ótimo por várias razões.

  1. O redimensionamento e a movimentação de volumes lógicos podem ser feitos ao vivo, portanto, em vez de todo o instantâneo offline, que requer tempo de inatividade, você pode adicionar outro volume EBS maior, adicioná-lo ao pool LVM como um volume físico (PV), mover o volume lógico (LV), remova o volume físico antigo do pool e exclua o volume EBS antigo. Em seguida, basta redimensionar o volume lógico e redimensionar o sistema de arquivos nele. Isso não requer tempo de inatividade!

  2. Ele abstrai seu armazenamento dos seus dispositivos 'físicos'. Mover partições entre dispositivos sem precisar de tempo de inatividade ou alterações nos pontos de montagem / fstab é muito útil.

Seria bom se a Amazon tornasse possível redimensionar os volumes EBS on-the-fly, mas com o LVM não é tão necessário.

Martijn Heemels
fonte
0

se seu volume raiz for sistema de arquivos xfs, execute este comando xfs_growfs /

Saurabh Chandra Patel
fonte
Isso precisa de um pouco mais de detalhes para ser considerado uma resposta completa e utilizável.
Yuck