J'ai récemment commencé à utiliser LVM sur certains serveurs pour les disques durs supérieurs à 1 To. Ils sont utiles, extensibles et faciles à installer. Cependant, je n'ai trouvé aucune donnée sur les dangers et les mises en garde de LVM.
Quels sont les inconvénients de l'utilisation de LVM?
linux
filesystems
lvm
data-integrity
advanced-format
Adam Matan
la source
la source
Réponses:
Sommaire
Risques liés à l'utilisation de LVM:
Les deux premiers problèmes LVM se combinent: si la mise en cache des écritures ne fonctionne pas correctement et que vous subissez une coupure de courant (défaillance de l’unité d’alimentation ou de l’UPS, par exemple), vous devrez peut-être effectuer une restauration à partir de la sauvegarde, ce qui signifie une indisponibilité importante. Une des principales raisons d’utiliser LVM est une durée de disponibilité plus longue (lors de l’ajout de disques, du redimensionnement des systèmes de fichiers, etc.), mais il est important que la configuration de la mise en cache en écriture soit correcte pour éviter que LVM ne réduise réellement la durée de disponibilité.
- Mise à jour en décembre 2018: mise à jour du matériel d'instantané, incluant la stabilité de ZFS et de btrfs en tant qu'alternative aux instantanés LVM
Atténuer les risques
LVM peut toujours bien fonctionner si vous:
Détails
J'ai fait beaucoup de recherches sur ce problème dans le passé après avoir subi des pertes de données associées à LVM. Les principaux risques et problèmes LVM dont je suis au courant sont les suivants:
Vulnérable à la mise en cache d'écriture de disque dur en raison d'hyperviseurs de machine virtuelle, de mise en cache de disque ou d'anciens noyaux Linux , et rend plus difficile la récupération de données en raison de structures plus complexes sur disque - voir ci-dessous pour plus de détails. J'ai vu des configurations complètes de LVM sur plusieurs disques être corrompues sans aucune chance de récupération, et la mise en cache d'écriture de LVM et du disque dur est une combinaison dangereuse.
data=ordered
option ext3 (oudata=journal
pour plus de sécurité) etbarrier=1
vous 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 .) Il s'agit de l'option la plus simple et fournit une bonne intégrité des données au détriment des performances. (Linux a changé l’option par défaut ext3 pour la plus dangereuse il yadata=writeback
quelque temps. Ne vous fiez donc pas aux paramètres par défaut du système de stockage.)hdparm -q -W0 /dev/sdX
pour tous les lecteurs de/etc/rc.local
(pour SATA) ou utilisez sdparm pour SCSI / SAS. Cependant, selon cette entrée de la FAQ XFS (ce qui est très bien sur ce sujet), un lecteur SATA peut oublier ce paramètre après une récupération d'erreur de lecteur. Vous devez donc utiliser SCSI / SAS, ou si vous devez utiliser SATA, placez le Commande hdparm dans un travail cron exécuté toutes les minutes environ.Garder la mise en cache d'écriture activée pour la performance (et gérer les lecteurs menteurs)
Une option plus complexe mais plus performante consiste à garder la mise en cache d'écriture SSD / disque dur activée et à vous appuyer sur les barrières d'écriture du noyau fonctionnant avec LVM sur le noyau 2.6.33+ (double-contrôle en recherchant les messages "barrière" dans les journaux).
Vous devez également vous assurer que la configuration RAID, la configuration de l'hyperviseur de machine virtuelle et le système de fichiers utilisent des barrières en écriture (c’est-à-dire que le lecteur doit vider les écritures en attente avant et après les écritures de métadonnées / journal clés). XFS utilise les barrières par défaut, mais pas Ext3, vous devez donc utiliser Ext3
barrier=1
dans les options de montage et continuer à utiliserdata=ordered
oudata=journal
comme ci-dessus.Les disques SSD sont problématiques car l'utilisation du cache en écriture est essentielle à la durée de vie du disque SSD. Il est préférable d'utiliser un disque SSD doté d'un supercondensateur (pour permettre le vidage de la mémoire cache en cas de panne de courant et, par conséquent, permettre au cache d'être réécrit, et non réécrit).
Configuration du lecteur au format avancé - mise en cache en écriture, alignement, RAID, GPT
pvcreate
pour aligner les PV. Ce fil de la liste de diffusion LVM pointe vers le travail effectué dans les noyaux au cours de 2011 et le problème des écritures par bloc partielles lors du mélange de disques avec des secteurs de 512 octets et 4 Ko dans un même volume logique.Plus difficile de récupérer les données en raison de structures sur disque plus complexes :
/etc/lvm
, ce qui peut aider à restaurer la structure de base des LV, VG et PV, mais n’aidera pas à la perte de métadonnées de système de fichiers.Plus difficile de redimensionner les systèmes de fichiers correctement - LVM vous donne souvent l'avantage de redimensionner facilement les systèmes de fichiers, mais vous devez exécuter une demi-douzaine de commandes shell pour redimensionner un système de fichiers basé sur LVM - ceci peut être fait avec le serveur entier toujours en place, et dans certains cas avec le FS monté, mais je ne risquerais jamais ce dernier sans des sauvegardes à jour et des commandes pré-testées sur un serveur équivalent (par exemple, un clone de récupération après sinistre du serveur de production).
lvextend
prennent en charge l' option-r
(--resizefs
). Si cette option est disponible, il s'agit d'un moyen plus sûr et plus rapide de redimensionner le volume minimal et le système de fichiers, en particulier si vous réduisez le système de fichiers, ce qui vous permet de sauter la plupart du temps cette section.resize2fs
pour ext3 et tolvextend
oulvreduce
. Sans grand soin, les tailles peuvent être légèrement différentes en raison de la différence entre 1 Go (10 ^ 9) et 1 Gio (2 ^ 30), ou de la manière dont les différents outils arrondissent les tailles vers le haut ou vers le bas.Il semble que la taille LV devrait être plus grande que la taille FS de 2 x la taille de l'étendue physique LVM - mais vérifiez le lien ci-dessus pour plus de détails, car la source de cette information ne fait pas autorité. Permettre souvent de 8 Mio suffit, mais il peut être préférable d’autoriser plus, par exemple 100 Mio ou 1 Gio, par sécurité. Pour vérifier la taille du PE et votre taille de volume logique + FS, utilisez 4 blocs de 4 Ko = 4096 octets:
Affiche la taille de PE en KiB:
vgdisplay --units k myVGname | grep "PE Size"
Taille de tous les LV:
lvs --units 4096b
Taille de (ext3) FS, suppose 4 KiB FS en blocs:
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 redimensionnez les FS requis, puis fera tout pour vous. Sur les serveurs, vous pouvez utiliser
parted
le shell.Les instantanés sont difficiles à utiliser, lents et bogués - si les instantanés manquent d'espace pré-alloué, ils sont automatiquement supprimés . 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 la capture instantanée de systèmes de fichiers avec une activité d'écriture importante (chaque instantané est plus volumineux que le précédent). Il est prudent de créer un LV instantané de la même taille que le LV d'origine, car l'instantané ne sera jamais à court d'espace libre.
Les instantanés peuvent également être très lents (3 à 6 fois plus lents que sans LVM pour ces tests MySQL ) - reportez-vous à cette réponse qui traite de divers problèmes d’instantané . La lenteur est en partie due au fait que les instantanés nécessitent de nombreuses écritures synchrones .
Les instantanés ont eu quelques bugs importants, par exemple, dans certains cas, ils peuvent ralentir le démarrage ou faire échouer complètement le démarrage (car le noyau peut attendre jusqu'à ce que le système racine soit en attente d'un instantané LVM [corrigé dans la
initramfs-tools
mise à jour de Debian , mars 2015] ).Alternatives aux instantanés - Systèmes de fichiers et hyperviseurs de machine virtuelle
Instantanés VM / cloud:
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 bare metal (mais ZFS semble beaucoup plus mature, il est plus compliqué à installer):
Instantanés pour les sauvegardes en ligne et fsck
Les instantanés peuvent être utilisés pour fournir une source cohérente pour les sauvegardes, tant que vous faites attention à l'espace alloué (idéalement, l'instantané a la même taille que le volume à sauvegarder sauvegardé). L'excellent rsnapshot (depuis la version 1.3.1) gère même la création / suppression d'instantanés LVM pour vous - voyez ce HOWTO sur rsnapshot utilisant LVM . Notez toutefois les problèmes généraux liés aux instantanés et qu’un instantané ne doit pas être considéré comme une sauvegarde en soi.
Vous pouvez également utiliser des instantanés LVM pour créer un fsck en ligne: instantané du LV et fsck de l'instantané, tout en utilisant le principal FS non instantané - décrit ici - cependant, ce n'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" temporairement le système de fichiers lors de la prise de l'instantané - certains systèmes de fichiers tels que ext3 et XFS le feront automatiquement lorsque LVM créera l'instantané.
Conclusions
Malgré tout, j’utilise toujours LVM sur certains systèmes, mais pour une configuration de bureau, je préfère les partitions brutes. Le principal avantage de LVM est la flexibilité du déplacement et du redimensionnement des systèmes de stockage lorsque la disponibilité sur un serveur doit être très longue. Sinon , gparted est plus facile et présente moins de risque de perte de données.
LVM requiert une grande attention lors de la configuration de la mise en cache en écriture en raison d'hyperviseurs de machine virtuelle, de la mise en cache d'écriture de disque dur / SSD, etc. - mais il en va de même pour l'utilisation de Linux en tant que serveur de base de données. Le manque de support de la plupart des outils (
gparted
y compris les calculs de taille critique,testdisk
etc.) rend son utilisation plus difficile qu’elle ne devrait être.Si vous utilisez LVM, soyez très prudent avec les instantanés: utilisez si possible des instantanés VM / cloud ou étudiez ZFS / btrfs pour éviter complètement LVM. Vous constaterez peut-être que ZFS ou btrs est suffisamment mature par rapport à LVM avec instantanés.
Conclusion: si vous ne connaissez pas les problèmes énumérés ci-dessus ni comment les résoudre, il est préférable de ne pas utiliser LVM.
la source
Je [+1] cet article, et du moins pour moi, je pense que la plupart des problèmes existent. Vous les avez vus en exécutant quelques 100 serveurs et quelques 100 To de données. Pour moi, le LVM2 sous Linux ressemble à une "idée intelligente" que quelqu'un a eue. Comme certains d'entre eux, ils se révèlent parfois "pas intelligents". C'est-à-dire que les états du noyau et de l'espace utilisateur (lvmtab) ne sont pas strictement séparés, il aurait peut-être semblé très intelligent de s'en passer, car il peut y avoir des problèmes de corruption (si le code n'est pas correct)
Eh bien, juste que cette séparation était là pour une raison - les différences montrent avec la gestion de la perte de PV, et la réactivation en ligne d'un VG avec des PV manquants pour les ramener en jeu. , HP-UX) tourne à la merde sur LVM2 car la gestion de l’état n’est pas suffisante. Et ne me faites même pas parler de détection de perte de quorum (haha) ou de gestion d’état (si je supprime un disque, il ne sera pas marqué comme indisponible. Il n’a même pas la colonne de statut foutu)
Re: la stabilité pvmove ... pourquoi est
un tel article sur mon blog, hmmm? En ce moment, je regarde un disque où les données phyiscal lvm sont toujours bloquées sur l'état à partir de mid-pvmove. Je pense qu'il y a eu des blocages de mémoire et l'idée générale que c'est une bonne chose de copier des données de bloc en direct à partir de l'espace utilisateur est tout simplement triste. Belle citation tirée de la liste lvm "cela ressemble à vgreduce --missing ne gère pas pvmove" Cela signifie en fait que si un disque se détache pendant pvmove, l’outil de gestion lvm passe de lvm à vi. Oh, il y a également un bogue qui fait que pvmove continue après une erreur de lecture / écriture de bloc et n'écrit plus en fait de données sur le périphérique cible. WTF?
Re: Snapshots Le programme de guerre se fait de manière non sécurisée, en mettant à jour les nouvelles données dans la zone de capture instantanée puis en les fusionnant une fois que vous avez supprimé la capture. Cela signifie que vous rencontrez de fortes pointes d'E / S lors de la fusion finale de nouvelles données dans le fichier LV d'origine et, ce qui est encore plus important, votre risque de corruption des données est bien plus élevé, mur, mais l'original.
L’avantage est la performance: faire 1 écriture au lieu de 3. Choisir l’algorithme rapide mais peu sûr attend évidemment de la part de personnes comme VMware et MS, sur "Unix", je préférerais que les choses soient "bien faites". Je ne voyais pas beaucoup de problèmes de performances tant que le magasin de sauvegarde d'instantané était sur un lecteur de disque différent de celui des données principales (et que la sauvegarde sur un autre bien sûr)
Re: Obstacles Je ne sais pas si on peut blâmer cela pour LVM. C'était un problème de devmapper, autant que je sache. Mais on peut reprocher de ne pas se soucier vraiment de ce problème depuis au moins le noyau 2.6 jusqu’en 2.6.33 AFAIK Xen est le seul hyperviseur qui utilise O_DIRECT pour les machines virtuelles. serait toujours en cache en utilisant cela. Virtualbox a au moins un paramètre pour désactiver des éléments tels que celui-ci et Qemu / KVM semble généralement permettre la mise en cache. Tous les systèmes FUSE FS rencontrent également des problèmes (pas de O_DIRECT)
Re: Tailles Je pense que LVM "arrondit" la taille affichée. Ou il utilise GiB. Quoi qu'il en soit, vous devez utiliser la taille VG Pe et la multiplier par le numéro LE du LV. Cela devrait donner la taille nette correcte, et ce problème est toujours un problème d'utilisation. Cela est aggravé par les systèmes de fichiers qui ne remarquent pas une telle chose pendant le montage de fsck / mount (hello, ext3) ou qui ne fonctionnent pas avec un "fsck -n" en ligne (hello, ext3)
Bien sûr, cela signifie que vous ne pouvez pas trouver de bonnes sources pour de telles informations. "combien de LE pour le VRA?" "quel est le décalage phyiscal pour PVRA, VGDA, ... etc"
Comparé à l'original, LVM2 est le meilleur exemple de "Ceux qui ne comprennent pas UNIX sont condamnés à le réinventer, mal."
Mise à jour quelques mois plus tard: le scénario "instantané complet" est déjà activé pour un test. S'ils sont pleins, l'instantané est bloqué et non le volume d'origine. Je me suis trompé la première fois que j'ai posté ceci. J'ai relevé des informations erronées dans un document, ou peut-être l'avais-je compris. Dans mes installations, j'avais toujours été très paranoïaque pour ne pas les laisser se remplir et je n'ai donc jamais été corrigé. Il est également possible d’agrandir / réduire les instantanés, ce qui est un régal.
Ce que je suis toujours incapable de résoudre, c'est comment identifier l'âge d'un instantané. En ce qui concerne leurs performances, la page du projet Fedora "thinp" contient une note indiquant que la technique de prise de vue instantanée est en cours de révision afin de ne pas ralentir à chaque prise de vue instantanée. Je ne sais pas comment ils l'appliquent.
la source
Si vous envisagez d'utiliser des instantanés pour les sauvegardes, préparez-vous à subir un impact majeur sur les performances lorsqu'un instantané est présent. lisez plus ici . sinon c'est tout bon. J'utilise LVM en production depuis quelques années sur des dizaines de serveurs, bien que ma principale raison de l'utiliser est la capture instantanée atomique et non la capacité à développer facilement des volumes.
Au fait, si vous allez utiliser un disque de 1 To, n'oubliez pas d'alignement de partition - ce disque a probablement 4 ko de secteurs physiques.
la source
Adam,
Un autre avantage: vous pouvez ajouter un nouveau volume physique (PV), déplacer toutes les données vers ce PV, puis supprimer l’ancien PV sans interruption de service. J'ai utilisé cette capacité au moins quatre fois au cours des cinq dernières années.
Un inconvénient que je n'ai pas vu clairement signalé pour l'instant: la courbe d'apprentissage de LVM2 est un peu raide. Surtout dans l'abstraction qu'il crée entre vos fichiers et le support sous-jacent. Si vous travaillez avec seulement quelques personnes qui partagent des tâches sur un ensemble de serveurs, vous constaterez peut-être que la complexité supplémentaire est écrasante pour votre équipe dans son ensemble. Les grandes équipes dédiées au travail informatique n'auront généralement pas un tel problème.
Par exemple, nous l’utilisons beaucoup ici dans mon travail et avons pris le temps d’enseigner à l’ensemble de l’équipe les bases, le langage et les bases essentielles sur la restauration de systèmes qui ne démarrent pas correctement.
Une mise en garde spécifique à souligner: si vous démarrez à partir d'un volume logique LVM2, il est difficile de trouver des opérations de récupération lorsque le serveur tombe en panne. Knoppix et ses amis ne disposent pas toujours du matériel adéquat pour cela. Nous avons donc décidé que notre répertoire / boot serait sur sa propre partition et serait toujours petit et natif.
Globalement, je suis fan de LVM2.
la source
/boot
séparé est toujours une bonne idéevgchange -ay
pour trouver les volumes LVM.