Had a bad morning, because I read the ZFS 2.0 release notes wrong: the rule is that ANY use of zstd on your rpool will make grub fail to boot. I thought this would apply only to the root dataset or something like that, but it's really a big deal if you use zstd anywhere in the rpool, so don't do it.
There are other bootloaders and complicated fixes, but the easiest option (which I did) is to destroy all the datasets using zstd, and then everything will boot again.
Steps:
1. Boot from a proxmox 6.4 ISO or later, choose Debug install, "exit" at the first prompt so zfs loads.
2.
3.
4. For each affected dataset, you can replay them to use lz4 this way:
Reboot and all is well.
There are other bootloaders and complicated fixes, but the easiest option (which I did) is to destroy all the datasets using zstd, and then everything will boot again.
Steps:
1. Boot from a proxmox 6.4 ISO or later, choose Debug install, "exit" at the first prompt so zfs loads.
2.
zpool import -f -R /mnt rpool
3.
zfs get compression | grep zstd
- write these all down because they will need to be destroyed4. For each affected dataset, you can replay them to use lz4 this way:
zfs set compression=lz4 DATASET
zfs create DATASET-replay
zfs snapshot -r DATASET@re
zfs send -R DATASET@re | zfs recv -vF DATASET-replay
...
zfs destroy -rf DATASET
zfs rename DATASET-replay DATASET
zpool export rpool
Reboot and all is well.
Last edited: