Sei sulla pagina 1di 24

Paolo Pedaletti

www.OpenLabs.it

LVM21
Logical Volume Manager (ver.2)

last update:
gioved 15 gennaio 2015

1 Creative Commons - Attribuzione-Condividi allo stesso modo


Tu sei libero:
di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare quest'opera
di modificare quest'opera
alle seguenti condizioni:
Attribuzione. Devi attribuire la paternit dell'opera nei modi indicati dall'autore o da chi ti ha dato l'opera in licenza e in
modo tale da non suggerire che essi avallino te o il modo in cui tu usi l'opera.
Condividi allo stesso modo. Se alteri o trasformi quest'opera, o se la usi per crearne un'altra, puoi distribuire l'opera
risultante solo con una licenza identica o equivalente a questa.

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

Ridimensionare i Volumi Logici (LV/partizioni) mantenendole sempre online

Ridimensionare i Volumi Fisici (PV/dischi) mantenendoli sempre online

creare snapshots read-only e read/write

disporre i Volumi Logici (LV/partizioni) su piu' Volumi Fisici (PV/dischi) come un


RAID0

disporre i Volumi Logici (LV/partizioni) come un RAID1

separare o unire o spostare Gruppi Volumi (VG) su diversi HD fisici (in caso di
sostituzione/aggiornamento di hardware storage)

Schematicamente la configurazione di una installazione GNU/Linux che utilizza LVM si


pu rappresentare in questo modo:
mount
point

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

In pratica si passa da:


2 Per dischi NON di boot le partizioni sono superflue se non addirittura inopportune.

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++

numero seriale per identificare gli HD:


$ hdparm -I /dev/sda | grep -i serial
$ smartctl -i /dev/sda
$ udevadm info --query=property name=sda | grep -i serial
$ scsi_id -gus /block/sda
$ sdparm --vendor sea /dev/sda
$ lshw

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

RAID con mdadm


Personalmente preferisco avere la partizione / non gestita da LVM ma solo dal RAID.
In genere, se uso LVM, creo 3 partizioni, una per la /, una per lo swap, e una come PV
per LVM3. Avere la / separata dal resto mi velocizza il resync tra i dischi in caso di
necessita' (ricostruzione del RAID)
Marcare le partizioni come partizioni di tipo Linux raid autodetect (type FD) tramite
{c|s}fdisk
Per sicurezza azzero il superblocco di un eventuale software RAID precedente:
$ mdadm --zero-superblock /dev/sda1

Assemblare le partizioni sda1 e sdb1 nel raid di livello 1 md0 configurando


contemporaneamente un disco di scorta spare al momento inesistente (supponendo
di aggiungerlo in seguito)
$ mdadm /dev/md0 --create --verbose --chunk=128 --level=1 --raid-devices=2 /dev/sda1
/dev/sdb1 --spare-device=1 missing

stessa cosa per sda2 + sdb2 md1


$ mdadm /dev/md1 --create --verbose --chunk=128 --level=1 --raid-devices=2 /dev/sda2
/dev/sdb2 --spare-device=1 missing

oppure
$ mdadm /dev/md1 --create --verbose --level=1 --raid-devices=2 /dev/sda2 missing

se il secondo disco del RAID non e' disponibile al momento

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

(local to host pta-pp02)

Creation Time : Tue Oct 25 09:10:47 2011


Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 976771120 (465.76 GiB 500.11 GB)
Array Size : 976770848 (465.76 GiB 500.11 GB)
Used Dev Size : 976770848 (465.76 GiB 500.11 GB)
Data Offset : 2048 sectors

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

Super Offset : 8 sectors


State : clean
Device UUID : 9fcb710a:7f153461:67cd6abc:b5f6e0e8
Update Time : Fri Nov

4 15:14:58 2011

Checksum : 2b52445f - correct


Events : 12568

Device Role : Active device 0


