硬件RAID横评(上)

news2024/11/21 1:37:01

923ebf238950ad20548ca796f562dc5b.gif

正文共:3857字 50图,预估阅读时间:12 分钟

之前误打误撞测试了软件RAIDWindows下软RAID测试,发现性能基本上是线性的,而据说硬件RAID性能比这个高的很。那本文将就硬件RAID展开测试,测试内容主要为各RAID等级下磁盘空间、I/O性能、模拟硬盘故障的可靠性等。

6824f7d27cf44efd8ff8978fff7cfe21.png

硬件RAID

硬 RAID 拥有自己的 RAID 控制处理与 I/O 处理芯片,甚至还有阵列缓冲,相比于软RAID和软硬混合RAID,对 CPU 的占用率和整体性能是最优的,但实现成本也最高的。硬 RAID 通常都支持热交换技术,在系统运行下更换故障磁盘。

725423e54f63b4ff37bc42761f16e943.png

硬 RAID 包含 RAID 卡和主板上集成的 RAID 芯片,服务器平台多采用 RAID 卡。RAID 卡由 RAID 核心处理芯片( RAID 卡上的 CPU )、端口、缓存和电池 4 部分组成。比如我服务器上这套P440ar阵列卡和8块SAS盘。

首先使能阵列模式,也就是上次不敢开启的Smart Array模式。

6fedaa7b1ea09dd4f320e44e179eb28f.png

修改之后需要重启生效。

0804861a59d9d66e9ed6155380fa069e.png

RAID 0

RAID 0 是一种简单的、无数据校验的数据条带化技术,并不提供任何形式的冗余策略。RAID 0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用;再加上不需要进行数据校验,RAID 0 的性能在所有 RAID 等级中是最高的。理论上讲,使用 N 块硬盘,即可拥有将近 N 倍的读写效能。

1b732efb3b5e46f5ea3b76d7174d22fa.png

RAID 0 具有低成本、高读写性能、100% 的高存储空间利用率等优点,但是数据安全性较低,同组数组中任一硬盘发生问题就会造成数据遗失。因此,RAID 0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等

在阵列卡配置中选择创建阵列。

9d9598c7f9ea51e96bb53fb2c103e5b5.jpeg

选择RAID 0,其它选项使用默认的配置选项。

a2b316de0d2e207594047764c1e74529.png

Strip Size/Full Strip Size

Strip Size(条带深度),指的是在阵列的磁盘集中的单块磁盘上,从条带起始位置开始读/写所允许的最大数据量。Strip Size越大,顺序读写性能越好,但IOPS越低;Strip Size越小,IOPS越高,随机读写性能越好

一般根据服务器的具体用途来决定Strip Size。通常,提高顺序读写性能对文件服务器(备份、存档、共享等用途)磁盘性能提升较多。反之,对于琐碎文件(几KB、十几KB大小的文件)较多的服务、数据库、集成编译服务器等,频繁对小文件读写的服务器,提升IOPS则有较大益处。

如果单磁盘容量较大,1TB以上的SATA盘,更适合做文件服务器,可将Strip Size调整大至1MB,600G、15K的高性能磁盘或SSD,由于本身具有较高的IO性能,更适合做数据库,可将Strip Size 调小一些。

Sector/Track

Sector/Track表示每条磁道上有几个扇区,一般编号从1开始,最大为63,表示63个扇区,每个扇区为512字节,它是磁盘的最小存储单位。

恩,分的少应该是可以提高读写速度的。毕竟扇区少了之后寻址会更快。

2427ed358026f1e3c163b33f419bb165.jpeg

此时阵列可用逻辑卷容量为4.3T。

随后重启安装装Windows 7 旗舰版。这次提前百度了一下,64位的Windows 7家庭普通版最高可支持8GB内存,家庭高级版最高可支持16GB,专业版、企业版和旗舰版最高可支持192GB内存

e7753ab55b38c307be84c2c09f3fc3ce.png

这次CPU和内存完全使用起来了。

1bee9eee3432a966c37c75e4b3e213f8.png

但是新的问题是硬盘最大只能使用2TB。

aa810c8c8ec7a53d08353a6848588160.png

再次百度,原来MBR分区的硬盘在Windows 7 32位和64位系统最大支持都是2TB;而GPT分区的硬盘只能支持Windows 7 64位系统,最大容量是18EB。(1EB=1024PB=1,048,576TB)

