diff options
author | Heinz Mauelshagen <heinzm@redhat.com> | 2017-03-01 18:50:35 +0100 |
---|---|---|
committer | Heinz Mauelshagen <heinzm@redhat.com> | 2017-03-01 18:50:35 +0100 |
commit | 48778bc5038f0384bf0e6ad43bac048f6700637b (patch) | |
tree | 2b44b7830c273ee3f5711056a28cd3f34283889d /test/shell/lvconvert-raid-reshape-striped_to_linear.sh | |
parent | 62abae1525cec51279c39c5127afaced8f0463e2 (diff) | |
download | lvm2-48778bc5038f0384bf0e6ad43bac048f6700637b.tar.gz |
lvconvert: add new reporting fields for reshaping
During an ongoing reshape, the MD kernel runtime reads stripes relative
to data_offset and starts storing the reshaped stripes (with new raid
layout and/or new stripesize and/or new number of stripes) relative
to new_data_offset. This is to avoid writing over any data in place
which is non-atomic by nature and thus be recoverable without data loss
in the transition. MD uses the term out-of-place reshaping for it.
There's 2 other areas we don't have report capability for:
- number of data stripes vs. total stripes
(e.g. raid6 with 7 stripes toal has 5 data stripes)
- number of (rotating) parity/syndrome chunks
(e.g. raid6 with 7 stripes toal has 2 parity chunks; one
per stripe for P-Syndrome and another one for Q-Syndrome)
Thus, add the following reportable keys:
- reshape_len (in current units)
- reshape_len_le (in logical extents)
- data_offset (in sectors)
- new_data_offset ( " )
- data_stripes
- parity_chunks
Enhance lvchange-raid.sh, lvconvert-raid-reshape-linear_to_striped.sh,
lvconvert-raid-reshape-striped_to_linear.sh, lvconvert-raid-reshape.sh
and lvconvert-raid-takeover.sh to make use of new keys.
Related: rhbz834579
Related: rhbz1191935
Related: rhbz1191978
Diffstat (limited to 'test/shell/lvconvert-raid-reshape-striped_to_linear.sh')
-rw-r--r-- | test/shell/lvconvert-raid-reshape-striped_to_linear.sh | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/test/shell/lvconvert-raid-reshape-striped_to_linear.sh b/test/shell/lvconvert-raid-reshape-striped_to_linear.sh index fc87cafb8..dd857c1a5 100644 --- a/test/shell/lvconvert-raid-reshape-striped_to_linear.sh +++ b/test/shell/lvconvert-raid-reshape-striped_to_linear.sh @@ -26,8 +26,10 @@ aux prepare_vg 5 # Create 4-way striped LV lvcreate -aey -i 4 -I 32k -L 16M -n $lv1 $vg check lv_field $vg/$lv1 segtype "striped" +check lv_field $vg/$lv1 data_stripes 4 check lv_field $vg/$lv1 stripes 4 check lv_field $vg/$lv1 stripesize "32.00k" +check lv_field $vg/$lv1 reshape_len "" echo y|mkfs -t ext4 $DM_DEV_DIR/$vg/$lv1 fsck -fn $DM_DEV_DIR/$vg/$lv1 @@ -35,14 +37,22 @@ fsck -fn $DM_DEV_DIR/$vg/$lv1 lvconvert -y --ty raid5 -R 128k $vg/$lv1 fsck -fn $DM_DEV_DIR/$vg/$lv1 check lv_field $vg/$lv1 segtype "raid5_n" +check lv_field $vg/$lv1 data_stripes 4 check lv_field $vg/$lv1 stripes 5 check lv_field $vg/$lv1 stripesize "32.00k" check lv_field $vg/$lv1 regionsize "128.00k" +check lv_field $vg/$lv1 reshape_len "" aux wait_for_sync $vg $lv1 fsck -fn $DM_DEV_DIR/$vg/$lv1 # Extend raid5_n LV by factor 4 to keep size once linear lvresize -y -L 64 $vg/$lv1 +check lv_field $vg/$lv1 segtype "raid5_n" +check lv_field $vg/$lv1 data_stripes 4 +check lv_field $vg/$lv1 stripes 5 +check lv_field $vg/$lv1 stripesize "32.00k" +check lv_field $vg/$lv1 regionsize "128.00k" +check lv_field $vg/$lv1 reshape_len "" aux wait_for_sync $vg $lv1 fsck -fn $DM_DEV_DIR/$vg/$lv1 @@ -52,33 +62,45 @@ fsck -fn $DM_DEV_DIR/$vg/$lv1 lvconvert -y -f --ty raid5_n --stripes 1 -I 64k -R 1024k $vg/$lv1 fsck -fn $DM_DEV_DIR/$vg/$lv1 check lv_first_seg_field $vg/$lv1 segtype "raid5_n" +check lv_first_seg_field $vg/$lv1 data_stripes 1 check lv_first_seg_field $vg/$lv1 stripes 5 check lv_first_seg_field $vg/$lv1 stripesize "64.00k" check lv_first_seg_field $vg/$lv1 regionsize "1.00m" +check lv_first_seg_field $vg/$lv1 reshape_len 10 +# for slv in {0..4} +# do +# check lv_first_seg_field $vg/${lv1}_rimage_${slv} reshape_len 2 +# done aux wait_for_sync $vg $lv1 1 fsck -fn $DM_DEV_DIR/$vg/$lv1 # Remove the now freed legs lvconvert --stripes 1 $vg/$lv1 check lv_first_seg_field $vg/$lv1 segtype "raid5_n" +check lv_first_seg_field $vg/$lv1 data_stripes 1 check lv_first_seg_field $vg/$lv1 stripes 2 check lv_first_seg_field $vg/$lv1 stripesize "64.00k" check lv_first_seg_field $vg/$lv1 regionsize "1.00m" +check lv_first_seg_field $vg/$lv1 reshape_len 4 # Convert raid5_n to raid1 lvconvert -y --type raid1 $vg/$lv1 fsck -fn $DM_DEV_DIR/$vg/$lv1 check lv_first_seg_field $vg/$lv1 segtype "raid1" +check lv_first_seg_field $vg/$lv1 data_stripes 2 check lv_first_seg_field $vg/$lv1 stripes 2 check lv_first_seg_field $vg/$lv1 stripesize "0" check lv_first_seg_field $vg/$lv1 regionsize "1.00m" +check lv_first_seg_field $vg/$lv1 reshape_len "" -# Convert raid5_n -> striped +# Convert raid5_n -> linear lvconvert -y --type linear $vg/$lv1 fsck -fn $DM_DEV_DIR/$vg/$lv1 check lv_first_seg_field $vg/$lv1 segtype "linear" +check lv_first_seg_field $vg/$lv1 data_stripes 1 check lv_first_seg_field $vg/$lv1 stripes 1 check lv_first_seg_field $vg/$lv1 stripesize "0" check lv_first_seg_field $vg/$lv1 regionsize "0" +check lv_first_seg_field $vg/$lv1 reshape_len "" vgremove -ff $vg |