RAID10 上的 LVM 精简池 + RAID1 上的元数据

RAID10 上的 LVM 精简池 + RAID1 上的元数据

给定 2 个 SSD 和 4 个 HDD 及其相应的 PV ( /dev/ssd1, /dev/ssd2,/dev/hdd1/dev/hdd4)。

我知道,标识符并不正确,它们只是为了更容易跟踪我正在谈论的设备。

我想要的是

  • 所有硬盘组成 RAID10 阵列
  • 此 RAID10 上有一个 LVM 精简池
  • 所有SSD组成RAID1阵列
  • 使精简池的元数据位于此 RAID1 上

我做了什么

  1. 创建包含所有物理 PV 的 VG
    vgcreate appdata /dev/sdd1 /dev/sdd2 /dev/hdd1 /dev/hdd2 /dev/hdd3 /dev/hdd4
    
  2. 创建 2 个 LV - 一个用于元数据,一个用于数据
    lvcreate --type raid1 -m 1 -n ThinMetaAD -L 15G appdata /dev/ssd1 /dev/ssd2
    lvcreate --type raid10 -n ThinAD -L 465G appdata /dev/hdd1 /dev/hdd2 /dev/hdd3 /dev/hdd4
    
  3. 转换根据LV薄手册
    lvconvert --type thin-pool --poolmetadata appdata/ThinMetaAD appdata/ThinAD
    

我得到了什么

$ lsblk

NAME                              MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
ssd                                 8:0    0 223.6G  0 disk
└─ssd1                              8:1    0    16G  0 part
  ├─appdata-ThinAD_tmeta_rmeta_0  252:2    0     4M  0 lvm
  │ └─appdata-ThinAD_tmeta        252:6    0    15G  0 lvm
  │   └─appdata-ThinAD            252:16   0   464G  0 lvm
  └─appdata-ThinAD_tmeta_rimage_0 252:3    0    15G  0 lvm
    └─appdata-ThinAD_tmeta        252:6    0    15G  0 lvm
      └─appdata-ThinAD            252:16   0   464G  0 lvm
hdd                                 8:16   0 465.8G  0 disk
└─hdd1                              8:17   0 465.8G  0 part
  ├─appdata-ThinAD_tdata_rmeta_0  252:7    0     4M  0 lvm
  │ └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
  │   └─appdata-ThinAD            252:16   0   464G  0 lvm
  └─appdata-ThinAD_tdata_rimage_0 252:8    0   232G  0 lvm
    └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
      └─appdata-ThinAD            252:16   0   464G  0 lvm
hdd                                 8:32   0 465.8G  0 disk
└─hdd2                              8:33   0 465.8G  0 part
  ├─appdata-ThinAD_tdata_rmeta_1  252:9    0     4M  0 lvm
  │ └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
  │   └─appdata-ThinAD            252:16   0   464G  0 lvm
  └─appdata-ThinAD_tdata_rimage_1 252:10   0   232G  0 lvm
    └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
      └─appdata-ThinAD            252:16   0   464G  0 lvm
hdd                                 8:48   0 465.8G  0 disk
└─hdd3                              8:49   0 465.8G  0 part
  ├─appdata-ThinAD_tdata_rmeta_2  252:11   0     4M  0 lvm
  │ └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
  │   └─appdata-ThinAD            252:16   0   464G  0 lvm
  └─appdata-ThinAD_tdata_rimage_2 252:12   0   232G  0 lvm
    └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
      └─appdata-ThinAD            252:16   0   464G  0 lvm
hdd                                 8:64   0 931.5G  0 disk
└─hdd4                              8:65   0   466G  0 part
  ├─appdata-ThinAD_tdata_rmeta_3  252:13   0     4M  0 lvm
  │ └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
  │   └─appdata-ThinAD            252:16   0   464G  0 lvm
  └─appdata-ThinAD_tdata_rimage_3 252:14   0   232G  0 lvm
    └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
      └─appdata-ThinAD            252:16   0   464G  0 lvm
