Est-ce ainsi que fonctionnent les instantanés LVM?

19

J'essaie de comprendre comment les instantanés LVM fonctionnent pour que je puisse l'implémenter sur mon serveur de fichiers, mais j'ai du mal à trouver quoi que ce soit sur Google qui explique comment cela fonctionne, plutôt que comment l'utiliser pour un système de sauvegarde de base.

D'après ce que j'ai lu, je pense que cela fonctionne quelque chose comme ceci:

  • Vous avez un LVM avec une partition principale et beaucoup, beaucoup d'espace libre non alloué pas dans la partition
  • Ensuite, vous prenez un instantané et le montez sur un nouveau volume logique. Les instantanés sont censés avoir des changements, donc ce premier instantané serait une copie entière, n'est-ce pas?
  • Ensuite, le lendemain, vous prenez un autre instantané (la taille de la partition de celui-ci ne doit pas être si grande) et le montez.
  • D'une manière ou d'une autre, le LVM garde la trace des instantanés et ne stocke pas les bits inchangés sur le volume principal.
  • Ensuite, vous décidez que vous avez suffisamment d'instantanés et vous débarrassez du premier. Je n'ai aucune idée de comment cela fonctionne ou comment cela affecterait le prochain instantané.

Quelqu'un peut-il me corriger là où je me trompe. Au mieux, je suppose, je ne trouve rien sur google.


vgdiplay

obu1: / home / prison / home / qps / backup / D # vgdisplay
  --- Groupe de volume ---
  VG Name fileserverLVM
  ID système
  Format lvm2
  Zones de métadonnées 1
  Séquence de métadonnées n ° 3
  VG Access lecture / écriture
  Statut VG redimensionnable
  MAX LV 0
  Cur LV 2
  Ouvrir LV 2
  PV max 0
  Cur PV 1
  Acte PV 1
  VG Taille 931,51 Go
  Taille PE 4,00 MB
  Total PE 238467
  Alloc PE / Taille 238336 / 931.00 GB
  PE libre / Taille 131/524,00 Mo
  VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU
Malfist
la source

Réponses:

30

Pourquoi ne pas jeter un œil à la section des instantanés du LVM-HOWTO ?

Les snapshots LVM sont votre solution de snapshot de base "copie sur écriture". L'instantané n'est rien de plus que de demander au LVM de vous donner un "pointeur" sur l'état actuel du système de fichiers et d'écrire les modifications apportées après l'instantané dans une zone désignée.

Les instantanés LVM "en direct" à l'intérieur du groupe de volumes hébergeant le volume sujet à l'instantané - pas un autre volume. Votre déclaration "... beaucoup, beaucoup d'espace libre non alloué, pas la partition" donne l'impression que vos instantanés "vivent" en dehors du groupe de volumes soumis à l'instantané, et ce n'est pas exact. Votre groupe de volumes réside dans une partition de disque dur et le volume est sujet à un instantané et à tous les clichés que vous avez pris en direct dans ce groupe de volumes.

La manière normale d'utiliser les instantanés LVM n'est pas pour le stockage à long terme, mais plutôt pour obtenir une "image" cohérente du système de fichiers de sorte qu'une sauvegarde puisse être prise. Une fois la sauvegarde terminée, l'instantané est supprimé.

Lorsque vous créez un instantané LVM, vous désignez une quantité d'espace pour contenir toutes les modifications apportées pendant que l'instantané est actif. Si plus de modifications sont apportées que l'espace que vous avez désigné, l'instantané devient inutilisable et doit être supprimé. Vous ne voulez pas laisser des instantanés car (a) ils se remplissent et deviennent inutilisables, et (b) les performances du système sont affectées pendant qu'un instantané est actif - les choses ralentissent.

Éditer:

