Logical Volume Manager (LVM) su linux: tutorial passo passo



Introduzione

Il gestore logico dei volumi (anche noto come logical volume manager o LVM) è un software di gestione dei dischi disegnato per essere più flessibile del normale partizionamento fisico. Il programma di gestione permette, di ridimensionare ogni singolo file system senza dover riavviare la macchina, anche quando il filesystem è in uso. Solitamente viene utilizzato su file server o database server per gestire array di dischi o unità Storage Area Network (SAN).

Esempio pratico

Viene ora illustrato un semplice esempio di utilizzo del gestore logico dei volumi, che comprende la creazione di partizioni LVM, di physical volumes  (PV), volume groups (VG) e logical volumes (LV).

Creazione delle partizioni  LVM

Con il comando “fdisk –l” è possibile vedere tutte le partizioni presenti sul sistema:

linux-eynr:~ # fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 64 514048+ 82 Linux swap / Solaris
/dev/sda2 * 65 1044 7871850 83 Linux

Disk /dev/sdb: 107 MB, 107374080 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

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

Disk /dev/sdc: 107 MB, 107374080 bytes

64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

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

Disk /dev/sdd: 107 MB, 107374080 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

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

Bisogna prima di tutto creare delle partizioni di tipo LVM sui nuovi device sdb, sdc, sdd. Questa operazione viene fatta con il comando fdisk:

linux-eynr:~ #  fdisk /dev/sdb

Command (m for help): m
Command action
a   toggle a bootable flag
b   edit bsd disklabel
c   toggle the dos compatibility flag
d   delete a partition
l   list known partition types
m   print this menu
n   add a new partition
o   create a new empty DOS partition table
p   print the partition table
q   quit without saving changes
s   create a new empty Sun disklabel
t   change a partition's system id
u   change display/entry units
v   verify the partition table
w   write table to disk and exit
x   extra functionality (experts only)

I comandi che saranno utilizzati sono 4:

  • p per stampare a monitor la tabella delle partizioni corrente
  • n per creare la nuova partizione
  • t per cambiare il tipo di partizione in Linux LMV (codice 8e)
  • w per salvare le modifiche fatte. Segue un output di esempio

Command (m for help): p

Disk /dev/sdb: 107 MB, 107374080 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-102, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-102, default 102):
Using default value 102

Command (m for help): p

Disk /dev/sdb: 107 MB, 107374080 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         102      104432   83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 107 MB, 107374080 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         102      104432   8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

Importante impostare il tipo di id della partizione a “Linux LVM”. Questa operazione va effettuata su tutti i device che dovranno comporre il volume group. Alla fine di questa fase, è molto probabile che si renda necessario un reboot della macchina. Nell’esempio sopra, viene chiaramente proposto dal sistema al momento in cui si vanno a salvare le modifiche fatte alla tabella delle partizioni.
Dopo il reboot, bisogna verificare che in /dev/ siano stati creati i nuovi file speciali sdb1, sdc1, sdd1.

 Creazione dei Physical Volumes

Per ogni nuovo device partizionato nel paragrafo precedente, bisogna creare un physical volume:

linux-eynr:~ # pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created

Per verificare l’avvenuta creazione si utilizza:

linux-eynr:~ # pvdisplay
--- Physical volume ---
PV Name               /dev/sdb1
VG Name
PV Size               100.00 MB / not usable 0
Allocatable           yes
PE Size (KByte)       4096
Total PE              25
Free PE               25
Allocated PE          0
PV UUID               tnn5Yj-E3aj-AF6q-Mvtn-gKAh-O1r3-ioEDK4

Lo stesso procedimento va adottato per i device /dev/sdc1 e /dev/sdd1.

Creazione del Volume Group

Occore adesso creare il Volume Group a cui associare i device. Inizialmente si utilizzeranno solo sdb1 e sdc1:

linux-eynr:~ # vgcreate miovg /dev/sdb1 /dev/sdc1
Volume group "miovg" successfully created

Per visualizzare i VG esistenti si usa:

linux-eynr:~ # vgdisplay
--- Volume group ---
VG Name               miovg
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  1
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                0
Open LV               0
Max PV                0
Cur PV                2
Act PV                2
VG Size               200.00 MB
PE Size               4.00 MB
Total PE              50
Alloc PE / Size       0 / 0
Free  PE / Size       50 / 200.00 MB
VG UUID               xH4kyi-Q5Gi-FxDM-tRi8-5Y6z-dI41-8KEt3x

Se si vuole estendere il VG, ad esempio aggiungergli il terzo device sdd1, si usa:

linux-eynr:~ # vgextend miovg /dev/sdd1
Volume group "miovg" successfully extended

Per verificare che il comando sia andato a buon fine si deve controllare che il campo Cur PV (Current physical volume) abbia il valore incrementato di uno rispetto alla precedente invocazione.

linux-eynr:~ # vgdisplay
--- Volume group ---
VG Name               miovg
System ID
Format                lvm2
Metadata Areas        3
Metadata Sequence No  2
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                0
Open LV               0
Max PV                0
Cur PV                3
Act PV                3
VG Size               300.00 MB
PE Size               4.00 MB
Total PE              75
Alloc PE / Size       0 / 0
Free  PE / Size       75 / 300.00 MB
VG UUID               xH4kyi-Q5Gi-FxDM-tRi8-5Y6z-dI41-8KEt3x

Creazione dei Logical Volumes

Una volta definito il VG, è possibile creare uno o più logical volume. Si voglia ad esempio creare un LV di 150 megabytes, la sintassi da utilizzare è:

linux-eynr:~ # lvcreate -L 150 miovg
Rounding up size to full physical extent 152.00 MB
Logical volume "lvol0" created

Per vedere il nuovo LV creato:

linux-eynr:~ # lvdisplay
--- Logical volume ---
LV Name                /dev/miovg/lvol0
VG Name                miovg
LV UUID                eGNJ8f-gTEw-VqLx-H3wv-YTew-PAeA-GrbJn6
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                152.00 MB
Current LE             38
Segments               2
Allocation             inherit
Read ahead sectors     0
Block device           253:0

Formattazione e montaggio

A questo punto bisogna formattare e montare il nuovo LV creato al passo precedente. Si supponga di voler avere un filesystem (FS) di tipo EXT3, montato sotto il path /LGC_VOL01. Si procede dunque alla formattazione:

linux-eynr:~ # mkfs.ext3 /dev/my_vg00/lvol0
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
38912 inodes, 155648 blocks
7782 blocks (5.00%) reserved for the super user
First data block=1
19 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Quindi occorre creare la directory che verrà usata dal sistema come punto di mount:

linux-eynr:~ # mkdir /LGC_VOL01

Ed infine montare il filesystem. E’ conveniente aggiungere una riga nel file /etc/fstab, in modo che ad ogni riavvio del sistema il filesystem venga montato automaticamente. La riga da aggiungere è di questo tipo:

/dev/my_vg00/lvol0    /LGC_VOL01    ext3    defaults    0    0

A questo punto per montare il FS è sufficiente impartire il comando:

linux-eynr:~ # mount /LGC_VOL01

E verificarne la presenza col comando df –k.

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest