martedì 24 febbraio 2015

LVM su Linux


In questo post viene indicata la procedura per creare un volume LVM (ovvero un metodo per gestire in modo piu' flessibile le partizioni e per poter aggiungere spazio a volumi senza essere limitati dalla dimensione fisica dei dischi rigidi)

Per questa prova, per semplicita', e' stata usata Ubuntu virtualizzata su Virtualbox aggiungendo due dischi fissi (oltre a quello dove e' installato il sistema) da configurare come LVM



Per prima cosa devono essere installati i seguenti pacchetti per la gestione di LVM

apt-get install lvm2 dmsetup mdadm reiserfsprogs xfsprogs
---------------------------------------------------------------------
root@luca-VirtualBox:/home/luca# fdisk -l

Disk /dev/sda: 22.0 GB, 22011707392 bytes
255 heads, 63 sectors/track, 2676 cylinders, total 42991616 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: 0x0007fa80

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    34603007    17300480   83  Linux
/dev/sda2        34605054    42989567     4192257    5  Extended
/dev/sda5        34605056    42989567     4192256   82  Linux swap / Solaris

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders, total 4194304 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: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdc: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders, total 4194304 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: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table
---------------------------------------------------------------------
Il primo passo e' creare una partizione in  in /dev/sdb con
fdisk /dev/sdb

creando una partizione primaria (tasti n/p/1) e cambiando il formato in Linux LVM (tasti t e parametro 8e). Per confermare ed uscire tasto w
Verra' creato un device in /dev/sdb1 e si puo' procedere a configurare LVM. Lo schema e' il seguente


Ripreso da https://www.howtoforge.com/linux_lvm
Si vede come il volumi fisici sono svincolati dalla configurazione logica della struttura dati
Nel caso in esame verra' creato un solo gruppo fileserver ed un solo volume logico backup

Si procede a creare il volume fisico ed il gruppo "fileserver"

root@luca-VirtualBox:/home/luca# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
root@luca-VirtualBox:/home/luca# vgcreate fileserver /dev/sdb1
  Volume group "fileserver" successfully created

si crea quindi il volume logico backup dentro filesever e si impone una dimensione di 1 Giga
root@luca-VirtualBox:/home/luca# lvcreate -L 1G -n backup fileserver
  Logical volume "backup" created

 si deve poi formattare il nuovo dispositivo

root@luca-VirtualBox:/home/luca# mkfs.ext4 /dev/fileserver/backup 
mke2fs 1.42.9 (4-Feb-2014)
Etichetta del filesystem=
OS type: Linux
Dimensione blocco=4096 (log=2)
Dimensione frammento=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
Primo blocco dati=0
Maximum filesystem blocks=268435456
8 gruppi di blocchi
32768 blocchi per gruppo, 32768 frammenti per gruppo
8192 inode per gruppo
Backup del superblocco salvati nei blocchi: 
        32768, 98304, 163840, 229376

Allocating group tables: fatto                           
Scrittura delle tavole degli inode: fatto                           
Creating journal (8192 blocks): fatto
Scrittura delle informazioni dei superblocchi e dell'accounting del filesystem: fatto

e si monta il filesystem
root@luca-VirtualBox:/home/luca# mkdir /media/lvm
root@luca-VirtualBox:/home/luca# mount /dev/fileserver/backup /media/ lvm/  

mediante df si vede la nuova situazione dei dischi con il disco lvm mappato
root@luca-VirtualBox:/home/luca# df
Filesystem                    1K-blocks    Used Available Use% Mounted on
/dev/sda1                      16897884 7767344   8249132  49% /
none                                  4       0         4   0% /sys/fs/cgroup
udev                            2013212       4   2013208   1% /dev
tmpfs                            404804     956    403848   1% /run
none                               5120       0      5120   0% /run/lock
none                            2024004     152   2023852   1% /run/shm
none                             102400      20    102380   1% /run/user
/dev/mapper/fileserver-backup    999320    1284    929224   1% /media/lvm

Fino a quindi niente di eccezionale. Con il sistema precedente creiamo una partizione primaria in formato LVM anche su /dev/sdc

Disk identifier: 0x0007fa80

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    34603007    17300480   83  Linux
/dev/sda2        34605054    42989567     4192257    5  Extended
/dev/sda5        34605056    42989567     4192256   82  Linux swap / Solaris

Disk /dev/sdb: 2147 MB, 2147483648 bytes
22 heads, 16 sectors/track, 11915 cylinders, total 4194304 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: 0xb4504b1b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63     4194303     2097120+  8e  Linux LVM

Disk /dev/sdc: 2147 MB, 2147483648 bytes
22 heads, 16 sectors/track, 11915 cylinders, total 4194304 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: 0x70badccc

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     4194303     2096128   8e  Linux LVM

Si deve poi aggiungere il disco sdc al gruppo fileserver
root@luca-VirtualBox:/home/luca# vgextend fileserver /dev/sdc1 
  No physical volume label read from /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
  Volume group "fileserver" successfully extended

e si ridimensiona il volume logico da 1 a 2G
root@luca-VirtualBox:/home/luca# lvextend -L2G /dev/fileserver/backup 
  Extending logical volume backup to 2,00 GiB
  Logical volume backup successfully resized

e si estende il file system
root@luca-VirtualBox:/home/luca# resize2fs /dev/fileserver/backup
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/fileserver/backup is mounted on /media/lvm; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/fileserver/backup is now 524288 blocks long.

abbiamo terminato. Adesso tramite il comando df si vede che il disco LVM ha aumentato le proprie dimensioni

root@luca-VirtualBox:/home/luca# df
Filesystem                    1K-blocks    Used Available Use% Mounted on
/dev/sda1                      16897884 7667928   8348548  48% /
none                                  4       0         4   0% /sys/fs/cgroup
udev                            2013212       4   2013208   1% /dev
tmpfs                            404804     960    403844   1% /run
none                               5120       0      5120   0% /run/lock
none                            2024004     152   2023852   1% /run/shm
none                             102400      20    102380   1% /run/user
/dev/mapper/fileserver-backup   2031440    1536   1919152   1% /media/lvm