意外断电造成RAID 5阵列卡数据故障的恢复方法

简介:

由于技术的不断进步,不同型号的服务器出现RAID 5故障后,处理方法也不同。
现在大型应用程序的网络拓朴结构,一般都采用C/S结构或B/S结构,至少需要一台装有大型数据库的服务器安放于中心机房。基于对服务器安全性与可靠性的考虑,通常会对服务器的磁盘采用磁盘阵列RAID(Redundant Array of Inexpensive Disk)进行磁盘冗余备份。其中RAID 5阵列级别为无独立校验磁盘的奇偶校验磁盘阵列,采用数据分块和独立存取技术,能在同一磁盘上并行处理多个访问请求,同时允许阵列中的任何一个硬盘出现故障。
实际应用中,由于某些不可避免的客观原因,可能会造成一些阵列故障。最常出现的状况就是硬盘自行脱机,联机状态显示为DDD(Defunct Disk Drive,无效磁盘驱动器),硬盘出现物理故障或逻辑故障。如果是物理故障,只有进行硬盘更换;如果是逻辑故障,可以通过有针对性的技术修复,恢复硬盘的在线状态,继续保持其原始阵列中的硬盘数据条带化分布状态,延续数据存储体系的一致性。
但是,对HP的一些老服务器(如HP LH6000)数据的恢复与新服务器(如HP ProLian系列服务器)的数据恢复是不同的。所以不同的服务器对RAID 5故障的处理也是不同的。笔者曾接触过两台服务器因意外断电而造成的RAID 5阵列卡数据故障,由于采用了不同的策略而解决了问题。

故障修复
一台是在2000年购买的HP LH6000的服务器,4块18GB的硬盘做成RAID 5磁盘阵列,其阵列卡是NetRaid;另一台是2006年购买的HP ProLian 文明用语370服务器,4块146GB的硬盘做成RAID 5磁盘阵列,其阵列卡是Smart Array 642并带有热备份硬盘(Hot Spare)。两者操作系统都为Window 2000,数据库是Server 2000。
HP LH6000的故障如下: 一块硬盘红灯闪亮,机器还在正常运行,但没有多久,系统就不能正常运行,这时才发现另一块硬盘的红灯也在闪亮。
意外断电造成RAID 5阵列卡数据故障的恢复方法
解决办法如下:
1.启动服务器,自检至阵列时按Ctrl+M进入NetRaid管理程序。查看阵列信息,发现硬盘状态为Failed,运用修改配置将一硬盘强行设置成OnLine。重新启动服务器,在进入系统前的硬件自检时无效,启动失败。
2.启动服务器,自检至阵列时按Ctrl+M进入NetRaid管理程序。选择磁盘阵列,将原来OnLine挂起来的硬盘手工Fail掉,然后再把另一块Failed的硬盘手工设置成OnLine,重新启动服务器就可以进入系统了。
3.查看系统及数据库都运行正常后,再进阵列配置工具把Failed的硬盘手工设置成Rebuild,100%完成重建后再重启服务器,所有的阵列及系统都恢复原状了。

笔者所在单位另一台运行ERP系统的服务器(HP ProLiant 文明用语370),由4块146GB热插拔硬盘通过RAID卡(Smart array阵列卡)配置成一台具有RAID 5级的磁盘阵列。其中一块硬盘在运行过程中突然出现故障。服务器RAID 5自动启用热备份硬盘(Hot Spare),对损坏硬盘进行逻辑替代。整个硬盘的数据访问任务仍然完整地运行在原来的读写进程序列中,应用程序和数据库没有发生影响。
通过HP自带的ACU工具查看硬盘状态进行检查,发现红灯示警的硬盘处于脱机状态。如果HP ProLiant服务器中的Raid 5有两块硬盘出现亮红灯时,表明系统已经崩溃,数据库也就不能访问,但系统不会自动关机。当第二块硬盘亮红灯后,用常规的手段是不能恢复数据的,只有付费找专业的第三方数据恢复公司恢复数据。
意外断电造成RAID 5阵列卡数据故障的恢复方法
因此,对惠普老型号HP LH6000系列服务器来说,阵列的设计方面与现在HP ProLiant系列服务器的阵列有很多不同。就操作方法看,HP LH6000服务器的阵列操作方法有很多可选项,包括阵列失败后可以重新删除阵列并重建等,初始化也是手工选择的。但是HP ProLiant系列服务器阵列的初始化是在配置阵列后自动在后台执行的,所以ProLiant系列服务器在阵列出错后是不能重配阵列的。









