Skip to main content

EC2 na prática: Armazenamento com EBS, Snapshot e AMI

Manual passo a passo para operações de armazenamento em uma instância EC2 já criada: anexar um novo volume EBS, criar snapshots, entender os tipos de storage e gerar uma AMI personalizada.

Pré-requisito: uma instância EC2 em estado running (ver manual 01) e acesso SSH a ela.


Parte 1: Adicionar um novo disco (volume EBS)​

O EBS é o serviço de discos da AWS, o equivalente ao VMDK no datastore. Um volume pode ser criado, anexado e removido de instâncias a quente, sem desligar nada.

1.1 Criar o volume​

  1. Console EC2 → menu lateral Elastic Block Store → Volumes → Create volume.
  2. Preencha:
    • Volume type: gp3
    • Size: 10 GiB (para o exercício)
    • Availability Zone: ⚠️ a MESMA da sua instância (veja na aba de detalhes da instância, ex.: eu-west-1a). Um volume só pode ser anexado a instâncias da mesma AZ.
  3. (Opcional) Adicione a tag Name = SEUNOME.
  4. Clique em Create volume. O estado inicial é Available (criado, mas solto).

1.2 Anexar à instância​

  1. Selecione o volume → Actions → Attach volume.
  2. Em Instance, escolha a sua instância.
  3. Device name: mantenha o sugerido (ex.: /dev/sdf).
  4. Clique em Attach volume, o estado muda para In-use.

1.3 Preparar o disco no sistema operacional​

Na sessão SSH da instância:

# O novo disco aparece sem partição nem filesystem
lsblk

Saída esperada (o novo disco aparece como nvme1n1, sem ponto de montagem):

NAME         SIZE  MOUNTPOINT
nvme0n1 30G
├─nvme0n1p1 29.9G /
nvme1n1 10G
# Criar o filesystem
sudo mkfs.ext4 /dev/nvme1n1

# Criar o ponto de montagem e montar
sudo mkdir /dados
sudo mount /dev/nvme1n1 /dados

# Verificar
df -h /dados

Para montagem persistente (sobreviver a reboot), adicione ao /etc/fstab usando o UUID:

sudo blkid /dev/nvme1n1                  # copie o UUID
echo 'UUID=SEU_UUID /dados ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab

💡 A opção nofail evita que a instância trave no boot caso o volume não esteja anexado.

1.4 Expandir um volume (bônus)​

Volumes podem crescer a quente (nunca encolher):

  1. Volumes → selecione → Actions → Modify volume → novo tamanho → Modify.
  2. No SO, expanda o filesystem:
sudo resize2fs /dev/nvme1n1          # ext4
# (para o disco root com partição: sudo growpart /dev/nvme0n1 1 antes)

Parte 2: Snapshots​

Snapshot é a cópia point-in-time de um volume, armazenada internamente no S3. É incremental: o primeiro copia tudo, os seguintes só os blocos alterados.

💡 Diferente do snapshot do vSphere, o snapshot EBS não degrada a performance do volume e pode ser mantido por tempo indefinido. É a base de backup, cópia entre AZs/regiões e criação de AMIs.

2.1 Criar um snapshot​

  1. Gere um arquivo de teste no disco para provar o backup:
echo "dados importantes $(date)" | sudo tee /dados/prova.txt
  1. Console → Elastic Block Store → Volumes → selecione o volume de dados → Actions → Create snapshot.
  2. Description: SEUNOME.
  3. Create snapshot. Acompanhe em EBS → Snapshots até o status Completed.

2.2 Restaurar um snapshot​

Snapshot não se "restaura por cima", ele gera um volume novo:

  1. Snapshots → selecione → Actions → Create volume from snapshot.
  2. Escolha tipo (gp3), tamanho (igual ou maior) e a AZ da instância.
  3. Anexe o novo volume à instância (como na Parte 1.2) e monte em outro ponto (ex.: /restore):