Windows 7在MBR模式下用NTFS分区格式能管理256TB的硬盘空间,NTFS分区单区容量不能超过2TB,单区超过2TB就只能采用罕见的GPT模式。

先使用硬盘测试软件ATTO进行顺序读写测试,结果如下图。对于各种情况下的I/O性能信息,将在文末进行对比。

da85c986925c00b6ca90103c3f77b23a.jpeg

再使用AS SSD测试硬盘的顺序读写、随机读写和响应性能测试,并记录得分情况,为我最后选择何种RAID做个参考。

bc0d51c9be7a9c828d849ee826cca2b1.png

这彪悍的读写性能让我想起了之前一些游戏本的NVME双通道这个配置,按照我个人笔记本同系列的HP EX900来计算,1T容量的单块盘顺序读取速度是2150MB,顺序写入速度是1800MB;如果是这样的两块盘组RAID 0阵列,读取速度就达到了令人发指的4300MB,写入速度也是变态的3600MB。对于游戏玩家来说,几秒钟游戏加载完成,无异于就地起飞!

bccbec50f71b3789601d49f2e855e9a1.png

RAID 1/10

RAID 1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,磁盘空间利用率为50% 。RAID 1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。RAID 1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。安全性依照数组里的实体硬盘数量倍数成长,适用于对顺序读写性能要求高以及对数据保护极为重视的应用。

445aef1e6be561847f9755d877ce74e1.png

RAID 1 与 RAID 0 刚好相反,是为了增强数据安全性使两块磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。RAID 1 拥有完全容错的能力,但实现成本高,空间利用率是所有 RAID 中最低的。

操作之前要删掉之前的阵列配置,此时会提示丢失所有数据,因为是做实验嘛,干就是了!

daee5896562a3399d3568dd2751021e4.png

还是选中所有磁盘,下一步。

93896269d45ee31be64a4b3d65cf799c.jpeg

此时也可以看到RAID 1实际上就是RAID 1+0,因为RAID 1实际上只是两块盘做镜像,当数量多于2并且为偶数时,需要先两两做RAID 1,再通过做RAID 0组合,即RAID 1+0(RAID 10)

42bca25849ccd096bd6951d8510056f1.png

此时的磁盘可用空间为2.18T,是总大小的一半。

7ab29a9423c64177425862333a703d0f.png

安装的时候可以看到磁盘未分配空间是2235GB,大于2TB。

8828b0f34bf595fa9629e74640cbd61a.png

但是安装完成之后就是前面提到的2TB了。

1b18875e9a78f3005d7f08a6e34d5aa7.png

使用ATTO进行顺序读写I/O性能测试。

b834eeefe1092b48ea37792774c4cbd3.png

再使用AS SSD进行I/O性能测试。

eb5b024bdf2a30040bdaec5e160dadb6.png

然后拔掉一块硬盘进行可用性测试。随即可以看到iLO中有硬盘故障告警。

bc941195c9676c5a572a4182ed48b728.png

并且在存储状态中查看,8槽中的磁盘状态为Failed。

c8f2f1b54585bc4403b41e251fe21824.png

使用ATTO进行顺序读写I/O性能测试,好神奇,性能竟然有所提升。

f2b3884771f7c175914706646fd8b03d.png

再使用AS SSD进行I/O性能测试,性能也有明显提升。

4989bce7335805205c89a83d68ce2176.png

拔掉5槽位硬盘,系统状态正常。

f72ea49ef725f968a93e67001c210ee1.png

拔掉2槽位硬盘,系统状态正常。

b6cc4313fae72831a8a53b8b5d9001fb.png

接下来拔掉4槽位硬盘,阵列故障。

c51f64bf739515e8b9995fc675d00bf4.png

操作系统蓝屏,应该在这种模式下,是1和5、2和6、3和7、4和8两两做的RAID 1,当同时拔掉4和8时,出现阵列无法恢复的故障。

a57857aaaacecd1698e1129c86e18c65.jpeg

再次进入SSA,提示逻辑卷已经损坏,所有数据已经丢失,真恐怖,看来硬件故障真要命啊!

cbe49168239b61f773b54a5a49cc59db.jpeg

bec0e3d289acc3b87d66c3245fce4f0c.png

RAID 2-4

RAID 2、3、4已经很少有实际应用,它们大多只在研究领域有实作。

RAID 2

