Instantanés LVM comme stratégie de sauvegarde

17

Dans quelle mesure une stratégie de sauvegarde serait-elle viable? Des instantanés LVM périodiques des xU domU? Avantages, inconvénients, aucun problème?

Cela me semble être la solution parfaite pour une restauration rapide et sans cervelle. Toute enquête pourrait avoir lieu sur le volume logique rompu avec domU fonctionnant avec succès sans interruption.

ÉDITER:

Voici où j'en suis maintenant, lorsque je fais des sauvegardes complètes du système.

  • Instantané lvm du disque domU
  • un nouveau volume logique dont la taille est égale à la taille de l'instantané.
  • dd if = / dev / snapshot of = / dev / new_lv
  • suppression de l'instantané avec lvremove
  • vérification facultative avec kpartx / mount / ls

Maintenant, je dois automatiser cela.

Karolis T.
la source

Réponses:

32

Les instantanés LVM sont destinés à capturer le système de fichiers dans un état figé. Ils ne sont pas censés être une sauvegarde en soi. Ils sont cependant utiles pour obtenir des images de sauvegarde cohérentes car l'image figée ne peut pas et ne changera pas pendant le processus de sauvegarde. Ainsi, bien que vous ne les utilisiez pas directement pour effectuer des sauvegardes à long terme, ils seront d'une grande valeur dans tout processus de sauvegarde que vous décidez d'utiliser.

Il existe quelques étapes pour implémenter un instantané. La première est qu'un nouveau volume logique doit être alloué. Le but de ce volume est de fournir une zone où les deltas (modifications) du système de fichiers sont enregistrés. Cela permet au volume d'origine de continuer sans interrompre l'accès en lecture / écriture existant. L'inconvénient est que la zone d'instantané est de taille finie, ce qui signifie que sur un système avec des écritures occupées, elle peut se remplir assez rapidement. Pour les volumes qui ont une activité d'écriture importante, vous souhaiterez augmenter la taille de votre instantané pour laisser suffisamment d'espace pour que toutes les modifications soient enregistrées. Si votre instantané déborde (se remplit), l'instantané s'arrêtera et sera marqué comme inutilisable. Si cela se produit, vous souhaiterez libérer votre instantané afin de pouvoir remettre le volume d'origine en ligne. Une fois la sortie terminée, vous '

La deuxième chose qui se produit est que LVM «échange» désormais les véritables objectifs des volumes en question. On pourrait penser que l'instantané nouvellement alloué serait l'endroit idéal pour rechercher des modifications dans le système de fichiers, après tout, c'est là que toutes les écritures vont, non? Non, c'est l'inverse. Les systèmes de fichiers sont montés sur des noms de volume LVM , donc échanger le nom sous le reste du système serait un non-non (car l'instantané utilise un nom différent ). La solution ici est donc simple: lorsque vous accédez au nom du volume d'origine, il continue de faire référence à la version live (lecture / écriture) du volume dont vous avez fait l'instantané. Le volume d'instantanés que vous créez fera référence au volume figé(en lecture seule) la version du volume que vous souhaitez sauvegarder. Un peu déroutant au début, mais cela aura du sens.

Tout cela se produit en moins de 2 secondes. Le reste du système ne s'en rend même pas compte. À moins, bien sûr, que vous ne libériez pas l'instantané avant qu'il ne déborde ...

À un moment donné, vous souhaiterez libérer votre instantané pour récupérer l'espace qu'il occupe. Une fois la libération terminée, le volume d'instantané est libéré dans le volume et l'original reste.

Je ne recommande pas de poursuivre cela comme une stratégie de sauvegarde à long terme. Vous hébergez toujours des données sur le même disque physique qui peut échouer, et la récupération de votre système de fichiers à partir d'un disque en panne n'est pas du tout une sauvegarde.

Donc, en bref:

  • Les instantanés sont utiles pour aider les sauvegardes
  • Les instantanés ne sont pas, en soi, une forme de sauvegarde
  • Les instantanés ne durent pas éternellement
  • Un instantané complet n'est pas une bonne chose
  • Les instantanés doivent être publiés à un moment donné
  • LVM est votre ami, si vous l'utilisez à bon escient.
Avery Payne
la source
4
De plus, les performances des instantanés LVM se dégradent linéairement - 8 instantanés 8 fois les E / S.
Steven
9
Il y a quelques points dans votre description qui je pense sont incorrects. Dans les versions actuelles de LVM, si un instantané est plein, il est simplement marqué comme inutilisable et doit être supprimé. Les E / S sur le périphérique ne sont pas interrompues. Deuxièmement, lorsque vous supprimez un instantané, aucune donnée n'est copiée sur le volume d'origine. Essentiellement, lorsque vous écrivez sur le volume en direct, les blocs d'origine sont d'abord copiés dans l'instantané, puis les blocs en direct sont mis à jour. Ensuite, lorsque vous déposez l'instantané, il suffit de supprimer l'entrée du mappeur de périphériques. Aucune copie requise.
Kamil Kisiel
2
Dans un souci d'exhaustivité, Kamil Kisiel a raison. Voir: tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html
ktower
1
Après beaucoup de grognement contre moi-même pour avoir été mal informé, la réponse a été modifiée en fonction de plusieurs sources de documentation et de discussion. Désolé les gars, mon mauvais.
Avery Payne du
10

