Description of problem: === VDOPOOL NO Lvchange (only lvcreate/lvconvert) === check_point_frequency index_memory_size_mb minimum_io_size slab_size_mb use_metadata_hints use_sparse_index Supported syntax for --vdosettings option [root@virt-499 ~]# lvcreate --yes --type vdo -n vdo_check_point_frequency --vdosettings 'check_point_frequency=0' -L 10G vdo_sanity -V100G Wiping vdo signature on /dev/vdo_sanity/vpool0. The VDO volume can address 6 GB in 3 data slabs, each 2 GB. It can grow to address at most 16 TB of physical storage in 8192 slabs. If a larger maximum size might be needed, use bigger slabs. Logical volume "vdo_check_point_frequency" created. [root@virt-499 ~]# lvcreate --yes --type vdo -n vdo_minimum_io_size --vdosettings 'minimum_io_size=8' -L 10G vdo_sanity -V100G The VDO volume can address 6 GB in 3 data slabs, each 2 GB. It can grow to address at most 16 TB of physical storage in 8192 slabs. If a larger maximum size might be needed, use bigger slabs. Logical volume "vdo_minimum_io_size" created. [root@virt-499 ~]# lvcreate --yes --type vdo -n vdo_slab_size_mb --vdosettings 'slab_size_mb=4000' -L 10G vdo_sanity -V100G The VDO volume can address 6 GB in 3 data slabs, each 2 GB. It can grow to address at most 16 TB of physical storage in 8192 slabs. If a larger maximum size might be needed, use bigger slabs. Logical volume "vdo_slab_size_mb" created. [root@virt-499 ~]# lvcreate --yes --type vdo -n vdo_metadata_hints --vdosettings 'metadata_hints=0' -L 10G vdo_sanity -V100G The VDO volume can address 6 GB in 3 data slabs, each 2 GB. It can grow to address at most 16 TB of physical storage in 8192 slabs. If a larger maximum size might be needed, use bigger slabs. Logical volume "vdo_metadata_hints" created. [root@virt-499 ~]# lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices vdo_check_point_frequency vdo_sanity vwi-a-v--- 100.00g vpool0 0.00 vpool0(0) vdo_metadata_hints vdo_sanity vwi-a-v--- 100.00g vpool3 0.00 vpool3(0) vdo_minimum_io_size vdo_sanity vwi-a-v--- 100.00g vpool1 0.00 vpool1(0) vdo_slab_size_mb vdo_sanity vwi-a-v--- 100.00g vpool2 0.00 vpool2(0) vpool0 vdo_sanity dwi------- 10.00g 40.04 vpool0_vdata(0) [vpool0_vdata] vdo_sanity Dwi-ao---- 10.00g /dev/sda1(0) vpool1 vdo_sanity dwi------- 10.00g 40.04 vpool1_vdata(0) [vpool1_vdata] vdo_sanity Dwi-ao---- 10.00g /dev/sda1(2560) vpool2 vdo_sanity dwi------- 10.00g 40.04 vpool2_vdata(0) [vpool2_vdata] vdo_sanity Dwi-ao---- 10.00g /dev/sda1(5120) vpool3 vdo_sanity dwi------- 10.00g 40.04 vpool3_vdata(0) [vpool3_vdata] vdo_sanity Dwi-ao---- 10.00g /dev/sdb1(0) # check_point_frequency [root@virt-499 ~]# lvs -o vdo_check_point_frequency vdo_sanity/vdo_check_point_frequency Unrecognised field: vdo_check_point_frequency [root@virt-499 ~]# lvs -o check_point_frequency vdo_sanity/vdo_check_point_frequency Unrecognised field: check_point_frequency [root@virt-499 ~]# lvs -o use_check_point_frequency vdo_sanity/vdo_check_point_frequency Unrecognised field: use_check_point_frequency # minimum_io_size [root@virt-499 ~]# lvs -o vdo_minimum_io_size vdo_sanity/vdo_minimum_io_size VDOMinimumIOSize 4.00k [root@virt-499 ~]# lvs -o minimum_io_size vdo_sanity/vdo_minimum_io_size Unrecognised field: minimum_io_size # slab_size_mb [root@virt-499 ~]# lvs -o vdo_slab_size_mb vdo_sanity/vdo_slab_size_mb Unrecognised field: vdo_slab_size_mb [root@virt-499 ~]# lvs -o slab_size_mb vdo_sanity/vdo_slab_size_mb Unrecognised field: slab_size_mb [root@virt-499 ~]# lvs -o slab_size vdo_sanity/vdo_slab_size_mb Unrecognised field: slab_size # metadata_hints [root@virt-499 ~]# lvs -o metadata_hints vdo_sanity/vdo_metadata_hints Unrecognised field: metadata_hints [root@virt-499 ~]# lvs -o vdo_metadata_hints vdo_sanity/metadata_hints Unrecognised field: vdo_metadata_hints Version-Release number of selected component (if applicable): kernel-5.14.0-322.el9 BUILT: Fri Jun 2 10:00:53 AM CEST 2023 lvm2-2.03.21-2.el9 BUILT: Thu May 25 12:03:04 AM CEST 2023 lvm2-libs-2.03.21-2.el9 BUILT: Thu May 25 12:03:04 AM CEST 2023
So to recap: -- check_point_frequency - this option is no longer supported by vdoformat - so it has no meaning - and any non-zero value would actually cause lvcreate to fail. (patch removing this option from code base will be pushed soon upstream). -- index_memory_size_mb - the name of vdo parameter is "vdo_index_memory_size" - abbreviation allowing the use without the prefix 'vdo_' is a 'syntax sugar enhancement' for --vdosettings option and the suffix '_mb' is currently the only way how to express 'fixed' unit size on input size (so it's vdo_index_memory_size in MiB units). Otherwise the size values accross lvm.conf should be in KiB units (unless historically specified differently). 'lvs' does have full unit support. I'm still undecided how to 'improve' the potential confusion logic for a user - but it's not exactly trivial - we don't want to get parameter explosion on 'lvs' side, yet I believe it's still usable to have size 'unit' embedded in the parameter name, if there is no other way for specification. -- slab_size_mb - this is the similar case to index_memory_size_mb - parameter name is 'vdo_slab_size' -- minimum_io_size - the full name of vdo parameter is 'vdo_minimum_io_size' - as such it works 'lvs -o+vdo_minimum_io_size' -- use_metadata_hints - name of parameter is 'vdo_use_metadata_hints' (prints enabled when On) -- use_sparse_index - name of parameter is 'vdo_use_sparse_index' lvs currently doesn't support shortened variants of these 'vdo' parameters. The option --vdosettings is directly associated to 'vdo' so the support for shortened names does not present any possible name-space collision. Note, all vdo parameters are also visible to the user with the command: 'lvdisplay -m' showing all settings in the human readable form for segment.