Estendere i volumi LVM dopo il cambio di taglia su un server Aruba Cloud
Ho modificato la taglia del mio server Aruba Cloud. Come si fa ad estendere lo spazio su disco per usare il nuovo spazio acquistato?
Dopo aver effettuato un cambio di taglia per un server Aruba Cloud, le risorse legate al processore ed alla memoria vengono automaticamente impostate e sono disponibili subito, fin dal riavvio dell’istanza dal pannello di controllo. Non altrettanto accade per lo spazio fisico su disco, il cui utilizzo dipende dalle vostre necessità.
Ecco una guida passo passo su come effettuare l’estensione dei volumi di archiviazione.
In questo esempio si vogliono raggiungere 2 obiettivi:
- raddoppiare lo spazio di swap su disco;
- estendere il disco per sfruttare il nuovo spazio di archiviazione disponibile.
Effettuare uno snapshot dal pannello di controllo di Aruba Cloud prima di procedere alle modifiche non è una cattiva idea. In questo modo avrete 2 giorni di tempo per ripristinare lo stato preesistente nel caso qualcosa andasse storto.
1 - Raccolta delle informazioni per iniziare
I comandi che ci permettono di raccogliere tutte le informazioni utili per estendere i dischi LVM
Per verificare lo stato iniziale delle partizioni usiamo il comando fdisk -l:
root@myserver:~# fdisk -l
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x31d18c10
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 976895 974848 476M 83 Linux
/dev/sda2 978942 20969471 19990530 9.5G 5 Extended
/dev/sda3 20969472 41943039 20973568 10G 8e Linux LVM
/dev/sda5 978944 20969471 19990528 9.5G 8e Linux LVM
Partition table entries are not in disk order.
Disk /dev/mapper/vg-lv_root: 18.6 GiB, 19973275648 bytes, 39010304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/vg-lv_swap: 952 MiB, 998244352 bytes, 1949696 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Si può vedere che lo spazio totale assegnato alle partizioni è di circa 20Gb, suddiviso in due volumi logici (LVM). “lv_swap” e “lv_root”.
Cerchiamo di identificare i volumi logici con il comando lvdisplay.
root@myserver:~# lvdisplay
--- Logical volume ---
LV Path /dev/vg/lv_swap
LV Name lv_swap
VG Name vg
LV UUID fGLPZV-sDNy-E9WG-ocOH-Cm74-uZI6-N9exDl
LV Write Access read/write
LV Creation host, time ubuntu, 2016-07-20 09:22:14 +0200
LV Status available
# open 2
LV Size 952.00 MiB
Current LE 238
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/vg/lv_root
LV Name lv_root
VG Name vg
LV UUID Eld4hF-bgNP-KwGg-VR9O-eUDC-fxKf-gm977G
LV Write Access read/write
LV Creation host, time ubuntu, 2016-07-20 09:22:26 +0200
LV Status available
# open 1
LV Size 18.60 GiB
Current LE 4762
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
Le informazioni utili per identificare i volumi logici sono LV Path e VG Name, inoltre qui possiamo vedere la dimensione dei volumi logici:
- un volume di swap “lv_swap” di circa 1Gb (952Mb)
- un volume root “lv_root” di circa 19Gb (18.60Gb)
Per ulteriori informazioni sul volume group” usare il comando vgdisplay.
2 - Identifichiamo lo spazio libero
Dov'è lo spazio libero acquistato cambiando la taglia della soluzione Aruba Cloud
Per identificare lo spazio libero, non assegnato ad nessuna partizione usiamo GNU parted. Lanciamo il tool con il comando parted.
Non effettuiamo nessuna operazione. Lo scopo è solo verificare che sia disponibile lo spazio libero dopo il cambio di taglia del server Cloud.
root@myserver:~# parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
A questo punto digitiamo:
print free
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
32.3kB 1049kB 1016kB Free Space
1 1049kB 500MB 499MB primary ext2 boot
500MB 501MB 1048kB Free Space
2 501MB 10.7GB 10.2GB extended
5 501MB 10.7GB 10.2GB logical lvm
3 10.7GB 21.5GB 10.7GB primary lvm
21.5GB 42.9GB 21.5GB Free Space
Per uscire digitiamo q.
3 - Partizioniamo lo spazio libero
Come eseguire il partizionamento
Creiamo una partizione a partire dallo spazio libero con cfdisk:
root@myserver:~# cfdisk
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 976895 974848 476M 83 Linux
/dev/sda2 978942 20969471 19990530 9.5G 5 Extended
└─/dev/sda5 978944 20969471 19990528 9.5G 8e Linux LVM
/dev/sda3 20969472 41943039 20973568 10G 8e Linux LVM
>> Free 41943040 83886079 41943040 20G
Selezionare lo spazio marcato “Free”, quindi selezionare “NEW“. Vi verranno chieste alcune informazioni:
- la dimensione proponendo di default la dimensione massima, in questo esempio: 20G.
- il formato (Type) della Partizione. Qui scegliete “Type” e indicate il formato “8e” (Linux LVM)
A questo punto selezionate “Write”, quindi “Quit”.
Verificare la creazione della partizione con fdisk -l:
root@myserver:~# fdisk -l /dev/sda
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x31d18c10
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 976895 974848 476M 83 Linux
/dev/sda2 978942 20969471 19990530 9.5G 5 Extended
/dev/sda3 20969472 41943039 20973568 10G 8e Linux LVM
/dev/sda4 41943040 83886079 41943040 20G 8e Linux LVM
/dev/sda5 978944 20969471 19990528 9.5G 8e Linux LVM
Partition table entries are not in disk order.
La nuova partizione /dev/sda4 è stata correttamente creata.
Per procedere è necessario riavviare la macchina virtuale:
root@myserver:~# reboot
quindi effettuare nuovamente l’accesso via ssh.
4 - Creare un nuovo disco fisico
Creazione e verifica di un nuovo disco fisico
Poiché un volume group è un raggruppamento di dischi fisici, è necessario creare un nuovo disco fisico a partire dalla nuova partizione.
Per farlo usare il comando pvcreate:
root@myserver:~# pvcreate /dev/sda4
Physical volume "/dev/sda4" successfully created
Quindi verifichiamo con il comando pvdisplay:
root@myserver:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name vg
PV Size 9.53 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2440
Free PE 0
Allocated PE 2440
PV UUID o466dw-Em8g-Uk0Y-rrmJ-FsiW-ij3R-NzvR5S
--- Physical volume ---
PV Name /dev/sda3
VG Name vg
PV Size 10.00 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2560
Free PE 0
Allocated PE 2560
PV UUID cPvsbz-yQZx-GEs6-HY6j-0Dax-0Q2f-ekXUUI
"/dev/sda4" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda4
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 15waLs-6uhN-2oJS-8PkZ-24C8-96WB-9Ruftq
Si osservi che VG Name è vuoto.
5 - Espandere il Volume Group
Espansione del Volume Group e verifica dei risultati
Ora non resta che inserire il nuovo disco fisico nel volume group che nel caso di questo esempio si chiama “vg”.
Per farlo usiamo il comando vgextend:
root@myserver:~# vgextend vg /dev/sda4
Volume group "vg" successfully extended
In questo modo abbiamo assegnato /dev/sda4 al volume group “vg” e quindi il volume group ha a disposizione uno spazio extra di 20Gb.
Tuttavia questo spazio non è ancora associato a nessun volume logico. Infatti lanciando il comando lvdisplay la sitazione risulta immutata.
root@myserver:~# lvdisplay
--- Logical volume ---
LV Path /dev/vg/lv_swap
LV Name lv_swap
VG Name vg
LV UUID fGLPZV-sDNy-E9WG-ocOH-Cm74-uZI6-N9exDl
LV Write Access read/write
LV Creation host, time ubuntu, 2016-07-20 09:22:14 +0200
LV Status available
# open 2
LV Size 952.00 MiB
Current LE 238
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/vg/lv_root
LV Name lv_root
VG Name vg
LV UUID Eld4hF-bgNP-KwGg-VR9O-eUDC-fxKf-gm977G
LV Write Access read/write
LV Creation host, time ubuntu, 2016-07-20 09:22:26 +0200
LV Status available
# open 1
LV Size 18.60 GiB
Current LE 4762
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
Il prossimo passo sarà quindi estendere i volumi logici. Nel caso che porto come esempio si desidera estendere sia il volume dedicato allo swap che quello dedicato ai dati.
Se volete estendere solo il volume dati saltate la parte che segue dedicata al volume di swap e passate direttamente al punto 7.
6 - Espandere il Volume Logico di Swap
Espansione dello spazio di SWAP tramite l'espansione del Volume Logico
1. Disabilitare lo swap sul volume:
root@myserver:~# swapoff /dev/vg/lv_swap
2. Estendere il volume logico di swap
root@myserver:~# lvextend -L+1G /dev/vg/lv_swap
Size of logical volume vg/lv_swap changed from 952.00 MiB (238 extents) to 1.93 GiB (494 extents).
Logical volume lv_swap successfully resized.
3. Marcare il volume come area di swap
root@myserver:~# mkswap /dev/vg/lv_swap
mkswap: /dev/vg/lv_swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 2 GiB (2071982080 bytes)
no label, UUID=7da028a2-5e10-44c2-8135-6492af326911
4. Abilitare lo swap sul volume modificato
root@myserver:~# swapon /dev/vg/lv_swap
5. Verifica estensione LVM
root@myserver:~# lvdisplay
--- Logical volume ---
LV Path /dev/vg/lv_swap
LV Name lv_swap
VG Name vg
LV UUID fGLPZV-sDNy-E9WG-ocOH-Cm74-uZI6-N9exDl
LV Write Access read/write
LV Creation host, time ubuntu, 2016-07-20 09:22:14 +0200
LV Status available
# open 2
LV Size 1.93 GiB
Current LE 494
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/vg/lv_root
LV Name lv_root
VG Name vg
LV UUID Eld4hF-bgNP-KwGg-VR9O-eUDC-fxKf-gm977G
LV Write Access read/write
LV Creation host, time ubuntu, 2016-07-20 09:22:26 +0200
LV Status available
# open 1
LV Size 18.60 GiB
Current LE 4762
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
6. Verifica effettivo ampliamento dello swap
root@myserver:~# free
total used free shared buff/cache available
Mem: 2046464 1637728 64436 37512 344300 182664
Swap: 2023420 1556728 466692
7 - Espandere il Volume Logico principale
Espansione dello spazio di archiviazione tramite l'espansione del Volume Logico di Root
Ora estendiamo il volume “lv_root” in modo tale che ad esso sia assegnato tutto lo spazio libero rimanente:
1. Estendiamo il volume con il comando lvextend -l (-l minuscolo!)
root@myserver:~# lvextend -l+100%FREE /dev/vg/lv_root
Size of logical volume vg/lv_root changed from 18.60 GiB (4762 extents) to 37.60 GiB (9625 extents).
Logical volume lv_root successfully resized.
2. Verificare che LV Size sia cambiato secondo le nostre attese
root@myserver:~# lvdisplay
--- Logical volume ---
LV Path /dev/vg/lv_swap
LV Name lv_swap
VG Name vg
LV UUID fGLPZV-sDNy-E9WG-ocOH-Cm74-uZI6-N9exDl
LV Write Access read/write
LV Creation host, time ubuntu, 2016-07-20 09:22:14 +0200
LV Status available
# open 2
LV Size 1.93 GiB
Current LE 494
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/vg/lv_root
LV Name lv_root
VG Name vg
LV UUID Eld4hF-bgNP-KwGg-VR9O-eUDC-fxKf-gm977G
LV Write Access read/write
LV Creation host, time ubuntu, 2016-07-20 09:22:26 +0200
LV Status available
# open 1
LV Size 37.60 GiB
Current LE 9625
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
3. Estendere il file system sul nuovo volume
Se a questo punto digitate il comando df -h vedrete ancora un valore di 19Gb associato a /dev/mapper/vg-lv-root.
root@myserver:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 978M 0 978M 0% /dev
tmpfs 200M 14M 187M 7% /run
/dev/mapper/vg-lv_root 19G 12G 6.0G 66% /
tmpfs 1000M 0 1000M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/sda1 461M 266M 172M 61% /boot
tmpfs 200M 0 200M 0% /run/user/0
Occorre ridimensionare anche il file system con il comando resize2fs:
root@myserver:~# resize2fs /dev/mapper/vg-lv_root
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mapper/vg-lv_root is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/vg-lv_root is now 9856000 (4k) blocks long.
4. Verifica finale
root@myserver:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 978M 0 978M 0% /dev
tmpfs 200M 14M 187M 7% /run
/dev/mapper/vg-lv_root 37G 12G 24G 33% /
tmpfs 1000M 0 1000M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/sda1 461M 266M 172M 61% /boot
tmpfs 200M 0 200M 0% /run/user/0
Questo articolo è stato scritto testando in prima persona e unendo i suggerimenti dei seguenti articoli:
Estendere un disco LVM in Ubuntu Server 14.04 su Aruba Cloud
e le informazioni dell’help dei singoli comandi, richiamabile con -h o –help dopo ogni comando.
La procedura qui descritta è stata testata su un server linux Ubuntu 16.04.3.
fantastico! grazie!
Bravissimo, questo tutorial e’ perfetto