Les instantanés LVM sont parfaits pour pouvoir sauvegarder votre serveur sans le mettre hors ligne. Comme indiqué, les instantanés LVM sont des copies presque instantanées. Vous les créez en utilisant la lvcreatecommande comme vous le feriez pour créer le LV lui-même, seulement vous lui donnez l' --snapshotoption et le LV d'origine au lieu du VG. Par exemple:

lvcreate -L <LV size> -s -n <snapshot name> /dev/<VG name>/<LV name>

Cela créera un instantané du LV donné avec le nom d'instantané spécifié que vous pouvez ensuite monter et utiliser ce instantané LV pour effectuer votre sauvegarde sans vous soucier des fichiers utilisés activement. Cela est particulièrement utile si vous essayez de sauvegarder un serveur de base de données actif.

Une fois que vous avez terminé la sauvegarde à partir de l'instantané, vous souhaitez le supprimer pour réduire toute surcharge d'E / S supplémentaire ou d'autres problèmes de performances, comme d'autres l'ont mentionné en utilisant:

lvremove /dev/<VG name>/<snapshot name>

Bien que les instantanés LVM puissent être inestimables pour produire une sauvegarde fiable de systèmes tels que des bases de données et que vous souhaitiez normalement arrêter la sauvegarde pour éviter les conflits de fichiers, ils ne sont pas idéaux pour un fonctionnement à long terme comme une restauration rapide.

Jeremy Bouse
la source
9

Pas une bonne idée, OMI.

Les instantanés sont implémentés de manière copie sur écriture, vous transformez donc chaque écriture en lecture et en deux écritures (le bloc vers lequel vous effectuez la mise à jour est d'abord lu depuis le volume principal et stocké dans le volume de l'instantané avant que de nouvelles données ne soient placées sa place), vous verrez donc une certaine dégradation des performances si beaucoup d'écriture est courante sur les machines virtuelles.

De plus, IIRC, si le volume d'instantanés est plein, il est simplement supprimé sans cérémonie. Ce n'est pas bon à des fins de sauvegarde! Donc, si vous essayez cela comme méthode de sauvegarde, assurez-vous que le volume de l'instantané est suffisamment grand pour gérer toutes les modifications qui se produiront pendant la durée de vie utile de l'instantané. Bien sûr, si vous connaissez et surveillez le problème de taille et que le problème de performances ne vous pose pas de problème, ce que vous proposez pourrait apporter un complément utile aux autres processus de sauvegarde que vous avez en place.

Les instantanés LVM sont très utiles dans le cadre d'un processus de sauvegarde (prendre un instantané, sauvegarder l'instantané ailleurs pour garantir que la sauvegarde est cohérente sans avoir à désactiver les mises à jour du "vrai" volume, supprimer l'instantané par la suite), entre autres choses, mais ne sont pas conçus comme une installation de sauvegarde en soi.

David Spillett
la source
Peut-être que je ne comprends pas comment fonctionnent les instantanés. Le manuel indique qu'un instantané est une copie presque instantanée du volume logique, évitant d'avoir à déconnecter le système qui l'utilise. D'après votre description, il semblerait qu'un instantané soit davantage une branche, une réplique plutôt qu'une copie figée. L'instantané est-il mis à jour avec toutes les modifications apportées dans le système d'origine une fois qu'il a été effectué? Si c'est le cas, je dois en retirer immédiatement les données et détruire l'instantané, car il n'est pas conçu comme un mécanisme de stockage pour les sauvegardes? Merci!
Karolis T.
2
Il s'agit d'une copie figée du volume à partir duquel il est créé, mais ne contient que des blocs qui ont changé depuis la prise de l'instantané (par conséquent, le volume de l'instantané peut être beaucoup plus petit que le volume dont il est un instantané). Si les blocs sont mis à jour dans le volume en direct, le contenu des blocs d'origine est ajouté au stockage de l'instantané. Ainsi, lorsque vous regardez l'instantané, LVM peut servir les blocs d'origine au lieu de ceux mis à jour.
David Spillett
Mais s'il a changé (l'instantané), d'où vient ce "gelé"? Disons que j'ai ce scénario, un système qui fonctionne est en quelque sorte corrompu au fil du temps. J'en ai un aperçu lorsqu'il fonctionnait correctement. L'instantané sera-t-il une représentation du système alors qu'il fonctionnait encore correctement, ou aura-t-il les changements qui ont corrompu le système d'origine en premier lieu? J'espère que je suis assez clair, je veux juste être sûr de bien le comprendre.
Karolis T.
Pour comprendre d'où vient gelé, réalisez que vous avez maintenant deux volumes distincts - l'original qui contient le système de fichiers actif et l'instantané, qui change la version gelée du système de fichiers. Voir ma réponse pour plus de détails.
Avery Payne
1
Vous, les gens ont l'air plus compliqué que ça. L'instantané stocke l'état du système de fichiers source tel qu'il était lors de la création de l'instantané. Lorsque le fs source change, l'instantané ne change pas, vous permettant de pointer votre programme de sauvegarde pour lire à partir de l'instantané au lieu du fs source. Oui, une copie sur écriture se produit derrière les écrans, mais l'utilisateur ne le remarque pas, sauf pour une utilisation d'E / S supplémentaire.
Martijn Heemels
6

