LVM类型raid1和thinpool可以吗?

lui*_*son 6 software-raid lvm thinpool

我们正在将安装从带有 LVM 的 mdadm raid 迁移到纯 LVM,因此我们会将原始 raid 分区作为独立分区添加到 LVM 组\n类似:

\n
lvcreate -L 240G -n thin pve /dev/nvme0n1p2\n  Logical volume "thin" created.\n
Run Code Online (Sandbox Code Playgroud)\n

然后我们在另一个磁盘/分区上添加一个镜像

\n
lvconvert \xe2\x80\x93type raid1 \xe2\x80\x93mirrors 1 pve/thing /dev/nvme1n1p2\n  Logical volume pve/thin successfully converted.\n
Run Code Online (Sandbox Code Playgroud)\n

当我们为 LXC 使用精简池存储系统时,我们假设我们可以将其转换为精简池\nlvconvert --type Thin-pool pve/thin\n将 pve/thin 转换为精简池。

\n

一切似乎都有效,但问题是我们不确定最后一次转换是否会影响前一次转换。原因是当我们用 lvs 列出时我们得到:

\n
 thin           pve  twi-a-tz--  240,00g                 0,00   10,42\n
Run Code Online (Sandbox Code Playgroud)\n

属性 1 a 7 显示这是一个 Thinpool,但没有提及 raid1 或同步中的值。

\n

虽然 lvs -a -o +devices 确实显示它被镜像到两个分区上:

\n
[thin_tdata]              pve  rwi-aor---  240,00g                                        24,17            thin_tdata_rimage_0(0),thin_tdata_rimage_1(0)\n  [thin_tdata_rimage_0]     pve  iwi-aor---  240,00g                                                         /dev/nvme0n1p2(67074)                  \n  [thin_tdata_rimage_1]     pve  Iwi-aor---  240,00g                                                         /dev/nvme1n1p2(67075)                  \n  [thin_tdata_rmeta_0]      pve  ewi-aor---    4,00m                                                         /dev/nvme0n1p2(128514)                 \n  [thin_tdata_rmeta_1]      pve  ewi-aor---    4,00m                                                         /dev/nvme1n1p2(67074)                  \n  [thin_tmeta]              pve  ewi-ao----  120,00m                                                         /dev/sdd2(0)                 \n
Run Code Online (Sandbox Code Playgroud)\n

因此,现在的疑问是,在精简池“后面”,raid 是否仍在工作,或者只是已分配但现在未使用。创建精简池并将其转换为 --raid1 类型会返回错误。

\n

我们还没有找到任何有关此场景的文档,并且在这种情况有效的情况下,我们完全不知道如何监视 lvm-raid 状态,因为我们计划通过返回类型为“r”的 lvs 来监视驱动器状态。

\n

Voj*_*fny 5

是的,可以有一个带有 RAID 1 的精简池,并且您的设置几乎是正确的。问题在于元数据不是 RAID 1,而是线性的,因此在丢失一个驱动器后,您的精简池就会损坏。您需要为元数据创建一个单独的 RAID 1 LV,然后--poolmetadata <vg>/<metadata lv>在使用 将 RAID LV 转换为精简池时使用lvconvert

有关更多详细信息,请参阅lvmthin 联机帮助页部分使用 raid 容忍设备故障。

手册页中的示例:

   # lvcreate --type raid1 -m 1 -n pool0 -L 10G vg /dev/sdA /dev/sdB
   # lvcreate --type raid1 -m 1 -n pool0meta -L 1G vg /dev/sdC /dev/sdD
   # lvconvert --type thin-pool --poolmetadata vg/pool0meta vg/pool0
Run Code Online (Sandbox Code Playgroud)

使用此设置的输出lvs -a

$ sudo lvs raid_test -a
  LV                     VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  [lvol0_pmspare]        raid_test ewi-------  12,00m                                                    
  pool0                  raid_test twi-a-tz-- 100,00m             0,00   10,29                           
  [pool0_tdata]          raid_test rwi-aor--- 100,00m                                    100,00          
  [pool0_tdata_rimage_0] raid_test iwi-aor--- 100,00m                                                    
  [pool0_tdata_rimage_1] raid_test iwi-aor--- 100,00m                                                    
  [pool0_tdata_rmeta_0]  raid_test ewi-aor---   4,00m                                                    
  [pool0_tdata_rmeta_1]  raid_test ewi-aor---   4,00m                                                    
  [pool0_tmeta]          raid_test ewi-aor---  12,00m                                    100,00          
  [pool0_tmeta_rimage_0] raid_test iwi-aor---  12,00m                                                    
  [pool0_tmeta_rimage_1] raid_test iwi-aor---  12,00m                                                    
  [pool0_tmeta_rmeta_0]  raid_test ewi-aor---   4,00m                                                    
  [pool0_tmeta_rmeta_1]  raid_test ewi-aor---   4,00m
Run Code Online (Sandbox Code Playgroud)

属性输出的问题lvs是,只有第一位用于指定 LV 的类型,看起来 LV(r)aid(t)hin pool精简池都获胜,而您只能到达t那里。