Aller au contenu principal

Lab : Gestion du Stockage EBS

Objectif du Lab​

Dans ce lab, vous allez apprendre à gérer le stockage EBS : création de volumes, attachement à des instances, snapshots, et bonnes pratiques de gestion. C'est un exercice d'analyse et de documentation.

Approche Pédagogique

Ce lab combine théorie et analyse de scénarios. Vous documenterez vos réponses et justifications.

Partie 1 : Concepts Fondamentaux​

Rappel des Types de Volumes EBS​

┌─────────────────────────────────────────────────────────────┐
│ TYPES DE VOLUMES EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ TYPE │ USAGE │ IOPS │ COÛT │
│ ─────────────┼───────────────────┼───────────┼────────────│
│ gp3 │ Usage général │ 3,000-16K │ $0.08/GB │
│ gp2 │ Usage général │ 3,000 max │ $0.10/GB │
│ io2 │ I/O intensif │ 64,000 │ $0.125/GB │
│ st1 │ Big data, logs │ 500 │ $0.045/GB │
│ sc1 │ Archives froides │ 250 │ $0.025/GB │
│ │
│ Recommandation pour débutants : │
│ • gp3 pour tout usage général │
│ • st1 pour logs/données séquentielles │
│ │
└─────────────────────────────────────────────────────────────┘

Exercice 1.1 : Choix du Type de Volume​

Pour chaque scénario, choisissez le type de volume EBS approprié et justifiez :

ScénarioVotre ChoixJustification
Base de données MySQL production??
Logs d'application (100GB)??
Serveur web statique??
Application de trading haute fréquence??
Archives de documents (rarement accédés)??
💡 Solutions
ScénarioChoixJustification
Base de données MySQL productionio2IOPS élevées et consistantes nécessaires
Logs d'application (100GB)st1Accès séquentiel, coût optimisé
Serveur web statiquegp3Bon équilibre coût/performance
Application de tradingio2Latence minimale critique
Archives de documentssc1Accès rare, coût minimal

Partie 2 : Cycle de Vie d'un Volume EBS​

Diagramme du Cycle de Vie​

┌─────────────────────────────────────────────────────────────┐
│ CYCLE DE VIE D'UN VOLUME EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ Créer │ │
│ │ Volume │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ État: │ │ Attacher │ │
│ │ available │───────►│ à EC2 │ │
│ └─────────────┘ └──────┬──────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────┴──────┐ ┌─────────────┐ │
│ │ Détacher │◄───────│ État: │ │
│ │ de EC2 │ │ in-use │ │
│ └─────────────┘ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Snapshot │ │
│ │ (backup) │ │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Supprimer │ │
│ │ Volume │ │
│ └─────────────┘ │
│ │
│ ⚠️ Attention : Supprimer un volume efface toutes les │
│ données ! Toujours faire un snapshot avant. │
│ │
└─────────────────────────────────────────────────────────────┘

Exercice 2.1 : Commandes CLI​

Associez chaque action à la commande CLI correcte :

ActionCommande
Créer un volume de 100GB?
Lister tous les volumes?
Attacher un volume à une instance?
Créer un snapshot?
Détacher un volume?
💡 Solutions
# Créer un volume de 100GB
aws ec2 create-volume \
--size 100 \
--volume-type gp3 \
--availability-zone us-east-1a

# Lister tous les volumes
aws ec2 describe-volumes

# Attacher un volume à une instance
aws ec2 attach-volume \
--volume-id vol-xxx \
--instance-id i-xxx \
--device /dev/sdf

# Créer un snapshot
aws ec2 create-snapshot \
--volume-id vol-xxx \
--description "Backup before maintenance"

# Détacher un volume
aws ec2 detach-volume --volume-id vol-xxx

Partie 3 : Scénarios Pratiques​

Scénario A : Augmentation de Capacité​

Contexte : Le volume root de votre serveur de base de données (20GB) est presque plein (95%). Vous devez augmenter la capacité à 50GB sans downtime.

