RAIDing avec LVM vs MDRAID - avantages et inconvénients?

51

Dans sa réponse à la question "types de raids mixtes" , HBruijn suggère d'utiliser LVM pour implémenter le RAID par rapport au MDRAID plus standard.

Après quelques recherches, LVM semble également prendre en charge la fonctionnalité RAID. Dans le passé, j’utilisais LVM en plus de MDRAID et je n’étais pas au courant jusqu’à présent que LVM prend également en charge la fonctionnalité RAID. Cela semble être un développement relativement récent, mais je n’ai pas su exactement quand cela a été mis en œuvre.

Donc, ce sont des moyens alternatifs d’implémenter un logiciel RAID sur Linux. Quels sont les avantages et les inconvénients de ces deux approches différentes? Je cherche des comparaisons des fonctionnalités entre les deux approches afin que les gens puissent choisir celle qui leur convient le mieux. Les conclusions basées sur l'expérimentation (cette fonctionnalité ne fonctionne pas aussi bien que cette fonctionnalité et voici pourquoi) sont également acceptables, à condition que vous incluiez vos données dans la réponse.

Quelques problèmes spécifiques à résoudre:

  1. Supposons que je veuille faire sw RAID + LVM (un scénario courant). Devrais-je utiliser le support de LVM pour sw RAID et utiliser ainsi un utilitaire au lieu de deux? Cette approche plus intégrée présente-t-elle des avantages?
  2. La prise en charge de LVM par LVM présente-t-elle des lacunes importantes par rapport au MDADM plus mature? En particulier, dans quelle mesure le support LVM pour sw RAID est-il stable / sans bogues? Il semble que ce soutien ne date que de 2011 (voir ci-dessous), alors que MDADM est beaucoup plus ancien. Aussi, comment se compare-t-il en termes de jeu de fonctionnalités? At-il des défauts de fonctionnalité significatifs par rapport au MDADM? Inversement, prend-il en charge les fonctionnalités sw sw que MDADM n’a pas?

REMARQUES:

  1. Il y a une discussion détaillée sur http://www.olearycomputers.com/ll/linux_mirrors.html mais je n'ai pas pu savoir à quelle date cela a été écrit.

    Question similaire sur Serverfault: miroir LVM linux vs miroir MD . Cependant, cette question a été posée en 2010 et les réponses peuvent être obsolètes.

  2. L'entrée du journal des modifications de la version 2.02.87 - 12 août 2011 a

    Ajoutez configure --with-raid pour le nouveau type de groupe 'raid' pour la prise en charge du MD RAID 1/4/5/6

    Il semble donc que la prise en charge RAID dans LVM date d’environ 3 ans.

Faheem Mitha
la source
L’un des avantages auxquels je peux penser est l’utilisation des fonctions liées à la haute disponibilité disponibles pour LVM.
Bratchley
1
@JoelDavis Pouvez-vous élaborer? Je ne sais pas ce que signifient les fonctions liées à la haute disponibilité.
Faheem Mitha
De plus, vous utilisez généralement des volumes logiques au lieu de mdvolumes. Donc, vous avez lvextendet pvmovedisponible pour passer d'un appareil à un autre alors que mdle processus est beaucoup plus manuel sans avantage clair.
Bratchley
@JoelDavis peut-être écrire une réponse?
Faheem Mitha
2
LVM a toujours supporté raid1 et raid0. Plus récemment, ils ont abandonné leur propre implémentation et ont utilisé en interne le code de personnalité du raid de md, ouvrant ainsi les autres niveaux de raid.
psusi

Réponses:

