我通过利用成功创建了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的正确方法是什么?
我通过利用成功创建了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的正确方法是什么?
Answers:
注意:您要么需要以root身份登录,要么使用sudo来完成所有这些工作...
如果该文件甚至不存在,请将以下内容粘贴到新的空文件中:
# 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-详细--scan >> /etc/mdadm/mdadm.conf
这应该在mdadm.conf的末尾添加如下一行:
ARRAY / dev / md0 level = raid5 num-devices = 3元数据= 0.90 UUID = a44a52e4:0211e47f:f15bce44:817d167c
如果mdadm命令在ARRAY行上方添加了其他任何内容,请将其删除。例如,在我的一台机器上,该命令返回“ mdadm:元数据格式00.90未知,已忽略”。在阵列行之前。
现在,您的阵列应该在启动时自动构建,因此您可以在/ etc / fstab中添加一个条目来挂载它(如果尚不存在)
mdadm -Es
。
grub-install /dev/sda
才能使其起作用(将sda替换为适合您的任何东西)
md.auto=1
...我实际上并未对此进行全面测试,但据推测它可以检测到它们并进行组装(或至少尝试这样做)。但随后kernel.org/doc/html/v4.15/admin-guide/md.html在这方面有点模棱两可:当将md编译到内核中(而不是作为模块)时,将扫描并自动组装类型为0xfd的分区进入RAID阵列。[...]从内核2.6.9开始,只有具有类型0超级块的驱动器才能被自动检测并在引导时运行。而且它没有引用md.auto(或其他名称),所以我现在不确定。
我意识到这是一个更老的问题,但是在32位版本的Ubuntu Server 12.04上使用此工具的时间令人沮丧。
运行mdadm --detail --scan >> /etc/mdadm/mdadm.conf
附加行
ARRAY / dev / md0元数据= 1.2名称= ubuntu:0 UUID = a8a570c6:96f61865:05abe131:5c2e2f7e
重新启动后,我再也看不到/ dev / md0。mdadm --detail --scan
我会再次运行(不将结果放入文件中)
ARRAY / dev / md / ubuntu:0元数据= 1.2名称= ubuntu:0 UUID = a8a570c6:96f61865:05abe131:5c2e2f7e
手动安装即可/dev/md/ubuntu:0
。最后,这也是我放入fstab文件中的内容。
我不确定我是怎么做的,如果这是在Ubuntu 12.04中的工作方式,或者这不是一个好习惯。只是想分享对我有用的东西。
在Debian Wheezy上,还需要执行以下步骤:/etc/default/mdadm
将set autostart从false 设置为true
#自动开启: #mdadm应该自动启动/etc/mdadm/mdadm.conf中列出的数组 #启动期间? AUTOSTART =真
我也不得不使用mdadm -Es >>/etc/mdadm/mdadm.conf
而不是--scan
选项,因为那对我不起作用。
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
编辑:命令已更正。
我在运行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/sdb
存在mdadm-raid
,但是分区/dev/sda1
和/dev/sdb1
丢失了。我编辑了/etc/init.d/mdadm-raid
文件并插入了这一行
partprobe
在标题之后(即在### END INIT INFO
脚本开始之后但之前)。这导致检测到分区,因此mdadm-raid
脚本能够组装RAID阵列,从而解决了该问题。希望这对某人有帮助!
我一直在Raspbian上使用Raspberry Pi上的几个外部USB HDD来解决这个问题。我必须弄乱服务的启动顺序,以确保mdadm-raid在udev识别USB驱动器之后但在checkfs.sh(在启动时检查文件系统)之前启动。如果mdadm-raid启动得太早,则驱动器不可用,因此无法组装阵列。这意味着fsck随后失败,并且引导过程退出到维护提示(因为raid阵列是其他服务所必需的)。
修改启动依赖项以在checkroot.sh之后但在checkfs.sh和running之前启动mdadm-raid update-rc.d mdadm-raid defaults
,然后update-initramfs -uv -k `uname -r`
(注意周围的反引号uname
)对其进行了修复(最终)。对我来说,YMMV。
update-initramfs -u