No RAID sets and with names: "isw_xxxxxxxx_Volume0" failed to stat()
硬件环境:
Intel DQ965GF
SATA 320G * 3
软件环境:
CentOS 5.x x64
(原文链接 http://ddbiz.com/?p=234)
自用的备份服务器宕机,刚好这几日看intel的文档,才知道DQ965GF支持 Matrix-RAID的功能。原来的系统是采用 320*1做系统盘,320*2做RAID1, 当时觉得挺浪费,看来是自己仔细研究intel的说明书啊。现在正好有机会把它重整一下了。
DQ965GF做Matrix-RAID还是比较轻松,选择两块盘,先创建一个RAID0 (128k/Strip), 指定大小320G(相当于两块盘各160G做Strip),raid的名字为Volume0,然后创建第二个RAID1, 指定大小,剩下的大概160G(相当于单块盘每块160G做mirror), raid的名字为Volume1.
Volume0和Volume1都是主板自动提供的,可以根据自己需要调整。
从光盘引导 CentOS 进行安装。CentOS 5.x 可以很好的辨认和驱动DQ965GF的Matrix-RAID.安装一切都很顺利,就相当于有两块盘一样。重启吧。
问题来了,系统居然启动不了了:
No RAID sets and with names: "isw_xxxxxxxx_Volume0"
failed to stat() /dev/mapper/isw_xxxxxxxx_Volume0"
Reading all physical volumes. This may take a while...
/dev/sda2: read failed after 0 of 1024 at 4998830448960: Input/output error
No volume groups found
/dev/sda2: read failed after 0 of 1024 at 4998830448960: Input/output error
Volume group "VolGroup00" not found
Buffer I/O error on device sda2, logical block 488167040
Buffer I/O error on device sda2, logical block 488167041
Buffer I/O error on device sda2, logical block 488167042
Buffer I/O error on device sda2, logical block 488167043
Buffer I/O error on device sda2, logical block 488167040
Buffer I/O error on device sda2, logical block 488167041
Buffer I/O error on device sda2, logical block 488167042
Buffer I/O error on device sda2, logical block 488167043
Unable to access resume device (/dev/VolGroup00/LogVol01)
Buffer I/O error on device sda2, logical block 488167040
Buffer I/O error on device sda2, logical block 488167041
mount: could not find filesystem '/dev/root'
setuproot: moving /dev/failed: No such file or directory
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!
看上去似乎是内核访问不了raid哦,可是安装的时候很顺利的。
重新从光盘引导,进入 (F5)Rescue 模式。
dmraid -ay
RAID set "isw_xxxxxxxx_Volume0" already active
RAID set "isw_xxxxxxxx_Volume1" already active
dmraid -r
/dev/sdb: isw, "isw_xxxxxxxx", GROUP, ok, 625142445 sectors, data@ 0
/dev/sdc: isw, "isw_xxxxxxxx", GROUP, ok, 625142445 sectors, data@ 0
CentOS可以辨认做好的RAID,这是怎么回事。看来只有求助于Google了。
原来居然是系统的一个bug, 而且到 5.3 release 的时候才发布在集成安装包里。问题出在init里,使用下面的方式可以快速解决问题:
1.光盘启动引导进入 linux rescue 模式
2.转入挂载的/mnt/sysimage/
3.修改启动配置文件
mkdir /tmp/imgdir
cd /tmp/imgdir
#initrd-2.6.18-53.el5.img 是我的安装盘的版本,升级后的版本可能号码不同
zcat /mnt/sysimage/boot/initrd-2.6.18-53.el5.img | cpio -i
more init #查看一下挂载raid的过程,原始代码如下:
echo Scanning and configuring dmraid supported devices
dmraid -ay -i -p "isw_bbeggjgch_Volume0"
kpartx -a -p p "/dev/mapper/isw_xxxxxxxx_Volume0"
dmraid -ay -i -p "isw_xxxxxxxx_Volume1"
kpartx -a -p p "/dev/mapper/isw_xxxxxxxx_Volume1"
上面 dmraid -ay -i -p "isw_xxxxxxxx_Volume0" 的写法是错的,正确的应该是:
dmraid -ay -i -p "isw_xxxxxxxx"
不需要_Volume0的。因此上面的那日同修改为:
echo Scanning and configuring dmraid supported devices
dmraid -ay -i -p "isw_xxxxxxxx"
kpartx -a -p p "/dev/mapper/isw_xxxxxxxx_Volume0"
kpartx -a -p p "/dev/mapper/isw_xxxxxxxx_Volume1"
重新压缩好内核文件
find . | cpio --quiet -c -o | gzip -9 >/tmp/newinitrd.img
用newinitrd.img替换原来的那个(/boot/initrd-2.6.18-53.el5.img
好了,现在可以重启了。
后续补充:
以上的解决方案试用于 2.6.18-92.1.18 以前的版本。initrd 从 2.6.18-92.1.18 开始(或者稍前几个版本号),主引导的init代码有变动,因为还未经过测试,所以在此特别说明一下
(原文链接 http://ddbiz.com/?p=234)
本文记录了一次在CentOS 5.x系统中遇到的Matrix RAID启动问题。在配置Matrix RAID后,系统无法正常启动,出现"No RAID sets and with names"错误。通过进入救援模式,发现是initrd-2.6.18-53.el5.img中的启动脚本问题,修正dmraid命令后,系统成功启动。
1401

被折叠的 条评论
为什么被折叠?



