RAID储存技术

news2025/1/13 14:11:03

RAID独立磁盘冗余技术是一种把2个或者多个HDD或SSD合并为一个协调的存储单元或列阵,从而预防数据丢失的技术,其最早由加州大学伯克利分校的计算机科学家David Patterson、Garth Gibson和Randy Katz在1987年提出。他们的研究论文“关于RAID的论证”提出了将多个磁盘驱动器组合起来,以提高性能和可靠性的想法。

RAID0

将磁盘全部串联,实现空间最大化利用,但是没有冗余空间

将数据分成连续的块,然后将每个块按顺序依次写入到不同的磁盘上,这样可以实现并行读写,从而提高了数据的访问速度

也就是说假如我有两个盘A和B,我可以一个文件拆成两部分,一部分放A,另一部分放B,要读取时两边同时读写然后拼凑

RAID1

将内容镜像,多个个盘存一样的数据,实现数据冗余

也就是说,当我存储数据时,数据会写入所有盘,当有一台宕机时,有镜像的设备提供备份和恢复,有点像双机热备

RAID2

比较特殊的RAID布局,采用汉明码校验,不过已被淘汰,其数据会被划分成位级别,也就是说我存储数据是每个盘都存一部分,且有检验盘来检测数据完整性,通过文献我感觉其安全性挺高,但由于汉明码的校验方式,其多个错误有时候检验不出来,以及成本过高的问题,逐渐被RAID5等替换

汉明码校验

校验位数

采用奇数偶检验码进行检验和纠错,需要插入码的长度与数据位的数量之间的关系为 2^P>=P+D+1(D为数据长度,P为汉明码个数)

eg:数据大小为4,即有2^p>=p+4+1,可以得出p至少为3

编码过程

明确校验位数后,接着就是怎么编码的问题,不同于校验和,汉明码插入与数据之间,且通常放在2的n次幂位上,比如1,2,4,8……其他位置则·存放数据编码

然后根据数据中1的奇偶依次填入1/0,当1的个数为偶数,填入0,1的个数为奇数则填入1

而在汉明码中,校验位负责的数据位范围也是一个重点,其基于每个数据位对应的二进制编号,例如在编号为1-7的位中,位置 1是汉明码(二进制 001 001)、位置 3 (二进制 011 011)、位置 5 (二进制 101 101)、位置 7 (二进制 111 111)的二进制表示的最后一位都是 1 ,则在此位置的汉明码负责位置 1 ,3,5,7的数据位

eg:

1011(4位3个码)

??1 ?011(1,2,4填入,1负责1,3,5,7;2负责2,3,6,7;4负责4,5,6,7)

1 1 1 0 011(判断奇偶)

纠错过程

由于设计问题,每个数据位的数据必然会被汉明码校验两次,这也就实现汉明码纠错能力,只要校验码与初始算出不同数据就一定出错,但是需要注意的是,汉明码只能检测和更正单个错误,对于两个或更多错误的情况,汉明码可能无法正确更正

RAID3

采用条带化,并用单个奇偶校验盘对数据进行检验和冗余,通常采用异或形式进行,这也表明RAID3失去乐纠错能力

存储数据时,数据会被放到各个数据块内,并整理出对应的校验码,由校验盘进行对数据的维护工作,这样一种做法减少成本,也提高磁盘的利用率

RAID4

在RAID3上进行修改,其条带化更加显著,并发处理能力更强更稳定,但与RAID 3 不同的是,RAID 4 中的奇偶校验位是针对所有数据块的位进行计算的,也就是说当数据块的内容发生改变时,仅仅需要更新与之对应的奇偶校验位,而不会影响其他数据块的奇偶校验位,这一改动使得读写更加高效

RAID5

RAID5将奇偶校验盘分散到不同盘内,这再一次提高磁盘冗余性,避免校验盘坏死的问题,分布式存储在增加系统容错的同时,也节约了磁盘的性能,当有磁盘发生故障时,系统可以通过重新计算奇偶校验信息来恢复丢失的数据