Array State : AA ('A' == active, '.' == missing)
$ mdadm --examine --scan
ARRAY /dev/md/0 metadata=1.2 UUID=e0d407ba:ab11cb33:7e6ca813:6eaa1eff name=pta-pp02:0
$ mdadm --assemble --scan

dettagli di un device md:


$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[2] sdb1[0]
488385424 blocks super 1.2 [2/2] [UU]
unused devices: <none>
$ mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Oct 25 09:10:47 2011
Raid Level : raid1
Array Size : 488385424 (465.76 GiB 500.11 GB)
Used Dev Size : 488385424 (465.76 GiB 500.11 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Nov

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

(local to host pta-pp02)

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<------------------

Marcare come difettoso un intero HD

(2 partizioni)

di un RAID

$ mdadm /dev/md0 --fail /dev/sdb1


$ mdadm /dev/md1 --fail /dev/sdb2

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

$ mdadm /dev/md0 --remove /dev/sdb1


$ mdadm /dev/md1 --remove /dev/sdb2

Marcare & rimuovere un HD

(2 partizioni)

difettoso da 2 RAID

$ mdadm /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1


$ mdadm /dev/md1 --fail /dev/sdb2 --remove /dev/sdb2

15/01/2015

9 di 24

Paolo Pedaletti

www.OpenLabs.it

Aggiungere un HD in sostituzione di uno difettoso


Dopo aver sostituito fisicamente l'HD difettoso con uno identico lo aggiungo al RAID,
duplicando prima le partizioni (da sda a sdb in questo caso):
$ sfdisk /dev/sda | sfdisk /dev/sdb
$ mdadm /dev/md0 --add /dev/sdb1
$ mdadm /dev/md1 --add /dev/sdb2

Verifica dell'avanzamento della sincronizzazione tra i dischi del RAID


$ cat /prc/mdstat
$ mdadm --query --detail /dev/md0

Con kernel > 2.6.16


$ echo "check"

> /sys/block/md0/md/sync_action

$ echo "repair" > /sys/block/md0/md/sync_action

Disabilitare un RAID
$ mdadm --manage --stop

/dev/md0

$ mdadm --manage --remove /dev/md0


$ mdadm zero-superblock /dev/sda /dev/sdb

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

Recupero di un RAID software:


$ mdadm --examine --scan >> /etc/mdadm/mdadm.conf
$ mdadm --monitor --daemonise --scan
$ mdadm --run
$ cat /proc/mdstat
$ mdadm --query --detail /dev/md0
$ mdadm --assemble --scan -v
$ mdadm --examine --scan -v > mdadm.conf

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. forzare mdadm ad assemblare il RAID in ogni caso:


$ mdadm --stop /dev/mdX
$ mdadm --assemble --force /dev/mdX <list of devices>
$ mdadm --assemble --run --force --update=resync /dev/md1 /dev/sd[abcd]2

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

mount: /dev/sda2: can't read superblock


Find out superblock location for /dev/sda2:
dumpe2fs /dev/sda2 | grep superblock
Now check and repair a Linux file system using alternate superblock # 32768:
fsck -b 32768 /dev/sda2

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

Creazione o estensione del Volume Group


$ vgcreate -v sistema /dev/md1
$ vgcreate -v dati /dev/sdc1
$ vgcreate -v film /dev/md1 --physicalextentsize 128M
se esiste gi e deve essere esteso su un nuovo device:
$ vgextend -v dati /dev/sdd1

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

Creazione Logical Volume


Ora creo la partizioni virtuali
$ lvcreate sistema -n usr --size 5g
$ lvcreate sistema -n var -L 5g
$ lvcreate sistema -n var_log --size 1g
$ lvcreate sistema -n tmp --size 3g
$ lvcreate sistema -n opt -L 2g
$ lvcreate dati -n home --size 10g

Verifico:
$ lvs
$ lvdisplay

15/01/2015

13 di 24

Paolo Pedaletti

www.OpenLabs.it

Formattazione & mount


Per i filesystem ext* (ext2/3/4) sui filesystem non di sistema e' meglio aggiungere
l'opzione -m 0 cioe' non riserva alcuna percentuale del disco per l'utente root (sugli
attuali dischi di grosse dimensioni si sprecherebbe troppo spazio per nulla)
$ mkfs.xfs /dev/sistema/usr

