好吧,这开始变得相当令人沮丧。我已经阅读了此网站上与此问题有关的大多数其他答案,但我仍然一无所获。我有一个 RAID 6 阵列,其中有 10 个设备和 1 个备用设备。操作系统位于完全独立的设备上。在启动时,RAID 中的 10 个设备中只有 3 个可用,其他设备在启动过程的后期才可用。目前,除非我通过 initramfs,否则我无法启动系统 - 它只是挂起并显示空白屏幕。当我通过恢复(initramfs)启动时,我会收到一条消息,询问我是否要组装降级的阵列。如果我选择否,然后退出 initramfs,系统将正常启动,并且我的阵列将准确地安装在我想要的位置。以下是我所能知道的相关文件。如果您想查看其他内容,请询问我。
# 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 containers
# 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 file was auto-generated on Tue, 13 Nov 2012 13:50:41 -0700
# by mkconf $Id$
ARRAY /dev/md0 level=raid6 num-devices=10 metadata=1.2 spares=1 name=Craggenmore:data UUID=37eea980:24df7b7a:f11a1226:afaf53ae
这是 fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sdc2 during installation
UUID=3fa1e73f-3d83-4afe-9415-6285d432c133 / ext4 errors=remount-ro 0 1
# swap was on /dev/sdc3 during installation
UUID=c4988662-67f3-4069-a16e-db740e054727 none swap sw 0 0
# mount large raid device on /data
/dev/md0 /data ext4 defaults,nofail,noatime,nobootwait 0 0
cat /proc/mdstat 的输出
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sda[0] sdd[10](S) sdl[9] sdk[8] sdj[7] sdi[6] sdh[5] sdg[4] sdf[3] sde[2] sdb[1]
23441080320 blocks super 1.2 level 6, 512k chunk, algorithm 2 [10/10] [UUUUUUUUUU]
unused devices: <none>
以下是 mdadm --detail --scan --verbose 的输出
ARRAY /dev/md0 level=raid6 num-devices=10 metadata=1.2 spares=1 name=Craggenmore:data UUID=37eea980:24df7b7a:f11a1226:afaf53ae
devices=/dev/sda,/dev/sdb,/dev/sde,/dev/sdf,/dev/sdg,/dev/sdh,/dev/sdi,/dev/sdj,/dev/sdk,/dev/sdl,/dev/sdd
如果您认为还有其他任何方法可能有助于解决此问题,请告诉我...我似乎无法弄清楚如何更改启动过程,以便 mdadm 等到驱动器准备好构建阵列。如果驱动器有足够的时间上线,一切都会正常工作。
编辑:更改标题以正确反映情况
答案1
好吧,我终于解决了这个令人沮丧的问题。原来这个区域有好几个 bug 被提交了。不幸的是,找到解决方法非常困难。
首先提供更多信息:
挂起根本不是那样。实际发生的是系统正在进入 initramfs shell。不幸的是,这被图形启动隐藏了,所以我看到的只是一个略带紫色的空白屏幕。如果我输入 exit,系统就会启动。
系统正在进入 initramfs shell,因为它询问我们是否要以降级方式启动,并且由于它无法接收任何输入,因此启动设置方式会超时。
最后一点信息是,无论你向内核传递什么参数,你都无法通过此提示。因此,如果我们阵列的驱动器启动速度不够快,无法适应 upstart/udev,我们就会陷入困境。
所有上述问题的错误都已在启动板上提交(不是我提交的),看起来它们正在被解决(这个问题显然很难处理,因为涉及很多东西)。
幸运的是,我找到了解决方案,并最终解决了这个问题。首先,我必须给出一个带有强烈警告的免责声明。我所描述的内容可能会导致您在不知情的情况下安装降级阵列。这可能会导致完全失败并丢失数据。我已警告您 - 除非您完全确定您愿意承担这些风险,否则请不要这样做!
为了让 Ubuntu 允许系统越过这个竞争条件,我所做的事情实际上非常简单:
sudo dpkg-reconfigure mdadm
然后重新配置 mdadm,以允许系统以降级方式启动阵列。正如我之前提到的,这可能很危险,因此请确保已设置 mdadm,以便在阵列以降级方式运行时通知您并监控您的阵列。我还建议您设置电子邮件通知。每次我重新启动时,系统都会向我发送有关我的 raid 的摘要。我希望这对某些人有用;我真希望我能找到这个答案!
干杯!