55

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, lvsvous 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 ( lvconvertdonne un message d'erreur disant non encore supporté). lvextendfonctionne, 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. lvsCependant, 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 --repairsur 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 --assembleserait résoudre ce problème; ni vgchangeni lvchangesemble avoir cette option (lv change accepte --force, mais il ne semble rien faire). Même en essayant dmsetupd’alimenter directement la table de mappage dans le noyau, je n’ai pas trouvé comment la récupérer.

En outre, mdadmest 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…

  1. Utilisez une image de CD complète pour installer, pas une image netinst.

  2. Procédez normalement, allez au partitionnement du disque, configurez vos volumes physiques LVM. Vous pouvez mettre /bootsur LVM-RAID (sur Jessie, et sur Wheezy avec quelques travaux détaillés ci-dessous).

  3. Créez vos groupes de volumes. Laissez-le dans le menu LVM.

  4. Tout d'abord, le programme d'installation n'a pas dm-raid.kochargé 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
    
  5. 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
    
  6. 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
    
  7. 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 rimageou rmetaen leur nom (voir le premier paragraphe de la manière ci-dessus pour une explication de ce que c'est).

  8. 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.

  9. 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
    
  10. 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é /procet /sysont été montés, et a fait un update-grub. Cette fois, c'est terminé. Ensuite, j'ai dpkg-reconfigure grub-pcchoisi d'installer grub sur tous les MBR des disques virtuels.

  11. Sur Wheezy, après avoir effectué ce qui précède, sélectionnez «Continuer sans chargeur de démarrage».

  12. Terminez l'installation. Ça va démarrer. Probablement.

Connaissance de la communauté

Bon nombre de personnes sont au courant mdadmet 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

  1. 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 --assembleles prennent. Bien sûr, vous pourriez très bien utiliser mdadmdes volumes logiques ... et ce serait plus sain.

  2. 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.

derobert
la source
2
En fait, vous obtenez cette erreur à cause de la version de LVM dans Wheezy qui est extrêmement ancienne et buggée; cela fonctionne très bien pour moi ici sur Ubuntu 14.04 avec la version 2.02.98 de LVM (je crois que Jessie est au moins cette nouvelle). Deuxièmement, la commande que vous avez montrée en échec est un redimensionnement - le remodelage est totalement différent. Remodeler signifie passer de raid1 à raid5, ou d’un raid5 à 3 disques à un raid5 à 4 disques. Cela n’est toujours pas pris en charge, mais il suffit de changer la taille.
psusi
@ psusi Ah, je pensais qu'ils considéraient aussi le redimensionnement comme un remodelage (car il modifie la géométrie du RAID, ce qui est loin d'être aussi important que de changer le nombre de disques). Avant de me tromper, j’avais pensé que j’essayerais de nouveau sur Jessie. (Vous devez créer une nouvelle machine virtuelle Jessie LVM-RAID, cela prendra donc un peu.) Merci.
derobert
dpkg-debfournit un moyen plus propre d’extraire les fichiers des paquets deb, pas besoin de se déplacer par étapes.
Muru
@muru est dpkg-debdisponible dans l'environnement d'installation? Ce n'était pas l'habitude d'être ... Assurez-vous de vérifier Wheezy aussi.
derobert
@derobert ar -xdevrait aussi travailler pour décompresser les archives deb, bien que ce soit plus maladroit. Aussi, que diriez-vous de mettre à jour votre réponse avec le statut actuel?
Faheem Mitha
7

Je ne savais pas que LVM pouvait faire du RAID non plus. Personnellement, je resterais avec mdadm car c'est un logiciel beaucoup plus mature qui fait la même chose. Si quelque chose ne fonctionne pas avec LVM RAID, vous ne pourrez probablement pas obtenir autant de soutien que si vous aviez choisi mdadm. De plus, je ne ferais pas confiance à LVM RAID car LVM a toujours démontré que ce n’était pas le logiciel le plus robuste.

ZFS et BTRFS sont l'avenir. Les avantages qu'ils procurent vont au-delà de ce qui est possible au niveau des blocs. À moins que je ne recherche la compatibilité, je n’utiliserai plus LVM / mdadm. ZFS et BTRFS possèdent de nombreuses fonctionnalités telles que la compression, la déduplication et la copie sur écriture, mais je n’entrerai pas dans les détails, car ce serait un peu hors de portée.

En fin de compte, faites vos recherches et utilisez ce qui vous convient le mieux.

Balles gratuites
la source
Merci d'avoir répondu. Envisagez de développer un peu pourquoi vous ne faites pas confiance à LVM.
Faheem Mitha
2
"ZFS et BTRFS sont l'avenir" Pas nécessairement. À ma connaissance, ZFS sur Linux est toujours basé sur FUSE, il est donc principalement utilisé pour obtenir des fonctionnalités ZFS sans utiliser Solaris ou FreeBSD. BTRFS est génial mais ce n'est pas nécessairement l'avenir. Par exemple, Red Hat semble se diriger davantage vers LVM+XFSBTRFS que vers. Ils supportent BTRFS mais c'est plus une chose d'Oracle / SuSE.
Bratchley
Pour ne pas dire que je n'aime pas les btrfs pour une raison quelconque (en fait, je l'aime beaucoup). C'est simplement que ce n'est pas la direction prise par une distribution majeure telle que Red Hat, et je ne vois rien de ce que BTRFS puisse faire que LVM / XFS ne puisse au moins se rapprocher assez bien.
Bratchley
Je dirais également que BTRFS sera bien, mais que LVM peut faire beaucoup de choses que BTRFS ne peut tout simplement pas faire. Par exemple, vous pouvez créer des volumes hybrides et des instantanés à disposition restreinte que BTRFS (AFAIK) ne peut effectuer.
Bratchley
9
"A ma connaissance, ZFS sur Linux est toujours basé sur FUSE", ce qui est incorrect depuis plus de cinq ans. ZoL est un module de noyau entièrement prêt pour la production. Je l'utilise beaucoup depuis le début de 2010.
Jim Salter