ssd                           
└─ssd2                       259:5    0    16G  0 part
  ├─appdata-ThinAD_tmeta_rmeta_1  252:4    0     4M  0 lvm
  │ └─appdata-ThinAD_tmeta        252:6    0    15G  0 lvm
  │   └─appdata-ThinAD            252:16   0   464G  0 lvm
  └─appdata-ThinAD_tmeta_rimage_1 252:5    0    15G  0 lvm
    └─appdata-ThinAD_tmeta        252:6    0    15G  0 lvm
      └─appdata-ThinAD            252:16   0   464G  0 lvm

问题

我想知道上面的设置在我最初想要的意义上是否正确,特别是我担心下面的 3 个级别partition,如下所示:

hdd                                 8:32   0 465.8G  0 disk
└─hdd2                              8:33   0 465.8G  0 part
>>├─appdata-ThinAD_tdata_rmeta_1  252:9    0     4M  0 lvm
>>│ └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
>>│   └─appdata-ThinAD            252:16   0   464G  0 lvm
  └─appdata-ThinAD_tdata_rimage_1 252:10   0   232G  0 lvm
    └─appdata-ThinAD_tdata        252:15   0   464G  0 lvm
      └─appdata-ThinAD            252:16   0   464G  0 lvm
  1. 我的设置正确吗?
  2. 如果没有,需要采取哪些步骤才能获得所需的输出我想要的是

答案1

lsblk由于一般设备依赖性,以这种方式显示它。对于复杂的设置,这可能与物理存储没有直接关系,因此它看起来“错误”。

也许 LVM 工具可以提供更清晰的图景:

# lvs --all --segments --options +seg_le_ranges appdata
  LV                      VG      Attr       #Str Type      SSize  LE Ranges                       
  ThinAD                  appdata twi-a-tz--    1 thin-pool  9.00g [ThinAD_tdata]:0-2303           
  [ThinAD_tdata]          appdata rwi-aor---    2 raid1      9.00g [ThinAD_tdata_rimage_0]:0-2303,[ThinAD_tdata_rimage_1]:0-2303
  [ThinAD_tdata_rimage_0] appdata iwi-aor---    1 linear     9.00g /dev/loop2001:1-2304            
  [ThinAD_tdata_rimage_1] appdata iwi-aor---    1 linear     9.00g /dev/loop2002:1-2304            
  [ThinAD_tdata_rmeta_0]  appdata ewi-aor---    1 linear     4.00m /dev/loop2001:0-0               
  [ThinAD_tdata_rmeta_1]  appdata ewi-aor---    1 linear     4.00m /dev/loop2002:0-0               
  [ThinAD_tmeta]          appdata ewi-aor---    2 raid1     92.00m [ThinAD_tmeta_rimage_0]:0-22,[ThinAD_tmeta_rimage_1]:0-22
  [ThinAD_tmeta_rimage_0] appdata iwi-aor---    1 linear    92.00m /dev/loop1001:1-23              
  [ThinAD_tmeta_rimage_1] appdata iwi-aor---    1 linear    92.00m /dev/loop1002:1-23              
  [ThinAD_tmeta_rmeta_0]  appdata ewi-aor---    1 linear     4.00m /dev/loop1001:0-0               
  [ThinAD_tmeta_rmeta_1]  appdata ewi-aor---    1 linear     4.00m /dev/loop1002:0-0               
  [lvol0_pmspare]         appdata ewi-------    1 linear    92.00m /dev/loop2001:2305-2327         

我尝试使用循环设备、/dev/loop100x元数据和/dev/loop200x数据来近似您的设置。您的输出应列出其他设备和尺寸。

您可以看到所有 tmeta 内容都在 /dev/loop1xxx 上,所有 tdata 内容都在 /dev/loop2xxx 上,所以它应该如您所愿。

pmspare(池元数据备用)卷除外。 lvmthin 联机帮助页中对此进行了描述。

相关内容