服务器数据恢复—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、其他原因。


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

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

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

相关文章

【渗透测试专栏】1.2认证和授权类-越权访问(水平/垂直越权)

该系列专栏旨在让漏洞检测变得更简单,只用于学习用途 靶机环境请看专栏前言专栏前言-WooYun漏洞库环境搭建-CSDN博客 目录 该系列专栏旨在让漏洞检测变得更简单,只用于学习用途 一、漏洞描述 1、水平越权 2、垂直越权 二、漏洞级别 三、漏洞检测…

PyTorch 创建数据集

图片数据和标签数据准备 1.本文所用图片数据在同级文件夹中 ,文件路径为train/’ 2.标签数据在同级文件,文件路径为train.csv 3。将标签数据提取 train_csvpd.read_csv(train.csv)创建继承类 第一步,首先创建数据类对象 此时可以想象为单个数据单元的…

信创实践(3):基于x2openEuler将CentOS升级成openEuler,享受其带来的创新和安全特性

引言: 在当前的 IT 行业中,创新和安全性是两大关键趋势。随着 CentOS 停止维护,许多用户正在寻找替代方案,以保持其系统的更新和安全。openEuler 作为一个强大的开源操作系统,成为了理想的迁移目标。本教程将指导您如…

Java线程池的优化策略与最佳实践

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…

LiveQing视频点播流媒体RTMP推流服务功能-支持大疆等无人机RTMP推流支持OBS推流一步一步搭建RTMP视频流媒体服务示例

LiveQing支持大疆等无人机RTMP推流支持OBS推流一步一步搭建RTMP视频流媒体服务示例 1、流媒体服务搭建2、推流工具准备3、创建鉴权直播间4、获取推流地址5、配置OBS推流6、推流及播放7、获取播放地址7.1 页面查看视频源地址7.2 接口查询 8、相关问题8.1、大疆无人机推流花屏 9、…

感知机模型

一、概述 感知机模型(Perceptron Model)也叫做神经元模型,设计灵感即来自于生物神经元的运行机制,依次完成信息接收、处理、输出的过程。当前大放异彩的各种人工神经网络模型即由一个个人工神经元构成,因此,本文介绍的感知机模型&…

【Python123题库】#2019慈善排行 #酒店评价数据分析

禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/140087686 参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301 有帮助麻烦点个赞 ~ ~ Python123题库 2019慈善排行酒店评价数据分析 2019慈善排行 描…

Hugging Face Offline Mode 离线模式

Hugging Face Offline Mode 离线模式 1. 缓存管理2. 遥测日志 在使用 Hugging Face 的库时,缓存和遥测日志是两个重要的功能。本文将介绍如何管理缓存、启用离线模式以及如何关闭遥测日志。 1. 缓存管理 在使用 Hugging Face 模型时,权重和文件通常会从…

详解 MQ 消息队列

谈起消息队列,内心还是会有些波澜。 消息队列,缓存,分库分表是高并发解决方案三剑客,而消息队列是我最喜欢,也是思考最多的技术。 我想按照下面的四个阶段分享我与消息队列的故事,同时也是对我技术成长经…

使用Fign进行客户端远程调用和SpringFormEncoder的使用

1、引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> 2、启动类加上注解 EnableFeignClients SpringBootApplication public class FeignTe…

0成本实现.NET Web API 8.0项目内网映射

1.背景 最近在学习CICD&#xff0c;里面会有用到内网映射的使用场景。为了加深对内网映射实操的记忆。我实操了下基于.Net 8.0的内网映射&#xff0c;并支持互联网访问。本文主要介绍了在win11下安装路由侠&#xff0c;并将.net 8.0发布到win11&#xff0c;项目运行、路由侠配…

vue基于sockjs-client+stompjs实现websocket客户端

在之前的一欸文章中&#xff0c;介绍了好几种前端实现websocket客户端与服务端通信的方式。本章主要采用的是socketjs的方式。 SockJS 是一个浏览器 JavaScript 库&#xff0c;提供类似 WebSocket 的对象。它为浏览器提供了紧密遵循 HTML5 WebSockets API 的 JavaScript API&am…

【学习笔记】5G-A时代物联网应用及策略研究

摘要 海量物联网通信是5G典型应用场景之一&#xff0c;为了实现蜂窝网的全场景物联能力&#xff0c;需要更多的场景化技术&#xff0c;5G-A引入了RedCap&#xff08;5G Reduced Capability&#xff09;和Passive IoT。其中&#xff0c;RedCap降低了设备复杂性及成本&#xff0…

mybatis @Param 注解

在 MyBatis 中&#xff0c;Param 注解用于将方法参数绑定到 SQL 查询语句中的参数上。具体来说&#xff0c;当你在 Mapper 接口中定义方法时&#xff0c;Param 注解可以帮助你指定参数的名称&#xff0c;以便在 SQL 映射文件中使用这些名称。 使用 Param 注解的原因 当你在 M…

weblogic漏洞——CVE-2020-14882

一、基本信息 靶机&#xff1a;IP&#xff1a;192.168.100.40 二、攻击过程 进入 vulhub 靶场相关目录&#xff0c;并启动环境 cd master/weblogic/CVE-2020-14882 docker-compose up -d 绕过登录验证 http://192.168.100.40:7001/console/css/%252e%252e%252fconsole.por…

自己设计的QT系统,留个档

注册登录 主界面展示 天气预报 音乐播放

Guitar Pro 8.2.1 Build 32+Soundbanks Win/Mac音色库 开心激活版 音乐软件Guitar Pro 8中文破解版

音乐软件Guitar Pro 8中文破解版是一个受吉他手喜爱的吉他和弦、六线谱、BASS 四线谱绘制、打印、查看、试听软件&#xff0c;它也是一款优秀的 MIDI 音序器&#xff0c;MIDI 制作辅助工具&#xff0c;可以输出标准格式的 MIDI。GP 的过人之处就在于它可以直接用鼠标和键盘按标…

echarts多个环形图

echarts图表集 var dataValue [{name:今日待分配方量,value:49}, {name:今日已分配方量,value:602}, {name:今日完成方量,value:1037}]var piedata1 [{name: 1#拌和机,value: 20},{name: 2#拌和机,value: 22},{name: 3#拌和机 ,value: 17},{name: 4#拌和机,value: 18},{name…

Python 判断当前时间是否在9:30-11:30

哈喽,大家好,我是木头左! 获取当前时间 需要使用Python的datetime模块来获取当前的日期和时间。datetime模块提供了datetime类,该类表示一个具体的日期和时间。可以使用datetime.now()函数来获取当前的日期和时间。 import datetimecurrent_time = datetime.datetime.now…

二、搭建网站服务器超详细步骤——部署轻量应用服务器(Centos)

前言 经过第一篇博客的铺垫&#xff0c;现在小伙伴们已经选择了合适的服务器和域名&#xff0c;那么这篇博客就要详细的讲解&#xff0c;如何部署轻量应用服务器&#xff0c;为什么要选择Linux系统&#xff1f;为什么要选择CentOS作为系统镜像&#xff1f; 一、轻量应用服务器…