Newsgroup: it.comp.os.linux.sys
Titolo: Dubbio LVM

Mi é sorto un dubbio: mettiamo che ho un volume LVM spalmato su N dischi 
fisici (senza raid).
Posso aggiungere un disco ed estendere il volume? (credo di si)
Posso sostituire un disco con uno piú capiente?
Se si rompe un disco sono foxxuto?
-- 
g4b0, linux user n. 369000
http://brosulo.net

 Se si rompe un disco sono foxxuto?
sì
-- 
Paranoia is a disease unto itself. And may I add: the person standing
next to you may not be who they appear to be, so take precaution.
-----------------------------------------------------------------------------
http://bofhskull.wordpress.com/

 sě
Almeno per quello che c'era sopra *quel* disco.

 Almeno per quello che c'era sopra *quel* disco.
Si, ma come lo sistemi un filesystem che aveva *parte* dei dati li sopra?
Esiste qualche modo per capire che un disco *sta per rompersi*?
Vorrei tirar su uno storage [iper]economico, e bruciare spazio disco per 
il raid lo eviterei. Anche perché non si tratta di roba importante, 
anche se mi scazzerebbe perderla...



E come procedo? Il filesystem non patisce?


anche se mi scazzerebbe perderla...
Quantifica "scazzerebbe", in euro.
Quanto sei disposto a pagare perche' non succeda?
Una volta che succede, quanto saresti disposto a pagare per recuperare
i dati? (*)
Leonardo
(*) in teoria le due domande hanno identica risposta; in pratica mi e'
    capitato raramente che "r1 << r2" fosse falsa.
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

 E come procedo? Il filesystem non patisce?
ipotizzando tu abbia 3 dischi da 1 TB, vuoi sostituirne uno (diciamo
/dev/sdb) e mettere al suo posto uno da 2 TB. Sui dischi attuali hai un
unico volume-group (che chiamiamo VG00) su cui vi è uno o più logical
volume (il cui nome non ci interessa).
1) Aggiungi il disco da 2 TB come quarto disco (diciamo /dev/sdd)
2) pvcreate /dev/sdd
3) vgextend VG00 /dev/sdd
4) vgreduce VG00 /dev/sdb
Quando dai l'ultimo comando LVM inizierà a spostare i PE allocati su
/dev/sdb altrove (ovvero su /dev/sdd, se è l'unico con spazio non
allocato), in modo da liberare il phisical volume.
Quando l'operazione termina (e ovviamente può impiegare parecchio) il
device relativo è rimuovibile; al limite un giro di pvremove non gli sta
male...


 anche se mi scazzerebbe perderla...
Se ti scazza perderla, allora un LVM senza raid non fa al caso tuo...
(a meno che non ti stia bene recuperare tutto da backup...)


      capitato raramente che "r1<<  r2" fosse falsa.
Ora ti é capitato un po' meno raramente :)


 (a meno che non ti stia bene recuperare tutto da backup...)
Il problema del RAID é che i dischi devono essere necessariamente uguali 
come dimensione (o no?), quindi aggiungerne/sostituirne uno piú capiente 
non sará possibile..(o no?)



Ok, capito. É piú semplice di quanto io credessi... Nel caso invece 
avessi un raid la cosa non é fattibile, vero?


 non sará possibile..(o no?)
Dipende da che raid fai e da come lo fai.
Se usi il sw raid di linux, esegui il RAID a livello di partizione,
quindi nulla ti vieta di avere cose tipo due dischi da 1 TB in mirror
con un disco da 2 TB, semplicemente dividendo quest'ultimo in due
partizioni da 1TB l'una.
Ma concordo che può diventare una rottura di maroni...
Ed è la ragione per la quale esistono i LV con mirror copy (una o più):
lvcreate -L 100G -m 1 -n testmirror VG00


 lvcreate -L 100G -m 1 -n testmirror VG00
Questo č interessante... Ora me li studio!


     capitato raramente che "r1 << r2" fosse falsa.
Beh con quello che costa raddoppiare i dischi per avere un mirror manco
ti fanno il preventivo per il recupero dei dati :)
c1 << c2
/pignolo mode on
(*) Anche se la probabilità di guasto nel tempo t può essere diminuita
ma rimane sempre > 0
/pignolo mode off



come ti è stato detto il raid lo fai a livello di partizioni e 
l'alternativa a mdadm è la seguente:
mkfs.btrfs -m raid1 -d raid1 /dev/sdxx /dev/sdyy
e hai fatto raid1 ed filesystem in un solo passo, evitando di passare per 
mdadm + pvcreate + vgcreate + lvcreate + mkfs.ext4
1 comando al posto di 5
-- 
Wikipedia Admin: "wikipedia non è un blog"
Iosif Stalin: "i compagni hanno scambiato il partito per un circolo di 
discussione"
-- 
Wikipedia Admin: "wikipedia non è un blog"
Iosif Stalin: "i compagni hanno scambiato il partito per un circolo di 
discussione"

 avessi un raid la cosa non é fattibile, vero?
