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 Space2. creare una nuova partizione con il comando
root@CloudServer:~# cfdiskselezionare 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.