Per qualche motivo, devi estendere il tuo server Linux ec2 senza riavvio e in modo sicuro. In questo post, imparerai come estendere il disco Linux della tua ec2 su aws.

In questo esempio, vedrai l'estensione della dimensione del disco da 80GiB a 120GiB.

Passo 1: Modificare il Volume


Accedi alla tua Console AWS e trova il volume (disco) della tua ec2. Ecco il suggerimento; nel pannello di sinistra, c'è Elastic Block Store > Volumes. Fai clic destro sul tuo volume e seleziona l'opzione "Modify Volume". Appare come nell'immagine qui sotto. Scegli la dimensione giusta e clicca il pulsante Modify.


Passo 2: Controllare la dimensione del disco

Prima di tutto, devi essere root o sudo nel server prima di eseguire i comandi. Per prima cosa, controlleremo la dimensione del disco, dovrebbe mostrare la dimensione prima della modifica del volume. Quindi, in questo esempio, dovrebbe essere 80 GiB.

[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

Sì, dice che la dimensione totale del disco è 80 GiB, è vero. Ora controlliamo l'elenco dei dispositivi a blocchi. L'output del comando dovrebbe mostrare la nuova dimensione del disco sul dispositivo /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

Sì! Dice che nvme0n1p1 è da 80GiB ma nvme0n1 è da 120GiB. Significa che possiamo estendere la nostra partizione nvme0n1p1 da 80GiB a 120GiB.

Passo 3: Estendiamo

Ecco la magia;

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

Il comando growpart ha appena ingrandito la partizione del disco, non l'ha ancora salvata e ora non abbiamo ancora un disco da 120GiB. Dobbiamo salvare la modifica sul file system adesso.

[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

Passo 4: Controllare di nuovo la dimensione del disco

È il momento di assicurarti della nuova dimensione del disco. Ecco di nuovo i comandi per sicurezza.

[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

Congratulazioni! Hai esteso con successo il tuo server Linux EC2 AWS senza riavvio e/o perdita di dati su EBS (Elastic Block Storage)