Dans EC2, le disque n'est pas lié à la taille de la machine : on peut l'agrandir quand on veut, même machine allumée, sans réinstaller ni rien déplacer. Il y a deux parties : dire à AWS que le disque est plus grand, et dire au système d'exploitation à l'intérieur d'en profiter. La première est un clic ; la seconde, deux commandes qui font peur la première fois et qu'on fait ensuite de mémoire.
La seule chose impossible est de réduire : un disque ne fait que grandir. Agrandissez donc avec discernement.
Avant de commencer : ce que signifie chaque chose
- EBS
- Le service de disques d'EC2. Chaque disque s'appelle un volume.
- Volume racine
- Le disque où le système est installé. C'est celui qui se remplit en général.
- Partition
- Une division à l'intérieur du disque. Quand on agrandit le disque, la partition garde l'ancienne taille jusqu'à ce qu'on l'agrandisse.
- Système de fichiers
- La façon dont le système organise les données à l'intérieur de la partition (ext4 ou xfs sous Linux). Il faut aussi l'agrandir.
- gp3
- Le type de disque normal d'EBS. Si votre disque est de l'ancien type (gp2), vous pouvez le passer en gp3 à la même étape et c'est en général moins cher.
- Instantané
- Une copie du disque. Il vaut mieux en faire un avant de toucher au disque, au cas où.
Pas à pas
Faites un instantané avant
Console EC2, menu Volumes, sélectionnez le disque de la machine (la colonne « Attaché à » indique lequel), Actions, Créer un instantané. C'est le filet de sécurité ; en pratique le processus est sûr, mais c'est gratuit, ça ne coûte rien... enfin, quelques centimes de stockage.
Agrandissez le volume depuis la console
Avec le volume sélectionné, Actions, Modifier le volume. Saisissez la nouvelle taille en Go (par exemple de 20 à 40) et, si le type est gp2, profitez-en pour le passer en gp3. Modifier. L'état du volume passe à « modifying » puis à « optimizing » ; inutile d'attendre la fin de l'optimisation pour continuer : dès que la nouvelle taille apparaît dans la liste, vous pouvez poursuivre. Notez qu'AWS n'autorise la modification d'un volume qu'une fois toutes les six heures.
Regardez l'état du disque de l'intérieur
Connectez-vous en SSH à la machine et tapez :
lsblk df -h /La première commande montre le disque (
xvdaounvme0n1) déjà à la nouvelle taille, et en dessous sa partition (xvda1ounvme0n1p1) encore à l'ancienne taille. La seconde montre l'espace que voit le système : l'ancien. Notez les noms exacts du disque et de la partition.Agrandissez la partition
sudo growpart /dev/xvda 1Attention à la syntaxe : le disque, une espace, puis le numéro de partition. Avec des disques NVMe, ce serait
sudo growpart /dev/nvme0n1 1. S'il dit quegrowpartn'existe pas, installez-le (sudo apt install cloud-guest-utilssous Ubuntu/Debian). Relancezlsblk: la partition occupe maintenant tout le disque.Agrandissez le système de fichiers
Cela dépend du type, que vous donne
df -T /. Si c'est ext4 (Ubuntu, Debian) :sudo resize2fs /dev/xvda1Si c'est xfs (Amazon Linux, Red Hat) :
sudo xfs_growfs -d /Les deux fonctionnent avec le disque en cours d'utilisation, sans redémarrer. Vérifiez avec
df -h /: le système voit maintenant la nouvelle taille.Si le disque n'est pas le disque racine
Pour un disque de données supplémentaire, les étapes 4 et 5 sont les mêmes en changeant le nom du périphérique. Si le disque n'a pas de partition (vous l'avez formaté directement sur
/dev/xvdf), sautezgrowpartet lancez directementresize2fs /dev/xvdfouxfs_growfssur son point de montage.
Ce qui peut mal tourner
growpart répond « NOCHANGE »
Soit la partition occupe déjà tout le disque (passez à l'étape 5), soit le système n'a pas encore vu la nouvelle taille du disque. Attendez une minute, relancez lsblk et, s'il ne la voit toujours pas, redémarrez la machine.
Je n'ai même pas la place d'exécuter les commandes
Avec le disque à 100 %, certaines commandes échouent. Libérez quelques mégaoctets en supprimant d'anciens journaux (sudo journalctl --vacuum-size=50M) ou le cache des paquets (sudo apt clean) et réessayez.
Je me suis trompé et j'ai mis une taille énorme
On ne peut pas réduire. La seule issue est de créer une nouvelle machine avec un disque plus petit et d'y migrer les données. Si le surplus est supportable, laissez-le et retenez la leçon pour la prochaine fois : mettez ce qu'il vous faut pour un an.
Je veux agrandir à nouveau et ça refuse
Il faut attendre six heures depuis la dernière modification du volume. C'est une limitation d'AWS.
Dans Simplio
Dans Simplio, chaque machine affiche l'occupation de son disque et vous prévient par e-mail quand elle dépasse 85 %, avant que le site cesse de fonctionner. L'agrandir est un bouton : vous choisissez la nouvelle taille, Simplio fait un instantané préalable, modifie le volume dans AWS et exécute sur la machine les commandes pour que le système utilise l'espace, puis vous montre le résultat. Sans terminal.
La même chose, dans AWS et dans Simplio
| Dans la console AWS | Dans Simplio | |
|---|---|---|
| Agrandir le disque | Console EC2, Volumes, Modifier, SSH, lsblk, growpart, resize2fs : 7 étapes et un terminal | Bouton « Agrandir le disque » sur la machine : vous choisissez la taille et Simplio fait la partie AWS et la partie intérieure |
| Savoir qu'il se remplit | Rien ne prévient jusqu'à ce que quelque chose casse | Alerte par e-mail à 85 % d'occupation |
| Instantané préalable | Y penser | Il se fait tout seul avant l'agrandissement |