如何让 mdadm 在每次启动后自动组装 RAID?

如何让 mdadm 在每次启动后自动组装 RAID?

我利用 成功创建了 RAID(镜像)mdadm。但是,每次启动后我都必须运行以下命令:

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

我做错了什么/为什么我需要在启动时运行这些命令?每次(重新)启动时自动启动 RAID 的正确方法是什么?

答案1

注意:您需要以 root 身份登录,或者使用须藤做到这一切……

  • 使用您最喜欢的编辑器创建或编辑/etc/mdadm/mdadm.conf文件如下:

如果该文件不存在,请将以下内容粘贴到新的空文件中:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • 保存文件

  • 运行以下命令在文件末尾添加对数组配置的引用:

    mdadm --detail --scan >> /etc/mdadm/mdadm.conf

这会在 mdadm.conf 末尾添加如下一行:

数组 /dev/md0 级别=raid5 设备数量=3 元数据=00.90 UUID=a44a52e4:0211e47f:f15bce44:817d167c

如果 mdadm 命令在 ARRAY 行上方添加了任何其他内容,请将其删除。例如,在我的其中一台机器上,该命令在 ARRAY 行之前返回“mdadm:元数据格式 00.90 未知,已忽略。”。

您的阵列现在应该在启动时自动构建,因此您可以向 /etc/fstab 添加一个条目来挂载它(如果它还不存在)

答案2

我意识到这是一个老问题,但是我在 32 位版本的 Ubuntu Server 12.04 上遇到了这个问题,非常沮丧。

运行mdadm --detail --scan >> /etc/mdadm/mdadm.conf附加行

数组 /dev/md0 元数据=1.2 名称=ubuntu:0 UUID=a8a570c6:96f61865:05abe131:5c2e2f7e

重启后,我再也看不到 /dev/md0 了。mdadm --detail --scan再次运行(不将结果放入文件中),我会看到

数组 /dev/md/ubuntu:0 元数据=1.2 名称=ubuntu:0 UUID=a8a570c6:96f61865:05abe131:5c2e2f7e

并且手动挂载/dev/md/ubuntu:0可以正常工作。最后,我也将其放入了 fstab 文件中。

我不确定我哪里做错了,在 Ubuntu 12.04 中是否就是这样工作的,或者这是否是一种不好的做法。只是想分享对我有用的方法。

答案3

我在运行 Raspbian GNU/Linux 8 (jessie) 的 Raspberry Pi 2 上遇到了这个问题。我有一个 RAID 阵列/dev/sda1,但/dev/sdb1在启动时无法组装。我的/etc/mdadm/mdadm.conf文件中有条目

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(您的数字将会有所不同;请参阅其他答案以了解如何获取此数字。)

我的/etc/fstab档案里有

/dev/md0        /data           ext4    defaults          0       0

(当然/data确实存在)

与 OP 一样,我可以在启动后手动组装和安装 RAID 阵列,但尽管设置正确,我却无法让它在启动期间自动发生。

我能够按照以下方法解决问题。我调查了脚本/etc/init.d/mdadm-raid并插入了一行调试代码

ls /dev > /home/pi/devices.txt

重新启动并检查此文件后,我发现初始化时设备/dev/sda和存在,但分区和丢失。我编辑了文件并插入了以下行/dev/sdbmdadm-raid/dev/sda1/dev/sdb1/etc/init.d/mdadm-raid

partprobe

在标题之后(即在### END INIT INFO脚本开始之前)。这导致分区被检测到,因此脚本mdadm-raid能够组装 RAID 阵列,从而解决问题。希望这对某些人有帮助!

答案4

sudo mdadm -Es >> /etc/mdadm/mdadm.conf

现在按以下方式编辑添加到 /etc/mdadm/mdadm.conf 的行。删除所有内容,但保留基本部分。它应该看起来像

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

注意:您可以根据自己的方便在 mdX 中选择 X。

现在重启

sudo update-initramfs -u
sudo reboot

编辑:命令已更正。

相关内容