Ich bin dabei, ein experimentelles Upgrade auf meinem CentOS 5-Server durchzuführen. Wenn das Upgrade fehlschlägt, möchte ich die Änderungen am Dateisystem zurücksetzen können. Dieses Szenario ähnelt dem Beispiel in Abschnitt 3.8 des LVM-HOWTO für LVM2-Lese- / Schreib-Snapshots - das Beispiel fehlt jedoch in der tatsächlichen Vorgehensweise.
Wie würde ich die Änderungen festschreiben und sie wieder in der ursprünglichen Partition zusammenführen?
Wie würde ich die Änderungen rückgängig machen und das Dateisystem in den ursprünglichen Zustand zurückversetzen? Sollte ich davon ausgehen, dass ich mehrere Dienste neu starten muss, wenn nicht direkt neu starten?
Ist es möglich, nur bestimmte Verzeichnisse auf einer Partition zu sichern, oder handelt es sich um eine partitionsweite Operation?
dmsetup targets
sollte snapshot-merge anzeigen, wenn dies der Fall ist, wird der Befehl merge, der auf snapshot-lv angewendet wird, auf den Zustand zurückgesetzt, in dem der Snapshot aufgenommen wurde.Ich habe gerade ein Snapshot-basiertes Upgrade mit Ubuntu ausprobiert. Und ja, ich musste mehrmals neu starten. Benennen Sie zuerst die ursprüngliche Root-Version in eine andere um, damit Sie dem Snapshot den ursprünglichen Namen geben können (da ein Upgrade viele Änderungen verursacht und Änderungen am Snapshot schneller sind als am Original):
Die Größe sollte passend gewählt werden. Starten Sie dann neu, damit das 'neue' lvm / ubuntu als root gemountet wird und Sie das Upgrade durchführen können. Jetzt können Sie die neue Version testen und sogar zum alten System wechseln
Wenn Sie das Upgrade verwerfen möchten, führen Sie es einfach aus (vom alten System aus).
Wenn Sie die Änderungen festschreiben möchten, führen Sie einfach (vom alten System aus)
oder aus dem neuen System
gefolgt von einem Neustart. Das System verweigert die sofortige Zusammenführung, da die Volumes geöffnet sind. Die Zusammenführung wird also während des Startvorgangs gestartet und fortgesetzt, solange Sie bereits mit dem System arbeiten können.
Übrigens: Wenn Sie zwischen den Systemen wechseln, denken Sie daran, den entsprechenden Kernel zu verwenden. Da / boot nicht Teil von lvm ist, werden der alte und der neue Kernel dort nebeneinander platziert.
quelle
Ok, ich glaube, ich habe es durch erneutes Lesen des HOWTO 3.8 herausgefunden.
Bei der Funktionsweise eines Schnappschusses handelt es sich um eine Reihe von Änderungen auf Blockebene gegenüber dem Original. Wenn also auf das Original geschrieben wird, passieren folgende Dinge:
Das Wegwerfen des Schnappschusses wirkt sich also überhaupt nicht auf das Original aus, da das Original geändert wurde und der Schnappschuss nur eine Liste dieser Änderungen enthielt.
Beantwortung meiner eigenen Frage:
Erstellen Sie einen neuen Snapshot mit LVM. Wenn das Update so konfiguriert werden kann, dass es auf den Snapshot-Bereitstellungspunkt schreibt, verwenden Sie einen R / W-Snapshot. Andernfalls reicht entweder RO oder R / W aus.
Dann:
Ich habe immer noch kein spezielles Tool gefunden, um diese Zusammenführung durchzuführen. Da in meinem Szenario nicht genau die beabsichtigte Verwendung von Snapshots vorgesehen ist, gibt es möglicherweise kein Tool. Es klingt wie ein Job für Rdiff.
quelle
lvconvert --merge <snapshot-name>
die ursprüngliche Festplatte auf diesem Snapshot wieder her und löscht diesen Snapshot. Sie können es natürlich sofort schnell wiederherstellen.LVM arbeitet auf Blockebene. Es weiß sogar nicht, was ein Dateisystem ist. Sie können also nicht nur bestimmte Verzeichnisse sichern, es sei denn, ein Dateisystem von einem anderen LVM-Volume ist dort bereitgestellt.
Wenn Sie einen LVM-Snapshot erstellen, fordern Sie das Duplikat eines Volumes "Copy on Write" an. Jeder Block, der auf dem Snapshot-Volume geändert wird, wird zunächst unverändert im Snapshot gespeichert. Um Änderungen vorzunehmen, müssen Sie also nichts unternehmen. Entfernen Sie einfach das Snapshot-Volume.
Ich weiß nicht genau, wie ich Änderungen rückgängig machen soll, da ich LVM in einem solchen Szenario nie verwendet habe, aber ich denke, es ist in der LVM-Dokumentation irgendwo gut beschrieben. Was auch immer es ist, Sie müssen wahrscheinlich alles neu starten, was geändert wurde. Ein Neustart ist möglicherweise eine gute Idee.
quelle
lvconvert --merge <snapshot name>
Snapshot 'einfrieren' des ursprünglichen LV-Status. Schnappschuss entfernen bedeutet, diesen Zustand zu vergessen. Snapshot zusammenführen bedeutet, in diesen Zustand zurückzukehren
In LVM werden jedoch neu geschriebene Daten im Snapshot gespeichert: Stellen Sie sicher, dass die Snapshot-Größe dem erwarteten Änderungsumfang für LV und Snapshot entspricht
quelle
Die Dokumentation ist verwirrend. Es scheint mir, dass lvcreate --merge bedeutet, alle Änderungen rückgängig zu machen, und lvremove bedeutet, die Änderungen festzuschreiben. Der Unterschied liegt darin, wie Sie es verwenden.
In den meisten Fällen verwenden Sie den Snapshot lediglich als schreibgeschützte Kopie des Live-Volumes, und das Live-Volume ändert sich ständig. In diesem Fall würde ein Zusammenführen logischerweise bedeuten, dass Sie das Live-Volume mit der eingefrorenen Kopie überschreiben. Mit anderen Worten bedeutet Zusammenführen, dass Änderungen rückgängig gemacht werden, und Entfernen bedeutet, dass Änderungen festgeschrieben werden.
Wenn Sie in den Snapshot schreiben (eine neue Option mit LVM2), was anscheinend nicht das Standardverhalten ist und wahrscheinlich eine andere Konfiguration erfordert, damit Anwendungen in den Snapshot anstelle des ursprünglichen Volumes schreiben, ist dies umgekehrt.
Seien Sie bitte vorsichtig, wenn Sie mit Schnappschüssen umgehen, da einige Leute davon ausgehen, dass Sie sie auf eine Weise verwenden, und Anweisungen geben, die Ihr System zerstören können, wenn Sie unter der entgegengesetzten Annahme arbeiten!
quelle