RAIDing con LVM vs MDRAID - pro e contro?


51

Nella sua risposta alla domanda "tipi di raid misti" , HBruijn suggerisce di usare LVM per implementare RAID rispetto al più standard MDRAID.

Dopo un po 'di indagine, sembra che LVM supporti anche la funzionalità RAID. In passato, ho utilizzato LVM su MDRAID e fino ad ora non sapevo che LVM supporta anche la funzionalità RAID. Questo sembra essere uno sviluppo relativamente recente, ma non ho scoperto esattamente quando è stato implementato.

Quindi, questi sono modi alternativi per implementare il software RAID su Linux. Quali sono i pro e i contro di questi due diversi approcci? Sto cercando comparazioni di funzionalità tra i due approcci in modo che le persone possano decidere quale è meglio per loro. Le conclusioni basate sulla sperimentazione (come in, questa funzione non funziona così come questa funzione ed ecco perché) sono anche OK, a condizione che includa i tuoi dati nella risposta.

Alcuni problemi specifici da affrontare:

  1. Supponiamo di voler fare sw RAID + LVM (uno scenario comune). Dovrei usare il supporto di LVM per sw RAID e quindi utilizzare un'utilità anziché due? Questo approccio più integrato presenta dei vantaggi?
  2. Il supporto LVM per sw RAID presenta carenze significative rispetto a MDADM più maturo? In particolare, quanto è stabile / privo di bug il supporto LVM per sw RAID? Sembra che questo supporto risalga solo al 2011 (vedi sotto), mentre MDADM è molto più vecchio. Inoltre, come si confronta in termini di set di funzionalità? Presenta significative carenze di funzionalità rispetto a MDADM? Al contrario, ha il supporto per eventuali funzionalità sw RAID che MDADM non ha?

APPUNTI:

  1. C'è una discussione dettagliata su http://www.olearycomputers.com/ll/linux_mirrors.html ma non sono riuscito a scoprire in quale data è stata scritta.

    Domanda simile su Serverfault: Linux LVM mirror vs. MD mirror . Tuttavia, questa domanda è stata posta nel 2010 e le risposte potrebbero non essere aggiornate.

  2. La voce del log delle modifiche per la versione 2.02.87 - 12 agosto 2011 ha

    Aggiungi configure --with-raid per il nuovo 'raid' di segtype per MD MD 1/4/5/6 supporto

    Quindi, sembra che il supporto RAID in LVM abbia circa 3 anni.


Un vantaggio a cui riesco a pensare è l'utilizzo delle funzioni correlate ad HA disponibili per LVM.
Bratchley,

1
@JoelDavis Puoi elaborare? Non so cosa significhino le funzioni correlate all'HA.
Faheem Mitha,

Inoltre, c'è il solito vantaggio di lavorare con volumi logici anziché con mdvolumi. Quindi hai lvextende pvmovedisponibile per spostarti tra i dispositivi mentre con mdil processo è molto più manuale senza chiari vantaggi.
Bratchley,

@JoelDavis forse scrivi una risposta?
Faheem Mitha,

2
LVM ha sempre supportato raid1 e raid0. È stato più di recente che hanno abbandonato la propria implementazione e invece utilizzano internamente il codice di personalità raid di md, aprendo gli altri livelli di raid.
psusi,

Risposte:


55

Quanto è maturo e ricco di funzionalità LVM RAID?

LVM-RAID è in realtà mdraid sotto le coperte. Funziona fondamentalmente creando due volumi logici per dispositivo RAID (uno per i dati, chiamato "rimage"; uno per i metadati, chiamato "rmeta"). Quindi passa quelli ai driver mdraid esistenti. Quindi cose come la gestione degli errori di lettura del disco, il bilanciamento del carico I / O, ecc. Dovrebbero essere abbastanza maturi.

Questa è la buona notizia.

Utensili

Non puoi usarlo mdadm(almeno, non in alcun modo facile¹) e gli strumenti LVM RAID non sono affatto maturi. Ad esempio, in Debian Wheezy, lvsnon puoi dirti lo stato della sincronizzazione RAID5. Dubito fortemente che la riparazione e il ripristino (soprattutto da situazioni "che non dovrebbero mai accadere!") Siano pressoché uguali a quelle di mdadm (e per caso mi sono imbattuto in uno di quelli nei miei test, e alla fine ho rinunciato a recuperarlo, il ripristino con mdadm sarebbe stato facile).

Soprattutto se non stai utilizzando le versioni più recenti di tutti gli strumenti, peggiora.

