Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:docker:btrfs [2026/02/23 15:55] ingo_wichmann [BTRFS vorbereiten] |
admin_grundlagen:docker:btrfs [2026/03/21 14:49] (aktuell) ingo_wichmann |
||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| ===== BTRFS vorbereiten ===== | ===== BTRFS vorbereiten ===== | ||
| Voraussetzungen: | Voraussetzungen: | ||
| - | * kernel unterstützt BTRFS (( | + | * kernel unterstützt [[lpi2::btrfs|BTRFS]] (( |
| modinfo btrfs | modinfo btrfs | ||
| Zeile 14: | Zeile 14: | ||
| * Freie Partition oder freies Logical Volume | * Freie Partition oder freies Logical Volume | ||
| + | du -sh /var/lib/docker | ||
| lsblk | lsblk | ||
| - | mkfs.btrfs /dev/sdaX | + | -> Blockdevice mit genug Platz wählen. |
| + | mkfs.btrfs /dev/xxx | ||
| -> UUID merken, kommt später in die ''/etc/fstab'' | -> UUID merken, kommt später in die ''/etc/fstab'' | ||
| - | mount -m /dev/sdaX /mnt/btrfs | + | mount -m /dev/xxx /mnt/btrfs |
| cd /mnt/btrfs | cd /mnt/btrfs | ||
| btrfs subvolume create $(date '+%Y%m%d')00 | btrfs subvolume create $(date '+%Y%m%d')00 | ||
| - | btrfs subvolume show $(date '+%Y%m%d')00 | ||
| - | -> Subvolume ID merken | ||
| btrfs subvolume set-default $(date '+%Y%m%d')00 | btrfs subvolume set-default $(date '+%Y%m%d')00 | ||
| + | |||
| + | ===== containerd Daten ins Docker-Verzeichnis verschieben ===== | ||
| + | ab Docker Version 29.0 ist containerd das default Storage Backend | ||
| + | dockerd --version | ||
| + | docker info -f '{{ .DriverStatus }}' | ||
| + | -> enthält: ''driver-type io.containerd.snapshotter.v1'' | ||
| + | |||
| + | systemctl stop docker.socket docker.service containerd.service | ||
| + | <file txt /etc/containerd/config.toml> | ||
| + | … | ||
| + | root = "/var/lib/docker/containerd" | ||
| + | … | ||
| + | </file> | ||
| + | cd /var/lib | ||
| + | mv containerd/ docker | ||
| + | ln -s docker/containerd containerd | ||
| ===== Docker Daten in BTRFS verschieben ===== | ===== Docker Daten in BTRFS verschieben ===== | ||
| - | systemctl stop docker.socket docker.service | + | systemctl stop docker.socket docker.service containerd.service |
| cd /var/lib/ | cd /var/lib/ | ||
| - | du -sh docker | ||
| - | df -h . | ||
| - | -> ist genug Platz für ein Backup? | ||
| - | tar -caf docker.tar.zst docker/ | ||
| shopt -s dotglob | shopt -s dotglob | ||
| - | rm -rf docker/* | + | mv docker/* /mnt/btrfs/$(date '+%Y%m%d')00 |
| <file txt /etc/fstab> | <file txt /etc/fstab> | ||
| … | … | ||
| - | # device during installation: /dev/sdaX | + | # device during installation: /dev/xxx |
| UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /var/lib/docker btrfs rw 0 2 | UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /var/lib/docker btrfs rw 0 2 | ||
| UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/btrfs btrfs noauto,subvol=/ 0 2 | UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/btrfs btrfs noauto,subvol=/ 0 2 | ||
| </file> | </file> | ||
| mount -av | mount -av | ||
| - | tar -xf docker.tar.zst | ||
| - | rm docker.tar.zst | ||
| - | |||
| - | systemctl start docker.socket | ||
| + | systemctl start docker.socket docker.service containerd.service | ||
| + | ++++ ohne containerd: | | ||
| + | systemctl start docker.socket docker.socket | ||
| + | ++++ | ||
| ===== Snapshot erstellen ===== | ===== Snapshot erstellen ===== | ||
| aktuell aktives Docker-Subvolume ermitteln: | aktuell aktives Docker-Subvolume ermitteln: | ||
| Zeile 50: | Zeile 63: | ||
| cd /mnt/btrfs | cd /mnt/btrfs | ||
| btrfs subvolume get-default . | btrfs subvolume get-default . | ||
| - | -> ID 472 gen 428819 top level 5 path **20xxxxxx00** | + | -> Subvolume merken: ''ID 472 gen 428819 top level 5 path **20xxxxxx00**'' |
| - | Container stoppen: | + | === Container stoppen === |
| - | systemctl stop docker.socket docker.service | + | systemctl stop docker.socket docker.service containerd.service |
| - | Snapshot erstellen | + | ++++ ohne containerd: | |
| + | systemctl stop docker.socket docker.socket | ||
| + | ++++ | ||
| + | === Snapshot erstellen === | ||
| btrfs subvolume snapshot 20xxxxxx00 $(date '+%Y%m%d')01 | btrfs subvolume snapshot 20xxxxxx00 $(date '+%Y%m%d')01 | ||
| - | Container starten: | + | |
| - | systemctl start docker.socket | + | === Container starten === |
| + | systemctl start docker.socket docker.service containerd.service | ||
| + | ++++ ohne containerd: | | ||
| + | systemctl start docker.socket docker.service | ||
| + | ++++ | ||
| + | === Starten überprüfen === | ||
| watch docker ps | watch docker ps | ||