Les services Microsoft Volume Shadow Copy Services et les instantanés LVM ne sont pas trop différents. La solution de Microsoft est un peu plus complète (comme c'est généralement le cas avec Microsoft - pour le meilleur ou pour le pire, leurs outils et produits cherchent souvent à résoudre des problèmes assez importants plutôt que de se concentrer sur une chose).

VSS est une solution plus complète qui unifie la prise en charge des périphériques matériels qui prennent en charge les instantanés et les instantanés logiciels en une seule API. De plus, VSS possède des API pour permettre la mise au repos des applications via les API d'instantanés, tandis que les instantanés LVM ne concernent que les instantanés - toute application en attente est votre problème (mettre les bases de données dans des états de «sauvegarde», etc.).

Evan Anderson
la source
1
Ce n'est donc pas vraiment calqué sur le Volume Shadow Copy (VSS), car ce n'est pas ainsi que VSS fonctionne?
Malfist le
Cela a beaucoup plus de sens.
Malfist
1
Je pense que vous comprenez quelque peu les instantanés LVM. Les instantanés LVM créent des périphériques "virtuels" montés comme des volumes autonomes, mais ils ne sont pas en fait des "partitions". Les instantanés LVM "vivent" dans le volume soumis à l'instantané, tout comme les instantanés VSS.
Evan Anderson
1
Pourriez-vous préciser où vont les données mises à jour pendant qu'un instantané est actif? au LV principal et l'instantané stocke une copie de l'ancien bloc? ou au LV instantané alors que le LV principal reste intact?
Benoît
1
@benoit le lien dans la première ligne de la réponse couvre cela. Lisez la note sur le comportement des instantanés en lecture seule de LVM1 et je pense que vous aurez votre réponse. (C'est la première approche que vous décrivez, pas la seconde.)
Peter Hansen
28

Les clichés LVM sont un exemple de solution de cliché de copie sur écriture, comme l'a dit Evan. Son fonctionnement est un peu différent de celui d'Evan, mais pas du tout.

Lorsque vous avez un volume LVM sans instantanés, les écritures sur le volume se produisent comme vous vous y attendez. Un bloc est changé, et c'est tout.

Dès que vous créez un instantané, LVM crée un pool de blocs. Ce pool contient également une copie complète des métadonnées LVM du volume. Lorsque des écritures se produisent sur le volume principal, telles que la mise à jour d'un inode, le bloc en cours d'écrasement est copié dans ce nouveau pool et le nouveau bloc est écrit sur le volume principal. Il s'agit de la «copie sur écriture». De ce fait, plus il y a de données échangées entre le moment où un instantané a été pris et l'état actuel du volume principal, plus l'espace sera consommé par ce pool d'instantanés.

Lorsque vous montez l'instantané, les métadonnées écrites lorsque l'instantané a été pris permettent le mappage des blocs de pool d'instantanés sur les blocs modifiés dans le volume (ou instantané de niveau supérieur). De cette façon, lorsqu'un accès vient pour un bloc spécifique, LVM sait quel bloc d'accès. En ce qui concerne le système de fichiers sur ce volume, il n'y a pas d'instantanés.

James a souligné l'un des défauts de ce système. Lorsque vous avez plusieurs instantanés du même volume, chaque fois que vous écrivez dans un bloc du volume principal, vous pouvez potentiellement déclencher des écritures dans chaque instantané. En effet, chaque instantané conserve son propre pool de blocs modifiés. De plus, pour les longues arborescences d'instantanés, l'accès à un instantané peut entraîner un certain nombre de calculs sur le serveur pour déterminer quel bloc exact doit être servi pour un accès.

Lorsque vous disposez d'un instantané, LVM supprime simplement le pool d'instantanés et met à jour l'arborescence d'instantanés selon les besoins. Si l'instantané supprimé fait partie d'une arborescence d'instantanés, certains blocs seront copiés dans un instantané de niveau inférieur. S'il s'agit de l'instantané le plus bas (ou le seul), le pool est simplement supprimé et l'opération est très rapide.


Certains systèmes de fichiers offrent des instantanés dans le système de fichiers, ZFS et BTRFS ne sont que deux des plus connus. Ils fonctionnent de manière similaire, bien que le système de fichiers gère lui-même le mappage modifié / inchangé. C'est sans doute une meilleure façon de le faire, car vous pouvez fsck une famille entière d'instantanés pour la cohérence, ce que vous ne pouvez pas faire avec LVM directement.

sysadmin1138
la source
Merci pour cette explication détaillée. Désolé que je ne sache pas "En ce qui concerne le système de fichiers sur ce volume, il n'y a pas d'instantanés." Pourriez-vous expliquer davantage ce que cela signifie? Très apprécié pour toute réponse ~
Carr
2
@Carr Cela signifie que les instantanés sont entièrement gérés en dehors du système de fichiers. D'autres systèmes de fichiers qui ont une capacité d'instantané intégrée, comme BTRFS et XFS, ont un concept d'instantanés et vous ne devriez pas utiliser d'instantanés LVM avec ces systèmes.
sysadmin1138
@ sysadmin1138 Je suis curieux de connaître les instantanés intégrés avec XFS que vous avez mentionnés, à des fins de vérification de cohérence / réparation de FS. J'ai un XFS FS multi-TB qui est tombé en panne et je veux le vérifier / le réparer, sans le mettre hors ligne (des centaines d'utilisateurs, ne peuvent pas se déconnecter pendant des heures). Je pense à créer un instantané XFS puis à exécuter fsck dessus pour trouver / corriger les erreurs pendant que le système de fichiers en direct est maintenu en ligne, puis si le correctif est effectué, permutez avec le système de fichiers en direct. Un instantané XFS serait-il meilleur à cet effet qu'un instantané LVM?
Ján Lalinský
2

Vous ne spécifiez pas si vous utilisez Linux ou HP-UX. Dans HP-UX, vous créez un volume logique et le montez comme un instantané d'un autre volume logique. Sous Linux, vous créez un volume logique en tant que volume d'instantané.

La suppression d'un instantané dans HP-UX se fait en démontant le volume; sous Linux, cela se fait en utilisant lvremove pour supprimer le volume logique.

Dans tous les cas, les modifications sont la seule chose qui est stockée sur votre instantané. Plus l'instantané reste disponible, plus il stocke de modifications - et il est possible qu'il se remplisse s'il n'est pas correctement dimensionné ou publié.

La vitesse d'accès au disque sur un volume d'instantané est plus lente qu'elle ne le serait pour un volume normal; vous devez en tenir compte.

Mei
la source
1

Les instantanés LVM sont inefficaces, plus il y a d'instantanés, plus le système ralentit.

Je ne supporte que xfs car c'est ce que nous utilisons et xfs_freeze peut être utilisé pour interrompre un nouvel accès au système de fichiers et crée une image stable sur le disque.

La copie lors de l'écriture est utilisée afin que l'espace disque soit utilisé efficacement.

Vous avez créé un système de fichiers dans un volume logique qui contient de l'espace libre pour les instantanés.

Ceci est un exemple de la FAQ

James
la source