Funzionalità mancanti

Le versioni attuali di LVM-RAID non supportano la riduzione ( lvreduce) di un volume logico RAID. Né supportano la modifica del numero di dischi o del livello RAID ( lvconvertvisualizza un messaggio di errore che dice non ancora supportato). lvextendfunziona e può persino aumentare i livelli RAID che solo recentemente hanno ottenuto il supporto, come RAID10. Nella mia esperienza, l'estensione dei LV è molto più comune della loro riduzione, quindi in realtà è ragionevole.

Alcune altre funzioni mdraid non sono presenti, e in particolare non è possibile personalizzare tutte le opzioni che è possibile utilizzare con mdadm.

Nelle versioni precedenti (come ad esempio Debian Wheezy), LVM RAID non supporta neanche la crescita. Ad esempio, su Wheezy:

root@LVM-RAID:~# lvextend -L+1g vg0/root
Extending logical volume root to 11.00 GiB
Internal error: _alloc_init called for non-virtual segment with no disk space.

In generale, non si desidera eseguire le versioni di Wheezy.

Quanto sopra è una volta installato. Neanche questo è un processo banale.

Problemi dello strumento

Giocando con la mia Jessie VM, ho disconnesso (praticamente) un disco. Funzionò, la macchina rimase in funzione. lvs, tuttavia, non ha fornito alcuna indicazione che gli array fossero degradati. Ho ricollegato il disco e rimosso un secondo. Siamo stati in esecuzione (questo è raid6). Ricollegato, ancora nessuna indicazione da lvs. Ho eseguito lvconvert --repairil volume, mi ha detto che andava bene. Quindi ho estratto un terzo disco ... e la macchina è morta. Reinserito, riavviato e ora non sono sicuro su come risolvere. mdadm --force --assemblerisolverebbe questo; né vgchange, né lvchangesembra avere questa opzione (lvchange accetta --force, ma non sembra fare nulla). Anche cercando dmsetupdi alimentare direttamente la tabella di mapping nel kernel, non sono riuscito a capire come recuperarlo.

Inoltre, mdadmè uno strumento dedicato solo per la gestione del RAID. LVM fa molto di più, ma sembra (e lo ammetto che è piuttosto soggettivo) come se la funzionalità RAID fosse stata inserita in qualche modo; non si adatta perfettamente.

Come si installa effettivamente un sistema con LVM RAID?

Ecco una breve descrizione di come installarlo su Debian Jessie o Wheezy. Jessie è molto più semplice; nota se hai intenzione di provare questo su Wheezy, leggi prima tutto ...

  1. Utilizzare un'immagine CD completa per l'installazione, non un'immagine netinst.

  2. Procedere normalmente, accedere al partizionamento del disco, impostare i volumi fisici LVM. È possibile mettere /bootin LVM-RAID (su Jessie, e Wheezy con un po 'di lavoro dettagliato di seguito).

  3. Crea i tuoi gruppi di volumi. Lascialo nel menu LVM.

  4. Primo divertimento: il programma di installazione non ha il dm-raid.komodulo caricato, o nemmeno disponibile! Quindi puoi prenderlo dal pacchetto immagine linux che verrà installato. Passa a una console (ad esempio, Alt- F2) e:

    cd /tmp
    dpkg-deb --fsys-tarfile /cdrom/pool/main/l/linux/linux-image-*.deb | tar x
    depmod -a -b /tmp
    modprobe -d /tmp dm-raid
    
  5. Il programma di installazione non sa come creare LV LV-RAID, quindi è necessario utilizzare la riga di comando per farlo. Nota non ho fatto alcun benchmarking; la dimensione della striscia ( -I) di seguito è interamente una supposizione per la mia configurazione della VM:

    lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
    
  6. Su Jessie, puoi usare RAID10 per lo scambio. Su Wheezy, RAID10 non è supportato. Quindi invece puoi usare due partizioni di swap, ciascuna RAID1. Ma devi dirlo esattamente su quali volumi fisici metterli o posiziona entrambe le metà del mirror sullo stesso disco . Sì. Sul serio. Comunque, sembra che:

    lvcreate --type raid1 -m1 -L 1G -n swap0 vg0 /dev/vda1 /dev/vdb1
    lvcreate --type raid1 -m1 -L 1G -n swap1 vg0 /dev/vdc1 /dev/vdd1
    
  7. Infine, torna al programma di installazione e premi "Fine" nel menu LVM. Ora ti verrà presentato un sacco di volumi logici che mostrano. Quello è l'installatore che non capisce cosa sta succedendo; ignora tutto con rimageo rmetanel loro nome (vedi il primo paragrafo sopra per una spiegazione di cosa siano).

  8. Vai avanti e crea filesystem, scambia partizioni, ecc. Come di consueto. Installare il sistema di base, ecc., Fino a quando non viene visualizzato il prompt di grub.

  9. Su Jessie, grub2 funzionerà se installato sull'MBR (o probabilmente con EFI, ma non l'ho testato). Su Wheezy, l'installazione non riuscirà e l'unica soluzione è eseguire il backport di grub2 di Jessie. In realtà è abbastanza facile, si compila in modo pulito su Wheezy. In qualche modo, prendi i tuoi pacchetti grub backported /target(o fallo in un secondo, dopo il chroot) quindi:

    chroot /target /bin/bash
    mount /sys
    dpkg -i grub-pc_*.deb grub-pc-bin_*.deb grub-common_*.deb grub2-common_*.deb 
    grub-install /dev/vda … grub-install /dev/vdd # for each disk
    echo 'dm_raid' >> /etc/initramfs-tools/modules
    update-initramfs -kall -u
    update-grub # should work, technically not quite tested²
    umount /sys
    exit
    
  10. In realtà, sulla mia ultima installazione di grub di Jessie VM si è bloccato. Passare a F2 e farlo while kill $(pidof vgs); do sleep 0.25; done, seguito dallo stesso per lvs, è arrivato attraverso grub-install. Sembrava generare una configurazione valida nonostante ciò, ma nel caso in cui ho fatto un chroot /target /bin/bash, assicurato /proce /syssono stato montato, e fatto un update-grub. Quella volta, ha completato. Ho quindi dpkg-reconfigure grub-pcscelto di selezionare install grub su tutti gli MBR dei dischi virtuali.

  11. Su Wheezy, dopo aver fatto quanto sopra, selezionare 'continua senza un bootloader'.

  12. Termina l'installazione. Si avvia. Probabilmente.

