<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.sn4ky.net/index.php?action=history&amp;feed=atom&amp;title=Rollback_d%27un_Snapshot</id>
	<title>Rollback d&#039;un Snapshot - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sn4ky.net/index.php?action=history&amp;feed=atom&amp;title=Rollback_d%27un_Snapshot"/>
	<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Rollback_d%27un_Snapshot&amp;action=history"/>
	<updated>2026-05-06T13:18:16Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Rollback_d%27un_Snapshot&amp;diff=7&amp;oldid=prev</id>
		<title>Sn4kY : Page créée avec « __NOTOC__ Utiliser les snapshots de LVM c&#039;est bien, savoir comment procéder à son rollback, c&#039;est encore mieux. La plupart des distribs Linux ne fournissent pas d&#039;option... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Rollback_d%27un_Snapshot&amp;diff=7&amp;oldid=prev"/>
		<updated>2018-04-12T13:57:22Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « __NOTOC__ Utiliser les snapshots de LVM c&amp;#039;est bien, savoir comment procéder à son rollback, c&amp;#039;est encore mieux. La plupart des distribs Linux ne fournissent pas d&amp;#039;option... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
Utiliser les snapshots de LVM c&amp;#039;est bien, savoir comment procéder à son rollback, c&amp;#039;est encore mieux.&lt;br /&gt;
La plupart des distribs Linux ne fournissent pas d&amp;#039;options aux commandes &amp;lt;code&amp;gt;lv&amp;lt;/code&amp;gt; pour rollbacker avec un snapshot.&lt;br /&gt;
Cette option est particulièrement intéressante lorsqu&amp;#039;on fait de la virtualisation, et qu&amp;#039;on veut pouvoir procéder au rollback des VM, installées sur des LV.&lt;br /&gt;
&lt;br /&gt;
Pour faire ce &amp;#039;retour au snapshot&amp;#039;, nous allons utiliser ici un tool non standard et quelques commandes dmsetup. Cet utilitaire s&amp;#039;appelle dm-merge. Vous devez le télécharger et le compiler depuis son [http://repo.or.cz/w/dm-merge.git repository git] ou [http://repo.or.cz/w/dm-merge.git?a=snapshot;h=HEAD;sf=tgz télécharger le dernier snapshot]. Le principe de fonctionnement de dm-merge est simple : il remplace les blocks modifiés par ceux présent dans le snapshot. Il faut le compiler (un make suffit). La doc indique qu&amp;#039;il y a deux méthodes possibles : rollbacker sur un volume logique actif, ou inactif. Le premier cas permet de revenir sur un cliché instantané lorsque le système de fichiers est encore monté. C&amp;#039;est surement une très mauvaise idée. La méthode sur système inactif est beaucoup plus sure !&lt;br /&gt;
&lt;br /&gt;
Attention, cette procédure est un peu funky tout de même, je vous conseille de procéder sur un LV de test d&amp;#039;abord !&lt;br /&gt;
&lt;br /&gt;
Dans l&amp;#039;exemple, j&amp;#039;ai un LV nommé /dev/myvg/win2008 (oui, cette procédure m&amp;#039;as permis de rollbacker souvent une VM crash test windows 2008), bien évidemment, j&amp;#039;avais créé un snapshot &amp;#039;snap1&amp;#039; avant de crasher ma VM.&lt;br /&gt;
 lvcreate --size 1G --snapshot --name snap1 /dev/myvg/win2008&lt;br /&gt;