Se parli di LVM, e` indifferente, in quanto il RAID lavora ad un livello 
inferiore. Se parli del RAID stesso, dipende dal livello utilizzato (e.g. in 
RAID0 non puoi sostituire alcun disco, in RAID1 puoi sostituire un disco con 
uno piu` capiente, in RAID5 puoi aggiungere o sostituire un disco con uno 
piu' capiente)
Enrico

 mkfs.btrfs -m raid1 -d raid1 /dev/sdxx /dev/sdyy
C'e` da dire che btrfs ha ancora bisogno di parecchi affinamenti. Per fare 
un esempio, visto che ero interessato a creare un pool in RAID1 
degradato[1], ho dato il comando di cui sopra evitando accuratamente di 
indicare il secondo disco. All'aggiunta del secondo disco al pool, ed 
eseguendo il bilanciamento (come da documentazione), mi sono ritrovato con 
un pool i cui metadati sono in RAID1 (come mi aspettavo), ma i dati sono i 
RAID0, che non era cio` che mi aspettavo. Tutto questo senza contare che la 
documentazione e` alquanto imprecisa o lacunosa
Enrico
[1] ho due dischi contenenti dei dati, di conseguenza qualsiasi modifica al 
file system devo ponderarla tenendo presente questo dettaglio

 contare che la documentazione e` alquanto imprecisa o lacunosa
 
Hai ragione. 
Una cosa del genere è successa pure a me e credo che non mi abbia 
costruito per nulla il RAID (ma non ho investigato molto e, visti i 
risultato, mi sono limitato a sbragare tutto e a ricominciare da capo). 
Dopo, però, ho letto un barbatrucco abbastanza semplice, che consiste nel 
creare un RAID1 usando un device "fake". In sostanza usi un loop device 
che rimuoverai successivamente dal RAID.
Se non hai spazio a sufficienza per creare questo loop device, potresti 
creare, per esempio, la partizione più piccola di come dovrebbe, per poi 
espanderla successivamente. Tieni però presente che BTRFS non gestisce il 
layer sottostante (ergo la partizione) e quindi ti devo tirare fuori un 
altro barbatrucco, sempre semplice, ma alquanto "strano" e vorrei sapere 
voi cosa ne pensate:
lanci "fdisk", cancelli la partizione con i dati. NON SALVI! Crei subito 
la partizione più grande. ADESSO SALVI e premi "w".
A questo punto allargherai il filesystem con i comandi di btrfs.
Io, avendo fatto queste cose solo con LVM, non ho mai provato una cosa del 
genere e quando mi è capitato di doverlo fare mi sono sempre affidato a 
gparted.


 allargherai il filesystem con i comandi di btrfs. 
Preciso che questa cosa non me la sono inventata io. L'ho letta da qualche 
parte e la persona che ha scritto questa procedura, ne certifica il buon 
funzionamento. 



Si, però nel caso di RAID5 il disco più capiente viene usato solo fino 
alla capienza degli altri, o sbaglio?


 alla capienza degli altri, o sbaglio?
Preferisco passarti il link in quanto non mi viene in mente un modo semplice 
per spiegarlo: 
http://en.wikipedia.org/wiki/RAID_5#RAID_5_usable_size
Enrico



mi pare che dite la stessa cosa:
If the drives vary in capacity, the smallest of them sets the limit. 


 If the drives vary in capacity, the smallest of them sets the limit.
Personalmente 'sta frase non l'ho capita, ed e` per questo che ho preferito 
passare direttamente la spiegazione piuttosto che rielabolarla. Per fare un 
esempio, supponiamo di avere tre dischi identici:
 - Disco A: 300Gb
 - Disco B: 300Gb
 - Disco C: 300Gb
In questo caso la dimensione dell'array sara` ovviamente 600Gb (N - 1). Ma 
nel caso in cui la dimensione dei dischi sia la seguente:
 - Disco A: 300Gb
 - Disco B: 300Gb
 - Disco C: 200Gb
La dimensione dell'array sara` 400Gb oppure un'altra?
Enrico
P.S. penso di averlo capito mentre lo scrivevo, ma preferirei avere un 
riscontro da qualcun altro :)


Da quel che ho capito sará 400Gb, quindi per rigirare la questione alla 
mia domanda originale non avrebbe senso aggiungere un disco piú capiente.
Ma.... e se io ho 3 dischi da 300Gb, poi ne sostituisco uno ad uno con 
dischi da 500Gb, alla fine avró un Raid da 1Tb, oppure resterá da 500Gb?


