web-dev-qa-db-fra.com

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

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

Après une petite enquête, il semble que LVM supporte également la fonctionnalité RAID. Dans le passé, j'ai utilisé LVM en plus de MDRAID, et je ne savais pas 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.

Ce sont donc des façons alternatives d'implémenter le RAID logiciel sous Linux. Quels sont les avantages et les inconvénients de ces deux approches différentes? Je cherche des comparaisons de fonctionnalités entre les deux approches afin que les gens puissent décider quelle est la meilleure pour eux. Les conclusions basées sur l'expérimentation (comme dans, cette fonctionnalité ne fonctionne pas aussi bien que cette fonctionnalité et voici pourquoi) sont également correctes, à condition d'inclure 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). Dois-je utiliser le support LVM pour sw RAID et donc utiliser un utilitaire au lieu de deux? Cette approche plus intégrée présente-t-elle des avantages?
  2. La prise en charge des LVM pour sw RAID présente-t-elle des lacunes importantes par rapport au MDADM plus mature? Plus précisément, dans quelle mesure le support LVM pour sw RAID est-il stable/exempt de bogues? Il semble que ce support ne remonte qu'à 2011 (voir ci-dessous), alors que MDADM est beaucoup plus ancien. En outre, comment se compare-t-il en termes de fonctionnalités? A-t-il des lacunes importantes en termes de fonctionnalités par rapport à MDADM? Inversement, prend-il en charge les fonctionnalités sw RAID que MDADM ne possède 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 il 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 pour la version 2.02.87 - 12 août 2011 a

    Ajouter configure --with-raid pour le nouveau type de raid de type seg pour la prise en charge de MD RAID 1/4/5/6

    Il semble donc que le support RAID dans LVM ait environ 3 ans.

60
Faheem Mitha

Quelle est la maturité et les fonctionnalités du LVM RAID?

LVM-RAID a réellement peur sous les couvertures. Il 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. Les choses comme la gestion des erreurs de lecture de disque, l'équilibrage de charge d'E/S, etc.

Voilà la bonne nouvelle.

Outils

Vous ne pouvez pas utiliser mdadm dessus (du moins, pas de manière simple¹) et les outils LVM RAID sont loin d'être aussi matures. Par exemple, dans Debian Wheezy, lvs ne peut pas vous indiquer l'état de synchronisation RAID5. Je doute fort que la réparation et la récupération (en particulier dans les situations "cela ne devrait jamais arriver!") Soient presque aussi bonnes que mdadm (et j'ai accidentellement rencontré l'une de celles de mes tests, et j'ai finalement abandonné la récupération - récupération avec mdadm aurait été facile).

Surtout si vous n'utilisez pas les dernières versions de tous les outils, cela 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 prennent pas non plus en charge la modification du nombre de disques ou du niveau RAID (lvconvert donne un message d'erreur indiquant que ce n'est pas encore pris en charge). lvextend fonctionne, et peut même augmenter les niveaux RAID qui n'ont été pris en charge que récemment, comme RAID10. D'après mon expérience, l'extension des LV est beaucoup plus courante que leur réduction, c'est donc en fait raisonnable.

Certaines autres fonctionnalités de mdraid ne sont pas présentes, et surtout vous ne pouvez pas personnaliser toutes les options que vous pouvez utiliser avec mdadm.

Sur les versions plus anciennes (comme, par exemple, dans Debian Wheezy), 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 Wheezy.

Ce qui précède est une fois que vous l'avez installé. Ce n'est pas non plus un processus trivial.

Problèmes d'outil

En jouant avec ma Jessie VM, j'ai déconnecté (virtuellement) un disque. Cela a fonctionné, la machine est restée en marche. lvs, cependant, n'a donné aucune indication que les tableaux étaient dégradés. J'ai remis en place le disque et retiré une seconde. Resté à courir (c'est raid6). Re-attaché, toujours aucune indication de lvs. J'ai exécuté lvconvert --repair Sur le volume, il m'a dit que c'était OK. Puis j'ai sorti un troisième disque ... et la machine est morte. Je l'ai réinséré, redémarré et je ne sais plus comment y remédier. mdadm --force --assemble Réglerait cela; ni vgchange ni lvchange ne semble avoir cette option (lvchange accepte --force, mais il ne semble rien faire). Même en essayant dmsetup pour alimenter directement la table de mappage vers le noyau, je n'ai pas pu trouver comment la récupérer.

