PDA

View Full Version : LVM


jventure
17-11-2007, 16:17
ho un dubbio amletico ...
sto creando un lvm .. ho appena aggiunto un disco (vuoto) e prima di proseguire volevo essere certo di una cosa.

supponiamo che io mi creo il mio bel lvm da 500GB con 3 dischi (80GB, 160GB, 250GB)

e li riempio per benino ...

un domani decido di formattare il server ...

ovviamente sul nuovo sitema non ho più i vari phisical volume, volume group, logical volume

posso ripristinare la situazione come prima della formattazione senza perdita di dati??

se non è possibile o se ci sono dubbi abbandono fin da subito l'idea dell'lvm per il mio nas

homer87
17-11-2007, 16:37
Non ho mai usato LVM, ma non potresti utilizzare ghost4linux (http://sourceforge.net/projects/g4l)??

jventure
23-11-2007, 10:22
ambiente di test:
debian testing + lvm2 (2.02.06)

per la prova ho creato su un disco vuoto tre partizioni da 100MB con fdisk, il filesystem è irrilevante dato che verrà sovrascritto durante la creazione dell'LVM:
/dev/hdf1 /dev/hdf2 /dev/hdf3

- creazione del volume fisico


root@serverone:~# pvcreate /dev/hdf1 /dev/hdf2 /dev/hdf3
Physical volume "/dev/hdf1" successfully created
Physical volume "/dev/hdf2" successfully created
Physical volume "/dev/hdf3" successfully created


- creazione del gruppo di volumi


root@serverone:~# vgcreate nas /dev/hdf1 /dev/hdf2 /dev/hdf3
Volume group "nas" successfully created


- creazione del volume logico


root@serverone:~# lvcreate -l 100%VG nas
Logical volume "lvol0" created


- stato del LVM


root@serverone:~# pvdisplay
--- Physical volume ---
PV Name /dev/hdf1
VG Name nas
PV Size 95,37 MB / not usable 3,37 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 23
Free PE 0
Allocated PE 23
PV UUID x3fKdw-Dhpe-3aDm-IkKJ-IUc1-SCAn-3dPrtR

--- Physical volume ---
PV Name /dev/hdf2
VG Name nas
PV Size 95,37 MB / not usable 3,37 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 23
Free PE 0
Allocated PE 23
PV UUID CaCEav-1nWL-hA93-rJ71-bFJB-DIIe-IaHIod

--- Physical volume ---
PV Name /dev/hdf3
VG Name nas
PV Size 95,37 MB / not usable 3,37 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 23
Free PE 0
Allocated PE 23
PV UUID SfJqpQ-eIpU-vG0x-PmFS-nRzE-VbXw-vNrXbW

root@serverone:~# vgdisplay
--- Volume group ---
VG Name nas
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 276,00 MB
PE Size 4,00 MB
Total PE 69
Alloc PE / Size 69 / 276,00 MB
Free PE / Size 0 / 0
VG UUID bNp1Js-DGbe-rgr2-sRYU-ErqD-pn1t-RwmCzJ

root@serverone:~# lvdisplay
--- Logical volume ---
LV Name /dev/nas/lvol0
VG Name nas
LV UUID qHGCi0-20MI-hxuc-6HuJ-FrZj-bDhp-QfcUAh
LV Write Access read/write
LV Status available
# open 0
LV Size 276,00 MB
Current LE 69
Segments 3
Allocation inherit
Read ahead sectors 0
Block device 254:0


- formattazione e montaggio


root@serverone:~# mkfs.reiserfs /dev/nas/lvol0
mkfs.reiserfs 3.6.19 (2003 www.namesys.com)
[...]
Initializing journal - 0%....20%....40%....60%....80%....100%
[...]
ReiserFS is successfully created on /dev/nas/lvol0.

root@serverone:~# mount /dev/nas/lvol0 /nas/volume1/ -o rw,users,user


a questo punto ho copiato nella partizione un'immagine iso di 290MB e salvato il relativo MD5 e ho iniziato i test

- test1: formattazione del sistema
per questo test ho semplicemente rimosso il volume logico e il gruppo di volumi, rimosso lvm2 e la cartella di configurazione /etc/lvm e poi installato nuovamente lvm2 e ripristinato lvm senza toccare i volumi fisici

root@serverone:~# lvremove /dev/nas/lvol0
root@serverone:~# vgremove nas
root@serverone:~# apt-get remove --purge lvm2
root@serverone:~# rm -d -r /etc/lvm
root@serverone:~# apt-get install lvm2
root@serverone:~# vgcreate nas /dev/hdf1 /dev/hdf2 /dev/hdf3
root@serverone:~# lvcreate -l 100%VG nas
root@serverone:~# mount /dev/nas/lvol0 /nas/volume1/ -o rw,users,user
root@serverone:/nas/volume1# md5sum -c /root/code.md5
immagine.iso: OK


- test2: danneggiamento di uno dei supporti
per questo test ho ipotizzato che si rompesse il supporto numero 2, per far ciò ho rimosso volume logico e gruppo dei vo.lumi e successivamente ricreati senza il volume 2

root@serverone:~# lvremove /dev/nas/lvol0
root@serverone:~# vgremove nas
root@serverone:~# vgcreate nas /dev/hdf1 /dev/hdf3
root@serverone:~# lvcreate -l 100%VG nas
root@serverone:~# mount /dev/nas/lvol0 /nas/volume1/ -o rw,users,user
mount: wrong fs type, bad option, bad superblock on /dev/mapper/nas-lvol0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

root@serverone:~# parted /dev/nas/lvol0
GNU Parted 1.7.1
Using /dev/mapper/nas-lvol0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Error: Unable to open /dev/mapper/nas-lvol0 - unrecognised disk label.
(parted)

evidentemente in questo caso LVM crasha e non funziona più. i dati fisicamente memorizzati su volumi diversi da quello danneggiato non sono più disponibili.

- test3: ordine dei volumi fisici errati
partendo dalla situazione precedente ho aggiungo al VG il volume hdf2

root@serverone:~# vgextend nas /dev/hdf2
root@serverone:~# lvextend -l 100%VG nas

root@serverone:~# parted /dev/nas/lvol0
GNU Parted 1.7.1
Using /dev/mapper/nas-lvol0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p

Disk /dev/mapper/nas-lvol0: 289MB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number Start End Size File system Flags
1 0,00kB 289MB 289MB reiserfs

(parted)
root@serverone:~# mount /dev/nas/lvol0 /nas/volume1/ -o rw,users,user
mount: Operation not supported
root@serverone:~# reiserfsck /dev/nas/lvol0
reiserfsck 3.6.19 (2003 www.namesys.com)
[...]
Checking internal tree..block 32770: The level of the node (15319) is not correct, (2) expected
the problem in the internal node occured (32770), whole subtree is skipped
finished
Comparing bitmaps..vpf-10640: The on-disk and the correct bitmaps differs.
Bad nodes were found, Semantic pass skipped
1 found corruptions can be fixed only when running with --rebuild-tree
root@serverone:~# reiserfsck --rebuild-tree /dev/nas/lvol0
[...]
Will rebuild the filesystem (/dev/nas/lvol0) tree

Reiserfs journal '/dev/nas/lvol0' in blocks [18..8211]: 0 transactions replayed
Zero bit found in on-disk bitmap after the last valid bit. Fixed.

Pass 0:
####### Pass 0 #######
Loading on-disk bitmap .. ok, 48733 blocks marked used
Skipping 8213 blocks (super block, journal, bitmaps) 40520 blocks will be read
0%....20%....40%....60%....80%....100% left 0, 10130 /sec
2 directory entries were hashed with "r5" hash.
"r5" hash is selected
Flushing..finished
Read blocks (but not data blocks) 40520
Leaves among those 37
Objectids found 4

Pass 1 (will try to insert 37 leaves):
####### Pass 1 #######
Looking for allocable blocks .. finished
0%....20%....40%....60%....80%....100% left 0, 0 /sec
Flushing..finished
37 leaves read
37 inserted
####### Pass 2 #######
Flushing..finished
Pass 3 (semantic):
####### Pass 3 #########
/immagine.isovpf-10680: The file [2 4] has the wrong block count in the StatData (457576)
- corrected to (47720)Flushing..finished Files found: 1
Directories found: 3
Broken (of files/symlinks/others): 1
Pass 3a (looking for lost dir/files):
####### Pass 3a (lost+found pass) #########
Looking for lost directories:
Flushing..finished 37, 0 /sec
Pass 4 - finished done 38, 0 /sec
Deleted unreachable items 31
Flushing..finished
Syncing..finished
root@serverone:~# mount /dev/nas/lvol0 /nas/volume1/ -o rw,users,user
root@serverone:/nas/volume1# md5sum -c /root/code.md5
immagine.iso: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match

quindi pur essendo la partizione consistente (parted) il filesistem risulta danneggiato, il successivo tentativo di correzione del problema permette il montaggio del volume ma i dati ivi contenuti non sono utilizzabili: md5 errato e immagine non leggegibile.

- concludo IMHO
LVM è estremamente utile dato che permette di aggregare più volumi fisici differenti, siano essi partizioni o dischi. permette anche di estendere il volume group con nuovi dispositivi all'occorrenza
LVM presenta oltremodo delle insidie che per applicazioni critiche possono essere rilevanti ... non può la rottura di un disco compromettere tutto LVM, magari ci sono metodi di recupero ma non ho avuto tempo di cercare approfonditamente.
Personalmente abbandono l'idea dell'LVM e monto i singoli dischi singolarmente.

Spero che questo mio test, seppur incompleto e semplificato, sia utile a qualcuno in dubbbio sull'utilizzo o meno di questa tecnologia.

Psycotic
23-11-2007, 10:49
Non ho capito a cosa servono i tuoi test..
Innanzitutto se devi reinstallare il sistema non devi ricreare LVM ricordandoti come era stato creato, ma devi utilizzare vgscan...
LVM non va a sostituire un sistema RAID.. LVM crea dei PE (phisical extend) sui dischi, se hai un disco rotto e cquindi perdi i tuoi PE su quel disco, e normale che puoi anche perdere tutto.... dipende da cosa ci e' andato a finire sopra...

LVM serve per aver flessibilita', se hai dei sistemi che spesso devono cambiare le dimensioni dei filesystem, allora LVM serve a non farti impiccare... Seno' non utilizzeresti LVM ma ti faresti un RAID in stripe...

Io consiglio di usare LVM solo su dei sistemi in RAID(mirror, 5, o simili) o dove ci si puo' permettere di perdere dati, perche' un disco prima o poi si rompe sempre...

jventure
23-11-2007, 12:41
io lo devo usare su un sitema con cinque dischi di dimensioni varie non collegabili in raid.
ho deciso di non usare lvm perchè nel caso si rompesse un disco .... beh perderei 1TB di dati. preferisco montarli separatamente e rompermi un po' di più quando devo gestire i file grandi, alemeno così se si rompe un disco mal che vada perdo solo tot GB di dati e non tutti ...

purtroppo mancano le pecunie per fare un buon sistema con dischi in raid :cry: :cry:


Innanzitutto se devi reinstallare il sistema non devi ricreare LVM ricordandoti come era stato creato, ma devi utilizzare vgscan...

Ad esempio questo non lo sapevo ... :doh:

Psycotic
23-11-2007, 13:34
Beh dipende cosa vorresti fare... Se vuoi specare spazio perche' ritieni che e' piu' importante nn perdere dati, allora il RAID lo puoi fare con mdadm, e' un raid software... E se vuoi sperimentare.. puoi anche fare delle partizioni in RAID(per non aver il problema delle dimensioni diverse) e poi mettergli sopra LVM... So che non e' semplicissimo farlo la prima volta... Ma non e' affatto difficile e soprattutto e' un'attivita' didattica molto valida...

Se il numero dei dischi nn varia sul tuo server potresti anche usare solo il RAID5, Ovviamente lo spreco di spazio c'e' lo stesso pero' in caso ti si rompe un HD nn perdi nessun dato...

Se nn sai di preciso che bestia puoi creare puoi cmq utilizzare dei file in loopback x fare i tuoi sperimenti

jventure
23-11-2007, 15:28
non è un problema di difficoltà è solo un problema di tempo ...

per il momento li tengo separati ... un domani chissà

:sofico: xander@2010
magari 1PB in raid 0+1 con dischi allo stato solido in interfaccia sata4