Conoscenza della comunità

Ci sono un discreto numero di persone che ne sono a conoscenza mdadme hanno molta esperienza di implementazione con esso. È probabile che Google risponda alla maggior parte delle domande a riguardo. In genere puoi aspettarti una domanda al riguardo qui per ottenere risposte, probabilmente entro un giorno.

Lo stesso non si può dire per LVM RAID. È difficile trovare guide. La maggior parte delle ricerche su Google che ho eseguito invece mi trovano cose sull'uso di mdadm array come PV. Ad essere onesti, questo è probabilmente in gran parte perché è più recente e meno comunemente usato. In qualche modo, sembra ingiusto trattenerlo, ma se qualcosa va storto, la comunità esistente molto più grande intorno a mdadm rende più probabile il recupero dei miei dati.

Conclusione

LVM-RAID sta avanzando abbastanza rapidamente. Su Wheezy, non è realmente utilizzabile (almeno, senza fare backport di LVM e del kernel). In precedenza, nel 2014, sui test Debian, sembrava un'idea interessante, ma incompiuta. I test attuali, fondamentalmente quello che diventerà Jessie, sembrano qualcosa che potresti effettivamente utilizzare, se hai spesso bisogno di creare piccole porzioni con diverse configurazioni RAID (qualcosa che è un incubo amministrativo con mdadm).

Se le tue esigenze sono adeguatamente soddisfatte da alcuni array RAID mdadm di grandi dimensioni, suddivisi in partizioni usando LVM, suggerirei di continuare a usarlo. Se invece dovessi creare molti array (o persino array di volumi logici), considera invece il passaggio a LVM-RAID. Ma mantieni buoni backup.

Molti degli usi di LVM RAID (e persino di mdadm RAID) sono stati rilevati da cose come sistemi di archiviazione cluster / oggetti, ZFS e btrfs. Consiglio anche di indagare su quelli, potrebbero meglio soddisfare le tue esigenze.


Grazie

Vorrei ringraziare psusi per avermi fatto rivisitare lo stato di LVM-RAID e aggiornare questo post.

Le note

  1. Ho il sospetto che tu possa usare Device Mapper per incollare metadati e dati in un modo tale da mdadm --assemblerenderlo possibile. Certo, potresti semplicemente eseguire mdadmvolumi logici bene ... e sarebbe più sano.

  2. Quando ho eseguito l'installazione di Wheezy, non sono riuscito a farlo per la prima volta e non ho avuto nessuna configurazione di grub. Ho dovuto avviare il sistema inserendo tutte le informazioni al prompt di grub. Una volta avviato, ha funzionato, quindi penso che funzionerà bene dall'installer. Se ti ritrovi al prompt di grub, ecco le linee magiche da digitare:

    linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-root
    initrd /boot/initrd.image-3.2.0-4-amd64
    boot
    

