Quelle est la maturité et les fonctionnalités de LVM RAID?
LVM-RAID est réellement caché sous les couvertures. Cela fonctionne essentiellement en créant deux volumes logiques par périphérique RAID (un pour les données, appelé "rimage"; un pour les métadonnées, appelé "rmeta"). Il les transmet ensuite aux pilotes mdraid existants. Ainsi, des éléments tels que la gestion des erreurs de lecture du disque, l’équilibrage de la charge des E / S, etc., devraient être assez matures.
C'est la bonne nouvelle.
Outils
Vous ne pouvez pas l'utiliser mdadm
(du moins, pas facilement¹) et les outils RAID de LVM sont loin d'être aussi avancés. Par exemple, dans Debian Wheezy, lvs
vous ne pouvez pas vous dire l’état de la synchronisation RAID5. Je doute fort que les réparations et la récupération (en particulier des situations "cela ne devrait jamais arriver!") Soient presque aussi bonnes que celles de mdadm (et j'ai accidentellement rencontré l'un de ceux-ci lors de mes tests, et j'ai finalement renoncé à le récupérer - récupération avec mdadm aurait été facile).
Surtout si vous n'utilisez pas les dernières versions de tous les outils, la situation empire.
Caractéristiques manquantes
Les versions actuelles de LVM-RAID ne prennent pas en charge la réduction ( lvreduce
) d'un volume logique RAID. Ils ne supportent pas non plus la modification du nombre de disques ou du niveau RAID ( lvconvert
donne un message d'erreur disant non encore supporté). lvextend
fonctionne, et peut même augmenter les niveaux de RAID que mdraid n’a que récemment pris en charge, comme RAID10. D'après mon expérience, l'extension du LV est beaucoup plus courante que la réduction, ce qui est donc raisonnable.
Certaines autres fonctionnalités de mdraid ne sont pas présentes, et vous ne pouvez surtout pas personnaliser toutes les options que vous pouvez utiliser avec mdadm.
Sur les versions plus anciennes (comme dans Debian Wheezy, par exemple), LVM RAID ne prend pas non plus en charge la croissance. Par exemple, sur 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.
En général, vous ne voulez pas exécuter les versions de Wheezy.
Ce qui précède est une fois que vous l'avez installé. Ce n'est pas un processus trivial non plus.
Problèmes d'outil
En jouant avec ma machine virtuelle Jessie, j'ai déconnecté (virtuellement) un disque. Cela a fonctionné, la machine est restée en marche. lvs
Cependant, rien n’indiquait que les tableaux étaient dégradés. J'ai re-attaché le disque et enlevé une seconde. Resté en cours d'exécution (c'est raid6). Re-attaché, toujours pas d'indication de lvs
. J'ai couru lvconvert --repair
sur le volume, il m'a dit que c'était OK. Puis j'ai tiré un troisième disque ... et la machine est morte. Réinsérez-le, redémarrez et je ne sais plus trop comment le réparer. mdadm --force --assemble
serait résoudre ce problème; ni vgchange
ni lvchange
semble avoir cette option (lv change accepte --force
, mais il ne semble rien faire). Même en essayant dmsetup
d’alimenter directement la table de mappage dans le noyau, je n’ai pas trouvé comment la récupérer.
En outre, mdadm
est un outil dédié juste pour gérer le RAID. LVM en fait beaucoup plus, mais il a l’impression (et j’admets que cela est assez subjectif) que la fonctionnalité RAID a été mise en place; ça ne va pas tout à fait.
Comment installez-vous réellement un système avec LVM RAID?
Voici un bref aperçu de son installation sur Debian Jessie ou Wheezy. Jessie est beaucoup plus facile; notez si vous allez essayer ceci sur Wheezy, lisez d'abord le tout…
Utilisez une image de CD complète pour installer, pas une image netinst.
Procédez normalement, allez au partitionnement du disque, configurez vos volumes physiques LVM. Vous pouvez mettre /boot
sur LVM-RAID (sur Jessie, et sur Wheezy avec quelques travaux détaillés ci-dessous).
Créez vos groupes de volumes. Laissez-le dans le menu LVM.
Tout d'abord, le programme d'installation n'a pas dm-raid.ko
chargé le module, ni même disponible! Vous devez donc le récupérer dans le paquet linux-image qui sera installé. Basculez vers une console (par exemple, Alt- F2) et:
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
Le programme d'installation ne sait pas comment créer des LV LVM-RAID, vous devez donc utiliser la ligne de commande pour le faire. Notez que je n'ai fait aucune analyse comparative; la taille de bande ( -I
) ci-dessous est entièrement une conjecture pour la configuration de ma machine virtuelle:
lvcreate --type raid5 -i 4 -I 256 -L 10G -n root vg0
Sur Jessie, vous pouvez utiliser RAID10 pour l’échange. Sur Wheezy, RAID10 n'est pas pris en charge. Vous pouvez donc utiliser deux partitions d'échange, chaque RAID1. Mais vous devez lui indiquer exactement les volumes physiques sur lesquels les mettre ou placer les deux moitiés du miroir sur le même disque . Oui. Sérieusement. Quoi qu'il en soit, cela ressemble à:
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
Enfin, revenez dans l’installateur et cliquez sur «Terminer» dans le menu LVM. Vous allez maintenant voir apparaître de nombreux volumes logiques. C'est l'installateur qui ne comprend pas ce qui se passe. ignore tout avec rimage
ou rmeta
en leur nom (voir le premier paragraphe de la manière ci-dessus pour une explication de ce que c'est).
Allez-y et créez des systèmes de fichiers, permutez des partitions, etc. comme d'habitude. Installez le système de base, etc., jusqu'à ce que vous obteniez l'invite grub.
Sur Jessie, grub2 fonctionnera s’il est installé sur le MBR (ou probablement avec EFI, mais je n’ai pas testé cela). Sur Wheezy, l’installation échouera et la seule solution consiste à effectuer un backport avec le fichier grub2 de Jessie. C'est en fait assez facile, il compile proprement sur Wheezy. D'une manière ou d'une autre, récupérez vos paquets grub /target
(ou faites-le en une seconde, après le chroot), puis:
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
En fait, ma dernière installation de Jessie VM a été suspendue. Basculer vers F2 et faire while kill $(pidof vgs); do sleep 0.25; done
, suivi de la même chose pour lvs
, s’est fait via grub-install. Il est apparu pour générer une configuration valide malgré cela, mais juste au cas où je l' ai fait un chroot /target /bin/bash
, assuré /proc
et /sys
ont été montés, et a fait un update-grub
. Cette fois, c'est terminé. Ensuite, j'ai dpkg-reconfigure grub-pc
choisi d'installer grub sur tous les MBR des disques virtuels.
Sur Wheezy, après avoir effectué ce qui précède, sélectionnez «Continuer sans chargeur de démarrage».
Terminez l'installation. Ça va démarrer. Probablement.
Connaissance de la communauté
Bon nombre de personnes sont au courant mdadm
et ont une grande expérience du déploiement. Google est susceptible de répondre à la plupart des questions que vous vous posez. Vous pouvez généralement vous attendre à ce qu'une question à ce sujet obtienne des réponses, probablement dans la journée.
On ne peut pas en dire autant de LVM RAID. Il est difficile de trouver des guides. Au lieu de cela, la plupart des recherches Google que j’ai effectuées me donnent des informations sur l’utilisation de tableaux mdadm en tant que PV. Pour être honnête, c'est probablement en grande partie parce que c'est plus récent et moins utilisé. Quelque peu, il est injuste de s'en tenir à cela - mais si quelque chose ne va pas, la communauté beaucoup plus grande qui existe autour de mdadm rend plus probable la récupération de mes données.
Conclusion
LVM-RAID avance assez rapidement. Sur Wheezy, ce n’est pas vraiment utilisable (du moins, sans faire des backports de LVM et du noyau). Auparavant, en 2014, sur les tests Debian, cela semblait une idée intéressante mais inachevée. Les tests en cours, essentiellement ce qui va devenir Jessie, donnent l’impression que vous pourriez en fait utiliser si vous devez fréquemment créer de petites tranches avec différentes configurations RAID (ce qui est un cauchemar administratif avec mdadm
).
Si vos besoins sont satisfaits par quelques matrices RAID de grande taille mdadm, découpées en partitions à l'aide de LVM, nous vous conseillons de continuer à l'utiliser. Si au lieu de cela, vous devez créer de nombreux tableaux (ou même des tableaux de volumes logiques), envisagez de passer à LVM-RAID. Mais gardez de bonnes sauvegardes.
Un grand nombre des utilisations de LVM RAID (et même de mdadm RAID) sont reprises par des éléments tels que les systèmes de stockage en cluster / objets, ZFS et btrfs. Je recommande également d’enquêter sur ceux-ci, ils pourraient mieux répondre à vos besoins.
Merci
Je voudrais remercier psusi de m'avoir invité à revenir sur l'état de LVM-RAID et à mettre à jour ce post.
Notes de bas de page
Je suppose que vous pouvez utiliser le mappeur de périphériques pour coller les métadonnées et les données de manière à ce qu’elles mdadm --assemble
les prennent. Bien sûr, vous pourriez très bien utiliser mdadm
des volumes logiques ... et ce serait plus sain.
Lors de l'installation de Wheezy, je n'ai pas réussi à le faire pour la première fois et je me suis retrouvé sans configuration grub. J'ai dû démarrer le système en entrant toutes les informations à l'invite de grub. Une fois démarré, cela a fonctionné, donc je pense que cela fonctionnera très bien avec l’installateur. Si vous vous retrouvez à l'invite grub, voici les lignes magiques à taper:
linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-root
initrd /boot/initrd.image-3.2.0-4-amd64
boot
PS: Cela fait longtemps que je n’ai pas fait les expériences originales. J'ai mis mes notes originales à disposition. Notez que j'ai maintenant fait les plus récentes, couvertes dans cette réponse, et pas dans ces notes.