; mount /dev/mapper/sistema-usr /usr

$ mkfs.xfs /dev/sistema/var

; mount /dev/mapper/sistema-var /var

$ mkfs.xfs /dev/sistema/var_log

; mount /dev/mapper/sistema-var_log /var/log

$ mkfs.xfs /dev/sistema/tmp

; mount /dev/mapper/sistema-tmp /tmp

$ mkfs.xfs /dev/sistema/opt

; mount /dev/mapper/sistema-opt /opt

$ mkfs.xfs /dev/dati/home

; mount /dev/mapper/sistema-home /home

Ridimensionare un LV
Allargare la partizione
$ lvextend -L +1G /dev/sistema/usr

e successivamente il filesystem associato


$ xfs_growfs /dev/sistema/usr
oppure, per ext{2,3,4}
$ resize2fs /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

imposto la dimensione del filesystem a 4G:


$ resize2fs /dev/$VG/$LV 4G
$ xfs_growfs -s 4G /dev/$VG/$LV

imposto la dimensione del LV a 4Gb:


$ lvreduce -L 4G /dev/$VG/$LV

Salvare la configurazione LVM2


Per salvare una copia di sicurezza della configurazione di LVM in /etc/lvm/backup/:
$ vgcfgbackup -f LVM2.cfg

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

Recuperare la configurazione di LVM2


$ vgcfgrestore -l LVM2.cfg
$ vgcfgrestore -f LVM2.cfg

Spostare un Volume Group


Lo scopo e' quello di sostituire un device fisico con potenziali problemi di
malfunzionamento con uno nuovo senza interrompere il servizio.
Aggiungo il nuovo device al VG esistente
$ pvcreate /dev/sde1
$ vgextend dati /dev/sde1

verifico
$ vgdisplay dati

Disabilito il PV da liberare:
$ pvchange -xn /dev/sdd1

Sposto i dati fuori dal device mal-funzionante


$ pvmove -c -i 10 /dev/sdd1

oppure, esplicitando la destinazione


$ pvmove -c -i 10 /dev/sdd1 /dev/sdde1

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

effettuo il backup della direcory (con rsync o altro...) dopo di che:


$ umount /mnt/snapshot
$ lvremove -f /dev/sistema/var_lib_snap

15/01/2015

16 di 24

Paolo Pedaletti

www.OpenLabs.it

Rimozione di un sistema LVM2


$ lvchange -a n /dev/mapper/1tb-backup1tb
$ lvremove /dev/mapper/1tb-backup1tb
$ vgremove 1tb
$ pvremove /dev/sda1

Recupero di un sistema LVM2


In caso di necessita' e' possibile recuperare i dati di un sistema LVM partendo da un
live-cd.
I comandi da eseguire per accedere alle partizioni sono:

vedere l'associazione UUID device in /dev : BLKID

$ 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"

recupero del sistema LVM2:

$ 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

Elenco comandi utili


$ pvchange

$ pvs

Change attributes of a physical volume


$ pvchange -ay

$ pvscan

Scan all disks for physical volumes


$ pvck

$ pvscan

Check physical volume metadata


$ pvck -v /dev/md0

$ vgcfgbackup

Backup volume group descriptor area


$ pvcreate

$ vgcfgbackup

Initialize a disk or partition for use by LVM


$ pvcreate /dev/sda1

$ vgcfgrestore

Restore volume group descriptor area


$ pvdisplay

$ vgcfgrestore

Display attributes of a physical volume


$ pvdisplay

$ vgchange

Change attributes of a volume group


$ pvmove

Move physical extents outside physical


volume
$ pvmove -v -i 3 /dev/hda2

