服务器数据恢复—Raid磁盘阵列故障类型和常见故障原因

本文主要是介绍服务器数据恢复—Raid磁盘阵列故障类型和常见故障原因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

出于尽可能避免数据灾难的设计初衷,RAID解决了3个问题:容量问题、IO性能问题、存储安全(冗余)问题。从数据恢复的角度讨论RAID的存储安全问题。


常见的起到存储安全作用的RAID方案有RAID1、RAID5及其变形。基本设计思路是相似的:当部分数据异常时,可通过特定算法将数据还原出来。以RAID5为例:如果要记录两个数字,可以通过再多记录这两个数字的和来达到记录冗余性的目的。例如记录3和5,同时再记录这2个数字的和8。在不记得到底是几和5的情况下,只需要用8-5就可以算出这个丢失的数字了,其余情况依此类推。


在RAID里同样是以某种算法来达到保全数据的目的,当一组RAID5阵列正常工作时,所有写入RAID里的数据都正确地写到特定磁盘地址,同时再生成一个特定的计算值(通常称为校验和)。当其中一块盘出现故障时,存储在这块故障盘上的原有数据就要通过其他硬盘的数据恢复出来。由控制器(硬RAID为RAID卡,软RAID实际上是个驱动)负责这个工作。为了不宕机,控制器也会保证存储的正常化,不会让操作系统认为硬盘系统出了问题。


RAID在存储安全上还有一些不太容易避免的漏洞。虽然由于这些漏洞出现问题的可能性不大,但是存储在RAID上的数据价值无法评估。


RAID常见故障:


1、处于降级状态时,未及时rebuild。RAID是通过空余的部分存储空间来提供算法上的数据安全冗余的。当某些盘出现故障下线后,RAID便不能再提供这种存储冗余。如果不及时更换盘&REBUILD,如果其他硬盘再出现故障,RAID便无法正常工作了。


2、RAID控制器故障:控制器是连接物理硬盘与操作系统之间的纽带。硬盘容量、硬盘数量,RAID级别、逻辑磁盘分割方式、块大小、校验方式等组合成不同的RAID信息(RAID元数据),这些RAID信息有时候会写在阵列卡上,有时候会写在硬盘上,还有的时候两者皆有。如果RAID控制器出现故障,即使更换新的控制器一般也不能将RAID信息还原。中低端的RAID控制器出于成本考虑,漏洞更多。

3、固件算法缺陷:RAID的创建、重建、降级、保护等功能的实现需要非常复杂的算法。尽管厂商不会承认生产的RAID控制器的BUG,但算法漏洞在任何一款控制器上都无法避免。固件算法BUG可能会导致很多无法解释的故障。


4、IO通道受阻导致RAID掉盘:RAID控制器在设计时为了数据的绝对安全,会尽可能避免写数据到不稳定的存储介质上。这样,当控制器与物理硬盘进行IO时,如果时间超过某个阈值,或不满足校验关系,控制器便会认为对应的存储设备已不具备持续工作的能力,会让其强制下线,通知管理员尽快解决问题。这种设计的初衷很好,但对于像物理链接线路松动、硬盘完好情况下机械工作时反应超时等随机因素,RAID控制器无法分辨设备是否具备和之前一样的稳定状态,通常会让其强制下线,便会导致RAID卷出现故障,此类故障的发生概率极大且无法避免。


5、RAID控制器的稳定性:RAID控制器在ONLINE状态下(无离线盘)工作是最稳定的。当部分硬盘损坏(可能是逻辑故障)后离线,RAID控制器便会工作在一个“亚健康”的状态。这也是好多中低端的RAID控制器在一块盘离线后读写性能急速下降的原因。控制器负载太重便会极大地增加数据吞吐时出现IO滞留的可能性,从而导致RAID离线。一个不具备高速硬件处理芯片,不具备高速缓冲的控制器发生这类故障的概率要高得多。


6、坏硬盘:很多人认为只要硬盘一坏,RAID就会让这块坏硬盘脱机,更换新硬盘后REBUILD就恢复如初了。实际情况是一组RAID在工作很长时间以后也很少会读到物理硬盘的所有磁盘空间,同一时间更是不可能。部分情况下会在没有读到的区域或者以前读取良好的区域出现坏道。这类坏道因为没有读写过,所以控制器是没有识别出来的。当一块物理硬盘离线后,通常技术人员及官方资料都会建议尽快做REBUILD。如果其他硬盘存在这类坏道,当REBUILD(对全盘做全面同步)过程中读到那些坏道,这时候REBUILD没完成,新盘还无法上线,旧盘里又发现了坏道,然后又有硬盘下线,导致RAID出现故障,无法自行恢复数据。


7、人为误操作:误拔RAID硬盘、没准备备件盘、不及时换盘、给RAID除尘时忘了原来的顺序、不小心删除了原RAID配置等。


8、其他原因。


上述的这些故障原因除人为因素外,大多数很难直接避免,只能结合备份,构建整体存储安全方案来解决。 

这篇关于服务器数据恢复—Raid磁盘阵列故障类型和常见故障原因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145706

相关文章

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An