我有 2 个磁盘,结构如下:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 3,7T 0 disk
├─sda1 8:1 0 2,7T 0 part
└─sda2 8:2 0 931,5G 0 part
sdb 8:16 0 2,7T 0 disk
└─sdb1 8:17 0 2,7T 0 part
如果我执行
mdadm --misc --detail /dev/md0
返回
mdadm: cannot open /dev/md0: No such file or directory
我的 mdadm.conf 是:
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
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
# This configuration was auto-generated on Thu, 03 Mar 2016 21:53:00 +0100 by mkconf
ARRAY /dev/md/0 metadata=1.2 UUID=6ca17528:517621d3:e1c460a2:529955dd name=rp3-0:0
如果我执行
sudo mdadm -A /dev/md0
或者
sudo mdadm --assemble --scan
返回
mdadm: /dev/md/0 has been started with 2 drives.
新的磁盘结构为:
sda 8:0 0 3,7T 0 disk
├─sda1 8:1 0 2,7T 0 part
│ └─md0 9:0 0 5,5T 0 raid0
└─sda2 8:2 0 931,5G 0 part
sdb 8:16 0 2,7T 0 disk
└─sdb1 8:17 0 2,7T 0 part
└─md0 9:0 0 5,5T 0 raid0
raid 的 fstab 行是
/dev/md0 /mnt/ext ext4 defaults,nobootwait,nofail 0 0
nobootwait 和 nofail 用于在启动时不使 systemd 崩溃。
当我重启系统时,raid0 消失了。每次重启后我该如何保留 raid?
谢谢。
答案1
您只需要 conf 和 initrd/initramfs 钩子。这可能因发行版而异。
首先,添加conf:
mdadm -D --scan > /etc/mdadm.conf
如果您可以找到像 /etc/mdadm/ 这样的目录,也许您的发行版需要那里的文件...对其进行符号链接或仅使用该路径。
其次,确保 mdadm initrd 钩子已安装并启用。(正常的 mdadm 包应该有它们...我只提到这一点以防你的发行版很奇怪,所以你知道要寻找第二个包)
例如基于 Arch:
$ pacman -Ql mdadm | grep hook
mdadm /usr/lib/initcpio/hooks/
mdadm /usr/lib/initcpio/hooks/mdadm
$ grep mdadm /etc/mkinitcpio.conf
HOOKS="base ... mdadm lvm2 filesystems ..."
基于 Debian 的:
$ dpkg -L mdadm | grep initr.*hook
/usr/share/initramfs-tools/hooks
/usr/share/initramfs-tools/hooks/mdadm
(I'm not really sure where the hook is enabled, but I think it should be enabled by default... someone else please fill that in)
然后,在安装这些文件和包之后,您必须重建 initramfs,并且可能还要更新 grub,以防万一:
基于 Arch:
# mkinitcpio -p /etc/mkinitcpio.d/somekernel.preset
# update-grub
基于 Debian:
# update-initramfs -u
# update-grub
另外,请记住在 fstab 中使用 UUID 而不是 /dev/md0,以实现更可靠的启动。(例如,如果您在救援磁盘上启动它并对其进行修改,有时它会更改为 /dev/md127,有时很难将其设置回 0)。请参阅 man fstab 了解语法,并参阅 blkid 了解 UUID。
答案2
这是一个解决方法,但经过几个小时后,唯一的解决方案是编辑etc/rc.local
。我之前添加了这一行exit 0
$ sudo mdadm -A /dev/md0 && sudo mount /dev/md0 /mnt/ext
现在,每次重启后 RAID 都会成功安装。
答案3
我见过许多 Debian 服务器都出现这种情况。每次对我都有效的解决方案(相信我,我花了很多很多小时才弄清楚)是修补文件“/usr/share/initramfs-tools/scripts/local-top/mdadm”。找到输出“Assembling all MD arrays”的位置,然后在其后添加“sleep 3”。完成后,运行“update-initramfs -t -u -k all”以安装修改后的脚本。