&lt;br /&gt;
Chose intéressante, il est possible de modifier la taille du snapshot sans compromettre celui-ci : &amp;lt;code&amp;gt;lvresize -L 20G /dev/myvg/snap1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
J&amp;#039;ai utilisé la méthode sur un volume LVM inactif, mais j&amp;#039;imagine qu&amp;#039;il en est de même sur le LVM d&amp;#039;une VM qui as été simplement shutdown (LV &amp;#039;actif&amp;#039; d&amp;#039;un point de vue LVM, mais inutilisé)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Stopper l&amp;#039;accès au volume logique==&lt;br /&gt;
(ie. /dev/myvg/win2008)&lt;br /&gt;
&lt;br /&gt;
Puisque c&amp;#039;est une VM, j&amp;#039;ai juste besoin de shutdown la VM (ou destroy, peu importe). Sinon, démontez votre lv &amp;lt;code&amp;gt;umount /dev/myvg/win2008&amp;lt;/code&amp;gt;&lt;br /&gt;
==Dupliquer les tables du LV et du snapshot==&lt;br /&gt;
(notez l&amp;#039;utilisation des suffixes spéciaux &amp;lt;code&amp;gt;-real&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;-cow&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # dmsetup table myvg-win2008-real | dmsetup create tmplv&lt;br /&gt;
 # dmsetup table myvg-snap1-cow | dmsetup create tmpcow&lt;br /&gt;
&lt;br /&gt;
==Désactiver le LV principal==&lt;br /&gt;
&lt;br /&gt;
 # lvchange -a n /dev/myvg/win2008&lt;br /&gt;
&lt;br /&gt;
==Flusher les buffers==&lt;br /&gt;
&lt;br /&gt;
 # blockdev --flushbufs /dev/mapper/{tmplv,tmpcow}&lt;br /&gt;
&lt;br /&gt;
==Faire un essai==&lt;br /&gt;
Vous allez voir un paquet de lignes commençant par &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; et un résumé à la fin de ce qui sera fait.&lt;br /&gt;
 # dm-merge -i /dev/mapper/tmpcow -o /dev/mapper/tmplv -vd&lt;br /&gt;
 ...&lt;br /&gt;
 dd of=&amp;quot;/dev/mapper/tmplv&amp;quot; seek=2135444 if=&amp;#039;/dev/mapper/tmpcow&amp;#039; iflag=direct skip=8275 count=1 bs=8b&lt;br /&gt;
 dd of=&amp;quot;/dev/mapper/tmplv&amp;quot; seek=2135445 if=&amp;#039;/dev/mapper/tmpcow&amp;#039; iflag=direct skip=8276 count=1 bs=8b&lt;br /&gt;
 dd of=&amp;quot;/dev/mapper/tmplv&amp;quot; seek=2135446 if=&amp;#039;/dev/mapper/tmpcow&amp;#039; iflag=direct skip=8277 count=1 bs=8b&lt;br /&gt;
 dd of=&amp;quot;/dev/mapper/tmplv&amp;quot; seek=5056466 if=&amp;#039;/dev/mapper/tmpcow&amp;#039; iflag=direct skip=8278 count=1 bs=8b&lt;br /&gt;
 dd of=&amp;quot;/dev/mapper/tmplv&amp;quot; seek=5056467 if=&amp;#039;/dev/mapper/tmpcow&amp;#039; iflag=direct skip=8279 count=1 bs=8b&lt;br /&gt;
 Found 8246 exceptions of chunksize 4096, total size 33775616 bytes (32984 KiB, 32.211 MiB, 0.031 GiB).&lt;br /&gt;
&lt;br /&gt;
==Le faire en vrai==&lt;br /&gt;
Quelques lignes en plus du même résumé&lt;br /&gt;
&lt;br /&gt;
 # dm-merge -i /dev/mapper/tmpcow -o /dev/mapper/tmplv -f&lt;br /&gt;
 Artificial sleep (1 second)&lt;br /&gt;
 Found a proper MAGIC header: 0x70416e53&lt;br /&gt;
 valid = 1&lt;br /&gt;
 version = 1&lt;br /&gt;
 chunk_size = 8 (4096 bytes)&lt;br /&gt;
 Found 8246 exceptions of chunksize 4096, total size 33775616 bytes (32984 KiB, 32.211 MiB, 0.031 GiB).&lt;br /&gt;
&lt;br /&gt;
==Flusher les buffers encore une fois==&lt;br /&gt;
&lt;br /&gt;
 # blockdev --flushbufs /dev/mapper/{tmplv,tmpcow}&lt;br /&gt;
&lt;br /&gt;
==Supprimer les LV temporaires==&lt;br /&gt;
Ce ne sont que des références aux données, ça va va pas supprimer les données réelles !&lt;br /&gt;
&lt;br /&gt;
 # dmsetup remove tmplv&lt;br /&gt;
 # dmsetup remove tmpcow&lt;br /&gt;
&lt;br /&gt;
==Activer le LV==&lt;br /&gt;
&lt;br /&gt;
 # lvchange -a y /dev/myvg/win2008&lt;br /&gt;
&lt;br /&gt;
Il est temps de redémarrer la VM - remonter le filesystem - qui a été inverti sur l&amp;#039;instantané. Si le snapshot a été réalisé sur une VM bootée ou sur un FS monté, un fsck (ou chkdsk) sera réalisé ou sera demandé avant de remonter le FS.&lt;br /&gt;
&lt;br /&gt;
Il est a présent possible de supprimer le snapshot initial (ou pas, si jamais il faut re-rollbacker) &amp;lt;code&amp;gt;lvremove /dev/myvg/snap1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;br /&gt;
[http://www.kernelcrash.com/blog/reverting-lvm-snapshots/2009/12/11/]&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
</feed>