RAID 2 称为纠错海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余,实现在bit级别条带化数据。在 RAID 2 中,数据按位存储,每块磁盘存储一位数据编码,磁盘数量取决于所设定的数据存储宽度,可由用户设定。RAID 2 的数据宽度越大,存储空间利用率越高,但同时需要的磁盘数量也越多;一般数据宽度为2^N 的 RAID 2 ,需要 2^N 块数据磁盘和 N+1 块校验磁盘。

海明码自身具备纠错能力,因此 RAID2 可以在数据发生错误的情况下纠正错误,保证数据的安全性。但是,海明码的数据冗余开销太大,而且 RAID 2 的数据输出性能受阵列中最慢磁盘驱动器的限制;再者,海明码是按位运算, RAID2 数据重建非常耗时。现在硬盘的纠错码已经使用了海明码,所以RAID 2不再被使用了

67c214ea747651180505f261744c787e.jpeg

RAID 3

RAID 3使用奇偶校验磁盘将RAID控制器生成的奇偶校验信息存储在与实际数据磁盘分开的磁盘上,采用一个专用的磁盘作为校验盘。RAID 3 完好时读性能与 RAID 0 完全一致,并行从多个磁盘条带读取数据,性能非常高,同时还提供了数据容错能力。向 RAID3 写入数据时,必须计算与所有同条带的校验值,并将新校验值写入校验盘中。一次写操作包含了写数据块、读取同条带的数据块、计算校验值、写入校验值等多个操作,系统开销非常大,性能较低。

如果 RAID 3 中某一磁盘出现故障,不会影响数据读取,可以借助校验数据和其他完好数据来重建数据。假如所要读取的数据块正好位于失效磁盘,则系统需要读取所有同一条带的数据块,并根据校验值重建丢失的数据,系统性能将受到影响。

当有大量数据请求时,这种RAID类型的性能很差,比如在数据库这样的应用程序中。RAID 3在需要长时间连续数据传输的应用程序(如视频服务器)中表现良好。RAID 3至少需要三个物理磁盘。

1c73ac76c7d033d618c8900c1be03758.jpeg

RAID 4

RAID 4 与 RAID 3 的原理大致相同,区别在于条带化的方式不同。RAID 4使用专用奇偶校验磁盘以及块级别的磁盘条带化,写操作只涉及当前数据盘和校验盘两个盘,多个 I/O 请求可以同时得到处理,提高了系统性能。RAID 4 按块存储可以保证单块的完整性,可以避免受到其他磁盘上同条带产生的不利影响。

RAID 4 在不同磁盘上的同级数据块同样使用 XOR 校验,结果存储在校验盘中。写入数据时, RAID4 按这种方式把各磁盘上的同级数据的校验值写入校验盘,读取时进行即时校验。因此,当某块磁盘的数据块损坏,RAID 4 可以通过校验值以及其他磁盘上的同级数据块进行数据重建。

RAID 4 提供了非常好的读性能,但是使用专用奇偶校验磁盘会导致写操作的性能瓶颈。有了RAID 5等替代方案,RAID 4的使用并不多。

362c417cac5f0bfb6e6be9bd7cc68783.jpeg

53ab8df0a6017547750f630b40e05c5f.png

RAID 5

RAID 5 应该是目前最常见的 RAID 等级,它的原理与 RAID 4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID 5 不存在 RAID 4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID 5 还具备很好的扩展性。当阵列磁盘数量增加时,并行操作量的能力也随之增长,可比 RAID 4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。

RAID 5 的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,需要额外的运算资源,但仅能忍受 1 个硬盘损毁。与其他 RAID 等级一样,重建数据时,RAID5 的性能会受到较大的影响。

69f60fd9631201fa9590cf8747d575ad.png

RAID 5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID 0 和 RAID 1 的折中方案,是目前综合性能最佳的数据保护解决方案。RAID 5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。

在设置时,将默认的Strip Size调小了一级进行测试。

781fc9b455d9819c0df6c3ffcd33ab7f.jpeg

逻辑卷的可用容量为3.82T,相当于损失一块盘。

735805ee530f1888763f2687423b4ab7.png

安装时仍然是提示2T空间可用。

f304e9a81cf204a025f3624e04e2cfc9.jpeg

使用ATTO进行顺序读写I/O性能测试。

fa3b629bca8e11ea376aae71ab2a83a1.png

再使用AS SSD进行I/O性能测试。

6e9b9b6bcd74a4163be3c49d64527834.png

拔掉1槽位硬盘进行测试。

8056aa05be790593eab18a22bafc22cb.png

