Pour une raison quelconque, vous devez etendre votre serveur Linux EC2 sans redemarrage et en toute securite. Dans cet article, vous apprendrez comment etendre votre disque Linux EC2 sur AWS.

Dans cet exemple, vous verrez l'extension de la taille du disque de 80 Gio a 120 Gio.

Etape 1 : Modifier le Volume

Connectez-vous a votre Console AWS et trouvez le volume (disque) de votre ec2. Voici l'astuce ; dans le panneau de gauche, il y a Elastic Block Store > Volumes. Faites un clic droit sur votre volume puis selectionnez l'option "Modify Volume". Cela ressemble a l'image ci-dessous. Choisissez la bonne taille et cliquez sur le bouton Modify.


Etape 2 : Verifier la taille du disque

Tout d'abord, vous devez etre root ou sudo sur le serveur avant d'executer les commandes. La premiere chose, nous allons verifier la taille du disque, elle devrait afficher la taille avant modification du volume. Donc, dans cet exemple, cela devrait etre 80 Gio.

[root@server ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           7.8G  416K  7.8G   1% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1   80G   51G   30G  64% /
tmpfs           1.6G     0  1.6G   0% /run/user/0

Oui, cela indique que la taille totale du disque est de 80 Gio, c'est vrai. Maintenant, verifions la liste des peripheriques de bloc. La sortie de la commande devrait montrer la nouvelle taille du disque sur le peripherique /dev/nvme0n1.

[root@server ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0  120G  0 disk
├─nvme0n1p1   259:1    0   80G  0 part /
└─nvme0n1p128 259:2    0    1M  0 part

Oui ! Cela indique que nvme0n1p1 fait 80 Gio mais nvme0n1 fait 120 Gio. Cela signifie que nous pouvons etendre notre partition nvme0n1p1 de 80 Gio a 120 Gio.

Etape 3 : Etendons

Voici la magie ;

[root@server ~]# growpart /dev/nvme0n1 1
CHANGED: partition=1 start=4096 old: size=167768031 end=167772127 new: size=251654111 end=251658207

La commande growpart vient d'agrandir notre partition de disque, elle n'a pas encore sauvegarde et nous n'avons toujours pas un disque de 120 Gio. Nous devons sauvegarder la modification sur le systeme de fichiers maintenant.

[root@server ~]# xfs_growfs /
meta-data=/dev/nvme0n1p1         isize=512    agcount=41, agsize=524159 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=20971003, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 20971003 to 31456763

Etape 4 : Verifier a nouveau la taille du disque

Il est temps de s'assurer de la nouvelle taille de votre disque. Voici a nouveau les commandes pour verification.

[root@server ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           7.8G  412K  7.8G   1% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1  120G   51G   70G  42% /
tmpfs           1.6G     0  1.6G   0% /run/user/0

[root@server ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 120G 0 disk ├─nvme0n1p1 259:1 0 120G 0 part / └─nvme0n1p128 259:2 0 1M 0 part

Felicitations ! Vous avez etendu avec succes votre serveur Linux AWS EC2 sans redemarrage et/ou perdre des donnees sur l'EBS (Elastic Block Storage)