创建lv
lvcreate -L 1G -m1 -n mirror1 vg1 /dev/vdb /dev/vdc
-m表示创建副本镜像
-m1表示创建一个副本镜像
-m2表示创建两个副本镜像,两个副本镜像需要三块盘
/dev/vdb /dev/vdc表示使用这两块盘做镜像
lvs -a -o +devices # 查看
[mirror1_rimage_0] vg1 iwi-aor--- 1.00g /dev/vdb(1)
[mirror1_rimage_1] vg1 iwi-aor--- 1.00g /dev/vdc(1)
[mirror1_rmeta_0] vg1 ewi-aor--- 4.00m /dev/vdb(0)
[mirror1_rmeta_1] vg1 ewi-aor--- 4.00m /dev/vdc(0)
格式化并挂载
mkfs.ext4 /dev/vg1/mirror1
mount /dev/vg1/mirror1 /mirror1
模拟磁盘损坏
dd if=/dev/zero of=/dev/vdb
lvs -a -o +devices
[mirror1_rimage_0] vg1 iwi-aor-p- 1.00g [unknown](1)
[mirror1_rimage_1] vg1 iwi-aor--- 1.00g /dev/vdc(1)
[mirror1_rmeta_0] vg1 ewi-aor-p- 4.00m [unknown](0)
[mirror1_rmeta_1] vg1 ewi-aor--- 4.00m /dev/vdc(0)
此时还能继续往/mirror1/里写文件,说明lvm卷还可用
修复
注意:此时不需要卸载/mirror1/
把坏掉的设备从vg1里移除
vgreduce --removemissing --force vg1
lvs -a -o +devices
[mirror1_rimage_0] vg1 vwi-aor-r- 1.00g
[mirror1_rimage_1] vg1 iwi-aor--- 1.00g /dev/vdc(1)
[mirror1_rmeta_0] vg1 ewi-aor-r- 4.00m
[mirror1_rmeta_1] vg1 ewi-aor--- 4.00m /dev/vdc(0)
换一块可用的盘
pvcreate /dev/vdd
vgextend vg1 /dev/vdd
lvconvert --repair vg1/mirror1
lvs -a -o +devices
[mirror1_rimage_0] vg1 Iwi-aor--- 1.00g /dev/vdc(1)
[mirror1_rimage_1] vg1 iwi-aor--- 1.00g /dev/vdd(1)
[mirror1_rmeta_0] vg1 ewi-aor--- 4.00m /dev/vdc(0)
[mirror1_rmeta_1] vg1 ewi-aor--- 4.00m /dev/vdd(0)
如果vg1用到的物理盘数量大于2,当一块盘不可用时可直接
1. lvconvert --repair vg1/mirror1
然后移除损坏的盘(两个步骤顺序无所谓)
2. vgreduce --removemissing --force vg1