I don't believe pvmove actually does any of the lifting. Pvmove merely creates a mirrored pv area in dev-mapper and then hangs around monitoring it's progress until the mirror is sync'd up then it throws a couple of barriers and removes the original pv from the mirror leaving the new pv as the new location for the data.
That is how the move continues through reboots. All lifting is actually done in dev-mapper and it's state is preserved there. On restart LVM will read it's meta-data to determine if there is a pvmove in progress and then spawn a pvmove to wait for it to complete so it can remove the mirror.
Any slowness is due to disk io errors and retries being thrown around.
You should really run LVM on top of a RAID1, software or hardware makes no difference, but LVM is more to storage management then fault tolerance and redundancy.
-Ross
The LD's provided to LVM through the RAID controller are all fault tolerant...
Good info, Thanks! jlc