lvm – logical volume manager

Lo scopo  di Logical Volume Management  (LVM) è rendere la gestione del dischi più efficace ed efficente.  Con LVM è possibile   estendere o ridurre dinamicamentele “partizioni” a seguito di aggiunta o riduzione di dischi Phisical Volumes (PV) .

Lvm in debian  ubuntu  si installa con

sudo apt-get install lvm2

Utilizzare le partizioni LVM

La prima operazione consiste nel preparare le partizioni per creare lo spazio disco LVM:

pvcreate /dev/sdb1 /dev/sdc2 /dev/sdd1

e possibilie rimuovere le partizioni dallo spazio disco LVM

pvremove /dev/sdb1 /dev/sdc2 /dev/sdd1

Quindi si può  creare  il  volume group (LVM) ad esempio:  fileserver
utilizzando il comando vgcreate:

vgcreate fileserver /dev/sdb1 /dev/sdc2 /dev/sdd1

E’ possibile visualizzare i volumi fisici e lo stato del volume fisico con :

pvscan           ## lista tutti i volumi fisici 
pvs              ## informazioni sui volumi fisici 
pvdisplay        ## vari attributi del o dei volumi fisici

Testare òla consistenza dei metadati LVM con

pvck -v /dev/sda3

visualizzare lo stato dei gruppi del volume logico:

vgdisplay
vgscan

rimonimare il volume group fileserver in data

vgrename fileserver data

rimuovere il volume group data

vgremove data

Una volta creato il Volume Group si utilizza  lvcreate per creare i voumi logici (“partizioni logiche”) nel volume group fileserver.
Per creare il volume logico share

lvcreate --name share --size 40G fileserver

Per visualizzare i volume logici del volume group fileserver

lvdisplay
lvscan

Per rimuovere il volume logico share:

lvremove /dev/fileserver/share

Con LVM è agevole variale le dimensioni della partizioni o meglio volumi logici.
Per incrementare le dimensioni del volume logico share da 40G a 45G

lvextend -L45G /dev/fileserver/share

Per ridurre le dimensioni del volume logico share a 37,5

lvreduce -L37.5G /dev/fileserver/share

Per poter utilizzare il volume logico share bisogna creare il file system (formattare) .
Utilizzeremo in sharee  un filesystem ext3.

mkfs.ext3 /dev/fileserver/share

Adesso è possibile il mount di  share in media/share

mount /dev/fileserver/share /media/share

Per controllare spazio disco

df -h

Estendiamo a 50G share

lvextend -L50G /dev/fileserver/share

Una volta ampliato il volume logico applicare il filesystem

e2fsck -f /dev/fileserver/share

Make a note of the total amount of blocks (10485760) because we need it when we shrink share later on.

Per aggregare una nuova partizione /dev/sdc3 al Volume Group fileserver.
Predisponiamo la partizione

pvcreate /dev/sdc3

Quindi aggiungiamo /dev/sdc3 a fileserver volume group:

vgextend fileserver /dev/sdc3

Altrettando agevole risulta l’operazione inversa quella di rimozione di una partizione.
Ad esempio rimuoviamo la partizione sdb1. Copiamo d’apprima i dati della partizione sdb1
nella partizione aggiunta sbc3.

pvmove /dev/sdb1 /dev/sdc3

A questo punto è possibile rimuovere in sicuerzza la partizione /dev/sdb1 dal volume group fileserver.
Rimuoviamo prima sdb1 dal volume group

vgreduce fileserver /dev/sdb1

e quindi dal volume fisico

pvremove /dev/sdb1

Per rimuovere il  volume group è necessario prima rimuovere ogni singolo volume logico con lvremove:
Ad esempio si rimuove il volumen logico media con

lvremove /dev/fileserver/media

E si riperte l’operazione per tutti gli altri volumi logici quindi è possibile rimuovere il volume group fileserver

vgremove fileserver

E quindi rimuovere i volumi fisici

pvremove /dev/sdc2 /dev/sdd1 /dev/sdc3
lvm digram

lvm digram from

I file di dispositivo relativi ai Volumi Logici (LV) creati dovrebbero essere disponibili in /dev/NomeDelGruppoDiVolumi e anche in /dev/mapper/.
Se non sono presenti, provare i seguenti comandi:

 modprobe dm-mod 
 vgchange -ay

Directory e files 

