Remove ubuntu zfs snapshots
There are so many snapshots when using zfs in ubuntu.
Issue
When tried to do release update, got following error
# do-release-update
...
...
Not enough free disk space
The upgrade has aborted. The upgrade needs a total of 256 M free
space on disk '/boot'. Please free at least an additional 91.4 M of
disk space on '/boot'. You can remove old kernels using 'sudo apt
autoremove' and you could also set COMPRESS=xz in
/etc/initramfs-tools/initramfs.conf to reduce the size of your
initramfs.
...
This error messsage was occurred many times before, but those systems had very small /boot partition or many old kernels kept. If it is the first case, total repartitioning and moving root filesystem are required.
Space on /boot
Examing disk space for bpool, found that zfs reported 675MB used in bpool, but actual usage is only 242MB.
root@ubuntu:~# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
bpool 960M 675M 285M - - 30% 70% 1.00x ONLINE -
rpool 17.5G 7.99G 9.51G - - 21% 45% 1.00x ONLINE -
root@ubuntu:~# zfs list bpool
NAME USED AVAIL REFER MOUNTPOINT
bpool 675M 157M 96K /boot
root@ubuntu:~# du -cshx /boot
242M /boot
242M total
root@ubuntu:~#
Then found many snapshots both in bpool and data pool
root@ubuntu:~# zfs list -t snapshot | head
NAME USED AVAIL REFER MOUNTPOINT
bpool/BOOT/ubuntu_e8m8h0@autozsys_ywm1ok 0B - 238M -
bpool/BOOT/ubuntu_e8m8h0@autozsys_ms74md 0B - 238M -
bpool/BOOT/ubuntu_e8m8h0@autozsys_ugu9z7 80K - 242M -
bpool/BOOT/ubuntu_e8m8h0@autozsys_r3xqau 72K - 242M -
bpool/BOOT/ubuntu_e8m8h0@autozsys_nkagbh 0B - 242M -
bpool/BOOT/ubuntu_e8m8h0@autozsys_xdbwsy 0B - 242M -
bpool/BOOT/ubuntu_e8m8h0@autozsys_zrt7vi 72K - 242M -
bpool/BOOT/ubuntu_e8m8h0@autozsys_jbmnwk 72K - 242M -
bpool/BOOT/ubuntu_e8m8h0@autozsys_0e5p2e 64K - 242M -
root@ubuntu:~#
root@ubuntu:~# zfs list -t snapshot | wc
301 1505 27701
Too many! Not sure how many snapshots ubuntu likes to create
Removing snapshots
List all snapshots for /boot
root@ubuntu:~# df /boot
Filesystem 1K-blocks Used Available Use% Mounted on
bpool/BOOT/ubuntu_e8m8h0 408192 247808 160384 61% /boot
root@ubuntu:~# zfs list -H -o name -t snapshot bpool/BOOT/ubuntu_e8m8h0
bpool/BOOT/ubuntu_e8m8h0@autozsys_ywm1ok
bpool/BOOT/ubuntu_e8m8h0@autozsys_ms74md
bpool/BOOT/ubuntu_e8m8h0@autozsys_ugu9z7
bpool/BOOT/ubuntu_e8m8h0@autozsys_r3xqau
bpool/BOOT/ubuntu_e8m8h0@autozsys_nkagbh
bpool/BOOT/ubuntu_e8m8h0@autozsys_xdbwsy
bpool/BOOT/ubuntu_e8m8h0@autozsys_zrt7vi
bpool/BOOT/ubuntu_e8m8h0@autozsys_jbmnwk
bpool/BOOT/ubuntu_e8m8h0@autozsys_0e5p2e
bpool/BOOT/ubuntu_e8m8h0@autozsys_b17dwn
bpool/BOOT/ubuntu_e8m8h0@autozsys_uad1rb
bpool/BOOT/ubuntu_e8m8h0@autozsys_mxhvc9
bpool/BOOT/ubuntu_e8m8h0@autozsys_9athz8
bpool/BOOT/ubuntu_e8m8h0@autozsys_61umv1
bpool/BOOT/ubuntu_e8m8h0@autozsys_1q65cz
root@ubuntu:~#
Then remove them
zfs list -H -o name -t snapshot bpool/BOOT/ubuntu_e8m8h0 | xargs -n 1 zfs destroy
Now, it is ok to upgrade
root@ubuntu:~# zfs list -o space bpool
NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
bpool 589M 243M 0B 96K 0B 243M
root@ubuntu:~#