我们正在将安装从带有 LVM 的 mdadm raid 迁移到纯 LVM,因此我们会将原始 raid 分区作为独立分区添加到 LVM 组,如下所示:
# lvcreate -L 240G -n thin pve /dev/nvme0n1p2
Logical volume "thin" created.
然后我们在另一个磁盘/分区上添加一个镜像:
# lvconvert --type raid1 --mirrors 1 pve/thing /dev/nvme1n1p2
Logical volume pve/thin successfully converted.
当我们为 LXC 使用精简池存储系统时,我们假设我们可以将其转换为精简池:
# lvconvert --type thin-pool pve/thin
Converted pve/thin to thin pool.
一切似乎都有效,但问题是我们不确定最后一次转换是否会影响前一次转换。原因是当我们列出时lvs
我们得到:
thin pve twi-a-tz-- 240,00g 0,00 10,42
属性 1 和 7 显示这是一个 Thinpool,但没有提及 raid1 或同步中的值。
虽然lvs -a -o +devices
确实显示它被镜像到两个分区上:
[thin_tdata] pve rwi-aor--- 240,00g 24,17 thin_tdata_rimage_0(0),thin_tdata_rimage_1(0)
[thin_tdata_rimage_0] pve iwi-aor--- 240,00g /dev/nvme0n1p2(67074)
[thin_tdata_rimage_1] pve Iwi-aor--- 240,00g /dev/nvme1n1p2(67075)
[thin_tdata_rmeta_0] pve ewi-aor--- 4,00m /dev/nvme0n1p2(128514)
[thin_tdata_rmeta_1] pve ewi-aor--- 4,00m /dev/nvme1n1p2(67074)
[thin_tmeta] pve ewi-ao---- 120,00m /dev/sdd2(0)
因此,现在的疑问是,在精简池“后面”,raid 是否仍在工作,或者只是已分配但现在未使用。创建精简池并将其转换为--raid1
类型会返回错误。
我们还没有找到任何有关此场景的文档,并且在这种情况有效的情况下,我们完全不知道如何监视 lvm-raid 状态,因为我们计划通过返回lvs
type来监视驱动器状态r
。
答案1
是的,可以有一个带有 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
使用此设置的输出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
属性输出的问题lvs
是,只有第一位用于指定 LV 的类型,看起来 LV(r)aid
和(t)hin pool
精简池都获胜,而您只能到达t
那里。