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, lvs
non 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 ( lvconvert
visualizza un messaggio di errore che dice non ancora supportato). lvextend
funziona 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 --repair
il 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 --assemble
risolverebbe questo; né vgchange
, né lvchange
sembra avere questa opzione (lvchange accetta --force
, ma non sembra fare nulla). Anche cercando dmsetup
di 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 ...
Utilizzare un'immagine CD completa per l'installazione, non un'immagine netinst.
Procedere normalmente, accedere al partizionamento del disco, impostare i volumi fisici LVM. È possibile mettere /boot
in LVM-RAID (su Jessie, e Wheezy con un po 'di lavoro dettagliato di seguito).
Crea i tuoi gruppi di volumi. Lascialo nel menu LVM.
Primo divertimento: il programma di installazione non ha il dm-raid.ko
modulo 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
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
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
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 rimage
o rmeta
nel loro nome (vedi il primo paragrafo sopra per una spiegazione di cosa siano).
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.
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
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 /proc
e /sys
sono stato montato, e fatto un update-grub
. Quella volta, ha completato. Ho quindi dpkg-reconfigure grub-pc
scelto di selezionare install grub su tutti gli MBR dei dischi virtuali.
Su Wheezy, dopo aver fatto quanto sopra, selezionare 'continua senza un bootloader'.
Termina l'installazione. Si avvia. Probabilmente.
Conoscenza della comunità
Ci sono un discreto numero di persone che ne sono a conoscenza mdadm
e 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
Ho il sospetto che tu possa usare Device Mapper per incollare metadati e dati in un modo tale da mdadm --assemble
renderlo possibile. Certo, potresti semplicemente eseguire mdadm
volumi logici bene ... e sarebbe più sano.
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.