如何在 LVM RAID 上创建 LVM VDO 卷?

如何在 LVM RAID 上创建 LVM VDO 卷?

我使用 LVM 通过 raid5 设置我的低级存储lvcreate --type raid5 --size 2T -I 256K -i 3 -n my_lv my_vg

现在我想使用 LVM 在此基础上设置 VDO。我知道本手册页但我尝试lvconvert --type vdo-pool -V 20T my_vg/my_lv以不进行突袭来结束。

如果我在我的 raid LV 上使用 PV 来设置 VDO,是否会获得具有 vdo 的功能齐全的 dmeventd 堆栈?

答案1

应该有一个受 RAID 保护的 LVO 卷,但lvm其本身的报告并不那么清楚。

我尝试使用 CentOS 8.2 盒和 RAID1 LVM 卷,并vdo-pool使用以下命令将其转换为类型:lvconvert --type vdo-pool -n VDOLV -V 1G vg_test/lv_test

如何检查 RAID1 是否正常工作?您需要向命令行传递一些附加选项。执行lvs -o +seg_type -a结果如下:

[root@localhost ~]# lvs -o +seg_type -a
  LV                       VG      Attr       LSize  Pool    Origin Data%  Meta%  Move Log Cpy%Sync Convert Type
  root                     system  -wi-ao---- 50.00g                                                        linear
  swap                     system  -wi-ao----  7.90g                                                        linear
  VDOLV                    vg_test vwi-a-v---  1.00g lv_test        0.00                                    vdo
  lv_test                  vg_test dwi-------  8.00g                37.62                                   vdo-pool
  [lv_test_vdata]          vg_test rwi-aor---  8.00g                                       100.00           raid1
  [lv_test_vdata_rimage_0] vg_test iwi-aor---  8.00g                                                        linear
  [lv_test_vdata_rimage_1] vg_test iwi-aor---  8.00g                                                        linear
  [lv_test_vdata_rmeta_0]  vg_test ewi-aor---  4.00m                                                        linear
  [lv_test_vdata_rmeta_1]  vg_test ewi-aor---  4.00m                                                        linear

注意raid1段类型。并dmsetup table显示(再次查看 RAIDrimage/rmeta设备):

[root@localhost ~]# dmsetup table
vg_test-lv_test_vdata_rimage_1: 0 16777216 linear 230:16 10240
vg_test-lv_test-vpool: 0 2099200 vdo V2 /dev/dm-6 2097152 4096 32768 16380 on auto vg_test-lv_test-vpool maxDiscard 1 ack 1 bio 4 bioRotationInterval 64 cpu 2 hash 1 logical 1 physical 1
vg_test-lv_test_vdata: 0 16777216 raid raid1 3 0 region_size 4096 2 253:2 253:3 253:4 253:5
vg_test-VDOLV: 0 2097152 linear 253:7 1024
vg_test-lv_test_vdata_rimage_0: 0 16777216 linear 230:0 10240
vg_test-lv_test_vdata_rmeta_1: 0 8192 linear 230:16 2048
system-swap: 0 16572416 linear 8:2 104859648
vg_test-lv_test_vdata_rmeta_0: 0 8192 linear 230:0 2048
system-root: 0 104857600 linear 8:2 2048

最后,我删除了一个块设备并尝试重新导入该池 - 它成功了(并发出有关缺少设备的警告):

[root@localhost ~]# lvs -o +seg_type -a
  WARNING: Couldn't find device with uuid 8jLeqt-TRKt-IVHy-JP0g-mAta-XL2k-cXpEdF.
  WARNING: VG vg_test is missing PV 8jLeqt-TRKt-IVHy-JP0g-mAta-XL2k-cXpEdF (last written to /dev/zd16).
  LV                       VG      Attr       LSize  Pool    Origin Data%  Meta%  Move Log Cpy%Sync Convert Type
  root                     system  -wi-ao---- 50.00g                                                        linear
  swap                     system  -wi-ao----  7.90g                                                        linear
  VDOLV                    vg_test vwi-a-v-p-  1.00g lv_test        0.06                                    vdo
  lv_test                  vg_test dwi-----p-  8.00g                37.63                                   vdo-pool
  [lv_test_vdata]          vg_test rwi-aor-p-  8.00g                                       100.00           raid1
  [lv_test_vdata_rimage_0] vg_test iwi-aor---  8.00g                                                        linear
  [lv_test_vdata_rimage_1] vg_test Iwi-aor-p-  8.00g                                                        linear
  [lv_test_vdata_rmeta_0]  vg_test ewi-aor---  4.00m                                                        linear
  [lv_test_vdata_rmeta_1]  vg_test ewi-aor-p-  4.00m                                                        linear

所以,它应该可以工作。但是,RAID 和 VDO 是 LVM 中相对较新的功能(顺便说一句,它的复杂性正在增加),混合使用不同段类型时应小心谨慎。因此,我通常使用 plainmdadm来创建软件 RAID 阵列,并在其上分层 LVM。

如果您愿意,请发布输出,lvs -o +seg_type -a以便我(和其他人)在创建 RAID 和 VDO 卷后检查您的 LVM 设置。无论如何,在将任何有价值的数据放入卷之前,请务必仔细检查您的 RAID 设置。

相关内容