2.0 KiB
2.0 KiB
date, category, aiTextLevel, syndication, updated, mpUrl, permalink
| date | category | aiTextLevel | syndication | updated | mpUrl | permalink | |
|---|---|---|---|---|---|---|---|
| 2026-04-01T13:59:14.462Z | bsd/zfs | 0 |
|
2026-04-01T14:00:43.164Z | https://blog.giersig.eu/notes/bed63/ | /notes/bed63/ |
The beauty of ZFS! I’ve got some extra space, so I’m moving some large jails there, where they can live happily ever after.
Step 1 — Stop both jails.
Step 2 — Create parent datasets on new pool "store":
zfs create -o mountpoint=none store/bastille
zfs create -o mountpoint=none store/bastille/jails
Step 3 — Snapshot both jail datasets:
zfs snapshot -r zroot/bastille/jails/audio@migrate
zfs snapshot -r zroot/bastille/jails/cloud@migrate
Step 4 — Transfer to "store":
zfs send -R zroot/bastille/jails/audio@migrate | zfs recv -o mountpoint=none store/bastille/jails/audio
zfs send -R zroot/bastille/jails/cloud@migrate | zfs recv -o mountpoint=none store/bastille/jails/cloud
Step 5 — Unmount old datasets and disable auto-mount:
zfs unmount -f zroot/bastille/jails/audio
zfs unmount -f zroot/bastille/jails/cloud
zfs set canmount=noauto zroot/bastille/jails/audio
zfs set canmount=noauto zroot/bastille/jails/audio/root
zfs set canmount=noauto zroot/bastille/jails/cloud
zfs set canmount=noauto zroot/bastille/jails/cloud/root
Step 6 — Set mountpoints on new datasets (children inherit):
zfs set mountpoint=/usr/local/bastille/jails/audio store/bastille/jails/audio
zfs set mountpoint=/usr/local/bastille/jails/cloud store/bastille/jails/cloud
Step 7 — Mount new datasets:
zfs mount store/bastille/jails/audio
zfs mount store/bastille/jails/audio/root
zfs mount store/bastille/jails/cloud
zfs mount store/bastille/jails/cloud/root
Step 8 — Quick sanity check:
ls /usr/local/bastille/jails/audio/root/srv/funkwhale/
ls /usr/local/bastille/jails/cloud/root/usr/local/www/cloud/
Step 9 - destroy the old dataset
zfs destroy -r zroot/bastille/jails/audio
zfs destroy -r zroot/bastille/jails/cloud