Concepts Fondamentaux EBS
Qu'est-ce qu'Amazon EBS ?
Amazon EBS (Elastic Block Store) est le service de stockage bloc d'AWS. Il fournit des volumes de stockage persistants pour les instances EC2.
┌─────────────────────────────────────────────────────────────┐
│ AMAZON EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ "Des disques durs virtuels pour vos serveurs cloud" │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Instance EC2 │ │
│ │ │ │
│ │ ┌────────────────┐ ┌────────────────┐ │ │
│ │ │ Volume EBS │ │ Volume EBS │ │ │
│ │ │ (Root - OS) │ │ (Data) │ │ │
│ │ │ /dev/xvda │ │ /dev/xvdb │ │ │
│ │ │ 8 GB │ │ 100 GB │ │ │
│ │ └────────────────┘ └────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Caractéristiques : │
│ • Stockage bloc (comme un disque dur) │
│ • Persistant (données conservées après arrêt) │
│ • Attachable/Détachable │
│ • Répliqué dans l'AZ │
│ • Chiffrement disponible │
│ │
└─────────────────────────────────────────────────────────────┘
EBS vs Instance Store
┌─────────────────────────────────────────────────────────────┐
│ EBS vs INSTANCE STORE │
├─────────────────────────────────────────────────────────────┤
│ │
│ EBS (Elastic Block Store) INSTANCE STORE │
│ ───────────────────────── ───────────── │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Stockage │ │ Stockage │ │
│ │ RÉSEAU │ │ LOCAL │ │
│ │ │ │ (sur le host) │ │
│ │ Volume séparé │ │ Disque physique│ │
│ │ de l'instance │ │ du serveur │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ ✅ Persistant ❌ Éphémère │
│ ✅ Snapshots ❌ Pas de backup │
│ ✅ Détachable ❌ Fixe à l'instance │
│ ✅ Redimensionnable ❌ Taille fixe │
│ │
│ ⚠️ Latence réseau ✅ Très faible latence │
│ 💰 Facturé ✅ Inclus (certains types) │
│ │
│ CAS D'USAGE : │
│ • Données à conserver • Cache temporaire │
│ • Bases de données • Données éphémères │
│ • Applications • Buffer/Swap │
│ │
└─────────────────────────────────────────────────────────────┘
Types de Volumes EBS
Vue d'Ensemble
┌─────────────────────────────────────────────────────────────┐
│ TYPES DE VOLUMES EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ SSD (Solid State Drive) │
│ ├── gp3 (General Purpose SSD) ← RECOMMANDÉ │
│ ├── gp2 (General Purpose SSD - ancien) │
│ ├── io1 (Provisioned IOPS SSD) │
│ └── io2 (Provisioned IOPS SSD - nouvelle gen) │
│ │
│ HDD (Hard Disk Drive) │
│ ├── st1 (Throughput Optimized HDD) │
│ └── sc1 (Cold HDD) │
│ │
│ Choix rapide : │
│ • Usage général, boot → gp3 │
│ • BDD haute performance → io2 │
│ • Big Data, séquentiel → st1 │
│ • Archive, accès rare → sc1 │
│ │
└─────────────────────────────────────────────────────────────┘
Comparaison Détaillée
| Type | IOPS Max | Débit Max | Taille | Prix/GB | Cas d'Usage |
|---|---|---|---|---|---|
| gp3 | 16,000 | 1,000 MB/s | 1GB-16TB | $0.08 | Usage général |
| gp2 | 16,000 | 250 MB/s | 1GB-16TB | $0.10 | Legacy |
| io2 | 64,000 | 1,000 MB/s | 4GB-16TB | $0.125 + IOPS | BDD critique |
| io1 | 64,000 | 1,000 MB/s | 4GB-16TB | $0.125 + IOPS | Legacy |
| st1 | 500 | 500 MB/s | 500GB-16TB | $0.045 | Big Data |
| sc1 | 250 | 250 MB/s | 500GB-16TB | $0.025 | Archive |
gp3 vs gp2 (Le Plus Important)
┌─────────────────────────────────────────────────────────────┐
│ gp3 vs gp2 │
├─────────────────────────────────────────────────────────────┤
│ │
│ gp2 (ancien) gp3 (nouveau, préféré) │
│ ──────────── ───────────────────── │
│ │
│ IOPS liés à la taille IOPS configurables │
│ 3 IOPS/GB (min 100) 3,000 IOPS de base │
│ Max 16,000 IOPS Jusqu'à 16,000 IOPS │
│ │
│ Débit limité Débit configurable │
│ 128-250 MB/s 125-1,000 MB/s │
│ │
│ $0.10/GB $0.08/GB (+IOPS si >3000) │
│ │
│ Exemple 100 GB : Exemple 100 GB : │
│ • 300 IOPS (3×100) • 3,000 IOPS (base) │
│ • 128 MB/s • 125 MB/s (extensible) │
│ • $10/mois • $8/mois │
│ │
│ ✅ TOUJOURS préférer gp3 pour les nouveaux volumes ! │
│ │
└─────────────────────────────────────────────────────────────┘
Cycle de Vie d'un Volume EBS
┌─────────────────────────────────────────────────────────────┐
│ CYCLE DE VIE EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ │
│ │ Créer │ ← aws ec2 create-volume │
│ └────┬─────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │Available │ ← Volume créé, non attaché │
│ └────┬─────┘ │
│ │ attach-volume │
│ ▼ │
│ ┌──────────┐ │
│ │ In-use │ ← Attaché à une instance │
│ └────┬─────┘ │
│ │ │
│ ┌────┴────┐ │
│ │ │ │
│ ▼ ▼ │
│ Snapshot Detach │
│ │ │ │
│ │ ▼ │
│ │ ┌──────────┐ │
│ │ │Available │ │
│ │ └────┬─────┘ │
│ │ │ delete-volume │
│ │ ▼ │
│ │ ┌──────────┐ │
│ │ │ Deleted │ │
│ │ └──────────┘ │
│ │ │
│ └──► Snapshot (pour backup ou nouvel AZ) │
│ │
└─────────────────────────────────────────────────────────────┘
Volumes et AZ
┌─────────────────────────────────────────────────────────────┐
│ EBS ET ZONES DE DISPONIBILITÉ │
├─────────────────────────────────────────────────────────────┤
│ │
│ ⚠️ Un volume EBS existe dans UNE SEULE AZ ! │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Région us-east-1 │ │
│ │ │ │
│ │ ┌───────────────┐ ┌───────────────┐ │ │
│ │ │ us-east-1a │ │ us-east-1b │ │ │
│ │ │ │ │ │ │ │
│ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │
│ │ │ │ vol-aaa │ │ ❌ │ │ EC2 │ │ │ │
│ │ │ └─────────┘ │ ───► │ │ │ │ │ │
│ │ │ │ │ └─────────┘ │ │ │
│ │ └───────────────┘ └───────────────┘ │ │
│ │ │ │
│ │ vol-aaa ne peut PAS être attaché à une instance │ │
│ │ dans us-east-1b ! │ │
│ │ │ │
│ │ Solution : Créer un snapshot, puis recréer le │ │
│ │ volume dans l'autre AZ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Opérations Courantes
Attacher un Volume
# 1. Créer le volume (même AZ que l'instance !)
aws ec2 create-volume \
--availability-zone us-east-1a \
--size 100 \
--volume-type gp3
# 2. Attacher à l'instance
aws ec2 attach-volume \
--volume-id vol-xxx \
--instance-id i-xxx \
--device /dev/sdf
# 3. Sur l'instance Linux, formater et monter
# (Se connecter en SSH)
sudo mkfs -t ext4 /dev/xvdf
sudo mkdir /data
sudo mount /dev/xvdf /data
# 4. Pour montage permanent, éditer /etc/fstab
echo '/dev/xvdf /data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
Détacher un Volume
# 1. Sur l'instance, démonter proprement
sudo umount /data
# 2. Détacher via AWS
aws ec2 detach-volume --volume-id vol-xxx
Redimensionner un Volume
# 1. Modifier la taille (pas besoin de détacher !)
aws ec2 modify-volume \
--volume-id vol-xxx \
--size 200
# 2. Sur l'instance, étendre le filesystem
# Pour ext4 :
sudo growpart /dev/xvdf 1
sudo resize2fs /dev/xvdf1
# Pour xfs :
sudo xfs_growfs /data
Delete on Termination
┌─────────────────────────────────────────────────────────────┐
│ DELETE ON TERMINATION │
├─────────────────────────────────────────────────────────────┤
│ │
│ Option qui détermine si le volume est supprimé │
│ quand l'instance est terminée. │
│ │
│ DeleteOnTermination = TRUE (défaut pour root) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Instance │ ── Terminate ──► │ Volume │ │
│ │ terminée │ │ SUPPRIMÉ │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ DeleteOnTermination = FALSE (recommandé pour data) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Instance │ ── Terminate ──► │ Volume │ │
│ │ terminée │ │ CONSERVÉ │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ Recommandation : │
│ • Volume root (OS) : TRUE (recréer avec l'instance) │
│ • Volumes data : FALSE (conserver les données) │
│ │
└─────────────────────────────────────────────────────────────┘
Chiffrement EBS
┌─────────────────────────────────────────────────────────────┐
│ CHIFFREMENT EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ Chiffrement au repos avec AWS KMS │
│ │
│ Ce qui est chiffré : │
│ ✅ Données sur le volume │
│ ✅ Données en transit (volume ↔ instance) │
│ ✅ Snapshots créés depuis le volume │
│ ✅ Volumes créés depuis les snapshots │
│ │
│ Impact performance : MINIMAL (< 5%) │
│ Coût : Gratuit (KMS default key) ou key custom │
│ │
│ Bonne pratique : TOUJOURS chiffrer ! │
│ │
│ # Créer un volume chiffré │
│ aws ec2 create-volume \ │
│ --encrypted \ │
│ --kms-key-id alias/aws/ebs \ │
│ --availability-zone us-east-1a \ │
│ --size 100 │
│ │
└─────────────────────────────────────────────────────────────┘
Résumé
| Concept | Description |
|---|---|
| EBS | Stockage bloc persistant pour EC2 |
| gp3 | Type recommandé pour usage général |
| io2 | Haute performance (BDD) |
| st1/sc1 | HDD pour gros volumes, accès séquentiel |
| Snapshot | Backup incrémental vers S3 |
| AZ-bound | Volume limité à une seule AZ |
| Chiffrement | Toujours activer, impact minimal |
Quiz de Validation
- Quelle est la différence entre EBS et Instance Store ?
- Quel type de volume pour une base de données critique ?
- Peut-on attacher un volume d'us-east-1a à une instance dans us-east-1b ?
- Quelle est la différence entre gp2 et gp3 ?
- Qu'est-ce que "Delete on Termination" ?
Prochaine section : Snapshots