记一次采坑经历, mdadm 创建 raid0,重启后自动消失

2019-11-30 12:06:20 +08:00
 cjpjxjx

家里的一台 Linux 主机,加了两块 1T 硬盘,最近打算组成 raid 用来下 PT,由于没有阵列卡主板也不支持 raid,于是就用 mdadm 软 raid,创建过程:

mdadm -Cv /dev/md0 -a yes -n 2 -l 0 /dev/sdb /dev/sdc
mkfs.xfs -f /dev/md0

一切正常,最后把挂载信息写入 /etc/fstab
结果重启就问题了,卡在进度条,几分钟后自动进入了救援模式(显示的什么内容忘记了)
经过多次测试,确定是重启之后,/dev/md0 设备就直接消失了。。。消失了。。。消失了。。。

查了很久的资料,尝试过修改 /etc/mdadm/mdadm.conf 文件,在里面增加 ARRAY /dev/md0......的方法,但是并没有效果
直到我看到了这个,这个问题应该是和 GPT 分区表有关:
https://unix.stackexchange.com/questions/156424/centos-7-created-mdadm-array-disappears-after-reboot

于是我先尝试了一个简单的方法,进 PE 把两块硬盘从 GPT 转成 MBR,然后重新创建 raid,重启后就没有消失了,但是这个简单的方法并不完美,因为 MBR 最大只支持 2TB 的硬盘
最后还是使用 GPT,但是在创建 raid 之前要使用 gdisk 命令在两块硬盘上各创建一个分区,/dev/sdb1 和 /dev/sdc1,然后再使用分区创建 raid:

mdadm -Cv /dev/md0 -a yes -n 2 -l 0 /dev/sdb1 /dev/sdc1
mkfs.xfs -f /dev/md0

这次重启之后 /dev/md0 没有消失,最后将挂载信息写入 /etc/fstab,一切正常

6292 次点击
所在节点    Linux
5 条回复
msg7086
2019-11-30 13:22:19 +08:00
给后来者的提示:

这个问题主要原因是用于组阵列的硬盘没有正确清除原始的信息,导致磁盘被首先认作 GPT 磁盘而非 MDADM 成员。
解决方法也很简单,就是清除掉 GPT 分区表,即清除掉头部的数个扇区和尾部的数个扇区,就行了。
也可以先转换成 MBR (转换过程中会自动清除 GPT 分区表),然后再清除 MBR 分区表(第一个扇区)即可。
没有必要先分区再组阵列。
cjpjxjx
2019-11-30 14:38:35 +08:00
@msg7086 哈哈,只要知道了问题所在就简单了,就可以得出很有多种解决方法,选择适合自己的就好,很少玩物理机,没想到 UEFI+GPT 会遇到这个问题
realpg
2019-12-01 11:56:22 +08:00
mdadm -Cv /dev/md0 -a yes -n 2 -l 0 /dev/sdb /dev/sdc

mkfs.xfs -f /dev/md0

---------
那个,我第一次知道还有楼主这种骚操作

按照通常 LINUX 软 RAID 的规范,首先你要创建分区,然后这个分区的 type 代码为 FD,就是 LINUX RAID

然后用这两个 FD 类型的分区去建立软 RAID
msg7086
2019-12-01 13:58:02 +08:00
@realpg 问题不大其实。阵列卡做阵列就相当于全盘做。
ps1aniuge
2019-12-03 15:27:50 +08:00
裸盘做 raid========骚操作?

一个合格的 raid 程序,给裸盘建 raid 时,就必须!!!清除头尾 n 个扇区,以免被误认。
然后在裸盘头尾写上自己家的数据。

很显然这个 mdadm 程序不合格,或者 centos 中的 mdadm 版本太老。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/624554

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX