Résumé
Risques liés à l'utilisation de LVM :
- Vulnérable aux problèmes de mise en cache en écriture avec le SSD ou l'hyperviseur VM
- Plus difficile de récupérer les données en raison de structures plus complexes sur le disque.
- Il est plus difficile de redimensionner correctement les systèmes de fichiers
- Les instantanés sont difficiles à utiliser, lents et bogués.
- La configuration correcte nécessite quelques compétences, compte tenu de ces problèmes.
Les deux premiers problèmes de LVM se combinent : si la mise en cache en écriture ne fonctionne pas correctement et que vous avez une perte de puissance (par exemple, une panne de PSU ou d'UPS), vous pourriez bien devoir récupérer à partir de la sauvegarde, ce qui signifie un temps d'arrêt important. L'une des principales raisons d'utiliser LVM est l'amélioration de la disponibilité (lors de l'ajout de disques, du redimensionnement de systèmes de fichiers, etc.), mais il est important de configurer correctement la mise en cache en écriture pour éviter que LVM ne réduise réellement la disponibilité.
-- Mis à jour en décembre 2019 : mise à jour mineure sur btrfs et ZFS comme alternatives aux instantanés LVM.
Atténuer les risques
LVM peut toujours fonctionner correctement si vous :
- Configurez correctement votre cache en écriture dans l'hyperviseur, le noyau et les disques durs.
- Éviter les snapshots LVM
- Utiliser les versions récentes de LVM pour redimensionner les systèmes de fichiers
- Disposez de bonnes sauvegardes
Détails
J'ai fait de nombreuses recherches sur ce sujet dans le passé, ayant subi des pertes de données liées à LVM. Les principaux risques et problèmes liés à LVM dont je suis conscient sont les suivants :
Vulnérabilité à la mise en cache en écriture du disque dur due aux hyperviseurs VM, à la mise en cache du disque ou aux anciens noyaux Linux. et rend plus difficile la récupération des données en raison de structures plus complexes sur le disque - voir ci-dessous pour plus de détails. J'ai vu des configurations LVM complètes sur plusieurs disques être corrompues sans aucune chance de récupération, et LVM plus la mise en cache en écriture du disque dur est une combinaison dangereuse.
-
Mise en cache de l'écriture et réordonnancement de l'écriture par le disque dur. est important pour de bonnes performances, mais il peut ne pas réussir à vider correctement les blocs sur le disque en raison des hyperviseurs VM, de la mise en cache en écriture du disque dur, des vieux noyaux Linux, etc.
-
Barrières d'écriture signifie que le noyau garantit qu'il terminera certaines écritures sur le disque avant l'écriture sur le disque "barrière", afin de s'assurer que les systèmes de fichiers et RAID peuvent récupérer en cas de perte soudaine d'alimentation ou de crash. De telles barrières peuvent utiliser un Opération FUA (Force Unit Access) pour écrire immédiatement certains blocs sur le disque, ce qui est plus efficace qu'un vidage complet du cache. Les barrières peuvent être combinées avec des Étiqueté / indigène la mise en file d'attente des commandes (émission simultanée de plusieurs demandes d'E/S de disque) pour permettre au disque dur d'effectuer un réordonnancement intelligent des écritures sans augmenter le risque de perte de données.
-
Hyperviseurs VM peut avoir des problèmes similaires : l'exécution de LVM dans un invité Linux au-dessus d'un hyperviseur VM tel que VMware, Xen KVM, Hyper-V ou VirtualBox peuvent créer des systèmes de gestion de la qualité. problèmes similaires à un noyau sans barrières d'écriture, en raison de la mise en cache et du réordonnancement des écritures. Vérifiez attentivement dans la documentation de votre hyperviseur la présence d'une option "flush to disk" ou write-through cache (présente dans KVM , VMware , Xen , VirtualBox et autres) - et testez-le avec votre installation. Certains hyperviseurs tels que VirtualBox ont un réglage par défaut qui ignore les vidages de disque de l'invité.
-
Les serveurs d'entreprise avec LVM doivent toujours utiliser un contrôleur RAID sur batterie et désactivez la mise en mémoire cache en écriture du disque dur (le contrôleur dispose d'une mémoire cache en écriture sauvegardée par une batterie, qui est rapide et sûre). ce commentaire par l'auteur de cette entrée de la FAQ XFS . Il peut également être sûr de désactiver les barrières d'écriture dans le noyau, mais il est recommandé de le tester.
- Si vous ne disposez pas d'un contrôleur RAID alimenté par batterie, la désactivation de la mise en cache en écriture du disque dur ralentira considérablement les écritures mais rendra LVM sûr. Vous devriez également utiliser l'équivalent de l'outil ext3
data=ordered
(ou data=journal
pour plus de sécurité), plus barrier=1
pour s'assurer que la mise en cache du noyau n'affecte pas l'intégrité. (Ou utilisez ext4 qui active les barrières par défaut .) C'est l'option la plus simple et elle fournit une bonne intégrité des données au prix de la performance. (Linux a modifié l'option ext3 par défaut au plus dangereux data=writeback
il y a quelque temps, donc ne vous fiez pas aux paramètres par défaut du FS).
-
Pour désactiver la mise en cache en écriture du disque dur : add
hdparm -q -W0 /dev/sdX
pour tous les lecteurs dans /etc/rc.local
(pour SATA) ou utilisez sdparm pour SCSI/SAS. Cependant, selon cette entrée dans la FAQ XFS (qui est très bonne sur ce sujet), un disque SATA peut oublier ce paramètre après une reprise après une erreur de disque - vous devez donc utiliser SCSI/SAS, ou si vous devez utiliser SATA, mettez la commande hdparm dans une tâche cron exécutée toutes les minutes ou presque.
-
Pour garder la mise en cache en écriture du SSD / disque dur activée pour de meilleures performances : il s'agit d'un domaine complexe - voir la section ci-dessous.
- Si vous utilisez Lecteurs de format avancé c'est-à-dire des secteurs physiques de 4 Ko, voir ci-dessous - la désactivation de la mise en cache en écriture peut poser d'autres problèmes.
-
UPS est essentiel pour les entreprises et les professions libérales, mais ne suffit pas à rendre LVM sûr : tout ce qui provoque un crash ou une perte de puissance (par exemple, une panne d'onduleur, une panne de bloc d'alimentation ou l'épuisement de la batterie d'un ordinateur portable) peut entraîner la perte de données dans les caches des disques durs.
-
Très vieux noyaux Linux (2.6.x de 2009) : Le support de la barrière d'écriture est incomplet dans les très anciennes versions du noyau, 2.6.32 et antérieures ( 2.6.31 a un certain support alors que 2.6.33 travaux pour tous les types d'appareils cibles) - RHEL 6 utilise 2.6.32 avec de nombreux correctifs. Si ces anciens noyaux 2.6 ne sont pas corrigés pour ces problèmes, une grande quantité de métadonnées FS (y compris les journaux) pourrait être perdue par un crash dur qui laisse des données dans les tampons d'écriture des disques durs (disons 32 Mo par disque pour les disques SATA courants). La perte de 32 Mo des métadonnées et des données de journal les plus récemment écrites, dont le noyau pense qu'elles sont déjà sur le disque, entraîne généralement une forte corruption du FS et donc une perte de données.
-
Résumé : vous devez faire attention au système de fichiers, au RAID, à l'hyperviseur VM et à la configuration des disques durs/SSD utilisés avec LVM. Vous devez disposer de très bonnes sauvegardes si vous utilisez LVM, et vous assurer de sauvegarder spécifiquement les métadonnées LVM, la configuration de la partition physique, le MBR et les secteurs de démarrage du volume. Il est également conseillé d'utiliser des disques SCSI/SAS car ils sont moins susceptibles de mentir sur la façon dont ils effectuent la mise en cache en écriture - il faut être plus prudent pour utiliser des disques SATA.
Garder le cache en écriture activé pour les performances (et pour faire face aux lecteurs couchés)
Une option plus complexe mais plus performante consiste à garder la mise en cache en écriture des SSD / disques durs activée et à compter sur les barrières d'écriture du noyau qui fonctionnent avec LVM sur le noyau 2.6.33+ (vérifiez en recherchant les messages "barrier" dans les journaux).
Vous devez également vous assurer que la configuration RAID, la configuration de l'hyperviseur VM et le système de fichiers sont correctement configurés. utilise des barrières d'écriture (c'est-à-dire que le lecteur doit vider les écritures en attente avant et après les écritures de métadonnées/journaux clés). XFS utilise les barrières par défaut, mais ext3 ne le fait pas. donc avec ext3 vous devez utiliser barrier=1
dans les options de montage, et toujours utiliser data=ordered
o data=journal
comme ci-dessus.
SSDs sont problématiques car l'utilisation du cache en écriture est essentielle à la durée de vie du SSD. Il est préférable d'utiliser un SSD doté d'un supercondensateur (pour permettre le vidage du cache en cas de coupure de courant, et donc permettre au cache d'être en écriture inverse et non en écriture directe).
Format avancé configuration du disque - cache en écriture, alignement, RAID, GPT
- Avec les nouvelles Lecteurs de format avancé qui utilisent des secteurs physiques de 4 KiB, il peut être important de maintenir la mise en cache en écriture du disque activée, car la plupart de ces disques émulent actuellement des secteurs logiques de 512 octets ( "Émulation 512" ), et certains prétendent même avoir des secteurs physiques de 512 octets alors qu'ils utilisent en réalité 4 KiB.
- La désactivation du cache en écriture d'un lecteur Advanced Format peut avoir un impact très important sur les performances si l'application/le noyau effectue des écritures de 512 octets, car ces lecteurs comptent sur le cache pour accumuler 8 écritures de 512 octets avant d'effectuer une seule écriture physique de 4 KiB. Il est recommandé de procéder à des tests pour confirmer l'impact éventuel de la désactivation du cache.
-
Alignement des LV sur une frontière de 4 KiB est important pour les performances mais devrait se faire automatiquement tant que les partitions sous-jacentes des PV sont alignées, puisque les Physical Extents (PE) de LVM sont de 4 MiB par défaut. Le RAID doit être pris en compte ici - ce Page de configuration de LVM et RAID logiciel suggère de mettre le superbloc RAID à la fin du volume et (si nécessaire) d'utiliser une option sur
pvcreate
pour aligner les PVs. Ce fil de discussion de la liste d'emails LVM indique le travail effectué dans les noyaux en 2011 et le problème des écritures de blocs partiels lors du mélange de disques avec des secteurs de 512 octets et de 4 KiB dans un seul LV.
-
Partitionnement GPT avec le format avancé nécessite une attention particulière, notamment pour les disques de démarrage+racine, pour s'assurer que la première partition LVM (PV) commence sur une frontière de 4 KiB.
Plus difficile de récupérer les données en raison de structures plus complexes sur le disque. :
- Toute récupération de données LVM nécessaire après un crash dur ou une perte de puissance (due à une mise en cache d'écriture incorrecte) est un processus manuel au mieux, car il n'existe apparemment pas d'outils appropriés. LVM est bon pour sauvegarder ses métadonnées sous le contrôle de
/etc/lvm
qui peut aider à restaurer la structure de base des LV, VG et PV, mais pas les métadonnées perdues du système de fichiers.
- Il est donc probable qu'une restauration complète à partir d'une sauvegarde soit nécessaire. Cela implique beaucoup plus de temps d'arrêt qu'un fsck rapide basé sur le journal lorsqu'on n'utilise pas LVM, et les données écrites depuis la dernière sauvegarde seront perdues.
-
TestDisk , ext3grep , ext3undel y autres outils peuvent récupérer des partitions et des fichiers à partir de disques non-LVM mais ils ne prennent pas directement en charge la récupération de données LVM. TestDisk peut découvrir qu'une partition physique perdue contient un PV LVM, mais aucun de ces outils ne comprend les volumes logiques LVM. Sculpture sur lime des outils tels que PhotoRec et bien d'autres fonctionneraient car ils contournent le système de fichiers pour réassembler les fichiers à partir des blocs de données, mais il s'agit d'une approche de dernier recours, de bas niveau, pour les données précieuses, et qui fonctionne moins bien avec les fichiers fragmentés.
- La récupération manuelle de LVM est possible dans certains cas, mais elle est complexe et prend beaucoup de temps. cet exemple y este , este y este pour savoir comment récupérer.
Il est plus difficile de redimensionner correctement les systèmes de fichiers - Le redimensionnement facile des systèmes de fichiers est souvent donné comme un avantage de LVM, mais vous devez exécuter une demi-douzaine de commandes Shell pour redimensionner un FS basé sur LVM - cela peut être fait avec le serveur entier encore en place, et dans certains cas avec le FS monté, mais je ne risquerais jamais ce dernier sans sauvegardes à jour et en utilisant des commandes pré-testées sur un serveur équivalent (par exemple, un clone de reprise après sinistre du serveur de production).
-
Mise à jour : Des versions plus récentes de lvextend
soutenir le -r
( --resizefs
) - si cette option est disponible, c'est un moyen plus sûr et plus rapide de redimensionner le LV et le système de fichiers, en particulier si vous réduisez le FS, et vous pouvez généralement sauter cette section.
-
La plupart des guides sur le redimensionnement des FS basés sur LVM ne tiennent pas compte du fait que le FS doit être un peu plus petit que la taille du LV : explication détaillée ici . Lors du rétrécissement d'un système de fichiers, vous devrez spécifier la nouvelle taille à l'outil de redimensionnement de FS, par ex. resize2fs
pour ext3, et à lvextend
o lvreduce
. Sans grande précaution, les tailles peuvent être légèrement différentes en raison de la différence entre 1 Go (10^9) et 1 GiB (2^30), ou la façon dont les différents outils arrondissent les tailles vers le haut ou vers le bas.
-
Si vous ne faites pas les calculs exactement comme il faut (ou si vous utilisez des étapes supplémentaires en plus des plus évidentes), vous pouvez vous retrouver avec un FS trop grand pour le LV. Tout semblera aller bien pendant des mois ou des années, jusqu'à ce que vous remplissiez complètement le FS, à ce moment-là vous obtiendrez une corruption sérieuse - et à moins que vous ne soyez conscient de ce problème, il est difficile de trouver pourquoi, car vous pouvez aussi avoir de vraies erreurs de disque à ce moment-là qui obscurcissent la situation. (Il est possible que ce problème n'affecte que la réduction de la taille des systèmes de fichiers - cependant, il est clair que le redimensionnement des systèmes de fichiers dans un sens ou dans l'autre augmente le risque de perte de données, éventuellement en raison d'une erreur de l'utilisateur).
-
Il semble que la taille du LV doit être supérieure à celle du FS de 2 x la taille de l'étendue physique (PE) du LVM - mais vérifiez le lien ci-dessus pour plus de détails car la source de cette information ne fait pas autorité. Souvent, autoriser 8 MiB est suffisant, mais il peut être préférable d'autoriser plus, par exemple 100 MiB ou 1 GiB, juste pour être sûr. Pour vérifier la taille du PE, et la taille de votre volume logique+FS, en utilisant 4 KiB = 4096 blocs d'octets :
Indique la taille du PE en KiB :
vgdisplay --units k myVGname | grep "PE Size"
Taille de tous les LVs :
lvs --units 4096b
Taille du FS (ext3), suppose une taille de bloc de FS de 4 KiB :
tune2fs -l /dev/myVGname/myLVname | grep 'Block count'
-
En revanche, une configuration non-LVM rend le redimensionnement du FS très fiable et facile - exécutez Gparted et redimensionner les FSs nécessaires, alors il fera tout pour vous. Sur les serveurs, vous pouvez utiliser parted
à partir du Shell.
-
Il est souvent préférable d'utiliser le Gparted Live CD o Parted Magic J'ai déjà perdu tout un système de fichiers parce que le Gparted de la distribution ne mettait pas correctement à jour les partitions dans le noyau en cours d'exécution. Si vous utilisez le Gparted de la distribution, assurez-vous de redémarrer juste après avoir changé les partitions afin que la vue du noyau soit correcte.
Les instantanés sont difficiles à utiliser, lents et bogués. - si l'instantané n'a plus d'espace pré alloué, il est automatiquement abandonné . Chaque instantané d'un LV donné est un delta par rapport à ce LV (et non par rapport aux instantanés précédents), ce qui peut nécessiter beaucoup d'espace lors de l'instantanéisation de systèmes de fichiers avec une activité d'écriture importante (chaque instantané est plus grand que le précédent). Il est prudent de créer un instantané de LV de la même taille que le LV original, car l'instantané ne manquera jamais d'espace libre.
Les instantanés peuvent également être très lents (c'est-à-dire 3 à 6 fois plus lents que sans LVM pour ces tests MySQL ) - voir cette réponse couvrant divers problèmes d'instantanés . Cette lenteur s'explique en partie par les instantanés nécessitent de nombreuses écritures synchrones .
Les instantanés ont connu quelques bogues importants, par ex. dans certains cas ils peuvent rendre le démarrage très lent, voire le faire échouer complètement (parce que le système d'exploitation de l'entreprise ne fonctionne pas). le noyau peut s'arrêter attente du FS racine lorsqu'il s'agit d'un instantané LVM [corrigé dans Debian initramfs-tools
mise à jour, mars 2015]).
- Cependant, de nombreux bogues de conditions de course d'instantanés ont été apparemment Correction de d'ici 2015.
- LVM sans snapshots semble généralement bien débogué, peut-être parce que les snapshots ne sont pas utilisés autant que les fonctionnalités de base.
Alternatives à Snapshot - systèmes de fichiers et hyperviseurs VM
Instantanés de VM/cloud :
- Si vous utilisez un hyperviseur VM ou un fournisseur de cloud IaaS (par exemple VMware, VirtualBox ou Amazon EC2/EBS), leurs instantanés sont souvent une bien meilleure alternative aux instantanés LVM. Vous pouvez très facilement prendre un instantané à des fins de sauvegarde (mais pensez à geler le FS avant de le faire).
Instantanés du système de fichiers :
-
Les instantanés au niveau du système de fichiers avec ZFS ou btrfs sont faciles à utiliser et généralement meilleurs que LVM, si vous êtes sur du métal nu (mais ZFS semble beaucoup plus mature, juste plus compliqué à installer) :
-
ZFS : il existe désormais un implémentation de ZFS dans le noyau ZFS, qui est utilisé depuis quelques années, et ZFS semble être de plus en plus adopté. Ubuntu propose désormais ZFS en tant qu'option "prête à l'emploi", y compris le ZFS expérimental à la racine. en 19.10 .
-
btrfs : toujours pas prêt pour une utilisation en production ( même sur openSUSE qui le fournit par défaut et dispose d'une équipe dédiée à btrfs), alors que RHEL a cessé de le prendre en charge). btrfs dispose désormais d'une fonction Outil fsck (FAQ) mais la FAQ vous recommande de consulter un développeur si vous avez besoin de fscker un système de fichiers cassé.
Snapshots pour les sauvegardes en ligne et fsck
Les instantanés peuvent être utilisés pour fournir une cohérence source pour les sauvegardes, tant que vous faites attention à l'espace alloué (idéalement, l'instantané est de la même taille que le LV sauvegardé). L'excellent rsnapshot (depuis la version 1.3.1) gère même la création/suppression des snapshots LVM pour vous - voir ceci HOWTO sur rsnapshot utilisant LVM . Toutefois, notez les problèmes généraux liés aux instantanés et le fait qu'un instantané ne doit pas être considéré comme une sauvegarde en soi.
Vous pouvez également utiliser les snapshots LVM pour faire un fsck en ligne : snapshot du LV et fsck du snapshot, tout en utilisant le FS principal non snapshot -. décrit ici - cependant, c'est pas tout à fait simple il est donc préférable d'utiliser e2croncheck comme décrit par Ted Ts'o , mainteneur de ext3.
Vous devez "geler" le système de fichiers temporairement pendant la prise de l'instantané - certains systèmes de fichiers tels que ext3 et XFS seront faire cela automatiquement lorsque LVM crée le snapshot.
Conclusions
Malgré tout, j'utilise encore LVM sur certains systèmes, mais pour une configuration de bureau, je préfère les partitions brutes. Le principal avantage que je vois à LVM est la flexibilité de déplacer et de redimensionner les FS. lorsque vous devez avoir un temps de disponibilité élevé sur un serveur. - si vous n'en avez pas besoin, gparted est plus simple et présente moins de risques de perte de données.
LVM nécessite une grande attention dans la configuration de la mise en cache en écriture en raison des hyperviseurs VM, de la mise en cache en écriture des disques durs / SSD, etc. mais la même chose s'applique à l'utilisation de Linux comme serveur de base de données. Le manque de support de la plupart des outils ( gparted
y compris les calculs de la taille critique, et testdisk
etc.) le rend plus difficile à utiliser qu'il ne devrait l'être.
Si vous utilisez LVM, faites très attention aux snapshots : utilisez des snapshots VM/cloud si possible, ou étudiez ZFS/btrfs pour éviter complètement LVM - vous trouverez peut-être que ZFS ou btrfs est suffisamment mature par rapport à LVM avec des snapshots.
En résumé : Si vous ne connaissez pas les problèmes énumérés ci-dessus et la façon de les résoudre, il vaut mieux ne pas utiliser LVM.
24 votes
Lorsque vous lisez les réponses à cette question, gardez à l'esprit la date (année) à laquelle elles ont été publiées. Il se passe beaucoup de choses en trois ans dans ce secteur.
2 votes
J'ai fait quelques mises à jour récemment (avril 2015) en les parcourant pour voir si quelque chose a changé. Le noyau 2.6 est maintenant obsolète, les SSD sont plus courants, mais à part quelques petites corrections LVM, pas grand-chose n'a vraiment changé. J'ai écrit quelques nouvelles choses sur l'utilisation des instantanés de VM / serveur cloud au lieu des instantanés LVM. L'état de la mise en cache en écriture, le redimensionnement du système de fichiers et les instantanés LVM n'ont pas vraiment changé pour autant que je puisse voir.
1 votes
En ce qui concerne le commentaire "gardez à l'esprit la date", c'est assez vrai, mais considérez également que beaucoup d'"entreprises" utilisent encore RHEL 5 et RHEL 6, qui sont tous deux à la pointe ou plus anciens que la date de la réponse.