使用ATTO进行顺序读写I/O性能测试。

959488f1dbcbe1a1e1acf3d33b3a1d0f.png

再使用AS SSD进行I/O性能测试。

1f7f04cf73a42bc9ad9f63beca97cdfc.png

再拔掉3槽位硬盘进行测试。

8c61feee07f33b8d3f7a34e96f3c7a54.png

拔掉两块盘时,虽然系统没有蓝屏,但是从iLO中查看,逻辑卷已经是Failed状态了。

8762a1a299680cf6b5054dcc9c0b8355.png

再拔掉6槽位硬盘,开始系统没有蓝屏,但是在系统中操作时系统蓝屏。

ea08f63da362c2a9a7447dccb66fd653.png

所以RAID 5应该是能允许1块盘故障,并且还能撑一会,所以硬盘短暂异常应该对业务影响较小。

对本次测试结果进行总结,同时对关键参数进行优选,结果如下。

90fd47d3bb05239d7fa4f808534fb604.jpeg

介于篇幅限制,剩余RAID等级评测将在下篇文章进行介绍。

后台回复“20200321”获取硬盘性能测试软件ATTO和AS SSD

0aa2b4967ee8eca2412002b6df968342.png

9cb71c612a5e551ee3d27eb450fae7c0.gif

长按二维码
关注我们吧

cb8eea4e34165ff3d543f601200fafaf.jpeg

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

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

相关文章

【leetcode】 c++ 数字全排列, test ok

1. 问题 2. 思路 3. 代码实现 #if 0 class Solution { private:vector<int> path; // 满足条件的一个结果 vector<vector<int>> res; // 结果集 void backtracking(vector<int> nums, vector<bool> used){// 若path的个数和nums个数相等,说明…

C++中的vector与C语言中的数组的区别

C中的vector和C语言中的数组在很多方面都有所不同&#xff0c;以下是它们之间的一些主要区别&#xff1a; 大小可变性&#xff1a; vector是C标准模板库&#xff08;STL&#xff09;提供的动态数组容器&#xff0c;它的大小可以动态增长或减少。这意味着你可以在运行时添加或删…

JavaScript高级 —— 学习(三)

目录 一、深入面向对象 &#xff08;一&#xff09;面向对象介绍 &#xff08;二&#xff09;面向对象编程 &#xff08;oop&#xff09; 1.面向对象编程介绍 2.面向对象编程优点 3.面向对象的特征 4.和面向过程编程对比 二、构造函数 &#xff08;一&#xff09;介绍…

STM32 移植 LVGL -- 教程图解

&#xff08; 编辑状态中&#xff0c;已完成80%&#xff0c;估计清明假期后完成更新 ) 移植效果&#xff0c;先睹为快&#xff1a; 目录 一、LVGL 简述 二、准备一个STM32的工程 三、LVGL 官方下载 四、裁剪 源文件 五、添加 源文件 六、注册 显示 七、注册 触摸输入 八…

014——超声波模块驱动开发Plus(基于I.MX6uLL、SR04和poll机制)

目录 一、基础知识 二、分析为什么打印会影响中断 三、驱动程序 四、应用程序 五、验证及其它 一、基础知识 013——超声波模块驱动开发&#xff08;基于I.MX6uLL与SR04&#xff09;-CSDN博客 二、分析为什么打印会影响中断 asmlinkage __visible int printk(const ch…

如何在本地搭建集成大语言模型Llama 2的聊天机器人并实现无公网IP远程访问

文章目录 1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址 随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛&#xff0c;包括聊天机…

Python字典操作

假设我们有一个学生信息数据库&#xff0c;其中存储了每个学生的姓名、年龄、性别和成绩。我们可以使用字典来表示每个学生的信息&#xff0c;并将所有学生存储在一个字典列表中。 设计者&#xff1a;ISDF 版本&#xff1a;v1.0 日期&#xff1a;03/29/2024# 定义学生信息字典列…

Ruby 之交租阶段信息生成

题目 我看了一下&#xff0c;这个题目应该不是什么机密&#xff0c;所以先放上来了。大概意思是根据合同信息生成交租阶段信息。 解答 要求是要使用 Ruby 生成交租阶段信息&#xff0c;由于时间比较仓促&#xff0c;变量名那些就用得随意了些。要点主要有下面这些&#xff1a…

高级IO/多路转接-select/poll(1)

