RAID reshaping means changing attributes of a RAID logical volume without changing the RAID level. Some attributes that you can change include RAID layout, stripe size, and number of stripes.
Procedure
-
Create a RAID logical volume:
# lvcreate --type raid5 -i 2 -L 500M -n my_lv my_vg
Using default stripesize 64.00 KiB.
Rounding size 500.00 MiB (125 extents) up to stripe boundary size 504.00 MiB (126 extents).
Logical volume "my_lv" created.
-
View the RAID logical volume:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
my_lv my_vg rwi-a-r--- 504.00m 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
[my_lv_rimage_0] my_vg iwi-aor--- 252.00m /dev/sda(1)
[my_lv_rimage_1] my_vg iwi-aor--- 252.00m /dev/sdb(1)
[my_lv_rimage_2] my_vg iwi-aor--- 252.00m /dev/sdc(1)
[my_lv_rmeta_0] my_vg ewi-aor--- 4.00m /dev/sda(0)
[my_lv_rmeta_1] my_vg ewi-aor--- 4.00m /dev/sdb(0)
[my_lv_rmeta_2] my_vg ewi-aor--- 4.00m /dev/sdc(0)
-
Optional: View the
stripes images and stripesize of the RAID logical volume:
# lvs -o stripes my_vg/my_lv
# lvs -o stripesize my_vg/my_lv
-
Modify the attributes of the RAID logical volume by using the following ways depending on your requirement:
-
Modify the
stripes images of the RAID logical volume:
# lvconvert --stripes 3 my_vg/my_lv
Using default stripesize 64.00 KiB.
WARNING: Adding stripes to active logical volume my_vg/my_lv will grow it from 126 to 189 extents!
Run "lvresize -l126 my_vg/my_lv" to shrink it or use the additional capacity.
Are you sure you want to add 1 images to raid5 LV my_vg/my_lv? [y/n]: y
Logical volume my_vg/my_lv successfully converted.
-
Modify the
stripesize of the RAID logical volume:
# lvconvert --stripesize 128k my_vg/my_lv
Converting stripesize 64.00 KiB of raid5 LV my_vg/my_lv to 128.00 KiB.
Are you sure you want to convert raid5 LV my_vg/my_lv? [y/n]: y
Logical volume my_vg/my_lv successfully converted.
-
Modify the
maxrecoveryrate and minrecoveryrate attributes:
# lvchange --maxrecoveryrate 4M my_vg/my_lv
Logical volume my_vg/my_lv changed.
# lvchange --minrecoveryrate 1M my_vg/my_lv
Logical volume my_vg/my_lv changed.
-
Modify the
syncaction attribute:
# lvchange --syncaction check my_vg/my_lv
-
Modify the
writemostly and writebehind attributes:
# lvchange --writemostly /dev/sdb my_vg/my_lv
Logical volume my_vg/my_lv changed.
# lvchange --writebehind 100 my_vg/my_lv
Logical volume my_vg/my_lv changed.
Note All operations are not supported for all volume types. Check the specific volume type requirements and limitations before proceeding.
Results
- View the
stripes images and stripesize of the RAID logical volume:
# lvs -o stripes my_vg/my_lv
# lvs -o stripesize my_vg/my_lv
- View the RAID logical volume after modifying the
maxrecoveryrate attribute:
# lvs -a -o +raid_max_recovery_rate
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert MaxSync
my_lv my_vg rwi-a-r--- 10.00g 100.00 4096
[my_lv_rimage_0] my_vg iwi-aor--- 10.00g
[...]
- View the RAID logical volume after modifying the
minrecoveryrate attribute:
# lvs -a -o +raid_min_recovery_rate
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert MinSync
my_lv my_vg rwi-a-r--- 10.00g 100.00 1024
[my_lv_rimage_0] my_vg iwi-aor--- 10.00g
[...]
- View the RAID logical volume after modifying the
syncaction attribute:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
my_lv my_vg rwi-a-r--- 10.00g 2.66
[my_lv_rimage_0] my_vg iwi-aor--- 10.00g
[...]