技术解析

记一次采坑经历, mdadm 创建 raid0,重启后自动消失
0
2021-06-19 02:19:59
idczone

家里的一台 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,一切正常


给后来者的提示:
这个问题主要原因是用于组阵列的硬盘没有正确清除原始的信息,导致磁盘被首先认作 GPT 磁盘而非 MDADM 成员。
解决方法也很简单,就是清除掉 GPT 分区表,即清除掉头部的数个扇区和尾部的数个扇区,就行了。
也可以先转换成 MBR (转换过程中会自动清除 GPT 分区表),然后再清除 MBR 分区表(第一个扇区)即可。
没有必要先分区再组阵列。

哈哈,只要知道了问题所在就简单了,就可以得出很有多种解决方法,选择适合自己的就好,很少玩物理机,没想到 UEFI+GPT 会遇到这个问题

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

问题不大其实。阵列卡做阵列就相当于全盘做。

裸盘做 raid========骚操作?
一个合格的 raid 程序,给裸盘建 raid 时,就必须!!!清除头尾 n 个扇区,以免被误认。
然后在裸盘头尾写上自己家的数据。
很显然这个 mdadm 程序不合格,或者 centos 中的 mdadm 版本太老。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服