通过路由,交换,安全,Qos四大典型技术模块同你分享网络运维中的技术难题,让老司机带你躲过网络运维常见的那些坑, 查看详情>>>
0

我的帖子

个人中心

设置

  发新话题
之所以说思考,是因为不太懂,如果懂,标题就应该叫"一次RAID0崩溃的分析"了!
  一个多月前,换了新主板,华硕的P5Q,南桥是ICH10R,于是买了5个全新的WD3202ABYS-01B7A0组RAID0,用了一个多月没出现任何问题,直到有一天.....
  由于需要增加1张PCI网卡和2条内存,于是拆机,拆机之前已拔掉220V电源线,并完全放电;为了操作方便,5个硬盘的数据线全都拔下来了;
  装好之后,接上所有的硬盘数据线,然后通电开机;主板检测硬盘的时候,第 5 个硬盘检测了很久(平时5个硬盘的检测都是1、2秒钟的事情),好像一直卡在哪里一样,我当时没太在意,后来主板还是对这个硬盘检测通过,并识别出了型号;到了RAID控制器那里,这是通电后第一次到RAID控制器那里,我已经忘记了当时RAID BIOS到底有没有什么提示了,我只记得RAID BIOS过后,系统无法启动;
  我的第一反应就是,第 5 个硬盘(这个硬盘的序列号尾数为 3921 )应该没插好线;于是我就强制关机,重新检查; 重新插拔了 3921 这个硬盘的数据线,并且还发现第 1 硬盘与第 2 硬盘的顺序对调了,重新校正后,再次通电开机;
  可能是由于上次强制关机,主板BIOS提示超频错误(我原来是设置了超频的),并自动恢复了原设置(现在华硕主板都有这个超频错误的自动恢复功能)。接着,主板自检...... 5个硬盘很快地顺利地通过了检测;到了RAID控制器那里,RAID控制器提示磁盘阵列 Failed! , 并且提示 3921 这个硬盘为 Non-RAID Disk , 这里我印象特别深刻;
  很明显,原来是 5个硬盘的阵列,现在 3921 这个为 Non-RAID Disk, 阵列当然要 Failed ; 也就是说 RAID信息表已经丢失!!!
  对于RAID,由于知识的缺乏,我当时能做的工作只有再次检查各个磁盘的顺序和接线,并且经历了好多次关机->开机,断电重新开机..... 但是一切都无济于事;期间我还逐个硬盘试了一下,即, 将硬盘全部拔下来,然后只接一个硬盘,逐个硬盘接上去开机,结果就是,只有4个硬盘能被RAID控制器识别出来是 Number-Disk, 唯有 3921 这个硬盘,如何弄,RAID控制器都识别不出它来;
  至此,我当时在猜想,就是,其实磁盘阵列中的每一个成员磁盘都记录了父阵列的信息,并且它有自身的标记,证明自己是属于这个阵列的;而 3921 这个硬盘,正是丢失了这部分信息!!!
  对于RAID0, 当时的我不知道还能怎么做,那里剩下最后一线希望,就是重建,按照原来一模一样的设置来重建一次,然后,恢复分区表,或许还有点希望;
  于是我重建,重建之后恢复分区表;我备份出来的分区表是前一次的,但是第 1 、 2个分区一直以来都没有改变,如,我备份出来的分区表是 C D E F, 但是后来我把 E F 合并重新调整了分区大小,并在 E 扩展出了2个分区,按照我对硬盘分区表的理解,这样并不会更改 C D 盘的分区信息,而我需要的资料,正在 D 盘;我认为,无论是新的分区表,还是旧的分区表,D盘的物理起始地址与结束地址都是一样的;
  于是我恢复了分区表,磁盘阵列可以引导了,但是系统崩溃,我只能重装;重装后启动,系统的磁盘检测侦测到 E F分区有错误,修复了一个多小时,无奈就是检不到D盘(我也够黑的了)。进去系统后一看,系统的磁盘检测工具修复了很多E F盘的文件,而D盘? 系统显示文件系统严重破坏,对于系统来说,D盘已经没有修复的余地了;
  我尝试过很多数据恢复的软件,包括很火的EasyRecovery,结果EasyRecovery对于D盘,无论哪种恢复,一丁点的作用都没有,真的尝试了很多数据恢复软件.... 无奈之下,对D盘快速格式化一次(以我的知识,快速格式化不会擦除物理数据),意在重建文件系统,看那些数据恢复软件能不能起点作用,结果,还是一丁效果都没有;
  最后,还是找到了GetDataBack,我常在想,要是我第一次就找到这个软件,而没有格式化过D盘,恢复出来的数据会不会好一点,但是过去就是过去了;GetDataBack完整地找出了所有的目录,以及几乎是99%的文件!我另存出来,发现到少有30%的数据已经损坏或丢失,例如好像有些记事本,打开只有乱码,这是无法修复的;但总比一个文件也找不回来要好得多;
