Je suis sur le point d'effectuer une mise à niveau expérimentale sur mon serveur CentOS 5. Si la mise à niveau échoue, je veux pouvoir annuler les modifications apportées au système de fichiers. Ce scénario semble similaire à l'exemple de la section 3.8 du LVM HOWTO pour les instantanés de lecture-écriture LVM2 - mais l'exemple manque plutôt dans le mode d'emploi réel.
Comment puis-je valider les modifications, les fusionner à nouveau dans la partition d'origine?
Comment pourrais-je rétablir les modifications et restaurer le système de fichiers à son état d'origine? Dois-je supposer que je devrai redémarrer plusieurs services, sinon un redémarrage pur et simple?
Est-il possible d'instantaner uniquement certains répertoires sur une partition, ou s'agit-il d'une opération à l'échelle de la partition?
dmsetup targets
devrait afficher la fusion-capture si c'est le cas, la commande de fusion, appliquée à la capture-lv, reviendra à l'état où la capture a été prise.Je viens d'essayer une mise à niveau basée sur un instantané avec Ubuntu. Et oui, j'ai dû redémarrer plusieurs fois. Renommez d'abord le root-lv d'origine en quelque chose d'autre, afin que vous puissiez donner à l'instantané le nom d'origine (car une mise à niveau crée beaucoup de changements et les changements sont plus rapides sur l'instantané que sur l'original):
La taille doit être choisie de manière appropriée. Redémarrez ensuite, afin que le «nouveau» lvm / ubuntu soit monté en tant que root et que vous puissiez effectuer la mise à niveau. Vous pouvez maintenant tester la nouvelle version et même passer à l'ancien système en
Si vous souhaitez supprimer la mise à niveau, exécutez simplement (à partir de l'ancien système)
Si vous souhaitez valider les modifications, exécutez simplement (à partir de l'ancien système)
ou, du nouveau système
suivi d'un redémarrage. Le système refusera de faire la fusion immédiatement, car les volumes sont ouverts. La fusion sera donc lancée pendant le démarrage et poursuivie pendant que vous pouvez déjà travailler avec le système.
Oh, et au fait: lorsque vous passez d'un système à l'autre, n'oubliez pas d'utiliser le noyau approprié. Puisque / boot ne fait pas partie de lvm, l'ancien et le nouveau noyau y seraient placés côte à côte.
la source
Ok, je pense l'avoir compris en relisant le HOWTO 3.8.
Le fonctionnement d'un instantané est un ensemble de modifications au niveau du bloc par rapport à l'original. Ainsi, lorsque l'original est écrit, les choses suivantes se produisent:
Donc, jeter le cliché n'affectera pas du tout l'original - car l'original a été modifié et le cliché contenait juste une liste de ces modifications.
Répondre à ma propre question:
Créez un nouvel instantané avec LVM. Si la mise à jour peut être configurée pour écrire sur le point de montage de l'instantané, utilisez un instantané R / W. Sinon, RO ou R / W feront l'affaire.
Alors:
Je n'ai toujours pas trouvé d'outil spécifiquement pour effectuer cette fusion - et, étant donné que mon scénario n'est pas exactement l'utilisation prévue des instantanés, il n'y en a peut-être pas. Cela ressemble à un travail pour rdiff.
la source
lvconvert --merge <snapshot-name>
"restaurera" votre disque d'origine sur cet instantané et supprimera cet instantané. Vous pouvez bien sûr le restaurer rapidement tout de suite.LVM fonctionne au niveau du bloc. Il «ne sait même pas» ce qu'est un système de fichiers. Vous ne pouvez donc pas créer d'instantanés uniquement certains répertoires, sauf si un système de fichiers d'un volume LVM différent y est monté.
Lorsque vous créez un instantané LVM, vous demandez en fait une copie en copie sur un volume. Tout bloc qui serait modifié sur le volume instantané sera d'abord stocké non modifié dans l'instantané. Donc, pour «valider les changements», vous n'avez rien à faire. Retirez simplement le volume de l'instantané.
Je ne sais pas vraiment quelle est la méthode recommandée pour «annuler les modifications», car je n'ai jamais utilisé LVM dans un tel scénario, mais je suppose que cela est bien décrit dans la documentation LVM quelque part. Quoi qu'il en soit, vous devrez probablement redémarrer tout ce qui a été modifié, un redémarrage peut être une bonne idée.
la source
lvconvert --merge <snapshot name>
Instantané «geler» l'état d'origine du LV. Supprimer l'instantané signifie oublier cet état. Fusionner l'instantané signifie revenir à cet état
Mais à l'intérieur de LVM, il enregistre les données réécrites dans l'instantané: assurez-vous que la taille de l'instantané correspond à la quantité attendue de changements sur LV et l'instantané
la source
La documentation est déroutante. Il me semble que lvcreate --merge signifie annuler toutes les modifications et lvremove signifie valider les modifications. La distinction réside dans la façon dont vous l'utilisez.
Dans la plupart des cas, vous utilisez simplement l'instantané comme une copie figée en temps réel du volume en direct, et le volume en direct change constamment. Dans ce cas, si vous fusionnez, cela signifierait logiquement que vous allez écraser le volume en direct avec la copie figée, ou en d'autres termes, fusionner signifie annuler les modifications et supprimer signifie valider les modifications.
Si vous écrivez sur l'instantané (une nouvelle option avec LVM2), ce qui n'est pas le comportement par défaut, il semble, et nécessite probablement de changer la configuration ailleurs pour que les applications écrivent sur l'instantané au lieu du volume d'origine, alors l'inverse serait vrai.
Soyez prudent lorsque vous traitez des instantanés, car certaines personnes supposeront que vous avez l'intention de les utiliser dans un sens et vous donneront des instructions qui pourraient détruire votre système si vous opérez dans l'hypothèse inverse!
la source