概念背景 IO的本质就是输入输出 刚开始学网络的时候&#xff0c;我们简单的写过一些网络服务&#xff0c;其中用到了read&#xff0c;write这样的接口&#xff0c;当时我们用的就是基础IO&#xff0c;高级IO主要就是效率问题。 我们在应用层调用read&&write的时候&…

八、从0开始卷出一个新项目之瑞萨RZN2L 3.1.7 debug调试和下载

目录 3.1.7 debug调试和下载 3.1.7.1 官方介绍 3.1.7.2 e2studio debug变量实时监控 3.1.7.3 Iar debug变量实时监控 3.1.7.4 debug经验总结 八、从0开始卷出一个新项目之瑞萨RZN2L 3.1.7 debug调试和下载 3.1.7 debug调试和下载 3.1.7.1 官方介绍 官网&#xff1a; d…

day02-java类型转换和运算符

1.温故而知新 整形 byte 1字节 8位 short 2字节 16位 int 4字节 32位 long 8字节 64位 内存存储时 X符号位 byte X0000000 short X0000000 00000000 int X0000000 00000000 00000000 long X0000000 00000000 00000000 00000000 long longNum 10000L;//l或者L 查看源码最大值…

数据库之迁移常规操作(Mysql篇)

借鉴的文章 》》https://blog.csdn.net/weixin_65685029/article/details/132413482?ops_request_misc&request_id&biz_id102&utm_termmysql备份与还原&utm_mediumdistribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-132413482.nonecase…

C语言 | Leetcode C语言题解之第6题Z字形变换

题目&#xff1a; 题解&#xff1a; char * convert(char * s, int numRows){int n strlen(s), r numRows;if (r 1 || r > n) {return s;}int t r * 2 - 2;char * ans (char *)malloc(sizeof(char) * (n 1));int pos 0;for (int i 0; i < r; i) { // 枚举矩阵的…

语言模型进化史(下)

由于篇幅原因&#xff0c;本文分为上下两篇&#xff0c;上篇主要讲解语言模型从朴素语言模型到基于神经网络的语言模型&#xff0c;下篇主要讲解现代大语言模型以及基于指令微调的LLM。文章来源是&#xff1a;https://www.numind.ai/blog/what-are-large-language-models 四、现…

Multi-Head Attention 代码实现

Multi-Head Attention 代码实现 flyfish MultiHead ( Q , K , V ) Concat ( head 1 , . . . , head h ) W O \text{MultiHead}(Q, K, V) \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O MultiHead(Q,K,V)Concat(head1​,...,headh​)WO head i Attention ( Q W i Q…

kettle使用MD5加密增量获取接口数据

kettle使用MD5加密增量获取接口数据 场景介绍&#xff1a; 使用JavaScript组件进行MD5加密得到Http header&#xff0c;调用API接口增量获取接口数据&#xff0c;使用json input组件解析数据入库 案例适用范围&#xff1a; MD5加密可参考、增量过程可参考、调用API接口获取…

C++(set和map详解,包含常用函数的分析)

set set是关联性容器 set的底层是在极端情况下都不会退化成单只的红黑树,也就是平衡树,本质是二叉搜索树. set的性质:set的key是不允许被修改的 使用set需要包含头文件 set<int> s;s.insert(1);s.insert(1);s.insert(1);s.insert(1);s.insert(2);s.insert(56);s.inser…

面试题:RabbitMQ 消息队列中间件

1. 确保消息不丢失 生产者确认机制 确保生产者的消息能到达队列&#xff0c;如果报错可以先记录到日志中&#xff0c;再去修复数据持久化功能 确保消息未消费前在队列中不会丢失&#xff0c;其中的交换机、队列、和消息都要做持久化消费者确认机制 由spring确认消息处理成功后…

Java基础之流程控制语句(循环)

文章目录 Java基础之流程控制语句(循环)1.顺序结构2.分支结构if语句的第一种格式if语句的第二种格式if语句的第三种格式Switch语句格式Switch的其他知识点default的位置和省略case穿透Switch的新特性 3.循环结构循环的分类for 循环while 循环for循环 与 while循环 的对比 4.do.…

RAG原理、综述与论文应用全解析

1. 背景 1.1 定义 检索增强生成 (Retrieval-Augmented Generation, RAG) 是指在利用大语言模型回答问题之前&#xff0c;先从外部知识库检索相关信息。 早在2020年就已经有人提及RAG的概念&#xff08;paper&#xff1a;Retrieval-augmented generation for knowledge-inten…