CentOS5.x Matrix Raid

本文记录了一次在CentOS 5.x系统中遇到的Matrix RAID启动问题。在配置Matrix RAID后,系统无法正常启动,出现"No RAID sets and with names"错误。通过进入救援模式,发现是initrd-2.6.18-53.el5.img中的启动脚本问题,修正dmraid命令后,系统成功启动。

 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)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值