Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
www.OpenLabs.it
LVM21
Logical Volume Manager (ver.2)
last update:
gioved 15 gennaio 2015
15/01/2015
1 di 24
Paolo Pedaletti
www.OpenLabs.it
Indice generale
Introduzione..............................................................................................................................................................................................3
Vantaggi...............................................................................................................................................................................................3
Implementazione.................................................................................................................................................................................4
Strumenti di verifica............................................................................................................................................................................4
Terminologia.............................................................................................................................................................................................5
Physical Volumes.................................................................................................................................................................................5
Volume Groups....................................................................................................................................................................................5
Logical Volumes..................................................................................................................................................................................5
Extents.................................................................................................................................................................................................5
RAID con mdadm.....................................................................................................................................................................................6
Verifica................................................................................................................................................................................................6
Marcare come difettoso un intero HD (2 partizioni) di un RAID.......................................................................................................9
Rimuovere un HD (2 partizioni) difettoso da 2 RAID........................................................................................................................9
Marcare & rimuovere un HD (2 partizioni) difettoso da 2 RAID.......................................................................................................9
Aggiungere un HD in sostituzione di uno difettoso..........................................................................................................................10
Verifica dell'avanzamento della sincronizzazione tra i dischi del RAID..........................................................................................10
Con kernel > 2.6.16.....................................................................................................................................................................10
Disabilitare un RAID.........................................................................................................................................................................10
Recupero della configurazione di un RAID software:......................................................................................................................11
LVM2......................................................................................................................................................................................................12
Creazione di Phisical Volume............................................................................................................................................................12
Creazione o estensione del Volume Group........................................................................................................................................12
Creazione Logical Volume................................................................................................................................................................12
Formattazione & mount.....................................................................................................................................................................13
Ridimensionare un LV.......................................................................................................................................................................13
Allargare la partizione.................................................................................................................................................................13
Restringere la partizione..............................................................................................................................................................13
Salvare la configurazione LVM2.......................................................................................................................................................13
Spostare un Volume Group................................................................................................................................................................14
Snapshot............................................................................................................................................................................................15
Rimozione di un sistema LVM2........................................................................................................................................................16
Recupero di un sistema LVM2..........................................................................................................................................................16
RAID LVM2..................................................................................................................................................................................17
Elenco comandi utili...............................................................................................................................................................................18
In mancanza di dispositivi fisici..............................................................................................................................................................21
Linkografia..............................................................................................................................................................................................23
15/01/2015
2 di 24
Paolo Pedaletti
www.OpenLabs.it
Introduzione
LVM (ora alla versione 2) permette di gestire in modo moderno (= flessibile e sicuro) il
sistema di archiviazione di massa (storage) online di un computer. LVM astrae
l'hardware sottostante e presenta al sistema operativo dei device virtuali, estendibili a
piacere e riposizionabili su altro device fisico in caso di problemi, con in pi la
possibilit di eseguire snaturato (immagini immutabili nel tempo ma usabili in modo
trasparente alle applicazioni) dei filesystem in tempo reale.
Vantaggi
separare o unire o spostare Gruppi Volumi (VG) su diversi HD fisici (in caso di
sostituzione/aggiornamento di hardware storage)
Logical
Volume
/usr /var
/var/log
/var/lib |
/var/cache |
/var/spool |
/var/tmp | ...
/tmp /opt
usr var
var_log
var_lib |
var_cache |
var_spool |
var_tmp | ...
tmp
opt
/home
free |
snapshot
home
sistema
Volume
Group
Physical md0
Volume
free |
snapshot
dati
md1
sdc
sdd
sde
~~~~~~~~~~~~~~
RAID
software
md0
md1
md0
md1
partizioni
sda1
sda2
sdb1
sdb2
device fisici
sda
sdb
-2
sdc
sdd
sde
15/01/2015
3 di 24
Paolo Pedaletti
www.OpenLabs.it
Hard Disk
Partizione
Filesystem
a
PV (Hard Disk intero o Partizione [facoltativa] o device RAID md)
VG (ex HD )
LV (ex partizioni)
Filesystem
Implementazione
Un sistema basato su LVM, se si basa su un RAID sottostante, garantisce flessibilit
nella gestione delle partizioni e indipendenza da eventuali malfunzionamenti hardware
dei dischi fisici. Se il computer non ha un controller hardware integrato e' necessario
configurare prima un sistema RAID software.
Lo schema precedente e' intenzionalmente misto RAID e non-RAID per poter
dimostrare (nella parte non-RAID) alcune caratteristiche di LVM che con un sistema
RAID sottostante si complicherebbero inutilmente.
La procedura seguente si basa sullo schema precedente che suppone di avere 5 dischi
fisici
Strumenti di verifica
$ iostat
$ systat
$ iozone
$ bonnie++
per il BIOS:
$ dmidecode
15/01/2015
4 di 24
Paolo Pedaletti
www.OpenLabs.it
Terminologia
Physical Volumes
I Physical Volumes (PV) Sono i dischi fisici o partizioni (esempio: /dev/hda o /dev/hda1)
oppure device RAID md (esempio /dev/md0). Sono i dispositivi che vengono formattati
e montati di solito se non si usa LVM. Quando si intende usarli con LVM bisogna
marcarli di tipo 0x8E (Linux LVM).
Volume Groups
Un Volume Group (VG) e' un'insieme di PV. Si possono considerare dei dischi virtuali
che verranno utilizzati per creare le partizioni virtuali da formattare e montare.
Logical Volumes
Partendo dai VG si creano i Logical Volumes (LV) in pratica le partizioni che vengono
poi formattare e montate nel modo classico.
Extents
L'equivalente dei settori, unita' base di allocazione dei file. Di default sono 4MiB
15/01/2015
5 di 24
Paolo Pedaletti
www.OpenLabs.it
oppure
$ mdadm /dev/md1 --create --verbose --level=1 --raid-devices=2 /dev/sda2 missing
Verifica
dettagli hd di un md:
$ mdadm --examine /dev/sdf
/dev/sdf:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : e0d407ba:ab11cb33:7e6ca813:6eaa1eff
Name : pta-pp02:0
3) [2009/11/09] ho verificato che almeno con Ubuntu 9.10 server e' possibile installare
tutto il sistema (/ e swap incluso) su LVM2, anche se non lo consiglio.
15/01/2015
6 di 24
Paolo Pedaletti
www.OpenLabs.it
4 15:14:58 2011
4 15:13:58 2011
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
15/01/2015
7 di 24
Paolo Pedaletti
www.OpenLabs.it
Name : pta-pp02:0
UUID : e0d407ba:ab11cb33:7e6ca813:6eaa1eff
Events : 12568
Number
Major
Minor
RaidDevice State
80
active sync
/dev/sdf
96
active sync
/dev/sdg
monitor 1-shot:
$ mdadm --monitor --scan -1
$ mdadm --monitor --scan --mail root@localhost -p /root/script/mdadm-handle-events.sh
-1
15/01/2015
8 di 24
Paolo Pedaletti
www.OpenLabs.it
----------------------8<----------------8<------------------8<-----------------#!/bin/bash
# /root/script/mdadm-handle-events.sh
# script di gestione degli eventi generati dal sistema raid software
LOGFILE=/var/log/mdadm-handle-events.log
MESSAGGIO="$@"
logger "$MESSAGGIO"
echo -e "$MESSAGGIO" | mutt -s "mail from $0" root@localhost
echo $(date) >> $LOGFILE
echo $MESSAGGIO >> $LOGFILE
echo "-------------" >> $LOGFILE
----------------------8<----------------8<------------------8<------------------
(2 partizioni)
di un RAID
prima:
:[~]$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb3[2](F) sda3[0]
136721088 blocks [2/1] [U_]
$ mdadm /dev/md3 --fail /dev/sdb3
$ mdadm /dev/md3 --remove /dev/sdb3
dopo:
:[~]$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sda3[0]
136721088 blocks [2/1] [U_]
Rimuovere un HD
(2 partizioni)
difettoso da 2 RAID
(2 partizioni)
difettoso da 2 RAID
15/01/2015
9 di 24
Paolo Pedaletti
www.OpenLabs.it
> /sys/block/md0/md/sync_action
Disabilitare un RAID
$ mdadm --manage --stop
/dev/md0
Toggle the partition to 83 if it is fd. This will prevent the kernel from auto starting the
array on the next bootup.
15/01/2015
10 di 24
Paolo Pedaletti
www.OpenLabs.it
In caso di problemi:
1. Preserving RAID superblock information4 = backup stato del RAID
$ mdadm --examine /dev/sd[abcdefghijklmn][1-9] >> raid.status
$ mdadm --examine /dev/sd[a-z] | egrep 'Event|/dev/sd'
1. estrema risorsa:
(mdadm is smart enough to detect the existing data, and shouldn't overwrite it) 5
$ mdadm --create --assume-clean --level=L --raid-devices=N --size=SIZE /dev/md0
/dev/sdb1 /dev/sdc1 missing /dev/sdl1 /dev/sd.....
$ mdadm --create /dev/md1 -v level=5 raid-disks=4 /dev/sd[abcd]2
4 https://raid.wiki.kernel.org/index.php/RAID_Recovery
5 The solution was to recreate the RAID array. This sound counter-intuitive: if we recreate a raid array over an existing one, it will
be erased ! Right ? Wrong ! As it is said on debian-user-french, mdadm is smart enough to see that HDD of the new array were
elements of a previous one. Knowing that, mdadm will try to do its best (i.e. if parameters match the previous array
configuration) and rebuild the new array upon the previous one in a non-destructive way, by keeping HDD content.
15/01/2015
11 di 24
Paolo Pedaletti
15/01/2015
www.OpenLabs.it
12 di 24
Paolo Pedaletti
www.OpenLabs.it
LVM2
Creazione di Phisical Volume
Marcare il device md1, sd... come partizione di tipo Linux LVM (8e) tramite
{c|s}fdisk, quindi
$ pvcreate /dev/md1
$ pvcreate /dev/sdc1
$ pvcreate /dev/sdd1
$ pvcreate /dev/sde1
al posto del default di 4MiB imposto la dimesione degli extent a 128M per migliorare il
seek time di una grossa partizione destinata a contenere file di grosse dimensioni.
Verifica:
$ pvs
$ vgs
$ lvs
$ pvdisplay
$ vgdisplay
$ lvdisplay
Verifico:
$ lvs
$ lvdisplay
15/01/2015
13 di 24
Paolo Pedaletti
www.OpenLabs.it
$ mkfs.xfs /dev/sistema/var
$ mkfs.xfs /dev/sistema/var_log
$ mkfs.xfs /dev/sistema/tmp
$ mkfs.xfs /dev/sistema/opt
$ mkfs.xfs /dev/dati/home
Ridimensionare un LV
Allargare la partizione
$ lvextend -L +1G /dev/sistema/usr
Restringere la partizione
Non tutti i filesystem permettono di essere ristretti, praticamente tutti permettono di
essere allargati (qui $VG e $LV rappresentano rispettivamente VG e LV su cui
lavorare)
$ umount /dev/$VG/$LV
oppure
$ lvmdump -d tmpdir
crea un archivio .tgz in /root/ concernente tutti i dettagli del sistema LVM attivo sulla
macchina.
15/01/2015
14 di 24
Paolo Pedaletti
www.OpenLabs.it
verifico
$ vgdisplay dati
Disabilito il PV da liberare:
$ pvchange -xn /dev/sdd1
Aspetto che i dati siano trasferiti fuori dal device e alla fine sconnetto il device malfunzionante dal VG
$ vgreduce dati /dev/sdd1
$ pvremove /dev/sdd1
15/01/2015
15 di 24
Paolo Pedaletti
www.OpenLabs.it
Snapshot
Fare uno snapshot di un filesystem significa ottenere una immagine del filesystem
che rimane inalterata per tutto il tempo dell'esistenza dello snapshot, senza per questo
interferire in alcun modo con le applicazioni che contemporaneamente lo usano in
lettura ma soprattutto in scrittura, visto che le scritture vengono effettuate altrove,
tramite il meccanismo di COW (Copy On Write, in pratica leggi da una parte e scrivi
dall'altra)
Lo snapshot e' utile per esempio per effettuare backup di database, che non possono
essere arrestati ma che possono molto probabilmente cambiare tra l'inizio e la fine
della procedura di backup.
Se non si usasse uno snapshot per fare il backup, il backup ottenuto conterrebbe un
database in uno stato inconsistente e quindi inutilizzabile per un restore.
Creare uno snapshot significa in pratica creare un nuovo LV che appare come una
copia esatta di un filesystem congelata all'istante dello snapshot.
$ lvcreate --size 1G --snapshot --name var_lib_snap /dev/sistema/var_lib
$ mkdir /mnt/snapshot
$ mount /dev/sistema/var_lib_snap /mnt/snapshot
15/01/2015
16 di 24
Paolo Pedaletti
www.OpenLabs.it
$ blkid
/dev/sdb2: UUID="d33662cd-6cc4-48e7-92d4-4abc1882aa1f" TYPE="swap"
/dev/sdb3: UUID="uVTyQH-03pw-NGHA-9xSd-K2pq-6dXI-V6wGVs" TYPE="LVM2_member"
/dev/sdc1: UUID="cf21d5de-9d7d-964e-d86d-f15f9ae1e03e" TYPE="linux_raid_member"
/dev/sda1: UUID="cf21d5de-9d7d-964e-d86d-f15f9ae1e03e" TYPE="linux_raid_member"
/dev/sdb1: LABEL="root" UUID="828cc26e-d47a-49d5-8305-4b1fb3e3c0eb" TYPE="ext4"
/dev/md0: UUID="Yyk7aW-TQK6-TA3L-2WqV-3jAC-tulM-12HehP" TYPE="LVM2_member"
/dev/mapper/sistema-usr: LABEL="usr" UUID="a177a4e3-de4a-4013-b548-23c44fef039f"
TYPE="xfs"
/dev/mapper/sistema-var: LABEL="var" UUID="1be8f902-07f7-45c0-81b9-59fc104111f8"
TYPE="xfs"
/dev/mapper/sistema-tmp: LABEL="tmp" UUID="3b8060d2-729d-4c7a-8763-6282f7c2164a"
TYPE="xfs"
/dev/mapper/dati-home: UUID="88d7f87c-4f5c-4466-9d2f-a2236a46d93c" TYPE="xfs"
$ vgcfgbackup -f LVM2.cfg
$ vgcfgrestore -f VolGroup01 VolGroup01
$ pvscan
$ vgscan
$ lvmdiskscan
$ lvscan
$ vgchange -ay
15/01/2015
17 di 24
Paolo Pedaletti
www.OpenLabs.it
RAID LVM26
$ lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
$ lvcreate -L 3G -n DumpMirror -m 1 TCPDumpVolGRP
$ lvs -a -o +devices
mirrorlog core), the log is stored in memory.
6 http://docs.redhat.com/docs/enUS/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/mirror_create.html
15/01/2015
18 di 24
Paolo Pedaletti
www.OpenLabs.it
$ pvs
$ pvscan
$ pvscan
$ vgcfgbackup
$ vgcfgbackup
$ vgcfgrestore
$ vgcfgrestore
$ vgchange
$ vgchange -ay
$ vgck
$ pvremove
$ vgcreate
$ pvremove -v -t /dev/sda2
$ pvresize
$ vgdisplay
$ vgexport
$ pvs
15/01/2015
$ umount /virtual/backup
$ lvchange -an /dev/virtual/backup
$ vgexport virtual
$ vgextend
19 di 24
Paolo Pedaletti
Add physical volumes to a volume group
$ vgextend
www.OpenLabs.it
$ lvchange
$ vgimport
$ lvconvert
$ vgmerge
$ lvcreate
$ vgreduce
$ vgreduce -t -v --removemissing
$ vgremove
$ vgrename
$ vgs
$ vgscan
$ vgsplit
$ lvextend
$ lvmdiskscan
$ lvmdump
$ lvreduce
15/01/2015
20 di 24
Paolo Pedaletti
Remove a logical volume
www.OpenLabs.it
$ lvresize --size +5G /dev/sistema/usr
$ lvremove sistema/opt
$ lvs
$ lvrename
$ lvscan
$ lvresize
$ lvscan
15/01/2015
21 di 24
Paolo Pedaletti
www.OpenLabs.it
NDEVMAX=4
SEQ=$(seq 1 $NDEVMAX)
for DEV in $SEQ ; do
pvremove /dev/loop$DEV
done
if [ $1 ] ; then
echo "OK, all cleaned"
exit 0
fi
for DEV in $SEQ ; do
if [ ! -f /home/hd${DEV}.img ] ; then
dd if=/dev/zero of=/home/hd${DEV}.img bs=1024 count=1000000
fi
pvremove /dev/loop$DEV
# Associo i file ai device loopback
losetup -d /dev/loop$DEV; losetup /dev/loop$DEV /home/hd${DEV}.img
# Creo un volume fisico:
pvcreate --dataalignment 64k /dev/loop$DEV
pvs -o +pe_start /dev/loop$DEV
done
15/01/2015
22 di 24
Paolo Pedaletti
www.OpenLabs.it
15/01/2015
23 di 24
Paolo Pedaletti
www.OpenLabs.it
Linkografia
http://www.softpanorama.org/Commercial_linuxes/LVM/recovery_of_lvm_partitions.shtml
http://wiki.gl-como.it/index.php?title=Lvm2
http://wiki.tldp.org/LVM-on-RAID
http://www.debian-administration.org/articles/410
http://www.unixconsult.org/zfs_vs_lvm.html
http://www.mythtv.org/wiki/LVM_on_RAID
https://answers.launchpad.net/lvm2/+question/8410
http://docs.redhat.com/docs/enUS/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/mirror_create.h
tml
http://forums.opensuse.org/english/get-technical-help-here/install-boot-login/412797how-mount-lvm-mirror-set-different-load.html
http://old.nabble.com/LVM2-raid1-without-mdadm---Break-the-mirror-and-re-synchronizeit--back-the-other-way-around.-td25621743.html
http://lists.debian.org/debian-amd64/2009/09/msg00044.html
http://www.markus-gattol.name/ws/lvm.html
15/01/2015
24 di 24