--------------------------- 分割线 -------------------------------
  之后,我极其详细地检查过了 3921 这个硬盘,硬盘没有任何的问题,各方面都十分良好;并且,这5个硬盘都是同一时间买的全新的正品西数企业级硬盘,才用一个多月啊;
  我很想弄清楚此次阵列崩溃的原因,我要细节,而不是大概(大概就是RAID信息丢失,知道这句话也无实际作用);才发现,国内没有一本书,是写RAID原理与技术细节的,何解?
   我就此问题咨询过华硕的技术服务,但得来的也是一句"可能3921那个硬盘的RAID信息丢失",我问该如何做和防范?回复说建议用RAID5;我没有任何收获;还是要在网上搜集资料;
   回想起原因,不外有2个,一是硬盘顺序调乱,二是3921那个成员磁盘数据线没接好;
   先来看硬盘顺序调乱;首先,我以前试过将磁盘顺序调乱,但对调的是第 3、4个,而不是第1、2个, 调乱3、4后,一样可以正常;其次,我搜集到某资料说:“最好按照原顺序接回,否则数据可能因硬盘顺序与原来的不符,磁盘阵列上的控制器不认而数据丢失!是因为硬盘的ID号乱掉所致。但是,现在的磁盘阵列产品都已有这种不要求硬盘有顺序的功能,为了防止上述的事件发生,都是不要求硬盘有顺序的。” 一开始我就不太相信是调乱顺序的原因,毕竟我以前试过调乱后没事;
   那某个成员磁盘的数据线没接好怎么会造成阵列崩溃?道理在哪?我只能用我仅有的知识思考一下;前面提到,我将5个硬盘逐个接上,单个硬盘开机,结果前4个硬盘都被RAID控制器认出是Number-Disk, 只有 3921 这个磁盘为 Non-Disk 认不了来; 可见阵列中每个成员磁盘都记录了阵列的信息与及证明自己是阵列成员的标记;那谁破坏了 3921 这个硬盘里的物理信息????主板吗?不可能,谁? 凶手正是RAID控制器自己??!!
   但也有一个可能,RAID控制器的ROM记录着阵列以及各成员的信息,如果是这样,试想当你的RAID卡坏了的时候,也意味着你的整个阵列也彻底完蛋,如果是你设计RAID卡,你想这样吗?(但也有可能真的是这样,我不敢肯定,呵)
   我仅仅找到了一篇中文的文章,它点了一下RAID卡的工作原理:
运作流程如下:
1  初始化 RAID 卡寄存器
2  读取 NVRAM 的上次 RAID 参数,与硬盘实际信息进行比较,显示结果
3  发送配置提示、响应 HOST 命令进入配置界面
4  提供配置菜单、将用户提供的 RAID 卡参数、 RAID 参数存入 NVRAM
5  根据 RAID 参数,通过 SCSI 控制器对硬盘进行初始化写操作
6  完成配置
7  等待 Host 发出读写操作命令
   就这几句话;或许能解释很多东西(如果上面的"运作流程"是大概正确的话)。上面提到RAID卡和成员磁盘都会记录阵列信息。
   以我的知识,SATA硬盘只需要4条线即可完成传输,1条送出,1条输入,1条供电,1条接地;我们猜想一下这种情况,数据线没接好,送出那条是接通了,但是输入那条却是断路的,会怎么样? 我想主板还是检测出了它,但是验证它的时候主板却颇感迷惑! 当第一次到了RAID控制器那里,RAID控制器可能还没有认为阵列崩溃, 接着:
   5  根据 RAID 参数,通过 SCSI 控制器对硬盘进行初始化写操作
   注意这个 "初始化写操作" , 我猜想, 正是由于 3921 那硬盘的数据线没有接好,结果写错误,直接导致这个硬盘的RAID信息被破坏,或者另一种猜想,由于这个硬盘"初始化写"失败,结果导致与其它4个硬盘信息(或者与RAID卡记录的信息)不同步,第二次开机进到RAID控制器后,以致于它被认为是Non-RAID Disk。
   如果上面的猜想成立,那么请注意了: 只要有一个磁盘的数据线没接好,或者电源不稳定,或者在RAID控制器初化时突然断电,或者...  一切的或者, 只要你敢开机引导磁盘阵列,“初始化写操作失败”,整个阵列就Over!
   RAID是何其的脆弱,难道只是说RAID0脆弱吗?如果上面的理论成立,针对的就是所有RAID级别,而不只是RAID0;
