首先,我更愿意提到我已经find并阅读了这个 。
我使用标准的3.16内核运行Debian Jessie。 我已经手动定义了一个RAID1arrays。 但在启动时不会自动组装。 因此,在尝试挂载/ etc / fstab中描述的FS之后,systemd会回退到某些降级的shell。 如果fstab中的那一行被注释掉了,那么启动过程将结束,但RAIDarrays不可用。 手动组装不会引发任何错误。 然后安装FS很简单。
手动组装时,数组看起来像这样:
root@tinas:~# cat /proc/mdstat Personalities : [raid1] md0 : active (auto-read-only) raid1 sdc1[0] sdd1[1] 1953382464 blocks super 1.2 [2/2] [UU] bitmap: 0/15 pages [0KB], 65536KB chunk unused devices: <none>
这里是blkid命令的摘录:
/dev/sdd1: UUID="c8c2cb23-fbd2-4aae-3e78-d9262f9e425b" UUID_SUB="8647a005-6569-c76f-93ee-6d4fedd700c3" LABEL="tinas:0" TYPE="linux_raid_member" PARTUUID="81b1bbfe-fad7-4fd2-8b73-554f13fbb26b" /dev/sdc1: UUID="c8c2cb23-fbd2-4aae-3e78-d9262f9e425b" UUID_SUB="ee9c2905-0ce7-2910-2fed-316ba20ec3a9" LABEL="tinas:0" TYPE="linux_raid_member" PARTUUID="11d681e5-9021-42c0-a858-f645c8c52708" /dev/md0: UUID="b8a72591-040e-4ca1-a663-731a5dcbebc2" UUID_SUB="a2d4edfb-876a-49c5-ae76-da5eac5bb1bd" TYPE="btrfs"
来自fdisk的信息:
root@tinas:~# fdisk -l /dev/sdc Disque /dev/sdc : 1,8 TiB, 2000398934016 octets, 3907029168 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 4096 octets taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets Type d'étiquette de disque : gpt Identifiant de disque : C475BEB1-5452-4E87-9638-2E5AA29A3A73 Device Start End Sectors Size Type /dev/sdc1 2048 3907029134 3907027087 1,8T Linux RAID
在这里,我不确定是否types值是正确的“Linux RAID”,因为我已经读过0xFD,但是通过fdisk和GPT分区表似乎没有这个值。
谢谢你的帮助
编辑:
从journalctl -xb我可以find一个痕迹:
Apr 14 15:14:46 tinas mdadm-raid[211]: Generating udev events for MD arrays...done. Apr 14 15:35:03 tinas kernel: [ 1242.505742] md: md0 stopped. Apr 14 15:35:03 tinas kernel: [ 1242.513200] md: bind<sdd1> Apr 14 15:35:03 tinas kernel: [ 1242.513545] md: bind<sdc1> Apr 14 15:35:04 tinas kernel: [ 1242.572177] md: raid1 personality registered for level 1 Apr 14 15:35:04 tinas kernel: [ 1242.573369] md/raid1:md0: active with 2 out of 2 mirrors Apr 14 15:35:04 tinas kernel: [ 1242.573708] created bitmap (15 pages) for device md0 Apr 14 15:35:04 tinas kernel: [ 1242.574869] md0: bitmap initialized from disk: read 1 pages, set 0 of 29807 bits Apr 14 15:35:04 tinas kernel: [ 1242.603079] md0: detected capacity change from 0 to 2000263643136 Apr 14 15:35:04 tinas kernel: [ 1242.607065] md0: unknown partition table Apr 14 15:35:04 tinas kernel: [ 1242.665646] BTRFS: device fsid b8a72591-040e-4ca1-a663-731a5dcbebc2 devid 1 transid 8 /dev/md0
/ proc / mdstat我刚刚意识到启动后raid1模块没有加载!
root@tinas:~# cat /proc/mdstat Personalities : unused devices: <none> root@tinas:~#
于是,我把raid1模块join到/ etc / modules ,发布了一个update-initramfs -u 。
这里是相关日志:
avril 15 12:23:21 tinas mdadm-raid[204]: Generating udev events for MD arrays...done. avril 15 12:23:22 tinas systemd-modules-load[186]: Inserted module 'raid1' avril 15 12:23:22 tinas kernel: md: raid1 personality registered for level 1
但arrays仍然没有组装:
root@tinas:~# cat /proc/mdstat Personalities : [raid1] unused devices: <none>
那是因为raid1模块似乎在udev事件产生后被加载?
有趣的链接,但太笼统
我试过dpkg-reconfigure mdadm :没有新东西…
如果有人知道如何从udev获得一些痕迹,那就太好了。 我取消了udev_log = info行的/etc/udev/udev.conf但是看不到任何新东西…
searchfr raid加载模块
root@tinas:~# grep -E 'md_mod|raid1' /proc/modules raid1 34596 0 - Live 0xffffffffa01fa000 md_mod 107672 1 raid1, Live 0xffffffffa0097000
加载raid1是因为我把它加到/etc/modules ,否则之前加载。
uname -r
root@tinas:~# uname -r 3.16.0-4-amd64
/etc/mdadm/mdadm.conf
root@tinas:~# cat /etc/mdadm/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 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 ARRAY /dev/md/0 metadata=1.2 UUID=a930b085:1e1a615b:93e209e6:08314607 name=tinas:0 # This configuration was auto-generated on Fri, 15 Apr 2016 11:10:41 +0200 by mkconf
我只是注意到一些奇怪的东西: mdadm -Es的最后一行是由命令mdadm -Es自动生成的,并显示了一个名为/ dev / md / 0的设备,而当我手动组装数组时,我得到/ dev / md0我用mdadm --create创build数组时使用mdadm --create …
另外,我从详细的update-initramsfs获得了这些信息:
Adding module /lib/modules/3.16.0-4-amd64/kernel/drivers/md/raid10.ko I: mdadm: using configuration file: /etc/mdadm/mdadm.conf I: mdadm: will start all available MD arrays from the initial ramdisk. I: mdadm: use `dpkg-reconfigure --priority=low mdadm` to change this.
因此,我试了一下,但它只是失败了:重新启动后没有arrays。
在/etc/mdadm/madm.conf中,我将ARRAY设备名称从/ dev / md / 0更改为ARRAY / dev / md0
我还注意到,在initramfs busybox中,在发出mdadm –assemble –scan之后,ARRAY被创build为/ dev / md0,并被标记为活动(自动只读)
我只是意识到了initramfs的东西。 我知道内核正在使用一些内存盘,但是不知道更多。 我现在的理解是,这个initramfs应该包含在userland启动时组装 RAIDarrays所需的所有数据。 因此,更新此静态文件/boot/initrd.img- 版本以反映所有重要的更改的重要性。
所以我怀疑我的/boot/initrd.img-3.16.0-4-amd64文件是混乱的,并试图创build一个新的发出这个命令:
#update-initramfs -t -c -v -k 3.16.0-4-amd64
请注意,我只有一个内核,因此只有一个对应的initramfs。
但是在重启之后,我又遇到了initramfs shell,因为内核无法挂载/ etc / fstab中使用的/ dev / md0 FS。
我已经在busybox中检查了服务器的状态:
这是我的手动干预:
mdadm --assemble --scan
/proc/mdstat声称设备/ dev / md0是活动的并且是自动只读的 。 所以我问:
mdadm --readwrite /dev/md0
在退出busybox之前。
您可以使用btrfs本身镜像驱动器,而不是在软件raid上创buildfs: mkfs.btrfs -d raid1 /dev/sdc /dev/sdd
否则请尝试:
umount /dev/md0 if mounted mdadm --stop /dev/md0 mdadm --assemble --scan mv /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.bak /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf
如果cat /proc/mdstat现在显示正确的输出,那么创build你的文件系统并挂载它,使用blkid来获得/ dev / md0的UUID并相应地编辑/ etc / fstab。
如果您仍然遇到问题,请在继续上述说明之前尝试以下操作:
mdadm --zero-superblock /dev/sdc /dev/sdd mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1
我在一个运行Debian Jessie并使用3.16.0-4-amd64内核的系统上testing了这个,我把gpt分区表写到了我镜像的两个块设备上。 arrays在引导时正确组装,并按指定进行安装。
那么,我本来希望find一个解决scheme,但服务器被closures了10天,我决定升级它,删除了犯罪的所有证据 。 首先尝试从jessie迁移到testing。 它失败了。 所以我终于做了一个干净的Debiantesting安装。
不知道问题来自哪里,但几乎可以肯定,它是在一些更新后。 几个论坛post让我觉得它是相对于内核3.16.0-4-amd64,但这是猜测。
我不知道如何标记closures的问题…
我只是有一个类似的问题,虽然我的分区types是MBR(又名“DOS”),而不是GPT。 所以我不确定这与你自己的问题有多密切。 我想把它作为答案张贴在这里,因为我试图解决自己的问题时仔细阅读你的问题。
我的症状非常相似,因为/ boot位于mdadm RAID1上,/位于另一个mdadm RAID1上的LVM上,并且内核启动正常,但无法装入根文件系统,因为找不到包含它的卷组。 原来,因为即使正确的内核模块被加载,RAID1设备实际上都没有运行。
在我的情况下,问题是我已经设置了RAID1设备下的设备的分区types来键入FD(“Linux RAID Autodetect”)。 将types更改为DA(“非FS数据”)解决了该问题。
我从https://raid.wiki.kernel.org/index.php/Partition_Types得到了这个想法
之所以出现这种情况,是因为我之前在Debian安装过程中手动完成了分区,并select了分区types(这是我刚开始在初始ramdisk之前开始使用Linux RAID时的一次,是正确的select)。