CentOS / RHEL : How to migrate storage (LVM) with pvmove Command

Solution:
Existing Configuration :

Existing Physical Volume: 1.5 TB, /dev/mapper/mpathX
Existing Volume Group: data_vg
Existing Logical Volume: lv_data01 (/dev/mapper/data_vg-lv_data01)

We need to move to the following configuration :

Physical Volume: 1.5TB, /dev/mapper/mpathY
Volume Group: data_vg
Logical Volume: data (/dev/mapper/data_vg-lv_data01)
Note: Please take complete backup before performing the storage migration

Steps

1. Begin by pvcreate’ing the new disk. This is the disk from the new storage array to which we want to migrate to.

# pvcreate /dev/mapper/mpathY

2. Now, add this disk into the data_vg Volume Group :

# vgextend data_vg /dev/mapper/mpathY

Make sure there are free extents on the new disk, before running pvmove

3. Begin the migration from the /dev/mapper/mpathX PV to the new /dev/mapper/mpathY PV

# pvmove -b /dev/mapper/mpathX /dev/mapper/mpathY

This will take time based on size to complete the activity. -b option in the command above runs the pvmove command in background.

4. Periodically, you can check the progress of the migration, Make sure you’re looking in the “Copy%” column for the LV and VG that you’re working with.

# lvs -a -o+devices

When the migration is completely finished, you will know because the “Copy%” column will no longer register a value for the LV and VG that you’re working in.

You may also run pvmove -iX , where X is an interval in seconds to report the progress. For example, pvmove -i5 will report progress every 5 seconds.

5. Now, you can safely remove the original PV from the VG.

# vgreduce oracleprod /dev/mapper/mpathX
# pvremove /dev/mapper/mpathX
Related Post