--------------------- 分割线 -------------------------
   为什么按完全相同的设置重建阵列,并恢复分区表,数据还是被破坏很多?我想是因为RAID控制器是创建阵列时,会对阵列进行初始化, 这个初始化好像在每一个地方都把数据破坏了一点点, 这样已经够你受的了;所以,除非数据无关痛痒,你情愿失去也不愿意花钱送到恢复公司,你才可以重建;但还有一个办法,工具就是RAID Reconstructor 和 R-Studio , 这两个东西都可以从已丢失信息表的RAID0 或 RAID5 中抽取数据,做成一个镜像文件,具体的我没操作过;
   出现Non-RAID Disk ,阵列 Failed! 怎么办?其它RAID级别,或许还能找一个硬盘补上,或者直接用原来Non-RAID Disk 补, 我想都可以恢复, 但对于RAID0, 我现在都不知道怎么做;像我这种(ICH10R),控制器里只有4个操作,1、创建阵列;2、删除阵列;3、把一个硬盘从阵列中去除; 4、退出;  看,人家英特尔都不能怎么做,我还能怎么做?
   看到有一个贴子的一个回复说,遇到这种情况或许可以进RAID控制器那里清除RAID信息,然后再插上磁盘,看看能不能认得出来。我没有试过;问题是ICH10R只有4个菜单,到底能不能在不插磁盘的情况下进控制器,还要怀疑,即使能进控制器,2、删除阵列 这项能不能在不插磁盘的情况下给你一个成功的提示还要怀疑,我没试过; 因为我现在已经重建并存放了数据,我不想做这些实验;
   但我还是糊乱做了一些工作:现在我将每个硬盘的前204800个扇区,即100MB的数据备份了起来,共500M,刻到了光盘上,纯属是到时出现同样的问题后我就乱碰一下,反正是没办法了;刻盘后,又看到资料说Linux里,RAID的超级块,即记录RAID信息的块,是在磁盘的尾部,或许下次连每个磁盘的尾部都备份? 反正我的资源都放在中间,无所谓头尾;
   RAID的信息到底放在成员磁盘的哪里呢?头?尾? 反正不太可能是中间,或者是随机,或者是杂乱的;但备份各个磁盘的头尾到底有没有用??我也不知道,因为我对RAID的知识缺乏;
   又或许,阵列信息是只记录在RAID卡上的,成员磁盘上根本就没有RAID信息,又或许,RAID卡上记录阵列信息,磁盘上也有,但以RAID卡的为准,对比不上就阵列Failed!  -------> 如果是这样,设计RAID卡的人真该拖去枪毙,不要说是技术上的原因,是你没这个心而已;
   最后只想说,好希望国内能有一本专门讲RAID的书;
本帖最近评分记录



如果不是杜撰的,只能说你是自找的哦,企业里敢用RAID0.....用raid0的地方就是除非数据不重要



不好意思,最近比较忙,没有登录博客,今天才看到你的留言,很感谢你对拙作的建议!
你的建议有一定的道理,但数据恢复是一个范围很广的技术范围,如果说你遇到阵列崩溃,就要求数据恢复书籍上必须详细讲解各个厂家的阵列卡设计思想、信息布局、使用注意事项。。。那么数据库数据恢复就得讲解数据库的设计思想、使用注意事项。。。你觉得是否现实呢?任何书籍都有其侧重点,遇到不同的问题应该能够正确地找到对应的书籍。
至于你提到让我就本帖所述帮你指导一下,感觉颇有些为难,一是从数据恢复角度讲,我们只关心数据在磁盘上的存储关系、遭受破坏的程度及可恢复性,这些都是脱离阵列卡的,我也只能告诉你是阵列信息损坏,而这又不是你想要的答案,因为你关心的是你的操作中到底哪个步骤是真正地造成了破坏,我不能断定,唯一可以断定的是如果发现阵列无法正常识别时不做后面的那些操作,数据是可以恢复的!另外,你的字里行间透出一种“我想知道,你得给我从头到尾讲解清所有涉及到的知识”的感觉,稍有不清,你就会有种莫名的怨气,或许我这样说你不爱听,但你甚至可以迁怒于阵列卡的设计者并要“拖出去枪毙”,这不太象技术人员应该具备的沉稳性。
很多东西是从实践中一点点总结出来的,只是“我想”、“我猜想”并不能得到真正的答案,找相关的资料是一种好方法,但找不到非常合适的资料时,自己动手实验尝试寻找答案,比一味地抱怨来得更实在些,你说呢?



支持一下  回家看看



做RAID,一般是为了应用需求考虑,或为安全,或为效率,这也就需要甄选哪个RAID级别,做RAID0,一般是为了效率,又不浪费磁盘空间,但只是在数据不重要,比如视频系统或什么的,对于企业重要服务器还是建议用RAID1,10,5。



