modinfo btrfs modprobe btrfs grep btrfs /proc/filesystems→ Sollte bei Debian, Ubuntu und SuSE
btrfs ausgeben. RedHat unterstützt BTRFS nicht.
Voraussetzungen:
btrfs-progsdu -sh /var/lib/docker lsblk
→ Blockdevice mit genug Platz wählen.
mkfs.btrfs /dev/xxx
→ UUID merken, kommt später in die /etc/fstab
mount -m /dev/xxx /mnt/btrfs cd /mnt/btrfs btrfs subvolume create $(date '+%Y%m%d')00 btrfs subvolume set-default $(date '+%Y%m%d')00
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
… root = "/var/lib/docker/containerd" …
cd /var/lib mv containerd/ docker ln -s docker/containerd containerd
systemctl stop docker.socket docker.service containerd.service
cd /var/lib/ shopt -s dotglob mv docker/* /mnt/btrfs/$(date '+%Y%m%d')00
… # device during installation: /dev/xxx 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
mount -av
systemctl start docker.socket docker.service containerd.service
aktuell aktives Docker-Subvolume ermitteln:
mount /mnt/btrfs cd /mnt/btrfs btrfs subvolume get-default .
→ Subvolume merken: ID 472 gen 428819 top level 5 path 20xxxxxx00
systemctl stop docker.socket docker.service containerd.service
btrfs subvolume snapshot 20xxxxxx00 $(date '+%Y%m%d')01
systemctl start docker.socket docker.service containerd.service
watch docker ps
siehe auch https://docs.docker.com/storage/storagedriver/btrfs-driver/
{
"storage-driver": "btrfs"
}
systemctl start docker.socket systemctl start docker.service
prüfen:
docker info
→ Storage Driver: btrfs
modinfo btrfs modprobe btrfs grep btrfs /proc/filesystems→ Sollte bei Debian, Ubuntu und SuSE
btrfs ausgeben. RedHat unterstützt BTRFS nicht.