GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Rollback zu einem funktionierenden Zustand mit btrfs + apt-btrfs-snapshot auf Ubuntu 12.10

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

eingeben
sudo 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

aus
apt-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 /mnt

Wir können jetzt unsere Subvolumes in der Ausgabe von:

sehen
ls -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-Update
apt-get-Upgrade

Wenn 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 /mnt
ls -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/@_badroot
umount /mnt

  • btrfs:https://btrfs.wiki.kernel.org/index.php/Main_Page
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Bluetooth funktioniert nicht in Ubuntu 16.04 mit [0cf3:3004] Atheros Adapter?

  2. Ubuntu 18.04 funktioniert nicht mehr mit Nvidia-Treibern?

  3. Elan Touchpad funktioniert nicht auf Lenovo Ideapad mit Ubuntu 16.04?

  4. USB 3.0 Hub funktioniert nicht mit einigen Geräten unter Ubuntu 18.04?

  5. R 3.5.0 funktioniert nicht unter Ubuntu 18.04?

So überwachen Sie Systemressourcen mit Blicken auf Ubuntu 20.04

Arbeiten mit mehreren Terminal-Tabs in Ubuntu

So stellen Sie Ihr Ubuntu-Linux-System in den vorherigen Zustand zurück

So ersetzen Sie den Gnome-Bildschirmschoner durch Xscreensaver unter Ubuntu

So synchronisieren Sie die Systemzeit mit Internet-Zeitservern unter Ubuntu 20.04

So formatieren Sie eine Festplattenpartition mit BTRFS unter Ubuntu 20.04