linux – mdadm软件在initramfs阶段,RAID未在引导时组装

编程之家收集整理的这篇文章主要介绍了linux – mdadm软件在initramfs阶段,RAID未在引导时组装编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索热词

首先,我更愿意提到我已找到并阅读 this.

我正在使用标准的3.16内核运行Debian Jessie.
我手动定义了一个RAID1阵列.但它不会在启动时自动组装.因此,在尝试安装/ etc / fstab中描述的FS之后,systemd会回退到某些降级的shell.如果fstab中的那一行被注释,那么引导过程就会结束但是RAID阵列不可用.手动组装它不会触发任何错误.然后安装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,2000398934016octets,3907029168secteurs
Unités: secteur de 1 × 512 = 512octets
Taille de secteur (logique / physique): 512octets / 4096octets
taille d'E/S (minimale / optimale): 4096octets / 4096octets
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

在这里,我不确定类型值是否正确’Linux RAID’,因为我已经读过0xFD是预期的但是这个值似乎不能通过带有GPT分区表的fdisk获得.

谢谢你的帮助

编辑:

从journalctl -xb我可以找到一个跟踪:

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模块添加到/ 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

但阵列仍未组装:

root@tinas:~# cat /proc/mdstat 
Personalities : [raid1] 
unused devices: <none>

那是因为raid1模块似乎是在生成udev事件后加载的吗?

Interesting link but too general

我试过dpkg-reconfigure mdadm:没什么新东西……

如果有人知道如何从udev获得一些痕迹,那就太好了.我在/etc/udev/udev.conf中取消注释了udev_log = info行,但看不到任何新内容……

搜索fr 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

我刚注意到一些奇怪的事情:/etc/mdadm/madm.conf的最后一行是由命令mdadm -Es自动生成的,并显示了一个名为/ dev / md / 0的设备,而当我手动组装数组时,我得到/ dev我用mdadm创建数组时使用的/ md0 –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.

因此我尝试了它,但它只是失败了:重启后没有数组.
在/etc/mdadm/madm.conf中,我将ARRAY设备名称从/ dev / md / 0更改为ARRAY / dev / md0
我也注意到在initramfs busyBox中发布后
mdadm –assemble –scan
ARRAY创建为/ dev / md0,并标记为活动(自动只读)

周日17日

我刚刚意识到initramfs的东西.我知道内核正在使用一些ram-disk,但不知道更多.我现在的理解是,这个initramfs应该包含在用户空间启动时组装RAID阵列所需的所有数据.因此,更新此静态文件/boot/initrd.img-version以反映所有重要更改的重要性.

所以我怀疑我的/boot/initrd.img-3.16.0-4-amd64文件很乱,并尝试创建一个发出此命令的新文件
#update-initramfs -t -c -v -k 3.16.0-4-amd64
请注意我只有一个内核,因此只有一个相应的initramfs.

但重新启动后,我再次遇到initramfs shell,因为内核无法挂载/ etc / fstab中使用的/ dev / md0 FS.

星期三20日

在busyBox中我已经检查过服务器的状态:

>加载了raid1模块
> dmesg没什么好玩的
> / run / mdadm / map存在但是为空
> journalctl -xb显示

> systemd报告尝试将FS安装在尚未组装的阵列上的超时
> systemd然后在尝试fsck FS时报告依赖性失败

这是我的手动干预:

mdadm --assemble --scan

/ proc / mdstat声称设备/ dev / md0处于活动状态且自动只读.所以我发出:

mdadm --readwrite /dev/md0

退出busyBox之前.

解决方法

您可以使用btrfs本身镜像驱动器,而不是在软件raid之上创建fs:
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现在显示正确的输出然后创建你的文件系统并挂载它,使用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内核的系统上对此进行了测试,并且我将gpt分区表写入了我一起镜像的两个块设备.阵列在引导时正确组装并按指定安装.

总结

以上是编程之家为你收集整理的linux – mdadm软件在initramfs阶段,RAID未在引导时组装全部内容,希望文章能够帮你解决linux – mdadm软件在initramfs阶段,RAID未在引导时组装所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的Linux相关文章

Linux 的基本命令(怎么区分一个文件还是文件夹) ls -F 在显示名称的时候会在文件夹后添加“/”,在文件后面加“*” 日志以什么格式,存放在哪里? 日志以文本可以存储在“/var/log/”目
现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源。 普通用户在所分配到的资
报错命令 root@ubuntu:/etc/apt# apt-get update Err:1 http://mirrors.aliyun.com/ubuntu trusty InRelease Co
问题背景 在 Linux 系统下使用 apt-get 命令安装 yum 库报错 apt-get install yum E: Unable to locate package yum 问题解决 一行命
错误命令行 root@ubuntu:/etc/apt# apt install vim Reading package lists... Done Building dependency tree R
前言 为啥写这篇?因为听 grep、sed 教程的时候有这个命令 栗子 加上工作中,运维给我排查问题的时候也用到了,感觉挺重要,先了解为敬! 命令作用 显示上次登录用户的列表 这个是在 Linux 下
背景 参考了狂神老师的 Docker 教程,非常棒! https://www.bilibili.com/video/BV1og4y1q7M4?p=14 #1. 搜索镜像 search 建议大家去doc
前言 为啥写这篇? 因为听 grep、sed 教程的时候有这个命令栗子 加上工作中,运维给我排查问题的时候也用到了,感觉挺重要,先了解为敬! 命令作用 显示用户和TTY的最后登录次数 这个是在 Mac