Re: pvmove thin volume doesn't move

Zdenek Kabelac <[email protected]> Wed, 19 Nov 2025 17:34:13 +0100
Newsgroups gmane.linux.lvm.general
Message-ID <[email protected]>
Dne 19. 11. 25 v 16:46 Brian J. Murrell napsal(a):
> On Wed, 2025-11-19 at 09:07 -0500, Matthew Patton wrote:
>>
>> That is one hell of a wild and unsupported assumption.
> 
> Yeah, I too was going to challenge that statement that I was a "lonely"
> outlier in the community of LVM users that would want to be able to
> move a thinly-provisioned LV from one PV to another, just as non-
> thinly-provisioned LVs can be.
> 
>> Practically nobody , even seasoned sysadmins would know of this
>> deficiency.
> 
> Indeed, I was skeptical that this was commonly understood as well.
> Well by anyone who had not tried it as I did only to find it is not
> supported.
> 
> It does suck to have to choose between feature sets that are both very
> useful.


There is likely a major misunderstanding how thin-provisioning works with lvm2 
(and ATM I'm not sure how we can improve our 'man lvmthin' to make this more 
clear)

It's NOT lvm2 doing 'thin-provisioning' at lvm2 level.

lvm2 just drives a kernel target device - which you can think of like would 
attach some 'magic box' that take  space  X  a gives you back space Y with 
some properties (just like when lvm2 controls  'raidX' target).

lvm2 does not see 'how the magic of provisioning' is made - it just consumes 
it - thus lvm2 itself has no knowledge about the layout of thin-chunks - which 
are often very small compared with lvm2 extent size granularity.

So lvm2 cannot move  i.e. 64KiB thin chunk blocks - when the minimal pvmove 
granularity if 4MiB.

And while I'm not saying the work cannot be done somehow - it's quite a major 
feature request for thin-pool kernel target if that should be an online operation.

To add better example - it's like if you would want to 'extract' the file from 
filesytem and let the rest of 'device' compact.
I guess everyone sticks to 'cp'  command  - which can be seen as equivalent of 
'dd' command in our block device level...



Regards

Zdenek