RAID6

再次增加容错,允许两个盘同时坏死,适用于一些需要长期运行且对稳定性要求高的应用以及需要高性能的服务

RAID10

RAID10其实就是RAID1+RAID0,融合两者的优点,实现大容量,可冗余处理

RAID50

同上,RAID50其实就是RAID5+RAID0,在提供备份的同时又能够实现奇偶校验

RAID60

同上,RAID50其实就是RAID6+RAID0

总结

最小磁盘数容错磁盘空间开销读速度写速度数据保护
RAID020
RAID12单磁盘故障50%镜像
RAID23单磁盘故障1/n汉明码
RAID33单磁盘故障1/n奇偶校验
RAID43单磁盘故障1/n奇偶校验
RAID53单磁盘故障1/n奇偶校验
RAID64双磁盘故障2/n双奇偶校验
RAID104多磁盘故障50%镜像
RAID506单磁盘故障1/n奇偶校验
RAID608多磁盘故障2/n双奇偶校验

目前主流使用RAID10,RAID5,RAID6,根据需求选择,适合的才是最好的,可以看到RAID的发展无疑就是一种增加容错,使得设备更加稳定

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

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

相关文章

Java Web开发基础:HTML的深度解析与应用

文章目录 前言🌍一.B/S 软件开发架构简述🌍二.HTML 介绍❄️2.1 官方文档❄️2.2 网页的组成❄️2.3 HTML 是什么❄️2.4html基本结构 🌍三.HTML标签1.html 的标签/元素-说明2. html 标签注意事项和细节3.font 字体标签4.标题标签5.超链接标签…

使用 WPF 和 C# 绘制图形

绘图困难 此示例展示了如何在 WPF 和 C# 中绘制图形。绘制图形总是很棘手,因为您通常需要在至少两个不同的坐标系中工作。首先,您要为图形使用世界坐标。例如,您可能希望 X 值的范围为 2000 年至 2020 年,Y 值的范围为 10,000 美元…

年度技术突破奖|中兴微电子引领汽车芯片新变革

随着以中央计算区域控制为代表的新一代整车电子架构逐步成为行业主流,车企在电动化与智能化之后,正迎来以架构创新为核心的新一轮技术竞争。中央计算SoC,作为支撑智驾和智舱高算力需求的核心组件,已成为汽车电子市场的重要新增量。…

【JVM-2.3】深入解析JVisualVM:Java性能监控与调优利器

在Java应用的开发和运维过程中,性能监控与调优是不可或缺的环节。无论是排查内存泄漏、分析CPU瓶颈,还是优化线程使用,开发者都需要借助一些强大的工具来辅助诊断。JVisualVM 正是这样一款由Oracle提供的免费工具,它集成了多种性能…

filestream安装使用全套+filebeat的模块用法

1 filestream介绍 官方宣布:输入类型为log在filebeat7.16版本已经弃用了 Filestream 是 Filebeat 中的一种 输入类型(Input),用于处理日志文件的读取。它是为了取代 Filebeat 中传统的 log 输入(Input)设…

超燃预告!Origin百图绘制系列即将登场

Hello,大家好 这里是练习时长两年半的菜狗~ 持续更新各种竞赛,科研,保研,学习干货ing 回想刚开始打比赛那会,啥都不懂,就从用 Excel 画图起步,绘制的图形实在太难看。后来运用 Matlab&#xf…

八、系统托盘与配置面板

没有人会把你变得越来越好,时间和经历只是陪衬。 支撑你变得越来越好的,是你自己坚强的意志、修养、品行、以及不断的反思和经验。 人生最好的贵人,就是努力向上的自己。 一、系统托盘 1、资源文件夹 新建资源文件夹,我们需要把…

uniapp 之 uni-forms校验提示【提交的字段[‘xxx‘]在数据库中并不存在】解决方案