Vous devrez vous assurer que les données sur le disque sont dans un état cohérent avant la création de l'instantané. Par exemple, mysql peut avoir des données en cache qui doivent être forcées sur le disque, soit en vidant la base de données, soit en la fermant. Consultez les manuels de vos applications pour plus de détails.

pgs
la source
5

Sous les trucs intelligents, les LVM ne sont en fait «qu'un» truc de mappage de périphérique. Créer un instantané avec lvcreate n'est pas beaucoup plus qu'un wrapper pour certains trucs dmsetup. L'encapsuleur crée un nouveau périphérique (le volume d'instantané) à partir d'un ancien volume (le volume d'origine) et d'un nouveau (le volume de copie sur écriture). Parallèlement à cela, le LV d'origine est renommé en -real (voir ci-dessous, qui est la sortie de dmsetup ls --tree). Ce LV réel est mappé à la fois au volume d'instantané et au volume d'origine, il peut donc être utilisé aux deux endroits. Le volume de copie sur écriture fonctionne comme une superposition au LV réel. Le -snap LV vous montre la combinaison du volume de copie sur écriture et du volume -real. Cela crée en effet une surcharge de performances.

Volume00-snap (253:11)
 |-Volume00-snap-cow (253:13)
 |  `- (104:2)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Volume00-LogVol01 (253:5)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Lors de la suppression de l'instantané, une nouvelle opération de changement de nom et de mappage se produit. Ensuite, la situation ressemblera à nouveau à quelque chose

Volume00-LogVol01 (253:5)
 `- (104:2)

En ce qui concerne la façon dont il s'agit d'une bonne méthode de sauvegarde: cela peut être, si vous en tenez compte, cela (1) n'aidera pas la RAM des machines virtuelles, (2) créera une pénalité de performance et (3) vous aurez besoin pour stocker des images de l'instantané ailleurs.

VMware VCB fonctionne également avec les instantanés, entre autres, mais pas avec LVM.

wzzrd
la source
4

Même si les instantanés n'ont eu aucun impact sur les performances, vous devez comprendre: les instantanés ne sont pas plus une sauvegarde qu'une copie vers un autre dossier sur le même disque.

Si le disque freine, vos données et votre sauvegarde sont perdues. Même si vous affectez la zone d'instantané à un autre PE dans le VG, elle ne contient que les données modifiées depuis l'instantané.

La sauvegarde signifie une copie au moins sur un lecteur complètement séparé comme exigence minimale.

Sven
la source
Oui, je comprends ça. RAID 1 est en place pour protéger contre les pannes des périphériques de stockage, la sauvegarde vers un emplacement distant - contre la corruption de logiciels. J'envisage les instantanés LVM comme un outil pour une restauration VRAIMENT rapide lorsque vous ne savez pas ce qui s'est passé et que vous avez besoin du système en ligne maintenant. D'autres options, plus rapides que la restauration d'un domU à partir d'une sauvegarde LVM?
Karolis T.
3

j'utilise une telle configuration pour des instantanés de machines serveur vmware et de bases de données mysql. fonctionne bien jusqu'à présent. il y a eu quelques restaurations - toutes sans problème. une chose à considérer - lors de l'exécution avec snapshot lvm obtient des performances significatives pour les opérations d'E / S. regardez ici . ignorer le fait qu'ils parlent de mysql, les ops d'E / S sont des ops d'E / S ... quel que soit le type de données sur lvm.

pQd
la source
1
aha. oui - je suppose que l'instantané sera pris et exporté vers un serveur de stockage distant. pas laissé sur l'hôte local.
pQd
2

J'utilise des instantanés lvm uniquement pour copier le DomU Lv un autre dans un Vg séparé, où chaque domaine a trois «nœuds» de sauvegarde à disposition.

Après cela, l'instantané est détruit et les niveaux de sauvegarde restent jusqu'au prochain tour. Si j'ai une restauration à faire, je dois juste choisir un Lv source dans le Vg de sauvegarde et le copier dans le Lv du domaine.

De temps en temps, un Lv de sauvegarde est transféré dans un fichier image sur un serveur séparé.

Tout cela est automatisé via un script, avec une sauvegarde tous les deux jours et un vidage chaque semaine.

J'avais même en tête un mode "panique", où le Domain Lv serait restauré mais exécuté à partir d'un instantané, et réinitialisé toutes les 2 heures, pour garder le site en ligne en cas de piratages graves, jusqu'à ce qu'une défense appropriée puisse être organisée .

Berzemus
la source
1

Qu'est devenue l'idée de la ligne de défense du «mode panique»?

NginUS
la source