Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
ArchLinux - Minimal Server Installation - mit LVM und Btrfs - snapper
Mein besonderer Dank gilt hier an dieser Stelle Nicolai Mladenoff (unicks.eu), welcher mich durch seine Videos auf seinem Youtube™-Kanal: unicks.eu erst auf die Idee gebracht hat, unter ArchLinux das Dateisystem Btrfs einzusetzen und mir auch wertvolle Verbesserungen zu meinen bisherigen DokuWiki-Einträgen gegeben hat. Vielen Dank noch mal an dieser Stelle! |
snapper ist ein Werkzeug zur Verwaltung von Linux-Dateisystem-Snapshots. Abgesehen von der offensichtlichen Erstellung und Löschung von Snapshots, kann snapper Snapshots vergleichen und Unterschiede zwischen Snapshots rückgängig machen. Vereinfacht ausgedrückt ermöglicht dies Root- und Nicht-Root-Benutzern, ältere Versionen von Dateien anzuzeigen und Änderungen rückgängig zu machen.
Beschreibung | Externer Link |
---|---|
Homepage | https://www.archlinux.de/ |
Herunterladen | https://www.archlinux.de/download |
Dokumentation | https://wiki.archlinux.de/title/Hauptseite |
Installation | https://wiki.archlinux.de/title/Anleitung_für_Einsteiger |
- LVM | https://wiki.archlinux.de/title/LVM https://tldp.org/HOWTO/LVM-HOWTO/ |
- Btrfs | https://wiki.archlinux.org/index.php/btrfs https://btrfs.wiki.kernel.org |
* Quelle: YouTube - Channel: unicks.eu - Total Arch Linux | 3.4 Snapper auf die leichte Art!
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root
zu werden, geben Sie bitte nachfolgenden Befehl ein:
$ su - Password:
Voraussetzungen
Für die nachfolgende Installation wird vorausgesetzt,
- dass eine lauffähige Version von ArchLinux mit dem Dateisystem: Btrfs vorhanden ist
Eine der unter nachfolgenden Links beschriebenen Installationen von ArchLinux wird hier als Mindestvoraussetzung angenommen:
Installation: snapper
Zum erstellen von Snapshots ist die Nutzung des Programms snapper erforderlich.
Mit nachfolgendem Befehl, kann snapper installiert werden:
[root@archlinux ~]# pacman --noconfirm -S snapper resolving dependencies... looking for conflicting packages... Packages (2) boost-libs-1.72.0-4 snapper-0.8.14-1 Total Download Size: 3.33 MiB Total Installed Size: 13.81 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... boost-libs-1.72.... 2.6 MiB 9.95 MiB/s 00:00 [#####################] 100% snapper-0.8.14-1... 756.2 KiB 12.3 MiB/s 00:00 [#####################] 100% (2/2) checking keys in keyring [#####################] 100% (2/2) checking package integrity [#####################] 100% (2/2) loading package files [#####################] 100% (2/2) checking for file conflicts [#####################] 100% (2/2) checking available disk space [#####################] 100% :: Processing package changes... (1/2) installing boost-libs [#####################] 100% Optional dependencies for boost-libs openmpi: for mpi support (2/2) installing snapper [#####################] 100% Optional dependencies for snapper pam: pam_snapper [installed] :: Running post-transaction hooks... (1/3) Reloading system manager configuration... (2/3) Arming ConditionNeedsUpdate... (3/3) Reloading system bus configuration...
Konfiguration: snapper
snapper: root
Nach der erfolgreichen Installation von snapper, soll dieser so konfiguriert werden, dass vom Btrfs: Subvolume - /
(root) - Snapshots erstellt werden können.
Dazu ist die Anlage einer Konfiguration für das Btrfs: Subvolume - /
(root) erforderlich, welche mit nachfolgendem Befehl erzeugt werden kann:
[root@archlinux ~]# snapper -c root create-config /
Die so neu erstellte Konfigurationsdatei ist in nachfolgendem Verzeichnis mit nachfolgendem Namen root
zu finden:
/etc/snapper/configs/root
Mit der Erstellung der Konfiguration für das Btrfs: Subvolume - /
(root), wird auch ein Btrfs: Unter-Subvolume, mit der Bezeichnung
.snapshots
erstellt, wie nachfolgender Befehl zeigt:
[root@archlinux ~]# btrfs subvolume list / ID 256 gen 6 top level 5 path @tmp ID 258 gen 7 top level 5 path @home ID 259 gen 8 top level 5 path @var_log ID 260 gen 9 top level 5 path @var_pkg ID 261 gen 33 top level 5 path @root ID 263 gen 20 top level 5 path @srv ID 264 gen 13 top level 5 path @opt ID 265 gen 20 top level 5 path @usr_local ID 266 gen 15 top level 5 path @snapshots ID 269 gen 23 top level 262 path @var/lib/portables ID 270 gen 24 top level 262 path @var/lib/machines ID 271 gen 33 top level 261 path .snapshots
HINWEIS - Das Btrfs: Unter-Subvolume - .snapshots
von root
kann NICHT verwendet werden!
Erklärung
Da bei einem möglichen Zurücksetzen auf einen vorherigen Snapshot, dann die Snapshots darin ebenfalls nicht mehr vorhanden wären! - Dafür wurde ein eigenes Btrfs: Subvolume /.snapshots
angelegt. Siehe auch den nachfolgenden internen Link
Um das automatisch neu erstellte Btrfs: Unter-Subvolume - .snapshots
zu löschen, kann nachfolgender Befehl verwendet werden:
[root@archlinux ~]# btrfs subvolume delete /.snapshots/ Delete subvolume (no-commit): '//.snapshots'
Zur Überprüfung, ob das Entfernen auch korrekt funktioniert hat, kann nachfolgender Befehl verwendet werden:
[root@archlinux ~]# btrfs subvolume list / ID 256 gen 6 top level 5 path @tmp ID 258 gen 7 top level 5 path @home ID 259 gen 8 top level 5 path @var_log ID 260 gen 9 top level 5 path @var_pkg ID 261 gen 34 top level 5 path @root ID 263 gen 20 top level 5 path @srv ID 264 gen 13 top level 5 path @opt ID 265 gen 20 top level 5 path @usr_local ID 266 gen 15 top level 5 path @snapshots ID 269 gen 23 top level 262 path @var/lib/portables ID 270 gen 24 top level 262 path @var/lib/machines
Anschließend legen wir im Wurzelverzeichnis ein neues Verzeichnis mit dem Namen
/.snapshots
mit nachfolgendem Befehl an:
# [root@archlinux ~]# mkdir /.snapshots
Jetzt muss nur noch die Konfigurationsdatei
/etc/fstab
wie folgt erweitert werden, so dass das neue Verzeichnis /.snapshots
auch auf die mit der ursprünglichen Installation angelegtes Btrfs: Subvolume /.snapshots
(welches KEIN Btrfs: Unter-Subvolume ist), automatisch bei jedem Start mit gemounttet wird:
[root@archlinux ~]# vim /etc/fstab
# /dev/mapper/archlinux-root LABEL=ROOT UUID=1c250bce-9e86-4d82-b921-3eca687f8403 / btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@root,subvol=@root 0 0 # /dev/mapper/archlinux-tmp LABEL=TMP UUID=9c21c98c-57ea-4b0d-9064-4584393cc97f /tmp btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/ 0 0 # /dev/mapper/archlinux-home LABEL=HOME UUID=85d0ca9b-def5-4478-9f75-ce20b121a49d /home btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/ 0 0 # /dev/mapper/archlinux-var_log LABEL=VAR_LOG UUID=3aca2eca-ab55-4655-a844-cac43f8fea6a /var/log btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/ 0 0 # /dev/mapper/archlinux-var_pkg LABEL=VAR_PKG UUID=24b7d52d-ba82-4173-b730-daca60f076e8 /var/cache/pacman/pkg btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/ 0 0 # /dev/mapper/archlinux-root LABEL=ROOT UUID=1c250bce-9e86-4d82-b921-3eca687f8403 /srv btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@srv,subvol=@srv 0 0 # /dev/mapper/archlinux-root LABEL=ROOT UUID=1c250bce-9e86-4d82-b921-3eca687f8403 /opt btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@opt,subvol=@opt 0 0 # /dev/mapper/archlinux-root LABEL=ROOT UUID=1c250bce-9e86-4d82-b921-3eca687f8403 /usr/local btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@usr_local,subvol=@usr_local 0 0 # /dev/mapper/archlinux-root LABEL=ROOT UUID=1c250bce-9e86-4d82-b921-3eca687f8403 /btrfs btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/ 0 0 # /dev/mapper/archlinux-swap LABEL=SWAP UUID=b76e9dd3-ffc3-483d-8e2b-fd397bf7c4a8 none swap defaults 0 0 # /dev/mapper/archlinux-root LABEL=ROOT UUID=1c250bce-9e86-4d82-b921-3eca687f8403 /.snapshots btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@snapshots,subvol=@snapshots 0 0
*Der letzte Eintrag ist hinzugekommen!
Erklärung
# /dev/mapper/archlinux-root LABEL=ROOT UUID=1c250bce-9e86-4d82-b921-3eca687f8403 /.snapshots btrfs rw,relatime,compress=zstd:3,space_cache=v2,subvol=/@snapshots,subvol=@snapshots 0 0
Hinzufügen eines Mount-Points (Einhängepunktes im Dateisystem) für das Btrfs: Subvolume - snapshots
auf das Verzeichnis /.snapshots
.
Um den in der Konfigurationsdatei /etc/fstab
neu hinzugefügten Eintrag per Hand zu aktivieren, was sonst ja mit dem Starten des Betriebssystems erfolgen wird, kann nachfolgender Befehl verwendet werden:
[root@archlinux ~]# mount /.snapshots/
Ob das mounten von Hand erfolgreich war, kann mit nachfolgendem Befehl überprüft werden:
[root@archlinux ~]# mount | grep /dev/mapper /dev/mapper/archlinux-root on / type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=261,subvol=/@root) /dev/mapper/archlinux-root on /btrfs type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/) /dev/mapper/archlinux-root on /opt type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=264,subvol=/@opt) /dev/mapper/archlinux-root on /srv type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=263,subvol=/@srv) /dev/mapper/archlinux-root on /var type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=265,subvol=/@usr_local) /dev/mapper/archlinux-tmp on /tmp type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/) /dev/mapper/archlinux-home on /home type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/) /dev/mapper/archlinux-var_pkg on /var/cache/pacman/pkg type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/) /dev/mapper/archlinux-var_log on /var/log type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=5,subvol=/) /dev/mapper/archlinux-root on /.snapshots type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=266,subvol=/@snapshots)
Um sicher zu gehen, das snapper auch weiterhin korrekt funktioniert, kann nachfolgender Befehl verwendet werden, welche den aktuellen Status aller Snapshots auflistet:
[root@archlinux ~]# snapper list # | Type | Pre # | Date | User | Cleanup | Description | Userdata ---+--------+-------+------+------+---------+-------------+--------- 0 | single | | | root | | current |
/etc/snapper/configs/root
Nachfolgende Einstellungen passen das Verhalten von snapper an.
- Es sollen KEINE stündlichen Snapshots durchgeführt werden.
- Die Anzahl von aufzubewahrenden Snapshots soll begrenzt werden.
- Die Anzahl der als wichtig gekennzeichneten Snapshots soll begrenzt werden.
[root@archlinux ~]# vim /etc/snapper/configs/root
# subvolume to snapshot SUBVOLUME="/" # filesystem type FSTYPE="btrfs" # btrfs qgroup for space aware cleanup algorithms QGROUP="" # fraction of the filesystems space the snapshots may use SPACE_LIMIT="0.5" # fraction of the filesystems space that should be free FREE_LIMIT="0.2" # users and groups allowed to work with config ALLOW_USERS="" ALLOW_GROUPS="" # sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots # directory SYNC_ACL="no" # start comparing pre- and post-snapshot in background after creating # post-snapshot BACKGROUND_COMPARISON="yes" # run daily number cleanup NUMBER_CLEANUP="yes" # limit for number cleanup # Tachtler # default: NUMBER_MIN_AGE="1800" NUMBER_MIN_AGE="0" # Tachtler # default: NUMBER_LIMIT="50" NUMBER_LIMIT="10" # Tachtler # default: NUMBER_LIMIT_IMPORTANT="10" NUMBER_LIMIT_IMPORTANT="3" # create hourly snapshots # Tachtler # default: TIMELINE_CREATE="yes" TIMELINE_CREATE="no" # cleanup hourly snapshots after some time TIMELINE_CLEANUP="yes" # limits for timeline cleanup TIMELINE_MIN_AGE="1800" TIMELINE_LIMIT_HOURLY="10" TIMELINE_LIMIT_DAILY="10" TIMELINE_LIMIT_WEEKLY="0" TIMELINE_LIMIT_MONTHLY="10" TIMELINE_LIMIT_YEARLY="10" # cleanup empty pre-post-pairs EMPTY_PRE_POST_CLEANUP="yes" # limits for empty pre-post-pair cleanup EMPTY_PRE_POST_MIN_AGE="1800"
Erklärungen:
# run daily number cleanup NUMBER_CLEANUP="yes"
Falls nicht bereits auf „yes“ gesetzt, bewrikt dies, das ab einer gewissen Anzahl ältere Snaphots wieder gelöscht werden
# limit for number cleanup # Tachtler # default: NUMBER_MIN_AGE="1800" NUMBER_MIN_AGE="0"
Bewrikt, das das Alter eines Snapshats ignoriert und nur die Anzahl entscheinden ist, da sonst ggf. unbeabsichtigt automatisch evtl. ein Snapshot gelöscht wird.
# Tachtler # default: NUMBER_LIMIT="50" NUMBER_LIMIT="10"
Anzahl der zu speichernden Snapshots.
# Tachtler # default: NUMBER_LIMIT_IMPORTANT="10" NUMBER_LIMIT_IMPORTANT="3"
Anzahl der zu speichernden - wichtigen - Snapshots.
# create hourly snapshots # Tachtler # default: TIMELINE_CREATE="yes" TIMELINE_CREATE="no"
Verhindert, das jede Stunde automatisch ein Snapshot erstellt wird.
/usr/lib/systemd/system/snapper-cleanup.timer
Damit jedoch stündlich durch den systemd - timer ältere, anhand der Anzahl der vorhandenen Snapshots automatishc auch gelöscht werden können, muss mit nachfolgendem Befehl der mit der Installation mit gekommene Timer
/usr/lib/systemd/system/snapper-cleanup.timer
aktiviert werden:
[root@archlinux /]# systemctl enable --now snapper-cleanup.timer Created symlink /etc/systemd/system/timers.target.wants/snapper-cleanup.timer → /usr/lib/systemd/system/snapper-cleanup.timer.
* Die Angabe des Parameters –now
bewirkt die sofortige Ausführung!
Ob dies korrekt funktioniert hat, kann mit nachfolgendem Befehl überprüft werden:
[root@archlinux /]# systemctl list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES Tue 2020-12-08 00:00:00 CET 6h left n/a n/a shadow.timer shadow.service Tue 2020-12-08 17:10:19 CET 23h left Mon 2020-12-07 17:10:19 CET 5min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service Tue 2020-12-08 17:15:22 CET 23h left Mon 2020-12-07 17:15:22 CET 30s ago snapper-cleanup.timer snapper-cleanup.service 3 timers listed. Pass --all to see loaded but inactive timers, too.
Installation: grub-btrfs
Damit aus dem mit snapper erstellten Snapshots auch automatisch - Boot-Menü-Einträge für GRUB erstellt werden, ist die Installation des Programms
erforderlich.
Mit nachfolgendem Befehl, kann snapper installiert werden:
[root@archlinux ~]# pacman --noconfirm -S grub-btrfs resolving dependencies... looking for conflicting packages... Packages (1) grub-btrfs-4.7.1-1 Total Download Size: 0.02 MiB Total Installed Size: 0.06 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... grub-btrfs-4.7.1... 23.1 KiB 1155 KiB/s 00:00 [#################] 100% (1/1) checking keys in keyring [#################] 100% (1/1) checking package integrity [#################] 100% (1/1) loading package files [#################] 100% (1/1) checking for file conflicts [#################] 100% (1/1) checking available disk space [#################] 100% :: Processing package changes... (1/1) installing grub-btrfs [#################] 100% Optional dependencies for grub-btrfs snapper: Snapper support [installed] :: Running post-transaction hooks... (1/3) Reloading system manager configuration... (2/3) Arming ConditionNeedsUpdate... (3/3) Updating linux initcpios... ==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'default' -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts.img ==> Starting build: 5.4.81-1-lts -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [autodetect] -> Running build hook: [modconf] -> Running build hook: [block] -> Running build hook: [lvm2] -> Running build hook: [btrfs] -> Running build hook: [filesystems] -> Running build hook: [keymap] -> Running build hook: [keyboard] ==> Generating module dependencies ==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-lts.img ==> Image generation successful ==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'fallback' -> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts-fallback.img -S autodetect ==> Starting build: 5.4.81-1-lts -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [modconf] -> Running build hook: [block] ==> WARNING: Possibly missing firmware for module: aic94xx ==> WARNING: Possibly missing firmware for module: wd719x -> Running build hook: [lvm2] -> Running build hook: [btrfs] -> Running build hook: [filesystems] -> Running build hook: [keymap] -> Running build hook: [keyboard] ==> Generating module dependencies ==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-lts-fallback.img ==> Image generation successful
Die Konfiguration für das Programm grub-btrfs ist in nachfolgendem Verzeichnis mit nachfolgendem Namen zu finden:
/etc/grub.d/41_snapshots-btrfs
HINWEIS - Anpassungen müssen hier keine erfolgen!
Installation: snap-pac
Hierbei handelt es sich um eine Reihe von pacman
-„Hooks“ und ein Skript, das automatisch bewirkt, dass snapper ein Snapshot vor und nach einer pacman
-Transaktionen durchgeführt wird.
Dies bietet eine einfache Möglichkeit, Änderungen an einem System nach einer pacman
-Transaktion rückgängig zu machen.
Mit nachfolgendem Befehl, kann snap-pac installiert werden:
[root@archlinux ~]# pacman --noconfirm -S snap-pac resolving dependencies... looking for conflicting packages... Packages (1) snap-pac-2.3.1-2 Total Download Size: 0.02 MiB Total Installed Size: 0.03 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... snap-pac-2.3.1-2-any 15.5 KiB 516 KiB/s 00:00 [#################] 100% (1/1) checking keys in keyring [#################] 100% (1/1) checking package integrity [#################] 100% (1/1) loading package files [#################] 100% (1/1) checking for file conflicts [#################] 100% (1/1) checking available disk space [#################] 100% :: Processing package changes... (1/1) installing snap-pac [#################] 100% :: Running post-transaction hooks... (1/3) Arming ConditionNeedsUpdate... (2/3) Performing snapper post snapshots for the following configurations... (3/3) You are installing snap-pac, so no post transaction snapshots will be taken.
Konfiguration: grub-btrfs.path.service
Nachfolgender systemd
-Dienst überwacht das standardmässig Verzeichnis
/.snapshots
auf Änderungen und erstellt daraufhin die Konfigurationsdaten für den „Bootloader“ - GRUB neu.
HINWEIS - Falls ein anderes Verzeichnis als /.snapshots
überwacht werden soll, ist dies in einer neu zu erstellenden Konfigurationsdatei in nachfolgenden Verzeichnis mit ebenfalls nachfolgendem Namen zu erstellen:
/etc/systemd/system/grub-btrfs.path.d/override.conf
HINWEIS - Eine Vorlage für den Inhalt, hält die Konfigurationsdatei /usr/lib/systemd/system/grub-btrfs.path
bereit.
ACHTUNG - Hier ist aktuelle keine Anpassung an der Konfigurationsdatei durchzuführen!
grub-btrfs.path.service-Dienst/Deamon einrichten
Um den grub-btrfs.path.service-Dienst/Deamon als Hintergrundprozesse auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienste/Daemons mit dem Server mit gestartet werden, was mit nachfolgenden Befehlen realisiert werden kann:
[root@archlinux ~]# systemctl enable grub-btrfs.path Created symlink /etc/systemd/system/multi-user.target.wants/grub-btrfs.path → /usr/lib/systemd/system/grub-btrfs.path.
Eine Überprüfung, ob beim Neustart des Server der grub-btrfs.path
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
[root@archlinux ~]# systemctl list-unit-files --type=service | grep grub-btrfs grub-btrfs.service static -
bzw.
[root@archlinux ~]# systemctl is-enabled grub-btrfs static
Abschließend kann der SSH-Dienst/Daemon - grub-btrfs.path
mit nachfolgendem Befehl gestartet werden:
[root@archlinux ~]# systemctl start --now grub-btrfs.path
Eine Überprüfung ob der grub-btrfs.path.service-Dienst/Daemon auch ordnungsgemäß gestartet wurde, kann durch ausführen des nachfolgenden Befehls durchgeführt werden und sollte eine Ausgabe in etwa wie nachfolgende zur Folge haben:
[root@archlinux ~]# systemctl status grub-btrfs.path ● grub-btrfs.path - Monitors for new snapshots Loaded: loaded (/usr/lib/systemd/system/grub-btrfs.path; enabled; ven> Active: active (waiting) since Mon 2020-12-07 17:36:55 CET; 26s ago Triggers: ● grub-btrfs.service Dec 07 17:36:55 vml010 systemd[1]: Started Monitors for new snapshots.
Praxis
Auf einen snapshot zurücksetzen
Nachfolgender soll das Programm screenfatch
installoert werden und anschließend die Installation durch starten eines vorhergehenden Snapshots rückgängig gemacht werden.
Mit nachfolgendem Befehl, kann screenfetch
installiert werden:
[root@archlinux ~]# pacman --noconfirm -S screenfetch resolving dependencies... looking for conflicting packages... Packages (18) bc-1.07.1-4 libx11-1.7.0-1 libxau-1.0.9-3 libxcb-1.14-1 libxcomposite-0.4.5-3 libxdmcp-1.1.3-3 libxext-1.3.4-3 libxfixes-5.0.3-4 libxi-1.7.10-3 libxinerama-1.1.4-3 libxrender-0.9.10-4 libxtst-1.2.3-4 libxxf86vm-1.1.4-4 xcb-proto-1.14.1-3 xorg-xdpyinfo-1.3.2-4 xorg-xprop-1.2.5-1 xorgproto-2020.1-1 screenfetch-3.9.1-1 Total Download Size: 3.95 MiB Total Installed Size: 17.84 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... bc-1.07.1-4-x86_64 87.8 KiB 2.14 MiB/s 00:00 [#################] 100% xcb-proto-1.14.1... 108.0 KiB 3.52 MiB/s 00:00 [#################] 100% libxdmcp-1.1.3-3... 27.4 KiB 0.00 B/s 00:00 [#################] 100% libxau-1.0.9-3-x... 10.9 KiB 0.00 B/s 00:00 [#################] 100% libxcb-1.14-1-x86_64 999.8 KiB 8.14 MiB/s 00:00 [#################] 100% xorgproto-2020.1... 237.9 KiB 11.6 MiB/s 00:00 [#################] 100% libx11-1.7.0-1-x... 2.1 MiB 9.42 MiB/s 00:00 [#################] 100% libxext-1.3.4-3-... 107.3 KiB 10.5 MiB/s 00:00 [#################] 100% libxi-1.7.10-3-x... 148.3 KiB 14.5 MiB/s 00:00 [#################] 100% libxfixes-5.0.3-... 13.4 KiB 0.00 B/s 00:00 [#################] 100% libxtst-1.2.3-4-... 29.5 KiB 0.00 B/s 00:00 [#################] 100% libxxf86vm-1.1.4... 15.7 KiB 0.00 B/s 00:00 [#################] 100% libxrender-0.9.1... 26.0 KiB 0.00 B/s 00:00 [#################] 100% libxcomposite-0.... 11.4 KiB 0.00 B/s 00:00 [#################] 100% libxinerama-1.1.... 10.1 KiB 1015 KiB/s 00:00 [#################] 100% xorg-xdpyinfo-1.... 16.0 KiB 0.00 B/s 00:00 [#################] 100% xorg-xprop-1.2.5... 26.3 KiB 0.00 B/s 00:00 [#################] 100% screenfetch-3.9.... 50.9 KiB 4.97 MiB/s 00:00 [#################] 100% (18/18) checking keys in keyring [#################] 100% (18/18) checking package integrity [#################] 100% (18/18) loading package files [#################] 100% (18/18) checking for file conflicts [#################] 100% (18/18) checking available disk space [#################] 100% :: Running pre-transaction hooks... (1/1) Performing snapper pre snapshots for the following configurations... ==> root: 1 :: Processing package changes... ( 1/18) installing bc [#################] 100% ( 2/18) installing xcb-proto [#################] 100% ( 3/18) installing libxdmcp [#################] 100% ( 4/18) installing libxau [#################] 100% ( 5/18) installing libxcb [#################] 100% ( 6/18) installing xorgproto [#################] 100% ( 7/18) installing libx11 [#################] 100% ( 8/18) installing libxext [#################] 100% ( 9/18) installing libxi [#################] 100% (10/18) installing libxfixes [#################] 100% (11/18) installing libxtst [#################] 100% (12/18) installing libxxf86vm [#################] 100% (13/18) installing libxrender [#################] 100% (14/18) installing libxcomposite [#################] 100% (15/18) installing libxinerama [#################] 100% (16/18) installing xorg-xdpyinfo [#################] 100% (17/18) installing xorg-xprop [#################] 100% (18/18) installing screenfetch [#################] 100% Optional dependencies for screenfetch scrot: to take screenshot :: Running post-transaction hooks... (1/3) Arming ConditionNeedsUpdate... (2/3) Updating the info directory file... (3/3) Performing snapper post snapshots for the following configurations... ==> root: 2
Anhand der Ausgabe bei der Installation, kann in Erfahrung gebracht werden das zwei Snapshots erstellt wurden:
- Snapshot:
1
- Vor der Installation vonscreenfetch
- Snapshot:
2
- Nach der Installation vonscreenfetch
Dies kann auch durch Abfrage mit nachfolgendem Befehl bestätigt werden:
[root@archlinux ~]# snapper list # | Type | Pre # | Date | User | Cleanup | Description | Userdata ---+--------+-------+---------------------------------+------+---------+-----------------------------------------------------------------------------+--------- 0 | single | | | root | | current | 1 | pre | | Mon 07 Dec 2020 05:39:43 PM CET | root | number | pacman --noconfirm -S screenfetch | 2 | post | 1 | Mon 07 Dec 2020 05:39:44 PM CET | root | number | bc libx11 libxau libxcb libxcomposite libxdmcp libxext libxfixes libxi l... |
Eine Überprüfung, ob das Programm screenfetch
aufgrufen und ausgeführt werden kann, kann durch Aufruf von screenfetch
durchgeführt werden:
root@archlinux ~]# screenfetch -` .o+` root@archlinux `ooo/ OS: Arch Linux `+oooo: Kernel: x86_64 Linux 5.4.81-1-lts `+oooooo: Uptime: 47m -+oooooo+: Packages: 198 `/:-:++oooo+: Shell: bash 5.0.18 `/++++/+++++++: Disk: 13G / 228G (6%) `/++++++++++++++: CPU: Intel Core (Skylake, IBRS) @ 2.304GHz `/+++ooooooooooooo/` GPU: Red Hat, Inc. Virtio GPU (rev 01) ./ooosssso++osssssso+` RAM: 224MiB / 983MiB .oossssso-````/ossssss+` -osssssso. :ssssssso. :osssssss/ osssso+++. /ossssssss/ +ssssooo/- `/ossssso+/:- -:/+osssso+- `+sso+:-` `.-/+oso: `++:. `-/+/ .` `/
Um jetzt die Installation von screenfetch
rückgängig machen zu können, kann nachfolgender Befehl nun angewendet werden:
[root@archlinux ~]# snapper -v undochange 1..2 create:0 modify:2 delete:4235 ...
Ein erneuter Aufruf von screenfetch
, sollte nun zu einer Fehlermeldung führen und anzeigen, dass das Programm nicht gefunden werden kann und somit auch nicht installiert ist:
[root@archlinux ~]# screenfetch -bash: /usr/bin/screenfetch: No such file or directory
In einen snapshot starten (booten)
Alle möglichen Snapshots in die gestartet werden kann, sind in einem Untermenü beim Neustart in GRUB ersichtlich, wie nachfolgende Bildschirmkopien zeigen:
Druch Auswahl des GRUB-Menüpunktes Arch Linux snapshots, sollte in etwa ein Bildschirm wie nachfolgender zum Vorschein kommen:
Durch Auswahl des obersten Menüpunktes, sollte nun eine Anzeige wie nachfolgende erscheinen, in dem der zu startende (boot) Kernel ausgewählt werden kann:
Nach einem erfolgreichen Startvorgang (booten), kann das Programm screenfetch
wieder verwendet werden, wie nachfolgender Aufruf zeigt:
[root@archlinux ~]# screenfetch -` .o+` root@archlinux `ooo/ OS: Arch Linux `+oooo: Kernel: x86_64 Linux 5.4.81-1-lts `+oooooo: Uptime: 47m -+oooooo+: Packages: 198 `/:-:++oooo+: Shell: bash 5.0.18 `/++++/+++++++: Disk: 13G / 228G (6%) `/++++++++++++++: CPU: Intel Core (Skylake, IBRS) @ 2.304GHz `/+++ooooooooooooo/` GPU: Red Hat, Inc. Virtio GPU (rev 01) ./ooosssso++osssssso+` RAM: 224MiB / 983MiB .oossssso-````/ossssss+` -osssssso. :ssssssso. :osssssss/ osssso+++. /ossssssss/ +ssssooo/- `/ossssso+/:- -:/+osssso+- `+sso+:-` `.-/+oso: `++:. `-/+/ .` `/ [root@archlinux ~]#
ACHTUNG - Der gestartet Snapshot ist ein „read-only“ Snapshot !!!
Der Versuch in das Btrfs: Subvolume - /
(root) zu schreiben schlägt fehl, wie nachfolgendes Beispiel zeigt:
[root@archlinux ~]# touch /test.txt touch: cannot touch '/test.txt': Read-only file system
Damit wieder eine read-write Snapshot aus dem aktuell gestarteten Snapshot wird, sind nachfolgende Schritte erforderlich.
Praxis: BIOS-Boot
BIOS-Boot: Einen read-write snapshot erzeugen
Mit nachfolgenden Befehlen und einem Neustart wird aus einem read-only Snapshot wieder ein read-write Snapshot.
Nachfolgender Befehl überprüft, welcher Snapshot aktuell gemountet ist (Hier die Nummer 4
):
[root@archlinux ~]# mount | grep /@snapshots/ /dev/mapper/archlinux-root on / type btrfs (rw,relatime,space_cache=v2,subvol=/@snapshots/2/snapshot)
Um jetzt mit einen Rollback (zurücksetzen) auch auf einen beliebigen startbaren (boot) Snapshot gehen zu können, ist es erforderlich aus dem read-only Snapshot wieder einen read-write Snapshot zu erstellen, was mit nachfolgendem Befehl durchgeführt werden kann:
[root@archlinux ~]# snapper -a classic rollback 2 Ambit is classic. Creating read-only snapshot of current system. (Snapshot 3.) Creating read-write snapshot of snapshot 2. (Snapshot 4.) Setting default subvolume to snapshot 4.
Wichtig ist hier der Snapshot mit der Nummer 4
, welcher einen startbereiten (boot) read-write Snapshot darstellt.
WICHTIG - Leider kann nur über das editieren beim Starten via GRUB dieser Snapshot gestartet (boot) werden !!!
Nachfolgend ist wieder ein Neustart durchzuführen:
[root@archlinux ~]# systemctl reboot
Durch Auswahl des GRUB-Menüpunktes Arch Linux snapshots, sollte in etwa ein Bildschirm wie nachfolgender zum Vorschein kommen:
Durch Auswahl des obersten Menüpunktes, sollte nun eine Anzeige wie nachfolgende erscheinen, in dem der zu startende (boot) Kernel ausgewählt werden kann:
WICHTIG - Jetzt ist die [e]-Taste zu drücken um den GRUB-Kernel-Bootmenü-Eintrag editieren zu können !!!
WICHTIG - Ersetzen der Snapshot-Nummer 2
durch die Snapshot_nummer 4
!!!
WICHTIG - Um die Änderungen wirksam werden zu lassen, ist die [F10]-Taste oder [Ctrl-x]|[Strg-x] zu betätigen !!!
Jetzt kann mit nachfolgendem Befehl überprüft werden, ob der Snapshot mit der Nummer 4
gestartet (boot) wurde:
[root@archlinux ~]# mount | grep /@snapshots/ /dev/mapper/archlinux-root on / type btrfs (rw,relatime,space_cache=v2,subvol=/@snapshots/4/snapshot)
Und ob dieser auch ein read-write Snapshot ist, wie nachfolgender Befehl beweist:
[root@archlinux ~]# touch /test.txt
[root@archlinux ~]# ls -la /test.txt -rw-r--r-- 1 root root 0 Dec 7 18:14 /test.txt
WICHTIG - Damit zukünftig von diesem Snapshot - standardmässig gestartet wird, muss nachfolgender Befehl ausgeführt werden:
Hier wird der Bootloader - hier GRUB neu installiert, falls es sich um BIOS-Boot handelt.
[root@archlinux ~]# grub-install /dev/vda Installing for i386-pc platform. Installation finished. No error reported.
Anschließend muss noch der Bootloader - hier GRUB neu konfiguriert werden:
[root@archlinux ~]# grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux-lts Found initrd image: /boot/initramfs-linux-lts.img Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img Detecting snapshots ... Info: Separate boot partition not detected Info: snapper detected, using config 'root' Found snapshot: 2020-12-07 18:00:31 | @snapshots/4/snapshot | single | writable copy of #2 Found snapshot: 2020-12-07 18:00:31 | @snapshots/3/snapshot | single | rollback backup Found snapshot: 2020-12-07 17:39:44 | @snapshots/2/snapshot | post | bc libx11 libxau libxcb libxcomposite libxdmcp libxext libxfixes libxi l... Found snapshot: 2020-12-07 17:39:43 | @snapshots/1/snapshot | pre | pacman --noconfirm -S screenfetch Found 4 snapshot(s) done
[root@archlinux ~]# systemctl reboot
Nach einem erneuten Neustart sollte jetzt der Snapshot mit der Nummer 6
der Snapshot sein, welcher auch über den Standardeintrag gestartet wird, was nachfolgende Bildschirmkopie zeigt:
Eine Überprüfung, welcher Snapshot gestartet (boot) ist, kann nochmals mit nachfolgendem Befehl durchgeführt werden:
[root@archlinux ~]# mount | grep /@snapshots/ /dev/mapper/archlinux-root on / type btrfs (rw,relatime,space_cache=v2,subvol=/@snapshots/4/snapshot)
Praxis: UEFI-Boot
UEFI-Boot: 95-bootbackup.hook
Nachdem es bei der Verwendung von UEFI-Boot eine separate BOOT-Partition meist mit dem Dateisystem vfat
gibt, kann mit Btrfs-Bordmitteln keine Snapshot von /boot
erstellt werden. Hier ist der Einsatz eine pacman-hook
erforderlich.
Dazu soll in nachfolgendem Verzeichnis, mit nachfolgendem Namen eine pacman-hook
erstellt werden, welches bei jedem kernel
-Installation/Update/Remove des pacman-hook
ausführt.
Dadurch wird eine Sicherung des Inhalts des Verzeichnisses /boot
nach /.bootbackup
erstellt, worin alle zum jeweiligen kernel
passenden Teile enthalten sind!
WICHTIG - Sonst passen z.B.
vmlinuz-linux-lts
initramfs-linux-lts-fallback.img
initramfs-linux-lts.img
nicht zum kernel
!!!
Nachfolgender Befehl ersteltl die Konfigurationsdatei für den pacman-hook
# vim /usr/share/libalpm/hooks/95-bootbackup.hook
[Trigger] Operation = Upgrade Operation = Install Operation = Remove Type = Path Target = usr/lib/modules/*/vmlinuz [Action] Depends = rsync Description = Backing up /boot... When = PostTransaction Exec = /usr/bin/rsync -a --delete /boot /.bootbackup
UEFI-Boot: Einen read-write snapshot erzeugen
Mit nachfolgenden Befehlen und einem Neustart wird aus einem read-only Snapshot wieder ein read-write Snapshot.
Nachfolgender Befehl überprüft, welcher Snapshot aktuell gemountet ist (Hier die Nummer 4
):
[root@archlinux ~]# mount | grep /.snapshots /dev/mapper/archlinux-root on on /.snapshots type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=261,subvol=/@snapshots)
Um jetzt mit einen Rollback (zurücksetzen) auch auf einen beliebigen startbaren (boot) Snapshot gehen zu können, ist es erforderlich aus dem read-only Snapshot wieder einen read-write Snapshot zu erstellen, was mit nachfolgendem Befehl durchgeführt werden kann:
[root@archlinux ~]# snapper -a classic rollback 2 Ambit is classic. Creating read-only snapshot of current system. (Snapshot 3.) Creating read-write snapshot of snapshot 2. (Snapshot 4.) Setting default subvolume to snapshot 4.
Wichtig ist hier der Snapshot mit der Nummer 4
, welcher einen startbereiten (boot) read-write Snapshot darstellt.
WICHTIG - Leider kann nur über das editieren beim Starten via GRUB dieser Snapshot gestartet (boot) werden !!!
Nachfolgend ist wieder ein Neustart durchzuführen:
[root@archlinux ~]# systemctl reboot
Durch Auswahl des GRUB-Menüpunktes Arch Linux snapshots, sollte in etwa ein Bildschirm wie nachfolgender zum Vorschein kommen:
Durch Auswahl des obersten Menüpunktes, sollte nun eine Anzeige wie nachfolgende erscheinen, in dem der zu startende (boot) Kernel ausgewählt werden kann:
WICHTIG - Jetzt ist die [e]-Taste zu drücken um den GRUB-Kernel-Bootmenü-Eintrag editieren zu können !!!
WICHTIG - Ersetzen der Snapshot-Nummer 2
durch die Snapshot_nummer 4
!!!
WICHTIG - Um die Änderungen wirksam werden zu lassen, ist die [F10]-Taste oder [Ctrl-x]|[Strg-x] zu betätigen !!!
Jetzt kann mit nachfolgendem Befehl überprüft werden, ob der Snapshot mit der Nummer 4
gestartet (boot) wurde:
mount | grep /.snapshots /dev/mapper/vml250-root on / type btrfs (rw,relatime,compress=zstd:3,space_cache=v2,subvolid=283,subvol=/@snapshots/4/snapshot)
Und ob dieser auch ein read-write Snapshot ist, wie nachfolgender Befehl beweist:
[root@archlinux ~]# touch /test.txt
[root@archlinux ~]# ls -la /test.txt -rw-r--r-- 1 root root 0 Dec 7 18:14 /test.txt
WICHTIG - Falls Fehler beim starten (booten) auftreten, werden diese durch tauschen der gesicherten /boot
-Partition behoben !!!
Nachfolgender Befehl kopiert die aus einem vorhergehenden „Snapshot“, hier aus dem Snapshot 2 gesicherte BOOT-Partition unter /.bootbackup
wieder nach /boot
zurück:
#
Abschließend muss nun noch einmal das BOOT-Menü neu erzeugt werden, um keine Menü-Einträge zu verlieren:
[root@archlinux ~]# grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux-lts Found initrd image: /boot/initramfs-linux-lts.img Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img Detecting snapshots ... Info: Separate boot partition not detected Info: snapper detected, using config 'root' Found snapshot: 2020-12-07 18:25:56 | @root Found 1 snapshot(s) done
Abschlißend ist wieder ein Neustart durchzuführen:
[root@archlinux ~]# systemctl reboot
Praxis: BIOS & UEFI-Boot
Einen snapshot zu root zurücksetzen
Nachdem in einen read-write Snapshot gestartet (boot) wurde, soll dieser wieder zum root
gemacht werden, damit ggf. später auch der aktuelle Snapshot von dem gerade gestartet (boot) wurde auch gelöscht werden kann.
Dazu soll zuerst der „alte“ Stand von root
mit nachfolgendem Befehl gelöscht werden:
[root@archlinux ~]# rm /btrfs/@root -rf
Anschließend soll ein read-write - Snapshot vom aktuellen Snapshot von dem gerade gebootet wurde via snapper kopiert werden, was mit nachfolgendem Befehl durchgeführt werden soll:
[root@archlinux ~]# btrfs subvol snapshot /.snapshots/4/snapshot /btrfs Create a snapshot of '/.snapshots/4/snapshot' in '/btrfs/snapshot'
Der so erzeugte read-write Snapshot in nachfolgendem Verzeichnis mit nachfolgendem Namen
/btrfs/snapshot
muss nun noch umbenannt werden, was mit nachfolgendem Befehl durchgeführt werden soll:
[root@archlinux ~]# mv /btrfs/snapshot /btrfs/@root
Abschließend muss nun die GRUB-Konfigurationsdatei in nachfolgendem Verzeichnis mit nachfolgendem Namen
/boot/grub/grub.cfg
noch entsprechend angepasst werden.
[root@archlinux ~]# vim /boot/grub/grub.cfg
WICHTIG - font=„/snapshots/4/snapshot/usr/share/grub/unicode.pf2“
muss gegen font=„/usr/share/grub/unicode.pf2“
ausgetauscht werden.
HINWEIS - Alle Einträge mit snapshots/4/snapshot
müssen gegen root
ausgetauscht werden!
Nachfolgend eine Liste der relevanten Stellen (nur relevanter Ausschnitt):
font="/usr/share/grub/unicode.pf2"
Eine Suche im Editor nach font=„
findet die Stelle am schnellsten.
linux /@snapshots/4/snapshot/boot/vmlinuz-linux-lts root=/dev/mapper/archlinux-root rw rootflags=subvol=@snapshots/4/snapshot loglevel=3 net.ifnames=0
menuentry 'Arch Linux
' - Wichtig ist hier alle Angabe @snapshots/4/snapshot
, die wie oben gezeigt, angepasst werden müssen und gegen @root
ausgetauscht werden müssen.
initrd /@snapshots/4/snapshot/boot/initramfs-linux-lts.img
menuentry 'Arch Linux
' - initrd
Wichtig ist hier alle Angabe @snapshots/4/snapshot
, die wie oben gezeigt, angepasst werden müssen und gegen @root
ausgetauscht werden müssen.
linux /@snapshots/4/snapshot/boot/vmlinuz-linux-lts root=/dev/mapper/archlinux-root rw rootflags=subvol=@snapshots/4/snapshot loglevel=3 net.ifnames=0
submenu 'Advanced options for Arch Linux
' - Wichtig ist hier alle Angabe @snapshots/4/snapshot
, die wie oben gezeigt, angepasst werden müssen und gegen @root
ausgetauscht werden müssen.
initrd /@snapshots/4/snapshot/boot/initramfs-linux-lts.img
submenu 'Advanced options for Arch Linux
' - initrd
Wichtig ist hier alle Angabe @snapshots/4/snapshot
, die wie oben gezeigt, angepasst werden müssen und gegen @root
ausgetauscht werden müssen.
linux /@snapshots/4/snapshot/boot/vmlinuz-linux-lts root=/dev/mapper/archlinux-root rw rootflags=subvol=@snapshots/4/snapshot loglevel=3 net.ifnames=0
menuentry 'Arch Linux, with Linux linux-lts (fallback initramfs)
' - Wichtig ist hier alle Angabe @snapshots/4/snapshot
, die wie oben gezeigt, angepasst werden müssen und gegen @root
ausgetauscht werden müssen.
initrd /@snapshots/4/snapshot/boot/initramfs-linux-lts-fallback.img
menuentry 'Arch Linux, with Linux linux-lts (fallback initramfs)
' - initrd
Wichtig ist hier alle Angabe @snapshots/4/snapshot
, die wie oben gezeigt, angepasst werden müssen und gegen @root
ausgetauscht werden müssen.
WICHTIG - Damit zukünftig von diesem Snapshot - standardmässig gestartet wird, muss nachfolgender Befehl ausgeführt werden:
Hier wird der Bootloader - hier GRUB neu installiert, falls es sich um BIOS-Boot handelt.
[root@archlinux ~]# grub-install /dev/vda Installing for i386-pc platform. Installation finished. No error reported.
[root@archlinux ~]# systemctl reboot
Nach einem Neustart, sollte nun wieder root
gestartet (boot) werden, was nachfolgende Bildschirmkopie zeigt:
Eine Überprüfung, ob root
gestartet (boot) wurde, kann mit nachfolgendem Befehl durchgeführt werden:
[root@archlinux ~]# mount | grep /@root /dev/mapper/archlinux-root on / type btrfs (rw,relatime,space_cache=v2,subvol=/@root)
Anschließend soll das Subvolume - /
wieder der default werden, was mit nachfolgendem Befehl durchgeführt werden kann:
[root@archlinux ~]# btrfs subvolume set-default 0 /
Zur Überprüfung kann nachfolgende Befehl verwendet werden:
[root@archlinux ~]# btrfs subvolume get-default / ID 276 gen 100 top level 5 path @root
Nun können auch beispielsweise alle Snapshots mit nachfolgendem Befehl gelöscht werden:
[root@archlinux ~]# snapper delete 4 [root@archlinux ~]# snapper delete 3 [root@archlinux ~]# snapper delete 2 [root@archlinux ~]# snapper delete 1
Abschließend würde dann die Anzeige aller Snapshots wie folgt aussehen:
[root@archlinux ~]# snapper list # | Type | Pre # | Date | User | Cleanup | Description | Userdata ---+--------+-------+------+------+---------+-------------+--------- 0 | single | | | root | | current |
Auch die Anzeige des via BtrfS verwendeten Speicherplatzes zeigt nur die für root
verwendeten daten an:
[root@archlinux ~]# df -Th | grep /dev/mapper /dev/mapper/archlinux-root btrfs 30G 1.8G 28G 6% / /dev/mapper/archlinux-tmp btrfs 1.0G 3.6M 905M 1% /tmp /dev/mapper/archlinux-home btrfs 1.0G 3.6M 905M 1% /home /dev/mapper/archlinux-root btrfs 30G 1.8G 28G 6% /.snapshots /dev/mapper/archlinux-root btrfs 30G 1.8G 28G 6% /btrfs /dev/mapper/archlinux-root btrfs 30G 1.8G 28G 6% /opt /dev/mapper/archlinux-root btrfs 30G 1.8G 28G 6% /srv /dev/mapper/archlinux-root btrfs 30G 1.8G 28G 6% /usr/local /dev/mapper/archlinux-var_pkg btrfs 12G 11M 12G 1% /var/cache/pacman/pkg /dev/mapper/archlinux-var_log btrfs 3.0G 3.6M 2.5G 1% /var/log
bzw.
[root@archlinux ~]# btrfs filesystem df / Data, single: total=2.01GiB, used=1.54GiB System, DUP: total=8.00MiB, used=16.00KiB Metadata, DUP: total=256.00MiB, used=97.94MiB GlobalReserve, single: total=7.11MiB, used=0.00B
WICHTIG - Damit zukünftig von diesem Snapshot - standardmässig gestartet wird, muss nachfolgender Befehl ausgeführt werden:
Hier wird der Bootloader - hier GRUB neu installiert, falls es sich um BIOS-Boot handelt.
[root@archlinux ~]# grub-install /dev/vda Installing for i386-pc platform. Installation finished. No error reported.
Anschließend muss noch der Bootloader - hier GRUB neu konfiguriert werden:
[root@archlinux ~]# grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux-lts Found initrd image: /boot/initramfs-linux-lts.img Found fallback initrd image(s) in /boot: initramfs-linux-lts-fallback.img Detecting snapshots ... Info: Separate boot partition not detected Info: snapper detected, using config 'root' Found snapshot: 2020-12-07 18:25:56 | @root Found 1 snapshot(s) done