目录 场景问题代码结果问题剖析解决方案 场景 uni-forms官方组件地址 使用uniapp官方提供的组件,某个表单需求,单位性质字段如果是高校,那么工作单位则是高校的下拉选择格式,单位性质如果是其他的类型,工作单位则是手动…

Java面试核心知识4

公平锁与非公平锁 公平锁(Fair) 加锁前检查是否有排队等待的线程,优先排队等待的线程,先来先得 非公平锁(Nonfair) 加锁时不考虑排队等待问题,直接尝试获取锁,获取不到自动到队尾…

基于 SSH 的任务调度系统

文末附有完整项目代码 在当今科技飞速发展的时代,任务调度系统的重要性日益凸显。本文将详细介绍一个基于 SSH(SpringStruts2Hibernate)的任务调度系统的设计与实现。 一、系统概述 本系统旨在改变传统人工任务调度方式,通过计算…

我的128天创作之路:回顾与展望

大家好呀!今天来和你们分享一下我的创作历程😁。 一、机缘 最开始创作呢,是因为在学习 C 的 STL 时,像 string、list、vector 这些模板可把我折腾得够呛,但也让我学到了超多东西!我就想,要是把我…

性能测试工具Jmeter中的FTP脚本开发

FTP文件传输协议是TCP/IP协议组织中的常用协议之一,主要用在internet上双向传输文件。FTP协议具有客户端和服务器端两个部分组成部分,具有上传与下载两种功能。Jmeter也提供了FTP请求的测试支持,实现了上传和下载功能测试。 对于上图的FTP请求…

【C++】string的关系运算与比较分析

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯基础知识:C 中的 string 关系运算器1. 关系运算器概述2. 字符串比较的本质 💯代码解析与扩展代码例一:相等比较代码解析输出 代码例二&a…

mysql本地安装和pycharm链接数据库操作

MySQL本地安装和相关操作 Python相关:基础、函数、数据类型、面向、模块。 前端开发:HTML、CSS、JavaScript、jQuery。【静态页面】 Java前端; Python前端; Go前端 -> 【动态页面】直观: 静态,写死了…

深度学习|表示学习|一个神经元可以干什么|02

如是我闻: 如果我们只有一个神经元(即一个单一的线性或非线性函数),仍然可以完成一些简单的任务。以下是一个神经元可以实现的功能和应用: 1. 实现简单的线性分类 输入:一组特征向量 x x x 输出&#xff…

HTB:Paper[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 对靶机进行子域…

做一个 简单的Django 《股票自选助手》显示 用akshare 库(A股数据获取)

图: 股票自选助手 这是一个基于 Django 开发的 A 股自选股票信息查看系统。系统使用 akshare 库获取实时股票数据,支持添加、删除和更新股票信息。 功能特点 支持添加自选股票实时显示股票价格和涨跌幅一键更新所有股票数据支持删除不需要的股票使用中…

Unity + Firebase + GoogleSignIn 导入问题

我目前使用 Unity版本:2021.3.33f1 JDK版本为:1.8 Gradle 版本为:6.1.1 Firebase 版本: 9.6.0 Google Sign In 版本为: 1.0.1 问题1 :手机点击登录报错 apk转化成zip,解压,看到/lib/armeabi-v…

Django学习笔记之数据库(一)

文章目录 安装一、数据库配置二、基本操作步骤1.增加2.查看3.排序4.更新5.删除数据 三、一对多,多对多,一对一1.一对多1.一对一1.多对多 四、查询操作五、聚合操作六、F和Q操作 安装 首先就是安装Mysql和Navicat。 一、数据库配置 其实整个就是连接前端…

SpringBoot日常:集成Kafka

文章目录 1、pom.xml文件2、application.yml3、生产者配置类4、消费者配置类5、消息订阅6、生产者发送消息7、测试发送消息 本章内容主要介绍如何在springboot项目对kafka进行整合,最终能达到的效果就是能够在项目中通过配置相关的kafka配置,就能进行消息…