dischi da 500Gb, alla fine avró un Raid da 1Tb, oppure resterá da 500Gb?
Avrai un RAID da 500Gb su un volume virtuale da 1TB. Quasi tutti i sistemi
RAID permettono di espandere il RAID stesso. Questo non espande ancora una
partizione su quei 500GB; devi espanderla a parte. E poi devi espandere il
file system sulla partizione (non tutti i filesystem consentono un resize,
o lo consentono facilmente, il c.d. "hot resize").
Su molti sistemi si puo' fare questo:
	300-300-300		RAID=600, PART=600, FS=600 (okay, 599?)
aggiungo disco
	500-300-300		RAID=600 (degradato), PART=600, FS=600
attendo resync (20 Gb al minuto: 15 minuti)
	500-300-300		RAID=600 (ready), PART=600, FS=600
aggiungo disco
	500-500-300		RAID=600 (degradato), PART=600, FS=600
attendo resync (20 Gb al minuto: 15 minuti)
	500-500-300		RAID=600 (ready), PART=600, FS=600
aggiungo disco
	500-500-500		RAID=600 (degradato), PART=600, FS=600
attendo resync	(20 Gb al minuto: 15 minuti)
	500-500-500		RAID=600 (ready), PART=600, FS=600
espando RAID			RAID=1000 (ready), PART=600, FS=600
allargo la partizione		RAID=1000 (ready), PART=1000, FS=600
allargo il filesystem		RAID=1000 (ready), PART=1000, FS=1000
Questo crea una finestra di 45 minuti in cui un disco che crasha ammazza
tutto un RAID 5 (o comunque richiede un down con ripristino, e possibile
perdita di dati; a meno di aver messo read only il filesystem, pero', in
quel caso, si deve schedulare un 45 minuti sani di interruzione servizio
sicura, prima).
Alcuni controller, mi sembra il 3Ware ma potrei dire una fesseria, hanno
un "security mode" (o lo si può settare) in cui un disco si puo' mettere
in "pre-failure mode" mentre un quarto disco è in "hot standby". Ovvero,
il RAID continua a usare il disco 1, ma contemporaneamente lo copia pari
pari sul disco 4. Quando è pronto, si mette il disco 1 fuori linea, e il
RAID continua intatto e integro sui dischi 2-3-4 (ma il 4 adesso è 500).
Si mette un disco da 500 nello slot 1, si ripete il giochetto con 1-2, e
si sostituisce il 2. Alla fine il RAID si stabilizza a 1 TB su 1-2-4 con
uno slot vuoto (chi non gli piace può usare un quarto disco da 500 nello
slot 3, oppure mettere temporaneamente e rischiosamente fuori linea il 4
e spostarlo ratto ratto nello slot 3. Non vale la pena).
Leonardo alla rinfusa


 un "security mode"
A proposito di controller, ma al giorno d'oggi conviene ancora affidarsi al 
RAID hardware invece che a quello software?
Enrico




Direi proprio di sì. L'unico "svantaggio" __era__ che parecchi RAID non
avevano driver decenti per Linux e quindi non potevi chiedergli cose, o
dare ordini, salvo che riavviando (il che per un server...) e andando a
ravanare nella schermatina iniziale del BIOS.
Ricordo una scheda RAID per server di fascia alta che aveva una console
seriale (forse HP? Boh? C'erano ancora i tirannosauri, mi sa).
Ma oggi la scheda fa tutto lei, ammodino in hardware, e la vedi come un
singolo dispositivo SCSI. Troppo piu' comodo, IMHO.
Certo, se ci vuoi sperimentare duro, allora no. Ma se il workflow e'
	* capire che RAID ti serve, come e quando e quanto
	* vedere che scheda meglio supporta 'sta cosa
	* installare e configurare la scheda
	* installare driver e sistemi di monitoraggio
	* dimenticarsi di avere un RAID, salvo sostituire/ingrandire
	  i dispositivi di tanto in tanto
...io sono per la scheda HW. Per altro, sono notoriamente pigro :-)
Leonardo


 ravanare nella schermatina iniziale del BIOS.
Un altro svantaggio delle schede hardware e` che se ti si rompe la scheda 
(evento remoto, lo so, ma possibile) devi trovarne una compatibile col 
formato del RAID che hai sui dischi, altrimenti butti via tutto.
Sono d'accordo che i RAID HW sono comodi, veloci e sicuri, ma io andrei 
perlomeno su marche solide e su produttori che non cambino formati da una 
scheda all'altra.
Bye.

scheda all'altra.
(Inoltre, if the worst comes to the worst, i formati piu' "high" sono
anche quelli conosciuti e supportati da ditte di recupero di dati dal
ferro freddo).
Leonardo che si tocca, a scanso di guai
