mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
3ae5569570
dm-writecache is used like dm-cache with a standard LV as the cache. $ lvcreate -n main -L 128M -an foo /dev/loop0 $ lvcreate -n fast -L 32M -an foo /dev/pmem0 $ lvconvert --type writecache --cachepool fast foo/main $ lvs -a foo -o+devices LV VG Attr LSize Origin Devices [fast] foo -wi------- 32.00m /dev/pmem0(0) main foo Cwi------- 128.00m [main_wcorig] main_wcorig(0) [main_wcorig] foo -wi------- 128.00m /dev/loop0(0) $ lvchange -ay foo/main $ dmsetup table foo-main_wcorig: 0 262144 linear 7:0 2048 foo-main: 0 262144 writecache p 253:4 253:3 4096 0 foo-fast: 0 65536 linear 259:0 2048 $ lvchange -an foo/main $ lvconvert --splitcache foo/main $ lvs -a foo -o+devices LV VG Attr LSize Devices fast foo -wi------- 32.00m /dev/pmem0(0) main foo -wi------- 128.00m /dev/loop0(0)
130 lines
2.4 KiB
Bash
130 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright (C) 2017 Red Hat, Inc. All rights reserved.
|
|
#
|
|
# This copyrighted material is made available to anyone wishing to use,
|
|
# modify, copy, or redistribute it subject to the terms and conditions
|
|
# of the GNU General Public License v.2.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software Foundation,
|
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
# Test writecache usage
|
|
|
|
SKIP_WITH_LVMPOLLD=1
|
|
|
|
. lib/inittest
|
|
|
|
mount_dir="mnt"
|
|
mkdir -p $mount_dir
|
|
|
|
# generate random data
|
|
dmesg > pattern1
|
|
ps aux >> pattern1
|
|
|
|
aux prepare_devs 2 64
|
|
|
|
vgcreate $SHARED $vg "$dev1"
|
|
|
|
vgextend $vg "$dev2"
|
|
|
|
lvcreate -n $lv1 -l 8 -an $vg "$dev1"
|
|
|
|
lvcreate -n $lv2 -l 4 -an $vg "$dev2"
|
|
|
|
# test1: create fs on LV before writecache is attached
|
|
|
|
lvchange -ay $vg/$lv1
|
|
|
|
mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg/$lv1"
|
|
|
|
mount "$DM_DEV_DIR/$vg/$lv1" $mount_dir
|
|
|
|
cp pattern1 $mount_dir/pattern1
|
|
|
|
umount $mount_dir
|
|
lvchange -an $vg/$lv1
|
|
|
|
lvconvert --type writecache --cachepool $lv2 $vg/$lv1
|
|
|
|
check lv_field $vg/$lv1 segtype writecache
|
|
|
|
lvs -a $vg/$lv2 --noheadings -o segtype >out
|
|
grep linear out
|
|
|
|
lvchange -ay $vg/$lv1
|
|
|
|
mount "$DM_DEV_DIR/$vg/$lv1" $mount_dir
|
|
|
|
diff pattern1 $mount_dir/pattern1
|
|
|
|
cp pattern1 $mount_dir/pattern1b
|
|
|
|
ls -l $mount_dir
|
|
|
|
umount $mount_dir
|
|
|
|
lvchange -an $vg/$lv1
|
|
|
|
lvconvert --splitcache $vg/$lv1
|
|
|
|
check lv_field $vg/$lv1 segtype linear
|
|
check lv_field $vg/$lv2 segtype linear
|
|
|
|
lvchange -ay $vg/$lv1
|
|
lvchange -ay $vg/$lv2
|
|
|
|
mount "$DM_DEV_DIR/$vg/$lv1" $mount_dir
|
|
|
|
ls -l $mount_dir
|
|
|
|
diff pattern1 $mount_dir/pattern1
|
|
diff pattern1 $mount_dir/pattern1b
|
|
|
|
umount $mount_dir
|
|
lvchange -an $vg/$lv1
|
|
lvchange -an $vg/$lv2
|
|
|
|
# test2: create fs on LV after writecache is attached
|
|
|
|
lvconvert --type writecache --cachepool $lv2 $vg/$lv1
|
|
|
|
check lv_field $vg/$lv1 segtype writecache
|
|
|
|
lvs -a $vg/$lv2 --noheadings -o segtype >out
|
|
grep linear out
|
|
|
|
lvchange -ay $vg/$lv1
|
|
|
|
mkfs.xfs -f -s size=4096 "$DM_DEV_DIR/$vg/$lv1"
|
|
|
|
mount "$DM_DEV_DIR/$vg/$lv1" $mount_dir
|
|
|
|
cp pattern1 $mount_dir/pattern1
|
|
ls -l $mount_dir
|
|
|
|
umount $mount_dir
|
|
lvchange -an $vg/$lv1
|
|
|
|
lvconvert --splitcache $vg/$lv1
|
|
|
|
check lv_field $vg/$lv1 segtype linear
|
|
check lv_field $vg/$lv2 segtype linear
|
|
|
|
lvchange -ay $vg/$lv1
|
|
lvchange -ay $vg/$lv2
|
|
|
|
mount "$DM_DEV_DIR/$vg/$lv1" $mount_dir
|
|
|
|
ls -l $mount_dir
|
|
|
|
diff pattern1 $mount_dir/pattern1
|
|
|
|
umount $mount_dir
|
|
lvchange -an $vg/$lv1
|
|
lvchange -an $vg/$lv2
|
|
|
|
vgremove -ff $vg
|
|
|