Una delle comodità dei server in cloud è la possibilità di aggiungere risorse man mano che servono. Mentre per CPU e Ram è sufficiente operare sul pannello di controllo dell'infrastruttura cloud, per l'aumento dello spazio disco bisogna eseguire qualche operazione in più. Per quale motivo? Perché lo spazio aggiuntivo, impostato dal configuratore, estende il disco fisicamente, ma non la partizione del sistema operativo. E senza queste operazioni ci si ritroverà un disco più grande, ma la partizione (attiva) del sistema operativo delle dimensioni precedenti!
Avendo alcuni server su
Aruba Cloud, ho avuto la necessità di estendere il disco di una macchina virtuale con sistema operativo Ubuntu Server 14.04. Le istruzioni che mostrerò sono però valide anche per altri sistemi operativi linux, in particolare tutti quelli che supportano
LVM.
Il primo passo sarà quello di spegnere la macchina virtuale ed agire sul pannello di controllo del cloud, aggiungendo spazio al disco principale. Nel mio caso sono voluto passare da 10 GB a 30 GB.
Si può ora riattivare la macchina virtuale. I passi sono semplici:
1. controllare mediante il comando
parted l'effettivo spazio libero non allocato, digitandovi il comando
print free ed analizzando il risultato. Ciò che ci interessa, è la riga "Free Space" di 21.5 GB (nel mio caso).
Per uscire, basta digitare "q".
root@CloudServer:~# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
32.3kB 1049kB 1016kB Free Space
1 1049kB 256MB 255MB primary ext2 boot
256MB 257MB 1048kB Free Space
2 257MB 10.7GB 10.5GB extended
5 257MB 10.7GB 10.5GB logical lvm
10.7GB 32.2GB 21.5GB Free Space
2. creare una nuova partizione con il comando
root@CloudServer:~# cfdisk
selezionare la riga dello spazio libero interessato, selezionare New, poi scegliere partizione Logica [Edit: un utente mi ha giustamente fatto notare che a questo punto, è necessario specificarne il formato, ossia 8E]. Infine selezionare Write per salvare le modifiche e infine Quit per uscire. Nel mio caso è stato necessario riavviare la macchina virtuale, quindi consiglio di farlo.
3. controllare l'avvenuta creazione della partizione, nel mio caso /dev/sda6
root@CloudServer:~# fdisk -l /dev/sda
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 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 identifier: 0x000bc621
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 62914559 31206401 5 Extended
/dev/sda5 501760 20969471 10233856 8e Linux LVM
/dev/sda6 20969535 62914559 20972512+ 83 Linux
4. creare il volume fisico per sda6
root@CloudServer:~# pvcreate /dev/sda6
Physical volume "/dev/sda6" successfully created
5. controllare i volumi fisici
root@CloudServer:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name vg
PV Size 9.76 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2498
Free PE 0
Allocated PE 2498
PV UUID 5fDfUK-6RjG-nFMX-iNgM-44rF-7zz0-4JIr9Y
"/dev/sda6" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda6
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID hu4B6U-WDfx-zocW-13uX-BiwJ-2CoM-LHKhT9
6. estendere il nuovo volume creato (sda6) dandogli lo stesso VG name del volume principale (sda5), nel mio caso vg
root@CloudServer:~# vgextend vg /dev/sda6
Volume group "vg" successfully extended
7. controllare il nome del volume logico da estendere (nel mio caso /dev/vg/lv_root)
root@CloudServer:~# lvdisplay
--- Logical volume ---
LV Path /dev/vg/lv_swap
LV Name lv_swap
VG Name vg
LV UUID CohmrO-3wcX-zLMV-exxT-gUDu-dAxo-vJhfD4
LV Write Access read/write
LV Creation host, time ubuntu, 2014-07-18 10:33:32 +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 252:0
--- Logical volume ---
LV Path /dev/vg/lv_root
LV Name lv_root
VG Name vg
LV UUID VxYaWt-nPDZ-zTos-Bhbk-0dyz-vlX4-5P06Qc
LV Write Access read/write
LV Creation host, time ubuntu, 2014-07-18 10:33:44 +0200
LV Status available
# open 1
LV Size 8.83 GiB
Current LE 2260
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
8. estendere il volume logico
root@CloudServer:~# lvextend -l+100%FREE /dev/vg/lv_root
Extending logical volume lv_root to 28.82 GiB
Logical volume lv_root successfully resized
9. estendere il file system
root@CloudServer:~# resize2fs /dev/mapper/vg-lv_root
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/mapper/vg-lv_root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/vg-lv_root is now 7556096 blocks long.
10. controllare lo spazio libero per assicurarsi che tutto sia andato a buon fine
root@CloudServer:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg-lv_root 29G 1.7G 26G 6% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 991M 4.0K 991M 1% /dev
tmpfs 201M 532K 200M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1002M 0 1002M 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/sda1 236M 39M 185M 18% /boot
Ho liberamente adattato le istruzioni
che si possono trovare a questo indirizzo per farli funzionare correttamente con il template Ubuntu 14.04 di Aruba Cloud.