De plus, mdadm est un outil dédié uniquement à la gestion du RAID. LVM en fait beaucoup plus, mais on a l'impression (et j'admets que c'est assez subjectif) que la fonctionnalité RAID a en quelque sorte été poussée là-dedans; cela ne correspond 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 que si vous allez essayer ceci sur Wheezy, lisez d'abord le tout…

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

  2. Procédez comme d'habitude, accédez 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).

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

  4. Tout d'abord, le programme d'installation n'a pas le module dm-raid.ko Chargé, ni même disponible! Vous pouvez donc le récupérer dans le package linux-image qui sera installé. Passer à 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 supposition pour ma configuration VM:

    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 à la place deux partitions de swap, chacune RAID1. Mais vous devez lui dire exactement sur quels volumes physiques les mettre ou place 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 au programme d'installation et appuyez sur "Terminer" dans le menu LVM. Vous serez maintenant présenté avec un lot de volumes logiques montrant. C'est l'installateur qui ne comprend pas ce qui se passe; ignorez tout avec rimage ou rmeta dans leur nom (voir le premier paragraphe ci-dessus pour une explication de ce que c'est).

  8. Allez-y et créez des systèmes de fichiers, échangez 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 ne l'ai pas testé). Sur Wheezy, l'installation échouera et la seule solution est de rétroporter le grub2 de Jessie. C'est en fait assez facile, il se compile proprement sur Wheezy. D'une manière ou d'une autre, récupérez vos paquets grub rétroportés dans /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, sur mon dernier Jessie VM grub-install bloqué. Passer à F2 et faire while kill $(pidof vgs); do sleep 0.25; done, suivi de la même chose pour lvs, l'a fait passer grub-install. Il a semblé générer une configuration valide malgré cela, mais juste au cas où j'aurais fait un chroot /target /bin/bash, m'être assuré que /proc et /sys étaient montés, et ai fait un update-grub. Cette fois, c'est terminé. J'ai ensuite fait un dpkg-reconfigure grub-pc Pour sélectionner l'installation de grub sur tous les MBR des disques virtuels.

  11. Sur Wheezy, après avoir fait 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é

Il y a un bon nombre de personnes qui connaissent mdadm et ont beaucoup d'expérience en déploiement avec. Google est susceptible de répondre à la plupart de vos questions. Vous pouvez généralement vous attendre à une question à ce sujet ici pour obtenir des réponses, probablement dans la journée.

On ne peut pas en dire autant du LVM RAID. Il est difficile de trouver des guides. La plupart des recherches Google que j'ai effectuées à la place me trouvent des informations sur l'utilisation des tableaux mdadm comme PV. Pour être honnête, c'est probablement en grande partie parce qu'il est plus récent et moins utilisé. Quelque peu, il semble injuste de lui en vouloir, mais si quelque chose se passe mal, la communauté existante beaucoup plus grande autour de mdadm rend la récupération de mes données plus probable.

Conclusion

LVM-RAID progresse assez rapidement. Sur Wheezy, ce n'est pas vraiment utilisable (du moins, sans faire de backports de LVM et du noyau). Plus tôt, en 2014, lors des tests Debian, c'était une idée intéressante, mais inachevée. Les tests actuels, essentiellement ce qui deviendra Jessie, ressemblent à quelque chose que vous pourriez réellement utiliser, si vous devez fréquemment créer de petites tranches avec différentes configurations RAID (quelque chose qui est un cauchemar administratif avec mdadm).

Si vos besoins sont correctement satisfaits par quelques grandes matrices RAID mdadm, découpées en partitions à l'aide de LVM, je vous suggère de continuer à l'utiliser. Si, au lieu de cela, vous devez créer de nombreuses baies (ou même des baies de volumes logiques), envisagez plutôt de passer à LVM-RAID. Mais gardez de bonnes sauvegardes.

De nombreuses utilisations de LVM RAID (et même de mdadm RAID) sont prises en charge par des éléments tels que les systèmes de stockage/objets en cluster, 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 fait revoir l'état de LVM-RAID et mettre à jour ce post.

Notes de bas de page

  1. Je soupçonne que vous pouvez utiliser le mappeur de périphériques pour coller les métadonnées et les données de telle manière que mdadm --assemble Les prendra. Bien sûr, vous pouvez simplement exécuter mdadm sur des volumes logiques très bien ... 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 config grub. J'ai dû démarrer le système en entrant toutes les informations sur l'invite grub. Une fois démarré, cela a fonctionné, donc je pense que cela fonctionnera très bien à partir du programme d'installation. 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 un moment que je n'ai pas fait les expériences originales. J'ai rendu mes notes originales disponibles. Notez que j'en ai maintenant fait des plus récentes, couvertes dans cette réponse, et non dans ces notes.

64
derobert

Je ne savais pas non plus que LVM pouvait faire du RAID. Personnellement, je resterais avec mdadm car c'est un logiciel beaucoup plus mature qui fait la même chose. Si quelque chose rompt avec LVM RAID, vous ne pourrez probablement pas obtenir autant de support que si vous aviez opté pour mdadm. De plus, je ne ferais pas confiance à LVM RAID car LVM s'est toujours avéré ne pas être le logiciel le plus robuste.

ZFS et BTRFS sont l'avenir. Les avantages qu'ils offrent vont au-delà de ce qui est possible au niveau de la couche de blocs. À moins que je ne vise la compatibilité, je n'utiliserai plus LVM/mdadm. ZFS et BTRFS ont beaucoup de fonctionnalités comme la compression, la déduplication et la copie sur écriture, mais je n'entrerai pas là-dedans, car ce serait un peu hors de portée.

En fin de compte, faites vos recherches et utilisez ce qui convient à vos besoins/désirs.

7
Free Bullets