Dieses Tutorial erklärt, wie Sie fehlgeschlagene apt-Operationen (wie apt-get upgrade) rückgängig machen und mit apt-btrfs-snapshot auf einem Ubuntu 12.10-System, das das btrfs-Dateisystem verwendet, zum vorherigen Systemzustand zurückkehren können. apt-btrfs-snapshot erstellt einen Snapshot des Systems vor der apt-Operation. In der Lage zu sein, den vorherigen Systemzustand nach einer fehlgeschlagenen apt-Operation einfach wiederherzustellen, nimmt einen Großteil der Schmerzen, mit denen Systemadministratoren normalerweise fertig werden müssen, weg und ist eines der größten Merkmale des btrfs-Dateisystems.
Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!
1 Vorbemerkung
In diesem Tutorial habe ich das gesamte System auf einem btrfs-Dateisystem installiert, d. h. es gibt keine separate /boot-Partition auf einem ext-Dateisystem. Wenn Sie eine separate /boot-Partition verwenden und apt irgendetwas in dieser Partition installiert (z. B. einen neuen Kernel), können Sie Änderungen an der /boot-Partition nicht mit apt-btrfs-snapshot rückgängig machen – nur Änderungen auf der btrfs-Partition können rückgängig gemacht werden.
Meine Festplatte heißt in diesem Tutorial /dev/sda, meine Systempartition ist /dev/sda1.
Ein Hinweis für Ubuntu-Benutzer:
Da wir alle Schritte aus diesem Tutorial mit Root-Rechten ausführen müssen, können wir entweder allen Befehlen in diesem Tutorial die Zeichenfolge sudo voranstellen oder wir werden sofort root, indem wir
eingebensudo su
2 Installieren Sie apt-btrfs-snapshot
apt-btrfs-snapshot kann wie folgt installiert werden:
apt-get install apt-btrfs-snapshot
Um zu überprüfen, ob apt-btrfs-snapshot Snapshots für apt-Operationen erstellen kann, führen Sie
ausapt-btrfs-snapshot unterstützt
Es sollte Folgendes anzeigen:
[E-Mail-geschützt]:~# apt-btrfs-snapshot unterstützt
Unterstützt
[E-Mail-geschützt]:~#
Wenn dies nicht der Fall ist, unterscheidet sich Ihr btrfs-Subvolume-Layout wahrscheinlich von Ubuntus Standard-Layout, das wie folgt aussieht:
- @ subvolume:gemountet auf /.
- @home-Subvolume:auf /home gemountet.
Dies ist das standardmäßige Ubuntu-Subvolume-Layout:
Liste der btrfs-Subvolumes /
[email protected]:~# btrfs subvolume list /
ID 256 top level 5 path @
ID 258 top level 5 path @home
[email protected]:~#Wenn apt-btrfs-snapshot Ihr System unterstützt, können Sie mit Kapitel 3 fortfahren.
3 Führen Sie eine apt-Operation durch
Lassen Sie uns nun eine apt-Operation wie apt-get upgrade ausführen, um zu testen, ob wir zum vorherigen Zustand zurückkehren können.
Aktualisieren Sie Ihre Paketdatenbank...
apt-get-Update... und aktualisieren Sie Ihr System:
apt-get-Upgrade[email protected]:~# apt-get upgrade
Paketlisten lesen... Fertig
Abhängigkeitsbaum aufbauen
Zustandsinformationen lesen... Fertig
Die folgenden Pakete wurden beibehalten zurück:
linux-headers-generic linux-image-generic
Die folgenden Pakete werden aktualisiert:
apport base-files isc-dhcp-client isc-dhcp-common libwhoopsie0 linux-generic lsb -base lsb-release python3-apport python3-distupgrade python3-problem-report python3.2 python3.2-minimal
ubuntu-release-upgrader-core vim vim-common vim-runtime vim-tiny whoopsie
19 aktualisiert, 0 neu installiert, 0 zu entfernen und 2 nicht aktualisiert.
14,4 MB Archive müssen erfordert werden.
Nach diesem Vorgang werden 3.072 B zusätzlicher Speicherplatz verwendet.
Erledigen Sie möchten fortfahren [J/N]? <-- ENTER
Get:1 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main base-files amd64 6.5ubuntu12 [69,6 kB]
Get:2 http:/ /de.archive.ubuntu.com/ubuntu/ quantal-updates/main whoopsie amd64 0.2.7 [25,1 kB]
Get:3 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/ main libwhoopsie0 amd64 0.2.7 [7,054 B]
Get:4 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main lsb-base all 4.0-0ubuntu26.1 [10,3 kB]
Get:5 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main isc-dhcp-client amd64 4.2.4-1ubuntu10.1 [775 kB]
Get:6 http ://de.archive.ubuntu.com/ubuntu/ quantal-updates/main isc-dhcp-common amd64 4.2.4-1ubuntu10.1 [836 kB]
Get:7 http://de.archive. ubuntu.com/ubuntu/ quantal-updates/main lsb-release all 4.0-0ubuntu26.1 [10,7 kB]
Get:8 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3.2 amd64 3.2.3-6ubuntu3.1 [2,585 kB]
Get:9 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3.2-minimal amd64 3.2.3 -6ubuntu3.1 [1.798 kB]
Get:10 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main vim amd64 2:7.3.547-4ubuntu1.1 [1.051 kB]
Get :11 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main vim-tiny amd64 2:7.3.547-4ubuntu1.1 [413 kB]
Get:12 http://de .archive.ubuntu.com/ubuntu/ quantal-updates/main vim-runtime all 2:7.3.547-4ubuntu1.1 [6,317 kB]
Get:13 http://de.archive.ubuntu.com/ ubuntu/ quantal-updates/main vim-common amd64 2:7.3.547-4ubuntu1.1 [85,7 kB]
Get:14 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main ubuntu-release-upgrader-core all 1:0.190.4 [27,7 kB]
Get:15 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-distupgrade all 1:0.190 .4 [141 kB]
Get:16 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-problem-report all 2.6.1-0ubuntu6 [9,578 B]
Get:17 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-apport all 2.6.1-0ubuntu6 [85,7 kB]
Get:18 http://de.archive .ubuntu.com/ubuntu/quan tal-updates/main apport all 2.6.1-0ubuntu6 [164 kB]
Get:19 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main linux-generic amd64 3.5.0.18. 21 [1.714 B]
Abgerufen 14,4 MB in 2 s (5.465 kB/s)
Unterstützt
Erstellen eines Snapshots von '/tmp/apt-btrfs-snapshot-mp-jnW7I_/@' in '/tmp/apt-btrfs-snapshot-mp-jnW7I_/@apt-snapshot-2012-11-22_11:50:38'
(Es werden Datenbank ... 52666 Dateien und Verzeichnisse aktuell installiert.)
Vorbereitung zum Ersetzen von Basisdateien 6.5ubuntu11 (unter Verwendung von .../base-files_6.5ubuntu12_amd64.deb) ...
Entpacken von Ersatz-Basisdateien ...
Verarbeitung von Triggern für man-db .. .
Trigger werden für Install-Info verarbeitet...
Trigger werden für Plymouth-Theme-Ubuntu-Text verarbeitet...
update-initramfs:Update wird verzögert (Trigger aktiviert)
Verarbeitung Trigger für initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-3.5.0-17-generic
Setting up base-files (6.5ubuntu12) ...
(Lesen der Datenbank ... 52666 Dateien und Verzeichnisse cu derzeit installiert.)
Vorbereitung zum Ersetzen von whoopsie 0.2.5 (mit .../whoopsie_0.2.7_amd64.deb) ...
whoopsie stop/waiting
Entpacken des Ersatz-whoopsie ...
Vorbereitung zum Ersetzen von libwhoopsie0 0.2.5 (mit .../libwhoopsie0_0.2.7_amd64.deb) ...
Entpacken des Ersatzes libwhoopsie0 ...
Vorbereitung zum Ersetzen lsb-base 4.0-0ubuntu26 ( using .../lsb-base_4.0-0ubuntu26.1_all.deb) ...
Ersatz-lsb-base wird entpackt ...
Verarbeitungsauslöser für ureadahead ...
ureadahead werden reprofiled beim nächsten Neustart
Einrichten lsb-base (4.0-0ubuntu26.1) ...
(Lesen der Datenbank ... 52666 Dateien und Verzeichnisse derzeit installiert.)
Vorbereitung zum Ersetzen isc- dhcp-client 4.2.4-1ubuntu10 (mit .../isc-dhcp-client_4.2.4-1ubuntu10.1_amd64.deb) ...
Entpacken des Ersatz-isc-dhcp-client ...
Vorbereitung um isc-dhcp-common 4.2.4-1ubuntu10 zu ersetzen (mit .../isc-dhcp-common_4.2.4-1ubuntu10.1_amd64.deb) ...
Ersatz isc-dhcp-common entpacken...
Vorbereitung ing to replace lsb-release 4.0-0ubuntu26 (using .../lsb-release_4.0-0ubuntu26.1_all.deb) ...
Entpacken des Ersatz-lsb-release ...
Vorbereitung to replace python3 .2 3.2.3-6ubuntu3 (mit .../python3.2_3.2.3-6ubuntu3.1_amd64.deb) ...
Ersatzpython3.2 wird entpackt ...
Vorbereitung zum Ersetzen python3.2 -minimal 3.2.3-6ubuntu3 (mit .../python3.2-minimal_3.2.3-6ubuntu3.1_amd64.deb) ...
Entpacken des Ersatz-python3.2-minimal ...
Vorbereitung für Ersetzen vim 2:7.3.547-4ubuntu1 (mit .../vim_2%3a7.3.547-4ubuntu1.1_amd64.deb) ...
Entpacken des Ersatz-vim ...
Vorbereitung zum Ersetzen vim-tiny 2:7.3.547-4ubuntu1 (unter Verwendung von .../vim-tiny_2%3a7.3.547-4ubuntu1.1_amd64.deb) ...
Ersatz-vim-tiny wird entpackt...
Vorbereitung zum Ersetzen vim -runtime 2:7.3.547-4ubuntu1 (unter Verwendung von .../vim-runtime_2%3a7.3.547-4ubuntu1.1_all.deb) ...
Ersatz-vim-runtime entpacken ...
Vorbereitung für Ersetzen Sie vim-common 2:7.3.547-4ubuntu1 (unter Verwendung von .../vim-common_2%3a7.3.547-4ubuntu1.1_a md64.deb) ...
Ersatz vim-common wird entpackt ...
Vorbereitung zum Ersetzen von ubuntu-release-upgrader-core 1:0.190.1 (unter Verwendung von .../ubuntu-release-upgrader- core_1%3a0.190.4_all.deb) ...
Ersatz ubuntu-release-upgrader-core-entpacken ...
Vorbereitung zum Ersetzen python3-distupgrade 1:0.190.1 (unter Verwendung von .../python3 -distupgrade_1%3a0.190.4_all.deb) ...
Ersatz python3-distupgrade entpacken ...
Vorbereitung zum Ersetzen python3-problem-report 2.6.1-0ubuntu3 (unter Verwendung von .../python3- problem-report_2.6.1-0ubuntu6_all.deb) ...
Ersatz python3-problem-report entpacken ...
Vorbereitung zum Ersetzen python3-apport 2.6.1-0ubuntu3 (mit .../python3- apport_2.6.1-0ubuntu6_all.deb) ...
Ersatz python3-apport wird entpackt ...
Vorbereitung zum Ersatz apport 2.6.1-0ubuntu3 (unter Verwendung von .../apport_2.6.1-0ubuntu6_all.deb) ...
apport stop/waiting
Ersatzapport wird entpackt ...
Vorbereitung zum Ersetzen von Linux-Generic 3.5.0.17.19 (mit .../linux-generic_3.5.0.18.21_amd64 .deb ) ...
Ersatz-Linux-Generic entpacken...
Auslöser für man-db verarbeiten ...
Auslöser für mime-support verarbeiten ...
Auslöser für ureadahead verarbeiten ...
Einrichten von libwhoopsie0 (0.2.7) ...
Einrichten von whoopsie (0.2.7) ...
whoopsie starten/laufen, Prozess 7859
Einrichten isc-dhcp-common (4.2.4-1ubuntu10.1) ...
Isc-dhcp-client einrichten (4.2.4-1ubuntu10.1) ...
lsb-release einrichten ( 4.0-0ubuntu26.1) ...
Einrichten von python3.2-minimal (3.2.3-6ubuntu3.1) ...
Einrichten von python3.2 (3.2.3-6ubuntu3.1) ...
Einrichten von vim-common (2:7.3.547-4ubuntu1.1) ...
Einrichten von vim-runtime (2:7.3.547-4ubuntu1.1) ...
Verarbeitung /usr/share/vim/addons/doc
Einrichten vim (2:7.3.547-4ubuntu1.1) ...
Einrichten vim-tiny (2:7.3.547 -4ubuntu1.1) ...
Einrichten von python3-distupgrade (1:0.190.4) ...
Einrichten von ubuntu-release-upgrader-core (1:0.190.4) ...
Python3-Problembericht einrichten (2.6.1-0ubuntu6) ...
Festgelegt ting-up python3-apport (2.6.1-0ubuntu6) ...
Setting up apport (2.6.1-0ubuntu6) ...
apport start/running
Setup up linux-generic ( 3.5.0.18.21) ...
Verarbeitungsauslöser für libc-bin ...
ldconfig verzögerte Verarbeitung findet jetzt statt
[email protected]:~#Wie Sie sehen, wurde apt-btrfs-snapshot vor dem Upgrade automatisch als Snapshot unseres Systems erstellt (in diesem Beispiel @apt-snapshot-2012-11-22_11:50:38 genannt). Sie können das überprüfen mit...
Liste der btrfs-Subvolumes /[email protected]:~# btrfs subvolume list /
ID 256 oberste Ebene 5 Pfad @
ID 258 oberste Ebene 5 Pfad @home
ID 260 oberste Ebene 5 Pfad @apt- snap-2012-11-22_11:50:38
[email protected]:~#... und:
apt-btrfs-snapshot list[email protected]:~# apt-btrfs-snapshot list
Verfügbare Snapshots:
@apt-snapshot-2012-11-22_11:50:38
[email protected]:~#
4 Rollback
Nehmen wir nun an, dass die letzte apt-Operation unser funktionierendes System in eines verwandelt hat, das nicht mehr wie erwartet funktioniert. Deshalb wollen wir den vorherigen Systemzustand wiederherstellen, also einen Rollback durchführen.
Daher mounten wir das btrfs-Dateisystem an einem separaten Ort, z. /mnt:
Mount /dev/sda1 /mntWir können jetzt unsere Subvolumes in der Ausgabe von:
sehenls -l /mnt/[email protected]:~# ls -l /mnt/
total 0
drwxr-xr-x 1 root root 230 Nov 22 10:46 @
drwxr-xr-x 1 root root 230 Nov 22 10:46 @apt-snapshot-2012-11-22_11:50:38
drwxr-xr-x 1 root root 26 Nov 22 10:57 @home
[email protected ]:~#@apt-snapshot-2012-11-22_11:50:38 ist ein Schnappschuss unseres funktionierenden Root-Dateisystems (@) vor der apt-Operation. Damit das System von diesem funktionierenden Snapshot statt vom aktuellen Subvolume bootet, benennen wir @ in etwas anderes um und dann @apt-snapshot-2012-11-22_11:50:38 in @:
mv /mnt/@ /mnt/@_badroot
mv /mnt/@apt-snapshot-2012-11-22_11:50:38 /mnt/@Starten Sie jetzt neu:
Neustart
5 Überprüfen Sie, ob das Rollback erfolgreich war
Nach dem Neustart sollten wir prüfen, ob das Rollback erfolgreich war. Dazu wiederholen wir die apt-Operation, die unser System unbrauchbar gemacht hat, z. B.:
apt-get-Updateapt-get-UpgradeWenn das Rollback erfolgreich war, sollte apt-get upgrade die gleichen Pakete anzeigen, die wie zuvor für die Aktualisierung verfügbar sind (da dies nur eine Überprüfung ist, ob das Rollback erfolgreich war, installieren Sie die Updates nicht erneut):
[email protected]:~# apt-get upgrade
Paketlisten lesen... Fertig
Abhängigkeitsbaum aufbauen
Zustandsinformationen lesen... Fertig
Die folgenden Pakete wurden beibehalten zurück:
linux-headers-generic linux-image-generic
Die folgenden Pakete werden aktualisiert:
apport base-files isc-dhcp-client isc-dhcp-common libwhoopsie0 linux-generic lsb -base lsb-release python3-apport python3-distupgrade python3-problem-report python3.2 python3.2-minimal
ubuntu-release-upgrader-core vim vim-common vim-runtime vim-tiny whoopsie
19 aktualisiert, 0 neu installiert, 0 zu entfernen und 2 nicht aktualisiert.
Notwendigkeit, 0 B/14,4 MB Archiv zu erhalten.
Nach diesem Vorgang werden 3.072 B zusätzlicher Speicherplatz verwendet.
Möchten Sie fortfahren [J/N]? <- n
6 Löschen Sie das @-Subvolume (optional)
Wenn Sie sicher sind, dass das Rollback erfolgreich war und Sie das alte @-Subvolume (jetzt @_badroot) nicht mehr benötigen, können Sie es löschen, um Speicherplatz freizugeben.
Mount /dev/sda1 /mntls -l /mnt/[email protected]:~# ls -l /mnt/
total 0
drwxr-xr-x 1 root root 230 Nov 22 10:46 @
drwxr-xr-x 1 root root 230 22. November 10:46 @_badroot
drwxr-xr-x 1 root root 26 22. November 10:57 @home
[email protected]:~#btrfs-Subvolume löschen /mnt/@_badrootumount /mnt
7 Links
- btrfs:https://btrfs.wiki.kernel.org/index.php/Main_Page
- Ubuntu:http://www.ubuntu.com/