【环境信息】
系统:x86_64/arm 虚拟机,物理机
转测20.03-LTS-SP1版本
【问题复现步骤】
使用命令mdadm -Cv /dev/md1 --metadata=1.0 -l1 -n2 -x0 /dev/sda /dev/sdb --size-50G --bitmap=none 构造raid盘
安装2.03-LTS-SP1版本到raid盘上
安装成功后重启系统
【预期结果】
/var/log/messages 日志打印正常
【实际结果】
打印有报错,必现
说明:raid的元数据信息在磁盘尾部生成元数据,所以在没有组装raid时,单盘也可以实现系统引导及启动。
启动流程梳理:
1)BIOS引导寻找磁盘的分区表头
2)BIOS发现该磁盘有EFI分区,则加载EFI
3)加载内核、挂载initramfs
4)加载initramfs中的软RAID驱动和配置文件,完成RAID组装 --》 需要确定当前配置方式时该步骤是否有相应配置?
5)挂载md设备及分区,并切换到md的文件系统
6)启动完成。
以上过程中,第1-4步,是在单硬盘(RAID成员盘)上完成的,具体是哪块磁盘,取决于BIOS的寻盘策略。
第4步中,如果RAID成员盘出现异常,导致组装RAID失败,此时RAID会处于降级模式,单盘生成md设备完成5~6步的过程。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
猜测:
1.当前组装raid作为系统盘的方式并没有在initramfs中正确配置raid的信息,导致第4步时组装raid失败而触发remove的uevent事件。
@baizhilaoda 请提供更加详细的安装虚机和配置raid的流程,以方便后续分析
1)挂载iso镜像,从光驱启动进入安装欢迎界面按ctrl+Atl+F2 切换到命令行
2)执行下面命令
madam -Cv /dev/md1 --metadata=1.0 -l1 -n2 -x0 /dev/vda /dev/vdb --size=50G --bitmap=none
查看cat /proc/mdstat,等待raid创建完成
3)重启,从光驱启动,将系统安装到raid盘上
driver初始化:
sd_probe
->async_schedule_domain(sd_probe_async, sdkp, &scsi_sd_probe_domain);
->sd_probe_async
-> sd_revalidate_disk
->sd_read_write_protect_flag -> set_disk_ro_uevent//change udev事件
->device_add_disk //添加disk信息到kernel list
->__device_add_disk
->register_disk // 注册disk信息
->dev_set_uevent_suppress(ddev, 1); /* delay uevents, until we scanned partition table */
->bdev = bdget_disk(disk, 0);// 获取分区0信息,Find partition @partno from @disk, do bdget() on it.
->blkdev_get(bdev, FMODE_READ, NULL); //打开该block设备
->while ((part = disk_part_iter_next(&piter))) {kobject_uevent(&part_to_dev(part)->kobj, KOBJ_ADD);} //遍历分区触发KOBJ_ADD udev事件
说明:
系统启动后scsi扫描发现硬盘信息,然后调用sd_probe该设备并上报,在执行sd_probe过程中会注册register_disk,测试md层还没有感知,所以在register_disk时会把它当做普通块设备处理,此时从设备的分区表中读取的分区号就会配合着该设备名构造出/dev/sdq1和/dev/sdq2分区,并触发KOBJ_ADD add事件,而由于/dev/sdq是先组raid然后再划分分区,所以此时触发/sbin/mdadm -I /dev/sdq1并不能组装/dev/md1,所以会报错误信息,但是这个错误并不影响功能。
正常识别会在/dev/sdq正常识别后会触发udev中的raid规则进行组装,相同的等识别到/dev/sdy后成功组装为/dev/md1
图:RAID1格式化后成员盘数据结构
结论:非问题
简要小结:
登录 后才可以发表评论