Pular para o conteúdo principal

Conceitos Fundamentais EBS

O que é Amazon EBS?​

Amazon EBS (Elastic Block Store) é o serviço de armazenamento em bloco da AWS. Ele fornece volumes de armazenamento persistente para instâncias EC2.

┌─────────────────────────────────────────────────────────────┐
│ AMAZON EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ "Discos rígidos virtuais para seus servidores em nuvem" │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Instância EC2 │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ Volume EBS │ │ Volume EBS │ │ │
│ │ │ (Root - SO) │ │ (Dados) │ │ │
│ │ │ /dev/xvda │ │ /dev/xvdb │ │ │
│ │ │ 8 GB │ │ 100 GB │ │ │
│ │ └────────────────┘ └────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Características: │
│ • Armazenamento em bloco (como um disco rígido) │
│ • Persistente (dados mantidos após desligar) │
│ • Anexável/Desanexável │
│ • Replicado na AZ │
│ • Criptografia disponível │
│ │
└─────────────────────────────────────────────────────────────┘

EBS vs Instance Store​

┌─────────────────────────────────────────────────────────────┐
│ EBS vs INSTANCE STORE │
├─────────────────────────────────────────────────────────────┤
│ │
│ EBS (Elastic Block Store) INSTANCE STORE │
│ ───────────────────────── ───────────── │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Armazenamento │ │ Armazenamento │ │
│ │ REDE │ │ LOCAL │ │
│ │ │ │ (no host) │ │
│ │ Volume separado│ │ Disco físico │ │
│ │ da instância │ │ do servidor │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ ✅ Persistente ❌ Efêmero │
│ ✅ Snapshots ❌ Sem backup │
│ ✅ Desanexável ❌ Fixo à instância │
│ ✅ Redimensionável ❌ Tamanho fixo │
│ │
│ ⚠️ Latência de rede ✅ Latência muito baixa │
│ 💰 Cobrado ✅ Incluso (alguns tipos) │
│ │
│ CASOS DE USO: │
│ • Dados a serem mantidos • Cache temporário │
│ • Bancos de dados • Dados efêmeros │
│ • Aplicações • Buffer/Swap │
│ │
└─────────────────────────────────────────────────────────────┘

Tipos de Volumes EBS​

Visão Geral​

┌─────────────────────────────────────────────────────────────┐
│ TIPOS DE VOLUMES EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ SSD (Solid State Drive) │
│ ├── gp3 (General Purpose SSD) ← RECOMENDADO │
│ ├── gp2 (General Purpose SSD - antigo) │
│ ├── io1 (Provisioned IOPS SSD) │
│ └── io2 (Provisioned IOPS SSD - nova geração) │
│ │
│ HDD (Hard Disk Drive) │
│ ├── st1 (Throughput Optimized HDD) │
│ └── sc1 (Cold HDD) │
│ │
│ Escolha rápida: │
│ • Uso geral, boot → gp3 │
│ • Banco de dados de alta perf. → io2 │
│ • Big Data, sequencial → st1 │
│ • Arquivo, acesso raro → sc1 │
│ │
└─────────────────────────────────────────────────────────────┘

Comparação Detalhada​

TipoIOPS MáxVazão MáxTamanhoPreço/GBCaso de Uso
gp316.0001.000 MB/s1GB-16TB$0.08Uso geral
gp216.000250 MB/s1GB-16TB$0.10Legado
io264.0001.000 MB/s4GB-16TB$0.125 + IOPSBanco crítico
io164.0001.000 MB/s4GB-16TB$0.125 + IOPSLegado
st1500500 MB/s500GB-16TB$0.045Big Data
sc1250250 MB/s500GB-16TB$0.025Arquivo

gp3 vs gp2 (O Mais Importante)​

┌─────────────────────────────────────────────────────────────┐
│ gp3 vs gp2 │
├─────────────────────────────────────────────────────────────┤
│ │
│ gp2 (antigo) gp3 (novo, preferido) │
│ ──────────── ───────────────────── │
│ │
│ IOPS ligados ao tamanho IOPS configuráveis │
│ 3 IOPS/GB (mín 100) 3.000 IOPS base │
│ Máx 16.000 IOPS Até 16.000 IOPS │
│ │
│ Vazão limitada Vazão configurável │
│ 128-250 MB/s 125-1.000 MB/s │
│ │
│ $0.10/GB $0.08/GB (+IOPS se >3000) │
│ │
│ Exemplo 100 GB: Exemplo 100 GB: │
│ • 300 IOPS (3×100) • 3.000 IOPS (base) │
│ • 128 MB/s • 125 MB/s (expansível) │
│ • $10/mês • $8/mês │
│ │
│ ✅ SEMPRE prefira gp3 para novos volumes! │
│ │
└─────────────────────────────────────────────────────────────┘

Ciclo de Vida de um Volume EBS​