sudo mkdir /restore
sudo mount /dev/nvme2n1 /restore
cat /restore/prova.txt # o arquivo está lá 🎉

💡 Esse fluxo (snapshot → volume novo → anexar) também é como se copia um disco entre AZs ou regiões: o snapshot é regional, o volume é zonal.


Parte 3: Tipos de storage EBS​

Cada volume tem um tipo, que define performance e preço, o equivalente aos tiers de storage do datacenter:

TipoMídiaUso típicoEquivalente on-prem
gp3SSDPadrão para quase tudo; IOPS/throughput configuráveis por volumeTier SSD geral
io2SSDBancos de dados críticos, IOPS provisionadas e garantidasAll-flash de produção
st1HDDThroughput sequencial: logs, big data, ETLTier NL-SAS
sc1HDDDados frios, acesso raro, menor custoTier de arquivamento

Pontos que valem memorizar:

  • gp3 é o default sensato e permite ajustar IOPS (até 16.000) e throughput sem trocar de tipo nem de mídia.
  • O tipo pode ser trocado a quente (Modify volume), sem desligar a instância.
  • Volume EBS é zonal (vive em uma AZ); snapshot é regional.
  • EBS é storage de bloco (disco). Para arquivos compartilhados existe o EFS (≈ NFS) e para objetos o S3 (backup, logs, imagens), assuntos de outro capítulo.

Parte 4: Criar uma AMI personalizada​

AMI é a imagem/template da máquina. Criar uma AMI a partir de uma instância configurada é o mesmo fluxo de "preparar uma VM padrão e converter em template" do vSphere.

4.1 Preparar a instância​

Deixe a máquina no estado que deseja "congelar", por exemplo, com o nginx já instalado (manual 01, passo 10).

4.2 Criar a imagem​

  1. Instances → selecione a instância → Actions → Image and templates → Create image.
  2. Image name: SEUNOME-ubuntu-nginx.
  3. No reboot: deixe desmarcado (a AWS reinicia a instância rapidamente para garantir consistência do filesystem, recomendado).
  4. Create image.
  5. Acompanhe em Images → AMIs até o status Available (alguns minutos).

💡 Por baixo, a AMI é composta de snapshots dos volumes da instância + metadados. Ao deletar uma AMI (Deregister), os snapshots dela precisam ser apagados separadamente.

4.3 Testar a AMI​

  1. AMIs → selecione a sua → Launch instance from AMI.
  2. Complete o wizard normalmente (tipo, chave, security group com HTTP liberado).
  3. Acesse o IP público da nova instância no navegador: o nginx já vem instalado, a máquina nasceu pronta.

💡 É assim que se padroniza ambiente na AWS: uma "golden image" da empresa, da qual todas as máquinas nascem. Versione no nome (-v1, -v2) como faria com templates.

4.4 Observações importantes​

  • AMI é regional, para usar em outra região: Actions → Copy AMI.
  • AMIs e seus snapshots geram custo de armazenamento, apague o que não usar.

Limpeza do laboratório​

Ordem de limpeza para não deixar custo residual:

  1. Terminate nas instâncias criadas.
  2. Delete nos volumes avulsos que sobrarem (os com "delete on termination" somem sozinhos com a instância; os anexados manualmente não).
  3. Deregister na AMI de teste → depois Delete nos snapshots associados.
  4. Confira as telas de Instances, Volumes, Snapshots e AMIs, tudo vazio = fatura zerada.

Resumo dos conceitos deste manual​

ConceitoO que éEquivalente on-prem
Volume EBSDisco de bloco, zonal, hot-attachVMDK no datastore
SnapshotBackup incremental point-in-time, regionalSnapshot (sem a má fama)
gp3/io2/st1/sc1Tiers de performance/preçoTiers de storage do array
AMITemplate de máquina (snapshots + metadados)Template/OVA no vCenter