在给板载RAID的服务器安装ubuntu server 12.04 系统时,当到分区界面时,提示无法格式化操作,原因为磁盘拥有旧的raid信息,我们需要清除raid 元数据,才能继续安装系统。
常用dmraid命令参数示例:
查看是否有软raid并激活磁盘阵列命令: dmraid -ay
读取raid磁盘阵列设备信息: # dmraid –r
另一种参数查看raid磁盘阵列设备信息: [root@web1 ~]# dmraid -s ERROR: ddf1: wrong # of devices in RAID set"ddf1_4035305a8680b02520202020202020209a33c30a3a354a45" [1/2] on/dev/sda *** Group superset .ddf1_disks --> *Inconsistent*Active Subset name : ddf1_4035305a8680b02520202020202020209a33c30a3a354a45 size : 145051648 stride : 128 type : mirror status : inconsistent subsets: 0 devs : 1 spares : 0
[root@web1 mapper]# dmsetup status ddf1_4035305a8680b02520202020202020209a33c30a3a354a45:0 145051651 linear
停用磁盘阵列命令:dmraid -a no [root@web1 conf]# dmraid -a no ERROR: ddf1: wrong # of devices in RAID set"ddf1_4035305a8680b02520202020202020209a33c30a3a354a45" [1/2] on/dev/sda ERROR: device"ddf1_4035305a8680b02520202020202020209a33c30a3a354a45" could not befound RAID set"ddf1_4035305a8680b02520202020202020209a33c30a3a354a45" is not active [root@web1 conf]#
清除磁盘上旧RAID的信息,操作方法详解: 先用常规命令试试: dmraid –x: [root@web1 ~]# dmraid -x ERROR: ddf1: wrong # of devices in RAID set"ddf1_4035305a8680b02520202020202020209a33c30a3a354a45" [1/2] on/dev/sda
About to delete RAID setddf1_4035305a8680b02520202020202020209a33c30a3a354a45
WARNING: The metadata stored on theraidset(s) will not be accessible after deletion Do you want to continue ? [y/n] :y ERROR: Raid set deletion is notsupported in "ddf1" format [root@web1 ~]#
发现出现错误,使用另一个方法: dmraid -rE [root@web1 mapper]# dmraid -rE Do you really want to erase"ddf1" ondisk metadata on /dev/sda ? [y/n] :y ERROR: ddf1: seeking device"/dev/sda" to 38070153641984 ERROR: writing metadata to /dev/sda, offset74355768832 sectors, size 0 bytes returned 0 ERROR: erasing ondisk metadata on /dev/sda [root@web1 mapper]#
同样也清除不了,再使用mdadm进行清除:
# mdadm --zero-superblock /dev/sda 出现不能打开磁盘的错误。释放对磁盘的使用: # dmsetup remove_all
最后找到了一个暴力的方法,用dd_rescue直接把硬盘上的数据写为0,使用DD命令进行操作如下:
# dd if=/dev/zero of=/dev/sda bs=512 seek=3904294912
假设两块硬盘都为250G大小,清除残留RAID信息,命令如下: # dd if=/dev/zero of=/dev/sda bs=512 seek=488000000 # dd if=/dev/zero of=/dev/sdb bs=512 seek=488000000 或 # dd if=/dev/zero of=/dev/sda bs=1k seek=244000000 # dd if=/dev/zero of=/dev/sdb bs=1k seek=244000000
dd指令解释:if=file:输入文件名,缺省为标准输入
of=file:输出文件名,缺省为标准输出
bs=bytes:同时设置读写块的大小为 bytes ,可代替 ibs 和 obs
seek=blocks:从输出文件开头跳过 blocks 个块后再开始复制。
因为raid信息一般那保存在硬盘的最后,只是清除最后1GB就可以了。seek=488000000表示写入的时候从/dev/sda偏移 488,000,000 个blocks,即从244G处开始写入,这里提到block的是相对于bs来说的,默认bs是512bytes,那么1block=512bytes,如果将bs改为1k,那么1block=1k。
终于将raid信息进行清除,可以正常安装linux系统了。
另一个硬盘清零命令:
dd if=/dev/zero of=/dev/sda #全部硬盘清零
这个命令很慢,如果硬盘很大,需要好几个小时。
清除残留RAID信息总结: 最有效的解决方法就是对做过RAID的硬盘做写0操作,之后再放到系统里去,关于写0,不能直接挂载在系统里做,必须在其它linux系统下操作,也不必全写0,因为raid信息一般那保存在硬盘的最后,只是清除最后1GB就可以了。
|