## Directories
/etc/lvm                         – default lvm directory
/etc/lvm/backup         –  directory per i  backups automatici
/etc/lvm/cache            –  cache filtro persistente
/etc/lvm/archive         –  directory degli automatic archives  dopo un cambio di volume group
/var/lock/lvm              –  lock files per prevenire la corruzione dei metadati

# Files
/etc/lvm/lvm.conf       – file princiaple di configurazione per lvm
$HOME/.lvm               – lvm history

Tools

system-config-lvm : GUI per lvm

lvmdump
lvmdump -d <dir>
dmsetup [info|ls|status]

Nota: di defualt  lvmdump crea un tar bal

Ottimo howto:  lvm howtoforge

e  Logical Volume Manager
Con trattazione di lvm anche nei sistemi raid.

lvm scheme full raid

lvm scheme full raid

partizione – formattare -uuid

Per creare e modificare partizioni con interfaccia grafica

gparted

Attenzione: ricordare che eliminando una partizione il numero delle partiizoni  scala.
es. se ho dieci partizioni sda1…sda10 ed elimino la partizione sda7 la sda8 diventa sda7 ecc..
quanto ricreo la partizione nello spazio della vecchia sda7 questa diventa la sda10 questo è uno dei motivi
per il quale si preferisce utilizzare gli UUID.

blkid determinare uuid e filesystem

blkid  ( from package ‘util-linux’ (main)  )  elenca anche tutte le partizioni presenti e il tipo di filesystem.
esempio su macchina virtuale:

:~$ sudo blkid
/dev/xvda1: UUID="af09b912-690e-4e57-8292-2b67224df625" TYPE="ext3" 
/dev/xvda5: UUID="cd60cb5c-6ece-48f6-aa8d-47b3d0fc7db3" TYPE="swap" 
/dev/xvdd: LABEL="XenServer Tools" TYPE="iso9660" 
/dev/xvdb1: LABEL="OS" UUID="f2e56c5d-3363-4c3a-bddd-832e987c1c77" TYPE="ext4" 
/dev/xvdb2: LABEL="X_Biblioteca" UUID="9e620893-1735-403a-b821-e0fcc16a2ecf" TYPE="ext4"

Partizioni da terminale

I comandi per gestire le partizioni via terminale: fdisk,parted,cfdisk

per elencare i devices disco collegati

fdisk -l

per creare / modificare le partizioni nel primo disco ad es.

fdisk   es: /dev/sda   
cfdisk

formattare

mkfs.ext3  /dev/sda7
mkfs  -t ext3  /dev/sda7
mkfs.ext3 -m 1/dev/hdb1

tune2fs -m

Ricavare UUID in Linux

Per conoscere l’UUID di tutte le partizioni oltre a blkid si può utilizza ls

ls -lah /dev/disk/by-uuid
maurizio@Lub12120:~$ ls -lah /dev/disk/by-uuid
total 0
drwxr-xr-x 2 root root 640 Nov 19 09:58 .
drwxr-xr-x 6 root root 120 Nov 19 09:58 ..
lrwxrwxrwx 1 root root  11 Nov 19 09:59 0eb71848-93a4-4beb-b60c-696f29c9417f -> ../../sdb10
lrwxrwxrwx 1 root root  11 Nov 19 09:59 18013698-ef60-4d3a-910c-55f6c01c9715 -> ../../sda15
lrwxrwxrwx 1 root root  11 Nov 19 09:59 1d3f9d45-efbb-4594-b5a0-829f08ef49b2 -> ../../sdb17
lrwxrwxrwx 1 root root  11 Nov 19 09:59 1dc0d5c8-0e62-4150-b916-9c091a3f0bb6 -> ../../sda11
....
dev-disk-by-uuid

dev/disk/by-uuid

di una specifica partizione:

vol_id -u /dev/hdc2 
di una specifica partizione:

per visualizzare i file systems del sistema da terminale oltre a blkid si può utilizzare fsarchiver
installare fsarchiver

sudo apt-get install fsarchiver

gui per lvm

 sudo apt-get install system-config-lvm

lvm – logical volume manager

Recovery Software
TestDisk

Creare una partition table da terminale

Un disco privo di partition table riponderà al comando sudo fdisk -l  con un messaggio del tipo seguente :

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

Quindi per poterlo utilizzare prima di passare alla formattazione sarà necessario creare la partition table con ad esempio fdisk

:~$ sudo fdisk /dev/xvdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xefad2081.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
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)
Command (m for help): o
Building a new DOS disklabel with disk identifier 0xec7fa691.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Altre risorse: