GiorgioRavera.it

il mio blog: ciò che penso e faccio, trucchi di programmazione, linux, reti e molto altro

giovedì, 9 Gennaio 2020

Ridimensionare una partizione EXT4 con Debian

Linux, Servizi, by Giorgio.

Buongiorno, oggi vorrei parlarvi di come ridimensionare una partizione EXT4 su Debian. Nell’esempio descritto in questo capitolo vediamo inoltre come spostare la partizione SWAP ed aggiornare tutti i suoi riferimenti.

La prova è stata fatta con Debian 10 a 64bit su una macchina virtuale in esecuzione su un server xcp-ng.

La procedura vale anche per altri formati (Es. EXT2-EXT3) con le dovute differenze.

Partiamo dal caso più particolare descritto qui di seguito tramite l’output del comando cfdisk eseguito con permessi di root:

Come si vede dallo schema avviamo:

  • /dev/xvda1 -> 9,3 GB -> EXT4
  • /dev/xvda2 -> 4,7 GB -> SWAP
  • Free Space -> 10 GB

Le operazioni da fare sono le seguenti:

  • cancellare la partizione SWAP (selezionandola e indicando delete)
  • effettuare il ridimensionamento di xvda1 (selezionandola, indicando resize e successivamente indicando di quanto ingrandire la partizione.
  • Ricreare la partizione SWAP ( selezionandola lo spazio vuoto, indicando create e successivamente il tipo di partizione selezionando Type e Linux Swap/Solaris)
  • Salvare le modifiche con il comando Write

Attenzione: prima di procedere è importante smontare la partizione swap che si andrà a rimuovere come segue:

root@docker:~# swapoff /dev/xvda2

Nella figura sottostante è rappresentato il risultato delle operazioni:

Ora per rendere stabili le modifiche occorre riavviare il sistema. Noterete che l’avvio sarà molto lento. ciò è causato dal fatto che la partizione swap è stata cancellata. Per ovviare al problema occorre per prima cosa ricrearla:

root@docker:~# mkswap /dev/xvda2
mkswap: /dev/xvda2: warning: wiping old swap signature.
Setting up swapspace version 1, size = 4,7 GiB (5031063552 bytes)
no label, UUID=adee0cae-c5a0-4c88-b54f-11cd60cc071f
root@docker:~# swapon /dev/xvda2
For more details see swapon(8).
root@docker:~# swapon -s
Filename Type Size Used Priority
/dev/xvda2 partition 4913148 0 -2

A questo punto dobbiamo aggiornare tutti i riferimenti alla partizione SWAP. Per prima cosa occorre identificare il nuovo UUID:

root@docker:~# blkid
/dev/xvda1: UUID=”429e81bf-81e2-4459-93dd-0f024d3240a8″ TYPE=”ext4″
/dev/xvda2: UUID=”adee0cae-c5a0-4c88-b54f-11cd60cc071f” TYPE=”swap”

Successivamente va aggiornato /etc/fstab con il nuovo UUID. Il risultato della modifica sarà il seguente:

root@docker:~# cat /etc/fstab |grep adee0cae-c5a0-4c88-b54f-11cd60cc071f
UUID=adee0cae-c5a0-4c88-b54f-11cd60cc071f none swap sw 0 0

Infine occorre aggiornare i riferimenti in initrd. Per fare ciò occorre aggiornare il file /etc/initramfs-tools/conf.d/resume e rigenerare l’initrd:

root@docker:~# cat /etc/initramfs-tools/conf.d/resume RESUME=UUID=adee0cae-c5a0-4c88-b54f-11cd60cc071f
root@docker:~# dpkg-reconfigure linux-
root@docker:~# dpkg-reconfigure linux-image-4.19.0-6-amd64
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.19.0-6-amd64
/etc/kernel/postinst.d/zz-update-grub:
Generazione file di configurazione GRUB…
Trovata immagine linux: /boot/vmlinuz-4.19.0-6-amd64
Trovata immagine initrd: /boot/initrd.img-4.19.0-6-amd64
fatto

Terminato di sistemare la partizione swap si può procedere con l’aggiornamento della dimensione del filesystem EXT4. Ridimensionare tramite cfdisk la partizione non implica in automatico il ridimensionamento del filesystem. Infatti con il comando df vediamo che la partizione / conserva ancora le dimensioni originali di 9.2 GB:

root@ docker :~# df -h
File system Dim. Usati Dispon. Uso% Montato su
udev 448M 0 448M 0% /dev
tmpfs 99M 1,5M 97M 2% /run
/dev/xvda1 9,2G 1,4G 7,3G 17% /
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 492M 0 492M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1001

Per ingrandire la partizione principale occorre eseguire il comando resize2fs:

root@docker:~# resize2fs /dev/xvda1
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/xvda1 is now 5242880 (4k) blocks long.

Ora possiamo constatare con il comando df che anche il filesystem si è adeguato alla nuova dimensione.

root@docker:~# df -h
File system Dim. Usati Dispon. Uso% Montato su
udev 448M 0 448M 0% /dev
tmpfs 99M 1,5M 97M 2% /run
/dev/xvda1 20G 1,4G 18G 8% /
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 492M 0 492M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/1001

Alla Prossima!

Back Top