Logical Volume management 2

24
Paolo Pedaletti www.OpenLabs.it LVM2 1 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

description

Logical Volume management 2 LVM2

Transcript of Logical Volume management 2

Page 1: Logical Volume management 2

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

Page 2: Logical Volume management 2

Paolo Pedaletti www.OpenLabs.it

Indice generaleIntroduzione..............................................................................................................................................................................................3

Vantaggi...............................................................................................................................................................................................3Implementazione.................................................................................................................................................................................4Strumenti di verifica............................................................................................................................................................................4

Terminologia.............................................................................................................................................................................................5Physical Volumes.................................................................................................................................................................................5Volume Groups....................................................................................................................................................................................5Logical Volumes..................................................................................................................................................................................5Extents.................................................................................................................................................................................................5

RAID con mdadm.....................................................................................................................................................................................6Verifica................................................................................................................................................................................................6Marcare come difettoso un intero HD (2 partizioni) di un RAID.......................................................................................................9Rimuovere un HD (2 partizioni) difettoso da 2 RAID........................................................................................................................9Marcare & rimuovere un HD (2 partizioni) difettoso da 2 RAID.......................................................................................................9Aggiungere un HD in sostituzione di uno difettoso..........................................................................................................................10Verifica dell'avanzamento della sincronizzazione tra i dischi del RAID..........................................................................................10

Con kernel > 2.6.16.....................................................................................................................................................................10Disabilitare un RAID.........................................................................................................................................................................10Recupero della configurazione di un RAID software:......................................................................................................................11

LVM2......................................................................................................................................................................................................12Creazione di Phisical Volume............................................................................................................................................................12Creazione o estensione del Volume Group........................................................................................................................................12Creazione Logical Volume................................................................................................................................................................12Formattazione & mount.....................................................................................................................................................................13Ridimensionare un LV.......................................................................................................................................................................13

Allargare la partizione.................................................................................................................................................................13Restringere la partizione..............................................................................................................................................................13

Salvare la configurazione LVM2.......................................................................................................................................................13Spostare un Volume Group................................................................................................................................................................14Snapshot............................................................................................................................................................................................15Rimozione di un sistema LVM2........................................................................................................................................................16Recupero di un sistema LVM2..........................................................................................................................................................16RAID “LVM2”..................................................................................................................................................................................17

Elenco comandi utili...............................................................................................................................................................................18In mancanza di dispositivi fisici..............................................................................................................................................................21Linkografia..............................................................................................................................................................................................23

15/01/2015 2 di 24

Page 3: Logical Volume management 2

Paolo Pedaletti www.OpenLabs.it

IntroduzioneLVM (ora alla versione 2) permette di gestire in modo moderno (= flessibile e sicuro) ilsistema 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 sipuò rappresentare in questo modo:

mount point

/ /usr /var /var/log /var/lib |/var/cache |/var/spool |/var/tmp | ...

/tmp /opt /home

LogicalVolume

usr var var_log var_lib |var_cache |var_spool | var_tmp | ...

tmp opt free |snapshot

home free |snapshot

VolumeGroup

sistema dati

PhysicalVolume

md0 md1 sdc sdd sde

~~~~~~~~~~~~~~RAID

softwaremd0 md1 md0 md1

partizioni sda1 sda2 sdb1 sdb2 -2 - -

device fisici sda sdb 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

Page 4: Logical Volume management 2

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

Page 5: Logical Volume management 2

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

Page 6: Logical Volume management 2

Paolo Pedaletti www.OpenLabs.it

RAID con mdadmPersonalmente 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

Page 7: Logical Volume management 2

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

Page 8: Logical Volume management 2

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

0 8 80 0 active sync /dev/sdf

2 8 96 1 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

Page 9: Logical Volume management 2

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

Page 10: Logical Volume management 2

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 thearray on the next bootup.”

15/01/2015 10 di 24

Page 11: Logical Volume management 2

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

Page 12: Logical Volume management 2

Paolo Pedaletti www.OpenLabs.it

15/01/2015 12 di 24

Page 13: Logical Volume management 2

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

Page 14: Logical Volume management 2

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

Page 15: Logical Volume management 2

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 mal-funzionante dal VG

