I already read those docs and I have configured my VDO with LVM and not VDO tools. But the failing RPM is the one that provides the KVDO kernel module, which (I believe) is still needed anyway.
Here is the line I used for creating my VDO LV:
lvcreate --type vdo --name lv_vm -l 100%FREE --virtualsize 5T --compression y --deduplication y vg_vdo
(the vg_vdo is a volume group dedicated to VDO volumes)
Running that command in a stock Rocky 9.6 installation fails saying that the KVDO kernel module cannot be located. And if it is installed through the kmod-kvdo RPM, it still fails because the module contained in the RPM fails the checks done against the kernel symbol versions.
/lib/modules/5.14.0-570.21.1.el9_6.x86_64/weak-updates/kmod-kvdo/vdo:
total used in directory 12 available 23.9 GiB
drwxr-xr-x 2 root root 4096 Jun 15 06:44 .
drwxr-xr-x 3 root root 4096 Jun 15 06:44 ..
lrwxrwxrwx 1 root root 62 Jun 15 06:44 kvdo.ko -> /lib/modules/5.14.0-570.el9.x86_64/extra/kmod-kvdo/vdo/kvdo.ko
So it appears the kmod-kvdo driver is being installed in a generic folder under lib/modules and then being linked. It appears then that the link is nolonger being created in the 570.25.1 kernel modules directory so you may have to create the linke by hand.
I already tried that, there is an error with the kernel module, it does not load even making the links manually:
[root@leovm01 modules]# uname -a
Linux leovm01 5.14.0-570.25.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jul 7 18:09:10 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
[root@leovm01 modules]# cd 5.14.0-570.25.1.el9_6.x86_64
[root@leovm01 5.14.0-570.25.1.el9_6.x86_64]# mkdir -p extra/kmod-kvdo/vdo
[root@leovm01 5.14.0-570.25.1.el9_6.x86_64]# cd extra/kmod-kvdo/vdo
[root@leovm01 vdo]# ln -s /lib/modules/5.14.0-570.el9.x86_64/extra/kmod-kvdo/vdo/kvdo.ko .
[root@leovm01 vdo]# ls
kvdo.ko
[root@leovm01 vdo]# ls -l
total 0
lrwxrwxrwx. 1 root root 62 Jul 12 17:02 kvdo.ko -> /lib/modules/5.14.0-570.el9.x86_64/extra/kmod-kvdo/vdo/kvdo.ko
[root@leovm01 vdo]# depmod -a
[root@leovm01 vdo]# modprobe kvdo
modprobe: ERROR: could not insert 'kvdo': Invalid argument
[root@leovm01 vdo]# dmesg|tail
[10028.414835] kvdo: disagrees about version of symbol dm_disk
[10028.414836] kvdo: Unknown symbol dm_disk (err -22)
[10028.414843] kvdo: disagrees about version of symbol dm_register_target
[10028.414844] kvdo: Unknown symbol dm_register_target (err -22)
[10028.414857] kvdo: disagrees about version of symbol dm_table_get_mode
[10028.414858] kvdo: Unknown symbol dm_table_get_mode (err -22)
[10028.414863] kvdo: disagrees about version of symbol dm_table_get_md
[10028.414864] kvdo: Unknown symbol dm_table_get_md (err -22)
[10028.414870] kvdo: disagrees about version of symbol dm_get_device
[10028.414871] kvdo: Unknown symbol dm_get_device (err -22)
[root@leovm01 vdo]#
As it can be seen in the dmesg output, there are symbol version mismatches between the kvdo module and the running kernel.
…which appears to say that every kernel must do the weak-updates links under its own modules directory, pointing to the generic ones you mentioned. So yes, it should be behaving like you said, but it isn’t.
Most probably there was some minor ABI deviation in the new kernel, and the old kmod-kvdo module is not compqtible with it.
I believe this should be reported upstream. As of now, VDO is not working at all in ROCKY/RHEL 9.6 with the current kernel.
Yep, I got that as well, even on RHEL9, that’s why it’s an upstream bug, since Rocky 9 is based on RHEL9. So it would require fixing in RHEL9 first, upstream as mentioned in my previous post.
Good point, but Rocky 9.5+ did not have it either and now it does. And VDO seems to work exactly the same way in Rocky 10. So the same could happen there I guess. This is a critical bug in upstream hopefully the solve it soon.
Oh, and of course VDO is supported in either of them, according to docs.
No it won’t happen in RHEL10 or Rocky10 because there is no kmod-kvdo. The implementation is different and the kernel already has the vdo module in EL10 by default.
But yes, it should be fixed in RHEL9 whilst it is still using the old method with the kmod, even if it has been marked as deprecated (due to the implementation changing in EL10).
OK, I checked some references, and you are right, sorry. KVDO module is integrated in dm-vdo in RHEL10 and does need kmod-kvdo. This is indeed a good reason to migrate to Rocky10; pity that Hetzner still does not support Rocky10 with its image install script.