本文转自 宋国建 51CTO博客,原文链接:http://blog.51cto.com/sun510/2069415,如需转载请自行联系原作者
目录
相关文章
|
并行计算 算法 计算机视觉
【MATLAB 】 ICEEMDAN 信号分解+模糊熵(近似熵)算法
【MATLAB 】 ICEEMDAN 信号分解+模糊熵(近似熵)算法
945 0
|
存储 Unix Shell
VMware虚拟机安装并体验FreeNAS(TrueNAS 12)
VMware虚拟机安装并体验FreeNAS(TrueNAS 12)
2922 0
VMware虚拟机安装并体验FreeNAS(TrueNAS 12)
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
252512 0
|
关系型数据库 MySQL Linux
性能分析之解决 jbd2 引起 IO 高问题
【8月更文挑战第19天】性能分析之解决 jbd2 引起 IO 高问题
1041 0
|
存储 Linux
挂在mount报错can't read superblock修复过程
`can't read superblock`错误表明存在文件系统或硬件问题,解决这类问题需要先从软件层面尝试修复,无效时再考虑硬件替换。值得注意的是,数据备份对于防范这类突发故障至关重要,应定期进行数据备份,以最大限度减少数据丢失风险。
6467 3
|
Web App开发 Go iOS开发
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)
【IOS】教你如何在手机端轻松安装 ipa 文件 -(安装器已失效 21.10)
|
Java C++ Python
C++ 使用getline():从文件中读取一行字符串
getline() 方法从 cin 输入流缓冲区中读取一行字符串。在此基础上,getline() 方法还适用于读取指定文件中的一行数据,本节就给大家做详细的讲解。 我们知道,getline() 方法定义在 istream 类中,而 fstream 和 ifstream 类继承自 istream 类,因此 fstream 和 ifstream 的类对象可以调用 getline() 成员方法。 当文件流对象调用 getline() 方法时,该方法的功能就变成了从指定文件中读取一行字符串。该方法有以下 2 种语法格式: istream & getline(char* buf, int bufS
459 0
|
算法 Serverless 数据安全/隐私保护
【C++ 函数 基本教程 第三篇 】深度解析C++函数类型:探寻全局函数、成员函数与静态函数的奥秘
【C++ 函数 基本教程 第三篇 】深度解析C++函数类型:探寻全局函数、成员函数与静态函数的奥秘
775 1
|
Windows
Windows常用快捷键与终端命令
Windows常用快捷键 1、Ctrl + Z:撤消 无论你在做什么,Ctrl + Z都非常实用,这个功能都可以撤销当前的步骤,回到上一步未更改前,所以不要担心所有的错误。 2、Ctrl + C:复制 这可能是人们在使用Windows系统时使用的最方便的快捷键之一,轻松复制您喜欢的任何内容,直到您准备将其粘贴到任何您喜欢的位置。 3、Ctrl + V:粘贴 轻松粘贴您复制的所有内容,它可以是文本、文件、图像或文件夹,将所有东西组合在一起的非常有用的功能。
615 1
|
存储 Prometheus 监控
Prometheus(普罗米修斯)监控系统
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,由 SoundCloud 公司开发。
13722 1
Prometheus(普罗米修斯)监控系统