重启后,mdadm 出现问题,我无法重新组装/dev/md0
。
我在 debian wheezy 上工作。
我已完成以下步骤:
sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sd[b-e]
cat /proc/mdstat
sudo mdadm --readwrite /dev/md0
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
echo check > /sys/block/md0/md/sync_action
sudo pvcreate /dev/md0
sudo pvdisplay
sudo vgcreate vgraid6 /dev/md0
sudo lvcreate -l 100%FREE -n lvHD vgraid6
sudo mkfs.ext4 -v /dev/vgraid6/lvHD
此处一切顺利。
安装 RAID 后,我可以使用它、创建文件、从其他 PC 访问它......
现在问题来了:
重新启动服务器(立即重新启动)后,RAID 不再存在,/dev/md0
消失了。
首先我检查了/etc/mdadm/mdadm.conf
:
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
#DEVICE partitions containers
...
CREATE owner=root group=disk mode=0660 auto=yes
MAILADDR root
ARRAY /dev/md0 metadata=1.2 name=media:0 UUID=cb127a0b:ad4eb61d:e0ba8f82:db4b062d
我尝试后:
$ mdadm --stop --scan
$ mdadm --assemble --scan
或者:
$ sudo mdadm --assemble /dev/md0 /dev/sd[b-e]
mdadm: Cannot assemble mbr metadata on /dev/sdb
mdadm: /dev/sdb has no superblock - assembly aborted
$ sudo mdadm --examine /dev/sd[b-e]
/dev/sdb:
MBR Magic : aa55
Partition[0] : 4294967295 sectors at 1 (type ee)
/dev/sdc:
MBR Magic : aa55
Partition[0] : 4294967295 sectors at 1 (type ee)
/dev/sdd:
MBR Magic : aa55
Partition[0] : 4294967295 sectors at 1 (type ee)
/dev/sde:
MBR Magic : aa55
Partition[0] : 4294967295 sectors at 1 (type ee)
mdadm 守护进程正在运行(ps aux | grep mdadm
)
空的 /proc/mdstat
$ cat /proc/mdstat
Personalities :
unused devices: <none>
怎么了?
答案1
原因有两点:
你的(新的)
mdadm.conf
在阵列组装时还未被读取。这是因为它发生在您的根文件系统被挂载之前(显然:您必须有一个可以工作的 RAID 设备才能访问它),所以该文件是从包含所谓预启动环境的 initramfs 映像中读取的。
因此,为了使其工作,在更新配置后,运行
# update-initramfs -u
以更新 initramfs。
您的 RAID 设备未发现并在启动时自动组装。
为此,请将成员分区的类型更改为
0xfd
(Linux RAID 自动检测) — 对于 MBR 样式分区表或00FD
(相同) 对于 GPT。您可以分别使用fdisk
或gdisk
来执行此操作。mdadm
在启动时运行(从 initramfs 中),扫描可用分区,从所有具有类型的分区中读取元数据块,并组装和启动所有能够启动的 RAID 设备。这不需要initramfs 映像中的0xfd
最新副本。mdadm.conf
至于选择哪种方法,则取决于您。我个人喜欢第二种方法,但如果您恰好有多个 RAID 设备,并且只想在启动时启动其中几个(需要有一个有效的根文件系统),然后稍后激活其余设备,则第一种方法或两者的组合是一种可行的方法。
答案2
我知道这是一篇旧帖子,但我一直在努力解决这个问题,这是我的结果:
我的磁盘“冻结”了 - Seagate 磁盘。您可以通过输入命令来检查是否有同样的问题:
hdparm -I /dev/sdb
结果表明:
Security:
Master password revision code = 65534
supported
not enabled
not locked
**frozen**
not expired: security count
supported: enhanced erase
我无法更改此设置。磁盘在常规分区下工作正常,但当我将它们格式化为 Linux Raid 时,它们丢失了分区表,并且在重新启动后变为“空”。
我在分区上创建了 raid,而不是在设备上:
mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
现在重启后一切正常,一切都按预期工作。
答案3
谢谢你的回答。
我已经尝试更新 initranfd,但没有成功。
通过你的第二个提示,我解决了这个问题:
使用以下命令在每个磁盘上创建分区:
gdisk /dev/sd[b-e] \n \ \fd00\w\y
在设备上的分区上创建 mdadm(最后检查 1)
sudo mdadm --create --verbose /dev/md0 --level=6 --assume-clean --raid-devices=4 /dev/sd[b-e]1
答案4
注意,不要盲目复制粘贴,因为这可能会填满你的文件系统......
- 猫/proc/mdstat
- 记下 md(无论什么)号码,(提示 - 重启后不太可能是 md0)
- mkfs -t ext4 /dev/md(无论如何)
- 挂载 /dev/myraiddevice /dev/md(无论什么)
- 将其粘贴到 fstab 中
获取有关阵列设置的详细信息 - mdadm -D /dev/md(whatever)
我知道这是旧帖子,但我还是发布它以防我将来忘记我的决心。