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

Bre*_*eak 49 raid home-server kubuntu mdadm ubuntu

我成功地创建了一个 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
Run Code Online (Sandbox Code Playgroud)

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

Lin*_*000 41

注意:您要么需要以 root 身份登录,要么使用sudo来完成所有这些...

  • 使用您喜欢的编辑器创建或编辑/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
Run Code Online (Sandbox Code Playgroud)
  • 保存文件

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

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

这应该在 mdadm.conf 的末尾添加如下一行:

ARRAY /dev/md0 level=raid5 num-devices=3 metadata=00.90 UUID=a44a52e4:0211e47f:f15bce44:817d167c

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

您的阵列现在应该在启动时自动构建,因此您可以向 /etc/fstab 添加一个条目以安装它(如果它还没有)

  • 我可能会补充:您还应该使用 `update-initramfs -u` 更新您的 initramfs (8认同)
  • mdadm --detail --scan 不会在我的系统上打印任何内容,尽管我确信我有两个分区是 raid0 (镜像)的一部分。欢迎对此提出任何一般性建议。 (2认同)

小智 8

我意识到这是一个较旧的问题,但我在 32 位版本的 Ubuntu Server 12.04 上遇到了令人沮丧的时间。

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

ARRAY /dev/md0 metadata=1.2 name=ubuntu:0 UUID=a8a570c6:96f61865:05abe131:5c2e2f7e

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

ARRAY /dev/md/ubuntu:0 metadata=1.2 name=ubuntu:0 UUID=a8a570c6:96f61865:05abe131:5c2e2f7e

手动安装/dev/md/ubuntu:0会起作用。最后,这也是我放入 fstab 文件的内容。

我不确定我做错了什么,如果这是在 Ubuntu 12.04 中的工作方式,或者这是一个不好的做法。只是想分享对我有用的东西。


小智 5

我在运行 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 
Run Code Online (Sandbox Code Playgroud)

(您的数字会有所不同;请参阅有关如何获得此信息的其他答案。)

我的/etc/fstab文件中有条目

/dev/md0        /data           ext4    defaults          0       0
Run Code Online (Sandbox Code Playgroud)

(当然/data确实存在)

像 OP 一样,我可以在启动后手动组装和安装 RAID 阵列,但尽管显然已正确设置,但我无法在启动过程中自动发生。

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

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

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

partprobe

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