IntelS1200V3RP主板 采用Raid1方式安装Centos7.2系统
1、预备条件
BIOS里面配置Raid1, 设置为以RAID方式启动
2、修改安装系统,自动加载megasr.ko驱动
首先要在安装系统里面加载megasr.ko驱动,这个是硬raid驱动,因为采用的自动化安装方式,需要把megasr.ko安装到initrd.img里面去。
挂载ISO
解压isolinux/initrd.img
增加megasr.ko,对应目录/usr/lib/modules/3.10.0-327.el7.x86_64/extra/megasr/megasr.ko
重新生成模块依赖关系 depmod
重新生成initrd.img
重新打包生成ISO
[root@admin tmp]# pwd
/root/tmp
[root@admin tmp]# mv initrd.img initrd.img.xz
[root@admin tmp]# xz -d initrd.img.xz
[root@admin tmp]# du -sh *
150M initrd.img
[root@admin tmp]# cpio -idmv < initrd.img
root@admin tmp]# ls
bin etc initrd.img lib64 root sbin sys tmp var
dev init lib proc run shutdown sysroot usr
//将megasr.ko驱动放入正确的位置
[root@admin tmp]# rm –rf initrd.img
[root@admin tmp]# depmod -b /root/tmp/ //生成模块依赖关系,手动指定module tree
[root@admin tmp]# find . | cpio -H newc -o > ../initrd_cpio.img
[root@admin tmp]# cd ..
[root@admin ~]# xz -z initrd_cpio.img
[root@admin ~]# mv initrd_cpio.img.xz initrd.img
//解压和打包ISO的步骤此处不贴了
3、修改安装过程,在安装完成后添加megasr.ko,重新initramfs
在安装后处理的过程中安装了megasr.ko驱动,生成模块依赖关系,生成/boot/initramfs-3.10.0-327.el7.x86_64.img。
小插曲:
安装完成后系统可以正常启动,启动完成后查看磁盘,发现系统并不是以raid1 的方式启动,而是已两块独立磁盘启动, /boot分区采用的是sda,根文件系统采用的是sdb。这并不是我们期望的效果,并不能达到raid1的高可靠性。
通过网上查资料,大家讨论,感觉与AHCI驱动有关,至少两块磁盘确实是通过AHCI驱动访问的。网上查资料,也有hp服务器通过屏蔽AHCI驱动做RAID1成功的。
反复测试后,我们的结论是屏蔽AHCI驱动一定要在安装完系统后的第一次启动前屏蔽,否则系统以单盘的形式启动后,会导致两块磁盘上的数据不一致,以后即便修改成raid1启动,因为raid1两块盘数据不一致,导致文件系统有问题,无法启动了
4、修改安装过程,在安装完成后屏蔽AHCI驱动
应该在安装的后处理流程的过程中,对于Raid这种安装方式屏蔽AHCI驱动
1、 直接删除ahci.ko驱动,重新生成模块依赖关系, 生成initramfs (经过测试,这样可以正常工作)
2、或者修改grub,屏蔽AHCI驱动(理论可行,没有测试)
后记:
为什么AHCI加载后会影响raid1的可见性呢?欢迎指点