原标题:Unwanted,意外的 LVM 磁盘映射导致 linux raid 出现问题
我已经在 ubuntu 上进行了近十年的 linux raid,但从未与 LVM 混淆,尽管我隐约知道它存在。
我最近在我的服务器上添加了第二个阵列,使其功能齐全,将一些文件复制到其中(它只是一个备份系统,这里没有关键文件存在风险)。
一周过去了,当我回头查看备份阵列时,我发现它是只读的。此外,阵列的 /proc/mdstat 中显示的设备,而不是 /dev/sdX,因为它们在工作时和我之前使用过,看起来像 /dev/dm-X。
$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md1 : active (read-only) raid5 dm-0[0] dm-2[3] dm-1[1]
31249539072 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
bitmap: 0/117 pages [0KB], 65536KB chunk
md0 : active raid6 sdj1[6] sdm1[5] sde1[4] sdd1[3] sdc1[2] sdb1[1] sda1[0]
29296547840 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]
bitmap: 0/44 pages [0KB], 65536KB chunk
unused devices: <none>
通过谷歌搜索,我发现 dm-X 设备是 LVM 磁盘映射。dmsetup 显示这是我期望的磁盘
# dmsetup ls
osprober-linux-sdh1 (253:1)
osprober-linux-sdi1 (253:2)
osprober-linux-sdg1 (253:0)
# lvdisplay -a
# lvs
# pvs
#
我的理解是,LVM 是您必须非常明确地计划使用和设置的东西?据我所知,上面是我一生中运行过的第一个与 LVM 相关的命令,所以我不知道它是如何启用的,特别是仅适用于我的新 md 阵列中的 3 个设备(但没有其他设备打开或关闭我的其他阵列)。
为了进行设置,我使用 parted 手动对设备进行分区,使用 mdadm 手动创建一个 raid 阵列,将阵列格式化为 ext4,并将文件复制到其中,然后将其保留在那里。这些都不涉及 LVM,使用 mdadm 组装的设备是我刚刚创建的标准磁盘分区 (/dev/sdX1)。从那以后,我能想到的唯一操作是在一周内对任何相关设备进行操作,mdadm --assemble --scan
以动态查找 md 卷及其设备,并mount -a
重新挂载 fstab 条目。
也许我做了一些我忘记的其他事情,尽管它不可能是一些特定的 LVM 配置,因为我什至不知道如何做到这一点。我对 prometheus 和 node-exporter 做了一些实验,我想知道这是否会产生副作用?
它导致的问题是 LVM 锁定了实际的 /dev/sdX “文件”,所以我现在不能使用它们来手动组装阵列
# mdadm --assemble /dev/md1 /dev/sdg1 /dev/sdh1 /dev/sdi1
mdadm: /dev/sdg1 is busy - skipping
mdadm: /dev/sdh1 is busy - skipping
mdadm: /dev/sdi1 is busy - skipping
我只能手动将它们组装到 dm-X 设备上
# mdadm --assemble /dev/md1 /dev/dm-0 /dev/dm-1 /dev/dm-2
mdadm: /dev/md1 has been started with 3 drives.
或自动组装
# mdadm --assemble --scan
mdadm: /dev/md/1 has been started with 3 drives.
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md1 : active (read-only) raid5 dm-0[0] dm-2[3] dm-1[1]
31249539072 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
bitmap: 0/117 pages [0KB], 65536KB chunk
无论出于何种原因,dm-X 设备都是(有效或正式)只读的,因此从它们安装的阵列也是只读的。
不太了解我在看什么或它是如何得到的,我不确定如何在这里表达结论性问题,但我想以读/写模式安装我的阵列,并像往常一样做,没有 LVM 的任何参与。我怎样才能做到这一点?