Questions :

  1. Quelle méthode utiliseriez-vous ?
  2. Quelles sont les étapes ?
  3. Y a-t-il un risque de perte de données ?
💡 Solution Scénario A

Méthode : Modification du volume (EBS Elastic Volumes)

AWS permet de modifier la taille d'un volume EBS à chaud (sans arrêter l'instance) !

Étapes :

  1. Créer un snapshot (précaution)
aws ec2 create-snapshot --volume-id vol-xxx --description "Before resize"
  1. Modifier la taille du volume
aws ec2 modify-volume --volume-id vol-xxx --size 50
  1. Surveiller la modification
aws ec2 describe-volumes-modifications --volume-id vol-xxx
# Attendre que l'état soit "completed"
  1. Étendre le système de fichiers (sur l'instance)
# Pour ext4
sudo resize2fs /dev/xvda1

# Pour XFS
sudo xfs_growfs /

Risques :

  • Minimal si snapshot fait avant
  • Le volume reste accessible pendant la modification
  • L'extension du filesystem est instantanée

Scénario B : Migration de Données​

Contexte : Vous devez migrer une base de données MySQL d'une instance EC2 (us-east-1a) vers une autre instance dans une AZ différente (us-east-1b).

Questions :

  1. Pouvez-vous simplement détacher et réattacher le volume ?
  2. Quelle est la procédure correcte ?
  3. Comment minimiser le downtime ?
💡 Solution Scénario B

Réponse 1 : NON ! Un volume EBS ne peut être attaché qu'à des instances dans la même AZ.

Procédure correcte :

  1. Arrêter MySQL proprement (minimiser les données en cours)
sudo systemctl stop mysql
  1. Créer un snapshot du volume
aws ec2 create-snapshot --volume-id vol-xxx --description "Migration"
  1. Créer un nouveau volume depuis le snapshot dans la nouvelle AZ
aws ec2 create-volume \
--snapshot-id snap-xxx \
--availability-zone us-east-1b \
--volume-type gp3
  1. Attacher le nouveau volume à la nouvelle instance
aws ec2 attach-volume \
--volume-id vol-new \
--instance-id i-new \
--device /dev/sdf
  1. Monter et démarrer MySQL
sudo mount /dev/sdf /var/lib/mysql
sudo systemctl start mysql

Minimiser le downtime :

  • Préparer la nouvelle instance à l'avance
  • Utiliser une réplication MySQL avant la migration
  • Faire la migration pendant une fenêtre de maintenance

Scénario C : Récupération après Incident​

Contexte : Un développeur a accidentellement supprimé des fichiers importants sur un volume. Le volume fait 200GB et la dernière sauvegarde date d'hier.

Questions :

  1. Comment récupérer les fichiers ?
  2. Quelle est la procédure si le snapshot existe ?
  3. Comment éviter ce problème à l'avenir ?
💡 Solution Scénario C

Récupération via Snapshot :

  1. Identifier le snapshot le plus récent
aws ec2 describe-snapshots \
--filters "Name=volume-id,Values=vol-xxx" \
--query 'Snapshots[*].[SnapshotId,StartTime]' \
--output table
  1. Créer un nouveau volume depuis le snapshot
aws ec2 create-volume \
--snapshot-id snap-xxx \
--availability-zone us-east-1a \
--volume-type gp3
  1. Attacher le volume de récupération
aws ec2 attach-volume \
--volume-id vol-recovery \
--instance-id i-xxx \
--device /dev/sdg
  1. Monter et copier les fichiers manquants
sudo mkdir /mnt/recovery
sudo mount /dev/sdg /mnt/recovery
cp /mnt/recovery/path/to/files /path/to/restore/
  1. Nettoyer après récupération
sudo umount /mnt/recovery
aws ec2 detach-volume --volume-id vol-recovery
aws ec2 delete-volume --volume-id vol-recovery

Prévention :

  • Snapshots automatiques avec Amazon Data Lifecycle Manager
  • Backups réguliers (horaires pour données critiques)
  • Permissions restrictives (IAM) pour éviter les suppressions accidentelles
  • Versioning pour S3 si applicable

Partie 4 : Bonnes Pratiques​

Checklist de Gestion EBS​

┌─────────────────────────────────────────────────────────────┐
│ CHECKLIST BONNES PRATIQUES EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ SNAPSHOTS ET BACKUPS │
│ ☐ Snapshots automatiques configurés (DLM) │
│ ☐ Rétention définie (7 jours min pour prod) │
│ ☐ Snapshots testés (restauration validée) │
│ ☐ Snapshots cross-region pour DR │
│ │
│ PERFORMANCE │
│ ☐ Type de volume adapté à l'usage │
│ ☐ IOPS provisionnées si nécessaire (io2) │
│ ☐ Monitoring CloudWatch activé │
│ ☐ Alertes sur utilisation > 80% │
│ │
│ SÉCURITÉ │
│ ☐ Encryption activée (AES-256) │
│ ☐ Clés KMS gérées correctement │
│ ☐ Permissions IAM restrictives │
│ │
│ COÛTS │
│ ☐ Volumes non utilisés supprimés │
│ ☐ Snapshots anciens nettoyés │
│ ☐ Type gp3 préféré à gp2 (meilleur rapport coût) │
│ │
│ TAGS │
│ ☐ Nom descriptif │
│ ☐ Environnement (prod/dev/test) │
│ ☐ Application associée │
│ ☐ Propriétaire/équipe │
│ │
└─────────────────────────────────────────────────────────────┘

Data Lifecycle Manager (DLM)​

┌─────────────────────────────────────────────────────────────┐
│ AMAZON DATA LIFECYCLE MANAGER │
├─────────────────────────────────────────────────────────────┤
│ │
│ Automatise les snapshots EBS │
│ │
│ Exemple de politique : │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Nom : daily-backup-policy │ │
│ │ │ │
│ │ Cible : Volumes avec tag "Backup=true" │ │
│ │ │ │
│ │ Schedule : │ │
│ │ • Fréquence : Tous les jours à 03:00 UTC │ │
│ │ • Rétention : 7 snapshots (1 semaine) │ │
│ │ │ │
│ │ Options : │ │
│ │ • Copie cross-region : us-west-2 │ │
│ │ • Tags copiés : Oui │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Configuration CLI : │
│ aws dlm create-lifecycle-policy \ │
│ --description "Daily EBS backup" \ │
│ --state ENABLED \ │
│ --execution-role-arn arn:aws:iam::xxx:role/dlm-role \ │
│ --policy-details file://policy.json │
│ │
└─────────────────────────────────────────────────────────────┘

Partie 5 : Livrable​

Document à Produire​

Créez un document "Plan de Gestion EBS" pour une application fictive avec :

  1. Inventaire des volumes (tableau)

    • Nom, taille, type, AZ, instance attachée
  2. Politique de snapshots

    • Fréquence par environnement
    • Rétention
    • Tests de restauration
  3. Procédures documentées

    • Augmentation de capacité
    • Migration inter-AZ
    • Récupération après incident
  4. Estimation des coûts mensuels

    • Volumes
    • Snapshots
    • IOPS provisionnées (si applicable)

Critères d'Évaluation​

CritèrePoints
Exercices 1-3 correctement complétés/40
Inventaire des volumes/15
Politique de snapshots claire/15
Procédures bien documentées/20
Estimation des coûts/10
Total/100

Résumé​

ConceptPoints Clés
Types de volumesgp3 par défaut, io2 pour IOPS
SnapshotsIncrémentaux, stockés sur S3
Contrainte AZVolume = 1 AZ uniquement
MigrationVia snapshot + nouveau volume
DLMAutomatisation des backups

Retour : Vue d'ensemble MODULE 4