$ vgchange -ay

$ vgck

Check volume group metadata


$ vgck

$ pvremove

Remove a physical volume

$ vgcreate

$ pvremove -v -t /dev/sda2

Create a volume group


$ vgcreate -v dati /dev/sdc1 /dev/sdd1

$ pvresize

Resize a disk or partition in use by LVM2,


after/before alter it with fdisk

$ vgdisplay

Display attributes of volume groups

espande PV dopo aver esteso la partizione $ vgdisplay


con fdisk:
$ pvresize /dev/sda2

$ vgexport

restringe PV prima di ridimensionarla con Make volume groups unknown to the


fdisk
system
$ pvresize setphysicalvolumesize 40G
/dev/sda2

$ pvs

Report information about physical volumes

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

Change attributes of a logical volume


$ lvchange -ay

$ vgimport

Make exported volume groups known to


the system
$ vgimport -a

$ lvconvert

Convert a logical volume from linear to


mirror or snapshot
$ lvconvert -m1 dati/home

$ vgmerge

Merge two volume groups.

$ lvcreate

$ vgmerge -t -v dati dati_new

Create a logical volume in an existing


volume group

$ vgreduce

$ lvcreate dati -n home --size 1G

crea il device /dev/dati/home


Reduce a volume group by removing one or
$ lvcreate --size 1G --snapshot --name
more physical volumes
snap /dev/dati/home

$ vgreduce -t -v --removemissing

$ vgremove

Remove a volume group


$ vgremove dati

$ vgrename

Rename a volume group


$ vgrename /dev/dati /dev/archivio

$ vgs

Report information about volume groups


$ vgs

$ vgscan

Scan all disks for volume groups and


rebuild caches
$ vgscan

$ vgsplit

crea il device /dev/dati/snap


$ lvdisplay

Display attributes of a logical volume


$ lvdisplay

$ lvextend

Extend the size of a logical volume


$ lvextend --size +5G /dev/sistema/opt

$ lvmdiskscan

Scan for all devices visible to LVM2


$ lvmdiskscan

$ lvmdump

Create lvm2 information dumps for


diagnostic purposes
$ lvmdump

$ lvreduce

Split a volume group into two, moving any


logical volumes from one volume group to Reduce the size of a logical volume
another by moving entire physical volumes $ lvreduce - - size -1G /dev/sistema/opt
$ vgsplit -t -v vs1 vs2 /dev/sdb1
$ lvremove

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

Rename a logical volume

Report information about logical volumes


$ lvs

$ lvrename /dev/sistema/opt /dev/sistema/srv


$ lvrename sistema opt srv

$ lvscan

$ lvresize

$ lvscan

Scan (all disks) for logical volumes

Resize a logical volume

15/01/2015

21 di 24

Paolo Pedaletti

www.OpenLabs.it

In mancanza di dispositivi fisici...


#!/bin/sh
# script per automatizzare il test
# Creo i file/dispositivi
umount /mnt/test1
# disabilito l'eventuale volume:
lvchange -an /dev/vg1/test1
# rimuovo l'eventuale volume:
lvremove /dev/vg1/test1
#
vgremove vg1
vgremove vg2

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

# maximum number of physical extents is approximately 65000


# physical extent size ~= physical size / 65000
# es: 500 Gb = 500000 Mb / 65000 = 7.69 ~= 8

# Creo 2 gruppi di volume:


vgcreate --physicalextentsize 8M vg1 /dev/loop1 /dev/loop2
vgcreate --physicalextentsize 8M vg2 /dev/loop3 /dev/loop4
# Verifico:
vgs
# Creo un volume logico:
lvcreate -L 512M -n test1 vg1
# Verifico
lvs
# Formatto & monto
mkfs.btrfs /dev/vg1/test1
mkdir /mnt/test1
mount /dev/vg1/test1 /mnt/test1
# Quando ho finito ripulisco il tutto:

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

Potrebbero piacerti anche