Une erreur s’est affichée, indiquant qu'il ne restait plus d'espace sur mon système de fichiers lorsque j'ai essayé d'augmenter la taille de mon volume Amazon Elastic Block Store (Amazon EBS). Comment résoudre le problème ?
Brève description
Pour éviter les erreurs de type No space left on device (Espace insuffisant sur l'appareil) au moment où vous développez l'extension de la partition racine ou du système de fichiers racine sur votre volume EBS, utilisez le système de fichiers temporaire, tmpfs, qui réside en mémoire. Montez le système de fichiers tmpfs sous le point de montage /tmp, puis développez votre partition racine ou votre système de fichiers racine.
Exemple
L'exemple suivant montre que le périphérique de stockage en mode bloc du volume EBS racine (/dev/nvme0n1) fait 9 Gio et que la partition racine (partition 1) fait déjà 8 Gio.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 9G 0 disk
├─nvme0n1p1 259:1 0 8G 0 part /
└─nvme0n1p128 259:2 0 1M 0 part
Si vous tentez d'augmenter la taille de la partition racine (partition 1), l'une des erreurs suivantes s’affiche :
$ sudo growpart /dev/nvme0n1 1
/bin/growpart: line 248: /tmp/growpart.fklt5u/dump.out: No space left on device
FAILED: failed to dump sfdisk info for /dev/nvme0n1
-ou-
$ sudo growpart /dev/nvme0n1 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=18870239 end=18874335
FAILED: failed: sfdisk --list /dev/nvme0n1
Remarque : une bonne pratique consiste à créer une sauvegarde Amazon Machine Image (AMI) de l'instance ou un instantané du volume EBS racine attaché à votre instance avant de tenter les étapes de résolution. Une sauvegarde vous permet de récupérer vos données en cas de problèmes imprévus.
Solution
1. Connectez-vous à votre instance Linux Amazon Elastic Compute Cloud (Amazon EC2) à l'aide de SSH.
2. Utilisez la commande df -h pour vérifier que la partition racine montée sous « / » est pleine (100 %). Dans l'exemple suivant, /dev/nvme0n1p1 utilise 100 % de son espace.
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 460M 0 475M 0% /dev
tmpfs 478M 0 492M 0% /dev/shm
tmpfs 478M 432K 492M 1% /run
tmpfs 478M 0 492M 0% /sys/fs/cgroup
/dev/nvme0n1p1 8.0G 8.0G 664K 100% /
tmpfs 96M 0 99M 0% /run/user/1000
3. Exécutez les commandes suivantes pour rassembler des informations sur vos périphériques de stockage en mode bloc attachés et sur le point de montage racine « / ».
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 9G 0 disk
├─nvme0n1p1 259:1 0 8G 0 part /
└─nvme0n1p128 259:2 0 1M 0 part
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
nvme0n1
├─nvme0n1p1 xfs / afcf1342-1d40-41bd-bde9-e4ea5d87e3b6 /
└─nvme0n1p128
Dans l'exemple de sortie précédent, le volume EBS racine dispose de 9 Gio d'espace total, mais la partition racine (/dev/nvme0n1p1) ou la partition 1 ne fait que 8 Gio. Le type de système de fichiers est XFS.
4. Pour éviter les erreurs de type Espace insuffisant sur le périphérique de stockage en mode bloc, montez le système de fichiers temporaire tmpfs sur le point de montage /tmp. Un tmpfs de 10 M est ainsi créé et monté sur /tmp.
$ sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
5. Exécutez la commande growpart pour augmenter la taille de la partition racine ou de la partition 1. Remplacez /dev/nvme0n1 par votre partition racine.
$ sudo growpart /dev/nvme0n1 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=18870239 end=18874335
Exécutez la commande lsblk pour vérifier que la taille de la partition 1 est augmentée à 9 Gio.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 9G 0 disk
├─nvme0n1p1 259:1 0 9G 0 part /
└─nvme0n1p128 259:2 0 1M 0 part
6. Développez le système de fichiers. Reportez-vous à l'étape 3 pour vérifier le système de fichiers de votre partition racine « / ».
Dans l'exemple suivant, un système de fichiers de type XFS est développé.
$ sudo xfs_growfs -d /
data blocks changed from 2096635 to 2358779
= sectsz=512 sunit=0 blks, lazy-count=1
log =internal bsize=4096 blocks=2560, version=2
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
= sunit=0 swidth=0 blks
data = bsize=4096 blocks=2096635, imaxpct=25
= crc=1 finobt=1 spinodes=0
= sectsz=512 attr=2, projid32bit=1
realtime =none extsz=4096 blocks=0, rtextents=0
meta-data=/dev/nvme0n1p1 isize=512 agcount=4, agsize=524159 blks
Dans l'exemple suivant, un système de fichiers EXT2/EXT3/EXT4 sur la partition 1 est développé :
$ sudo resize2fs /dev/nvme0n1p1
7. Après avoir développé le système de fichiers, utilisez la commande df -h pour vérifier que le système d'exploitation détecte bien l'espace supplémentaire.
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 960M 0 960M 0% /dev
tmpfs 978M 0 978M 0% /dev/shm
tmpfs 978M 392K 978M 1% /run
tmpfs 978M 0 978M 0% /sys/fs/cgroup
/dev/nvme0n1p1 9.0G 8.0G 1022M 89% /
tmpfs 196M 0 196M 0% /run/user/1000
tmpfs 10M 0 10M 0% /tmp
8. Exécutez la commande unmount pour démonter le système de fichiers tmpfs.
$ sudo umount /tmp