diff options
| author | 2026-05-29 11:18:13 +0100 | |
|---|---|---|
| committer | 2026-05-29 11:18:13 +0100 | |
| commit | aabcdc206246aa935790908f2ab7e7edcc88b3b9 (patch) | |
| tree | fd66113b3403c07fc7281342d1b25ed77f911a44 /dot_config/containers | |
| parent | 1ab5e40fc75e293b87f645fc2de08e0a0fe3d50f (diff) | |
| download | dotfiles-aabcdc206246aa935790908f2ab7e7edcc88b3b9.tar.gz dotfiles-aabcdc206246aa935790908f2ab7e7edcc88b3b9.tar.bz2 dotfiles-aabcdc206246aa935790908f2ab7e7edcc88b3b9.zip | |
feat(podman): switch rootless storage driver to btrfs
fuse-overlayfs is dog-slow on `podman commit` (and noticeably slower
than native overlay/btrfs for layer extraction in general) because every
read/write round-trips through a FUSE daemon. The kernel overlay driver
does not support btrfs as a lowerdir, so on a btrfs root fs the choices
were:
- fuse-overlayfs (slow, but works)
- btrfs (native subvolume + CoW snapshot per layer; fast)
Switching graph drivers is destructive — the on-disk layout is
incompatible, so a one-time `podman system reset --force` is required.
A migration helper script lives at the repo root (gitignored,
chezmoiignored) that snapshots stateful containers, exports images and
volumes, runs the reset, and restores everything on the new driver.
Drops fuse-overlayfs from meta/base.txt — no longer needed and pulls
in libfuse3 transitively for nothing. (Flatpak still depends on it for
its own sandbox; pacman won't actually uninstall the binary while
flatpak is around — that's fine.)
VM (nix/vm.nix) is unaffected: it sets its own storage.conf inline
with driver=overlay since its rootfs is ext4.
Diffstat (limited to 'dot_config/containers')
| -rw-r--r-- | dot_config/containers/storage.conf | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/dot_config/containers/storage.conf b/dot_config/containers/storage.conf new file mode 100644 index 0000000..3ba957e --- /dev/null +++ b/dot_config/containers/storage.conf @@ -0,0 +1,17 @@ +# Rootless podman storage configuration. +# +# Uses the native kernel btrfs graph driver — much faster than fuse-overlayfs +# (especially `podman commit`) because layers are real btrfs subvolumes with +# CoW snapshots, no FUSE userspace round-trip. +# +# Switching driver requires a one-time `podman system reset --force`; the +# overlay/fuse-overlay on-disk layout is incompatible. See the migration +# helper at the dotfiles repo root (migrate-podman-to-btrfs.sh). +# +# graphroot/runroot left at defaults: +# graphroot = $XDG_DATA_HOME/containers/storage +# runroot = $XDG_RUNTIME_DIR/containers +# both are on btrfs in this setup (root fs is btrfs). + +[storage] +driver = "btrfs" |