$ vgreduce dati /dev/sdd1

$ pvremove /dev/sdd1

15/01/2015 15 di 24

Page 16: Logical Volume management 2

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

Page 17: Logical Volume management 2

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

Page 18: Logical Volume management 2

Paolo Pedaletti www.OpenLabs.it

RAID “LVM2”6

$ 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/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/mirror_create.html

15/01/2015 18 di 24

Page 19: Logical Volume management 2

Paolo Pedaletti www.OpenLabs.it

Elenco comandi utili$ pvchange

Change attributes of a physical volume

$ pvchange -ay

$ pvck

Check physical volume metadata

$ pvck -v /dev/md0

$ pvcreate

Initialize a disk or partition for use by LVM

$ pvcreate /dev/sda1

$ pvdisplay

Display attributes of a physical volume

$ pvdisplay

$ pvmove

Move physical extents outside physical volume

$ pvmove -v -i 3 /dev/hda2

$ pvremove

Remove a physical volume

$ pvremove -v -t /dev/sda2

$ pvresize

Resize a disk or partition in use by LVM2, after/before alter it with fdisk

espande PV dopo aver esteso la partizione con fdisk:

$ pvresize /dev/sda2

restringe PV prima di ridimensionarla con fdisk

$ pvresize –setphysicalvolumesize 40G /dev/sda2

$ pvs

Report information about physical volumes

$ pvs

$ pvscan

Scan all disks for physical volumes

$ pvscan

$ vgcfgbackup

Backup volume group descriptor area

$ vgcfgbackup

$ vgcfgrestore

Restore volume group descriptor area

$ vgcfgrestore

$ vgchange

Change attributes of a volume group

$ vgchange -ay

$ vgck

Check volume group metadata

$ vgck

$ vgcreate

Create a volume group

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

$ vgdisplay

Display attributes of volume groups

$ vgdisplay

$ vgexport

Make volume groups unknown to the system

$ umount /virtual/backup

$ lvchange -an /dev/virtual/backup

$ vgexport virtual

$ vgextend

15/01/2015 19 di 24

Page 20: Logical Volume management 2

Paolo Pedaletti www.OpenLabs.it

Add physical volumes to a volume group

$ vgextend

$ vgimport

Make exported volume groups known to the system

$ vgimport -a

$ vgmerge

Merge two volume groups.

$ vgmerge -t -v dati dati_new

$ vgreduce

Reduce a volume group by removing one ormore physical volumes

$ 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

Split a volume group into two, moving any logical volumes from one volume group to another by moving entire physical volumes

$ vgsplit -t -v vs1 vs2 /dev/sdb1

$ lvchange

Change attributes of a logical volume

$ lvchange -ay

$ lvconvert

Convert a logical volume from linear to mirror or snapshot

$ lvconvert -m1 dati/home

$ lvcreate

Create a logical volume in an existing volume group

$ lvcreate dati -n home --size 1G

crea il device /dev/dati/home

$ lvcreate --size 1G --snapshot --name snap /dev/dati/home

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

Reduce the size of a logical volume

$ lvreduce - - size -1G /dev/sistema/opt

$ lvremove

15/01/2015 20 di 24

Page 21: Logical Volume management 2

Paolo Pedaletti www.OpenLabs.it

Remove a logical volume

$ lvremove sistema/opt

$ lvrename

Rename a logical volume

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

$ lvrename sistema opt srv

$ lvresize

Resize a logical volume

$ lvresize --size +5G /dev/sistema/usr

$ lvs

Report information about logical volumes

$ lvs

$ lvscan

Scan (all disks) for logical volumes

$ lvscan

15/01/2015 21 di 24

Page 22: Logical Volume management 2

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

Page 23: Logical Volume management 2

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

Page 24: Logical Volume management 2

Paolo Pedaletti www.OpenLabs.it

Linkografiahttp://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/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/mirror_create.html

http://forums.opensuse.org/english/get-technical-help-here/install-boot-login/412797-how-mount-lvm-mirror-set-different-load.html

http://old.nabble.com/LVM2-raid1-without-mdadm---Break-the-mirror-and-re-synchronize-it--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