PS: È passato un po 'di tempo da quando ho effettivamente fatto gli esperimenti originali. Ho reso disponibili le mie note originali . Nota che ora ne ho fatti di più recenti, trattati in questa risposta e non in quelle note.


2
In effetti, stai ottenendo quell'errore dovuto alla versione di lvm in wheezy che è estremamente vecchia e buggy; funziona bene per me qui su Ubuntu 14.04 con la versione 2.02.98 di lvm (credo che jessie sia almeno quella nuova). In secondo luogo, il comando che hai mostrato non riuscito è un ridimensionamento: rimodellare è qualcosa di completamente diverso. Rimodellare significa passare da raid1 a raid5 o da raid a 3 dischi5 a raid a 4 dischi5. Non è ancora supportato, ma il semplice cambiamento delle dimensioni funziona correttamente.
psusi,

@psusi Ah, ho pensato che considerassero anche il ridimensionamento come un rimodellamento (dal momento che cambia la geometria RAID, dato in nessun posto vicino al cambiamento del numero di dischi). Ho pensato che prima di avere un errore provandolo anche su Jessie, lo proverò di nuovo. (Devo costruire una nuova macchina virtuale Jessie LVM-RAID, quindi ci vorrà un po '.) Grazie.
derobert,

dpkg-debfornisce un modo più pulito per estrarre i file dai pacchetti deb, senza bisogno di saltare in più fasi.
muru,

@muru è dpkg-debdisponibile nell'ambiente di installazione? Non era solito ... Assicurati di controllare anche Wheezy.
derobert,

@derobert ar -xdovrebbe funzionare anche per decomprimere gli archivi deb, anche se è più goffo. Inoltre, che ne dici di aggiornare la tua risposta con lo stato attuale?
Faheem Mitha,

7

Non sapevo che LVM potesse fare anche RAID. Personalmente, rimarrei con mdadm poiché è un software molto più maturo che fa la stessa cosa. Se qualcosa si rompe con LVM RAID, probabilmente non sarai in grado di ottenere tanto supporto rispetto a quanto avessi fatto con mdadm. Inoltre, non mi fiderei di LVM RAID poiché LVM ha storicamente dimostrato di non essere il software più affidabile.

ZFS e BTRFS sono il futuro. I vantaggi che danno vanno oltre ciò che è possibile a livello di blocco. A meno che non miri alla compatibilità, non userò più LVM / mdadm. ZFS e BTRFS hanno molte caratteristiche come la compressione, la deduplicazione e il copy-on-write, ma non approfondirò qui, dato che sarebbe un po 'fuori portata.

Alla fine, fai la tua ricerca e usa tutto ciò che soddisfa i tuoi bisogni / desideri.


Grazie per la risposta. Valuta di espanderlo un po 'sul perché non ti fidi di LVM.
Faheem Mitha,

2
"ZFS e BTRFS sono il futuro" Non necessariamente. Per quanto ne so, ZFS su Linux è ancora basato su FUSE, quindi viene utilizzato principalmente per ottenere funzionalità ZFS senza usare Solaris o FreeBSD. BTRFS è fantastico ma non è necessariamente il futuro. Ad esempio, Red Hat sembra muoversi più nella direzione LVM+XFSpiuttosto che in BTRFS. Supportano BTRFS ma è più una questione Oracle / SuSE.
Bratchley,

Per non dire che non mi piace btrfs per qualche motivo (in realtà mi piace molto). È solo che non è la direzione in cui sta andando una grande distribuzione come Red Hat, e non riesco a pensare a nulla che BTRFS possa fare che LVM / XFS non riesca almeno ad approssimare abbastanza bene.
Bratchley,

Direi anche che BTRFS sarà bello, ma LVM può fare un sacco di cose che BTRFS non può (ancora) fare. Ad esempio, è possibile eseguire volumi ibridi e snapshot di thin provisioning che nessuno dei due (AFAIK) BTRFS può eseguire.
Bratchley,

9
"Per quanto ne so, ZFS su Linux è ancora basato su FUSE" questo non è corretto da oltre cinque anni. ZoL è un modulo kernel e pronto per la produzione. Lo uso ampiamente dall'inizio del 2010.
Jim Salter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.