引用:
原帖由 老骥伏枥 于 2009-9-10 14:35 发表
不好意思,最近比较忙,没有登录博客,今天才看到你的留言,很感谢你对拙作的建议!
你的建议有一定的道理,但数据恢复是一个范围很广的技术范围,如果说你遇到阵列崩溃,就要求数据恢复书籍上必须详细讲解各个厂家的阵列卡设计思想 ...
支持:victory:



兄弟,你比较牛



用GetDataBack成功恢复raid 0   ,特此注册回复此贴,
感谢楼主、感谢互联网

详情:
主板华硕X85 特种部队  CPU i7950   本人从事影视制作行业,大量高清视频
2011年9月20日同时购买三个1T,希捷,组SATA  raid0,作为数据盘 ,另外用3个2T希捷组raid0,专门外接备份数据。
同时两块SSD阵列专门做系统,12月3日,因系统盘过大,想恢复以前备份的GHOST系统镜像,不料三个1T的其中一个离线,显示Non-Disk ,阵列failed,
网上看了很多资料,尝试了很多软件,都没能成功恢复,看到此贴后,删除了raid0,重建,然后按以前的大小分区(两个区,第一个区6万M,第二个区2.67T),用GetDataBack恢复第一次,看到了所有目录,但出来都是坏文件,重新尝试了三个盘的不同顺序(不记得三个盘序了),然后再次删除重组RAID0,初始化、格式化分区,再次扫描第二分区,终于成功恢复95%的数据,经仔细验证,完好无损,扫描时间8小时左右,复制出数据1.2T,其中有300G左右是9月20日后的,没有备份,成功恢复。

个人经验总结:组raid0 后,应该按硬盘序列号记住三个盘序,以及分区的准确大小。数据应该及时备份,尤其是要拆机箱,外接硬盘、重做系统前,一定要先备份所有数据,出错的时候往往都是在开机箱的时候。



用GetDataBack成功恢复raid 0   ,恢复99% 。
用R-studio未能恢复raid 0 ,R-studio可以看到目录,只有几个TXT与几张图可以用(可能我不会用这个软件)。
特此注册回复此贴,
感谢楼主
我的raid是最简单的,就两个1T的硬盘组成raid 0。出现与楼主一样一个盘不知道怎么变成了non-raid disk 。
用了R-studio,未能恢复,R-studio建虚拟raid 0 ,全盘扫描,可以看到目录,但文件几乎是坏的,不能用。
建raid ,再分区,再扫描,也是可以看到目录,但文件几乎是坏的,不能用。
改用楼主方法,成功恢复99%文件。
这个方法关键是记住各分区的大小,分区不对,出来都是错误的文件。



企业还是不要用raid0比较好



51CTO论坛有移动端啦,发帖回帖更方便~
看到raid0,就觉得后面不用再看了
还那么长。。。。。。。。。。。。。



主要原因就是你把有一个硬盘线给忘了,就和RAID5 一样
如果本来是三个硬盘,你用两个硬盘去启动,再把另一个硬盘插上去,阵列控制器最多只会把这个盘当成新的硬盘自动重建阵列,而不会认出这个盘以前属于这个阵列



第一眼看到了raid0,第二眼看到的发帖时间。。。



raid 0 只用来跑过分



所以说呢,好的规划可以避免多少麻烦事啊



我这就两台浪潮的服务器,分给我的时候没有给任何说明或者型号或者任何单子,只知道一台有个raid0,一台raid5.
raid5的话,删除创建的raid   再开启服务器就显示没东西了。
raid0的话。当时八个插口,我随便插得盘。并没有异常。

但是服务器强制断电以后raid就没了。需要bios里调整ahci为raid
raid0那台是个控制机,提供dashboard访问。所有重要数据全在raid5那台。
但是raid0还是换成了raid1.没再动过。
感谢楼主分享学习经验。

出现故障以后没有排错思路的确很恼火,尤其是自己很少接触的内容。当时听设备搬来的人说有raid,我都懵了。那时候还不知道raid干啥的。尤其对分区无爱。

再次感谢楼主分享经验。



思想的革新孕育了技术的革新。
你就是一淫才(俺家方言 )!!!raid0怎么能用在企业里呢?除非无关紧要



引用:
原帖由 thunder1945 于 2015-5-4 15:43 发表
看到raid0,就觉得后面不用再看了
还那么长。。。。。。。。。。。。。
你觉得raid5真的崩溃起来,会比raid0好很多吗



引用:
原帖由 china91chen 于 2015-6-2 20:42 发表

你觉得raid5真的崩溃起来,会比raid0好很多吗
单个硬盘的故障的确是好很多!



引用:
原帖由 于子飞 于 2015-6-3 13:23 发表

单个硬盘的故障的确是好很多!
哎,都什么时候了,还迷信raid



‹‹ 上一贴:请教一个天马行空的问题。。。。。   |   下一贴:IBM x3650 M4服务器意外断电后的故障 ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com