┌─────────────────────────────────────────────────────────────┐
│ CICLO DE VIDA EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ │
│ │ Criar │ ← aws ec2 create-volume │
│ └────┬─────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │Available │ ← Volume criado, não anexado │
│ └────┬─────┘ │
│ │ attach-volume │
│ ▼ │
│ ┌──────────┐ │
│ │ In-use │ ← Anexado a uma instância │
│ └────┬─────┘ │
│ │ │
│ ┌────┴────┐ │
│ │ │ │
│ ▼ ▼ │
│ Snapshot Detach │
│ │ │ │
│ │ ▼ │
│ │ ┌──────────┐ │
│ │ │Available │ │
│ │ └────┬─────┘ │
│ │ │ delete-volume │
│ │ ▼ │
│ │ ┌──────────┐ │
│ │ │ Deleted │ │
│ │ └──────────┘ │
│ │ │
│ └──► Snapshot (para backup ou nova AZ) │
│ │
└─────────────────────────────────────────────────────────────┘

Volumes e AZ​

┌─────────────────────────────────────────────────────────────┐
│ EBS E ZONAS DE DISPONIBILIDADE │
├─────────────────────────────────────────────────────────────┤
│ │
│ ⚠️ Um volume EBS existe em UMA ÚNICA AZ! │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Região us-east-1 │ │
│ │ │ │
│ │ ┌───────────────┐ ┌───────────────┐ │ │
│ │ │ us-east-1a │ │ us-east-1b │ │ │
│ │ │ │ │ │ │ │
│ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │
│ │ │ │ vol-aaa │ │ ❌ │ │ EC2 │ │ │ │
│ │ │ └─────────┘ │ ───► │ │ │ │ │ │
│ │ │ │ │ └─────────┘ │ │ │
│ │ └───────────────┘ └───────────────┘ │ │
│ │ │ │
│ │ vol-aaa NÃO pode ser anexado a uma instância │ │
│ │ em us-east-1b! │ │
│ │ │ │
│ │ Solução: Criar um snapshot, depois recriar o │ │
│ │ volume na outra AZ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Operações Comuns​

Anexar um Volume​

# 1. Criar o volume (mesma AZ da instância!)
aws ec2 create-volume \
--availability-zone us-east-1a \
--size 100 \
--volume-type gp3

# 2. Anexar à instância
aws ec2 attach-volume \
--volume-id vol-xxx \
--instance-id i-xxx \
--device /dev/sdf

# 3. Na instância Linux, formatar e montar
# (Conectar via SSH)
sudo mkfs -t ext4 /dev/xvdf
sudo mkdir /data
sudo mount /dev/xvdf /data

# 4. Para montagem permanente, editar /etc/fstab
echo '/dev/xvdf /data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab

Desanexar um Volume​

# 1. Na instância, desmontar corretamente
sudo umount /data

# 2. Desanexar via AWS
aws ec2 detach-volume --volume-id vol-xxx

Redimensionar um Volume​

# 1. Alterar o tamanho (não precisa desanexar!)
aws ec2 modify-volume \
--volume-id vol-xxx \
--size 200

# 2. Na instância, expandir o filesystem
# Para ext4:
sudo growpart /dev/xvdf 1
sudo resize2fs /dev/xvdf1

# Para xfs:
sudo xfs_growfs /data

Delete on Termination​

┌─────────────────────────────────────────────────────────────┐
│ DELETE ON TERMINATION │
├─────────────────────────────────────────────────────────────┤
│ │
│ Opção que determina se o volume é excluído │
│ quando a instância é terminada. │
│ │
│ DeleteOnTermination = TRUE (padrão para root) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Instância │ ── Terminate ──► │ Volume │ │
│ │ terminada │ │ EXCLUÍDO │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ DeleteOnTermination = FALSE (recomendado para dados) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Instância │ ── Terminate ──► │ Volume │ │
│ │ terminada │ │ MANTIDO │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ Recomendação: │
│ • Volume root (SO): TRUE (recriar com a instância) │
│ • Volumes de dados: FALSE (manter os dados) │
│ │
└─────────────────────────────────────────────────────────────┘

Criptografia EBS​

┌─────────────────────────────────────────────────────────────┐
│ CRIPTOGRAFIA EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ Criptografia em repouso com AWS KMS │
│ │
│ O que é criptografado: │
│ ✅ Dados no volume │
│ ✅ Dados em trânsito (volume ↔ instância) │
│ ✅ Snapshots criados a partir do volume │
│ ✅ Volumes criados a partir dos snapshots │
│ │
│ Impacto de performance: MÍNIMO (< 5%) │
│ Custo: Gratuito (KMS default key) ou chave customizada │
│ │
│ Boa prática: SEMPRE criptografar! │
│ │
│ # Criar um volume criptografado │
│ aws ec2 create-volume \ │
│ --encrypted \ │
│ --kms-key-id alias/aws/ebs \ │
│ --availability-zone us-east-1a \ │
│ --size 100 │
│ │
└─────────────────────────────────────────────────────────────┘

Resumo​

ConceitoDescrição
EBSArmazenamento em bloco persistente para EC2
gp3Tipo recomendado para uso geral
io2Alta performance (banco de dados)
st1/sc1HDD para grandes volumes, acesso sequencial
SnapshotBackup incremental para S3
AZ-boundVolume limitado a uma única AZ
CriptografiaSempre ativar, impacto mínimo

Quiz de Validação​

  1. Qual a diferença entre EBS e Instance Store?
  2. Qual tipo de volume para um banco de dados crítico?
  3. É possível anexar um volume de us-east-1a a uma instância em us-east-1b?
  4. Qual a diferença entre gp2 e gp3?
  5. O que é "Delete on Termination"?

Próxima seção: Snapshots