md设备linux,linux – Ubuntu:md设备如何在启动时组装?

如何在Ubuntu启动时组装md设备? /etc/mdadm/mdadm.conf真的是这里的相关因素吗?

我的mdadm.conf声音很好,我在救援CD环境中检查过.运行mdadm -A –scan时,它会根据需要查找并分配设备名称. mdadm.conf包含AUTO -all以从组装数组中取出所有自动操作.

我需要做的是能够在启动时自动组装mdadm.conf中概述的md设备,或者在组装它时尊重0.9数组的超小值和名称(显然< hostname>:对于1.2阵列,< super-minor>)并且在没有mdadm.conf的情况下做正确的事情.我错过了什么拼图?

我有以下问题.有两个带有RAID1(md0和md1)的md设备和一个带有RAID6(md2)的设备.我指的是所需的设备名称. md0的元数据版本为0.9,另外两个版本为1.2. md0映射到/,其他两个与引导无关.

启动驱动器是GPT分区的.它上面有一个胶水“BIOS Boot Partition”(sda1). grub-install –no-floppy / dev / sda报告成功.

> md0 == sda3 sdb3

> md1 == sda2 sdb2

> md2 == sdc sdd sde sdf sdg sdh

> sda1和sdb1分别是“BIOS Boot Partition”

GRUB2对我给它的/ boot / grub / devicemap很满意,我将part_gpt,raid,mdraid09和ext2添加到模块中以在GRUB2中预加载.

由于我仍然在救援环境中拥有自己的根音量,所以我只需安装所有内容然后将其插入其中:

mkdir /target

mount /dev/md0 /target

mount -o bind /dev /target/dev

mount -o bind /dev/pts /target/dev/pts

mount -o bind /sys /target/sys

mount -o bind /proc /target/proc

chroot /target /bin/bash

从那里我重置了md0上的超级小调(带有元数据0.9)和md1和md2上的名字.我还验证了它使用mdadm –detail ….

除了调整/ etc / default / grub,运行update-grub和grub-install –no-floppy / dev / sda和grub-install –no-floppy / dev / sdb.

之后,在启动时,我总是被放入initramfs rescue shell中,因为无法挂载根文件系统.检查/ proc / mdstat之后的原因似乎是相应的md设备甚至没有组装和运行.更不用说其他两个(元数据版本1.2)驱动器在125..127范围内的某处接收设备号.

注意:GRUB2来自启动盘.所以至少它已被正确嵌入.问题是从初始rootfs到正确的根文件系统的过渡.

解决方法:

基本启动过程

蛴螬

> Grub从MBR读取其磁盘,md,文件系统等代码.

> Grub找到它的/ boot分区,并从中读取其余部分.包括配置,以及配置指定的任何模块都需要加载.

> Grub遵循配置中的指令,通常告诉它将内核和initramfs加载到内存中,然后执行内核.

有一种后备模式,因为当Grub实际上无法读取文件系统时 – 或者因为没有足够的空间将所有代码嵌入到引导记录中,或者因为它不知道文件系统或其下的层.在这种情况下,GRUB嵌入一个扇区列表,并从中读取代码.这不太稳健,最好避免.甚至可以像这样做内核和initramfs(不确定).

核心

然后内核获得控制权,并执行许多基本硬件初始化.这个阶段相当快.接下来,内核将initramfs解压缩到tmpfs,并在该tmpfs上查找/ init.然后它执行(在正常意义上,内核正在此时运行)/ init.顺便说一句,这是一个普通的旧shell脚本.

initramfs的

您可以通过执行类似mkdir / tmp / foo的操作来手动提取initramfs; cd / tmp / foo; zcat /boot/initrd.img-3.8-trunk-amd64 | cpio -idmv.

initramfs负责加载所有驱动程序,启动udev,并查找根文件系统.这是失败的步骤 – 它无法找到根文件系统,因此它将失败.

一旦initramfs完成,它就会挂载根文件系统,并将控制交给/ sbin / init.

系统启动

此时,你的init接管了 – 我认为Ubuntu目前正在使用upstart.

什么是破碎的

我不完全确定什么是坏的(部分,我承认,因为我对它在Debian上的工作方式比Ubuntu更熟悉,虽然它类似),但我有几个建议:

> initramfs有自己的mdadm.conf副本.您可能只需要运行update-initramfs -u来修复它.

>查看启动消息.可能有错误.摆脱’安静’和’飞溅’,并可能在你的内核行添加’verbose’来实际看到它们.

>根据使用的存储,您可能需要设置rootdelay参数.

>当你被转储到shell提示符时,你没有很多命令,但你确实有mdadm.试着弄清楚出了什么问题.如果您解决了问题,可以继续启动.

标签:linux,ubuntu,initrd,grub2,mdadm

来源: https://codeday.me/bug/20190809/1631612.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值