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

news2024/9/20 5:53:02

出于尽可能避免数据灾难的设计初衷,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、其他原因。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go切片的深入学习以及context库的使用

Go切片专项学习 go切片扩容机制 go1.18 之前: 1.如果期望容量大于当前容量的两倍就会使用期望容量; 2.如果当前切片的长度小于 1024 就会将容量翻倍; 3.如果当前切片的长度大于 1024 就会每次增加 25% 的容量,直到新容量大于期…

JavaScript - 对象编程之详解DOM对象

1. 文档对象模型(DOM) HTML DOM全称为HTML Document Object Model,专门适用于HTML/XHTML文档的对象模型。可以将HTML DOM理解为网页的API,将网页中的各种元素都看作一个对象,从而使网页中的元素也可以被计算机语言获取…

git的简单学习

(这个模块本来是会用的,但是了解并不是那么深入,因此需要继续学习一下) 1.下载安装 下载网址:https://git-scm.com/download/win/ 一直next就可以了。 2.检查 winr:cmd (不建议)…

零基础Opencv学习(四)

一、查找并绘制轮廓 /// 载入原始图,必须以二值图模式载入cv::Mat image cv::imread("E:/OpencvStudyTest/4.png", cv::ImreadModes::IMREAD_GRAYSCALE);cv::imshow("image", image);/// 初始化结果图cv::Mat dstImage cv::Mat::zeros(image.…

005:VTK世界坐标系中的相机和物体

VTK医学图像处理---世界坐标系中的相机和物体 左侧是成像结果 右侧是世界坐标系中的相机与被观察物体 简介 上图右侧的图像是模拟的世界坐标系和世界坐标系中相机以及被观察物体; 左侧是在右侧世界坐标系中相机…

黑神话:游戏的诞生

🛰 前言 近期,国产 3A 大作《黑神话:悟空》给我们带来了一波惊喜。相信各位或多或少都有所了解。看见如此激动人心的产品我们除了欣喜,也不禁让我们思考起来游戏是如何实现的?我们能否开发一款属于自己的游戏&#xff…

3D 场景模拟 2D 碰撞玩法的方案

目录 方法概述顶点到平面的垂直投影求解最小降维 OBB主成分分析(PCA)协方差矩阵求矩阵特征值Jacobi 方法 OBB 拉伸方法 对于类似《密特罗德 生存恐惧》和《暗影火炬城》这样 3D 场景,但玩法还是 2D 卷轴动作平台跳跃(类银河恶魔城…

[项目][CMP][Central Cache]详细讲解

目录 1.设计&结构2.申请内存3.释放内存4.框架 1.设计&结构 Central Cache也是一个哈希桶结构,它的哈希桶的映射关系跟Thread Cache是一样的不同的是它的每个哈希桶位置挂的是SpanList链表结构(带头双向循环链表),不过每个映射桶下面的span中的大…

链式栈、队列

1、链式栈&#xff1a; 声明&#xff1a; #ifndef _STACK_H #define _STACK_H #include<stdlib.h>typedef int DataType;typedef struct snode //节点 {DataType data;struct snode *pnext; }SNode_t;typedef struct stack //链表 {SNode_t *ptop;int clen; }St…

Patlibc———更快捷的更换libc

起初是为了简化做pwn题目时&#xff0c;来回更换libc的麻烦&#xff0c;为了简化命令&#xff0c;弄了一个小脚本&#xff0c;可以加入到/usr/local/bin中&#xff0c;当作一个快捷指令&#x1f522; 这个写在了tools库&#xff08;git clone https://github.com/CH13hh/tools…

C++利用jsoncpp库实现写入和读取json文件(含中文处理)

C利用jsoncpp库实现写入和读取json文件 1 jsoncpp常用类1.1 Json::Value1.2 Json::Reader1.3 Json::Writer 2 json文件3 写json文件3.1 linux存储结果3.2 windows存储结果 3 读json文件4 读json字符串参考文章 在C中使用跨平台的开源库JsonCpp&#xff0c;实现json的序列化和反…

【有啥问啥】大模型应用中的哈希链推理任务

大模型应用中的哈希链推理任务 随着人工智能技术的快速发展&#xff0c;尤其是大模型&#xff08;如GPT、BERT、Vision Transformer等&#xff09;的广泛应用&#xff0c;确保数据处理和模型推理的透明性与安全性变得愈发重要。哈希链推理任务作为一种技术手段&#xff0c;能够…

会员营销如何利用JSON发送短信

在当今这个数字化时代&#xff0c;企业间的竞争日益激烈&#xff0c;如何高效地触达并维护用户群体&#xff0c;提升用户粘性和忠诚度&#xff0c;成为了每个企业都必须面对的重要课题。在众多营销手段中&#xff0c;会员营销因其精准性和个性化而备受青睐。而在会员营销的策略…

人工智能导论(上)

一、人工智能概述 人工智能这个基本概念的起源&#xff08;人工智能作为计算机科学的一个分支&#xff09; 很多应用研究领域都在人工智能的范畴里&#xff0c;比如机器人、语言识别、图像识别、自然语言处理和专家系统等等。更加通俗的说&#xff0c;人工智能是要让一部机器能…

传输层协议UDP

本篇将主要介绍 UDP 协议&#xff0c;介绍了有关 UDP 协议的报头、协议特点、UDP 协议在操作系统中的缓冲区、UDP 协议使用的注意事项&#xff0c;以及有关 UDP 的 Socket 编程程序&#xff0c;同时重点介绍了操作系统对于 UDP 协议报文的管理。 接着介绍了有关端口号的映射。 …

s3c2440---中断控制器

一、概述 S3C2440A 中的中断控制器接受来自 60 个中断源的请求。提供这些中断源的是内部外设&#xff0c;如 DMA 控制器、 UART、IIC 等等。 在这些中断源中&#xff0c;UARTn、AC97 和 EINTn 中断对于中断控制器而言是“或”关系。 当从内部外设和外部中断请求引脚收到多个中…

哲学概述2(马克)

三、哲学的基本问题 思维是主观的&#xff08;对应意识&#xff09; 存在是客观的&#xff0c;不以人的意志为转移&#xff08;对应物质&#xff09; 恩格斯说&#xff1a;“全部哲学&#xff0c;特别是近代哲学的重大的基本问题&#xff0c;是思维和存在的关系问题” 哲学的基…

HTML生日蛋糕

目录 写在前面 完整代码 代码分析 系列文章 写在最后 写在前面 HTML实现的生日蛋糕来喽&#xff0c;小编亲测&#xff0c;发给好友可以直接打开哦。在代码的第183行可以写下对朋友的祝福&#xff0c;快拿去送给你的好朋友吧&#xff01; 完整代码 <!DOCTYPE html>…

Python中的位运算-从入门到精通

你是否曾经好奇过计算机是如何在底层处理数据的?或者,你是否想知道为什么有些程序员总是津津乐道于位运算的强大?如果是,那么你来对地方了!今天,我们将深入探讨Python中的位运算,揭示它们的神奇之处,以及如何利用它们来优化你的代码。 目录 位运算:计算机的秘密语言为什么位…

JavaScript Web API入门day6

目录 1.正则表达式 1.1 什么是正则表达式 1.2 语法 1.3 元字符 1.3.1 边界符 1.3.2 量词 1.3.3 字符类 1.4 修饰符 1.5 案例 2.综合案例 2.1 小兔鲜页面注册 2.2 小兔鲜登录页面 2.3 小兔鲜首页页面 1.正则表达式 1.1 什么是正则表达式 正则表达式&#xff08;Re…