[转帖]浅谈RAID写惩罚(Write Penalty)与IOPS计算
https://www.dell.com/community/%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E5%92%8C%E4%BF%9D%E6%8A%A4-%E8%B5%84%E6%96%99%E6%96%87%E6%A1%A3/%E6%B5%85%E8%B0%88RAID%E5%86%99%E6%83%A9%E7%BD%9A-Write-Penalty-%E4%B8%8EIOPS%E8%AE%A1%E7%AE%97/ta-p/7183016
介绍
通常在讨论不同RAID保护类型的性能的时候,结论都会是RAID-1提供比较好的读写性能,RAID-5读性能不错,但是写入性能就不如RAID-1,RAID-6保护级别更高,但写性能相对更加差,RAID10是提供最好的性能和数据保护,不过成本最高等等。其实决定这些性能考虑的因素很简单,它就是RAID Write Penalty(写惩罚)。本文从原理上解释了不同RAID保护级别的写惩罚,以及通过写惩罚计算可用IOPS的方法。
更多信息
RAID-5 Write Penalty的例子:
存储方案规划的过程中,最基本的考虑因素有两个,性能和容量。性能上的计算看可以分为IOPS和带宽需求。计算IOPS,抛开存储阵列的缓存和前端口不谈。计算后端物理磁盘的IOPS不能简单的把物理磁盘的最大IOPS相加而获得。原因是,对于不同的RAID级别,为了保证当有物理磁盘损坏的情况下可以恢复数据,数据写入的过程中都需要有一些特别的计算。比如对于RAID-5,条带上的任意磁盘上的数据改变,都会重新计算校验位。如下图所示,一个7+1的RAID-5的条带中,七个磁盘存储数据,最后一个磁盘存储校验位。
对于一个数据的写入,我们假设在第五个磁盘上写入的数据为1111,如下图所示。那么整个RAID-5需要完成写入的过程分为以下几步:
- 读取原数据0110,然后与新的数据1111做XOR操作: 0110 XOR 1111 = 1001
- 读取原有的校验位0010
- 用第一步算出的数值与原校验位再做一次XOR操作: 0010 XOR 1001 = 1011
- 然后将1111新数据写入到数据磁盘,将第三步计算出来的新的校验位写入校验盘。
由上述几个步骤可见,对于任何一次写入,在存储端,需要分别进行两次读+两次写,所以说RAID-5的Write Penalty的值是4。
不同RAID级别的Write Penalty:
下表列出了各种RAID级别的Write Penalty值:
|
RAID |
Write Penalty |
|
0 |
1 |
|
1 |
2 |
|
5 |
4 |
|
6 |
6 |
|
10 |
2 |
RAID-0:直接的条带,数据每次写入对应物理磁盘上的一次写入
RAID-1和10:RAID-1 和RAID-10的写惩罚很简单理解,因为数据的镜像存在的,所以一次写入会有两次。
RAID-5:RAID-5由于要计算校验位的机制存在,需要读数据、读校验位、写数据、写校验位四个步骤,所以RAID-5的写惩罚值是4。
RAID-6:RAID-6由于有两个校验位的存在,与RAID-5相比,需要读取两次校验位和写入两次校验位,所以RAID-6的写惩罚值是6。
计算IOPS:
根据上文的描述,在实际存储方案设计的过程中,计算实际可用IOPS的过程中必须纳入RAID的写惩罚计算。计算的公式如下:
物理磁盘总的IOPS = 物理磁盘的IOPS × 磁盘数目
可用的IOPS = (物理磁盘总的IOPS × 写百分比 ÷ RAID写惩罚) + (物理磁盘总的IOPS × 读百分比)
假设组成RAID-5的物理磁盘总共可以提供500 IOPS,使用该存储的应用程序读写比例是50%/50%,那么对于前端主机而言,实际可用的IOPS是:
(500 ×50% ÷ 4)+ ( 500 * 50%) = 312.5 IOPS
具体不同应用程序的读写比例,可以参考:关于不同应用程序存储IO类型的描述
[转帖]浅谈RAID写惩罚(Write Penalty)与IOPS计算的更多相关文章
- 浅谈RAID写惩罚(Write Penalty)与IOPS计算
介绍 通常在讨论不同RAID保护类型的性能的时候,结论都会是RAID-1提供比较好的读写性能,RAID-5读性能不错,但是写入性能就不如RAID-1,RAID-6保护级别更高,但写性能相对更加差,RA ...
- 【转载】RAID写惩罚(Write Penalty)与IOPS计算
浅谈RAID写惩罚(Write Penalty)与IOPS计算 Character is what you are in the dark. 暗处最能反映一个人真正品格. ---------Apri ...
- [转帖]浅谈P2P、P2C 、O2O 、B2C、B2B、 C2C的区别
浅谈P2P.P2C .O2O .B2C.B2B. C2C的区别 https://www.cnblogs.com/zhuiluoyu/p/5481635.html 相信有很多人对P2P.P2C .O2O ...
- [转帖]浅谈响应式编程(Reactive Programming)
浅谈响应式编程(Reactive Programming) https://www.jianshu.com/p/1765f658200a 例子写的非常好呢. 0.9312018.02.14 21:22 ...
- [转帖]浅谈IOC--说清楚IOC是什么
浅谈IOC--说清楚IOC是什么 Need Study https://www.cnblogs.com/DebugLZQ/archive/2013/06/05/3107957.html 博文目录 1. ...
- []转帖] 浅谈Linux下的五种I/O模型
浅谈Linux下的五种I/O模型 https://www.cnblogs.com/chy2055/p/5220793.html 一.关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是 ...
- [转帖]浅谈分布式一致性与CAP/BASE/ACID理论
浅谈分布式一致性与CAP/BASE/ACID理论 https://www.cnblogs.com/zhang-qc/p/6783657.html ##转载请注明 CAP理论(98年秋提出,99年正式发 ...
- [转帖]浅谈程序中的text段、data段和bss段
作者:百问科技链接:https://zhuanlan.zhihu.com/p/28659560来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 一般情况,一个程序本质上都 ...
- 浅谈如何写出一个让(坑)人(王)很(之)难(王)发现的bug
该文章内容来自脚本之家,原文链接:https://www.jb51.net/news/598404.html 程序员的日常三件事:写bug.改bug.背锅.连程序员都自我调侃道,为什么每天都在加班?因 ...
- [转帖]Linux系统/dev/mapper目录浅谈
Linux系统/dev/mapper目录浅谈 Linux系统的一般的文件系统名称类似于/dev/sda1或/dev/hda1,但是今天在进行系统维护的时候,利用df -h 命令敲出了/dev/ma ...
随机推荐
- 如何抑制特定 clang-tidy 警告
️ clang-tidy 的规则能够帮助检查潜在的问题,不要盲目抑制警告! 可以通过添加 NOLINT, NOLINTNEXTLINE, 以及 NOLINTBEGIN - NOLINTEND 注释来抑 ...
- Flutter Getx 状态管理 --- (依赖管理) GetxController
Flutter Getx 简单的状态管理(依赖管理) GetxController Getx 依赖管理简介 Get有一个简单而强大的依赖管理器,它允许你只用1行代码就能检索到与你的Bloc或Contr ...
- Kubernetes的拐点助推器:左手开源,右手边缘计算
摘要:KubeEdge 是首个基于 Kubernetes 扩展的,提供云边协同能力的开放式智能边缘计算平台,也是 CNCF 在智能边缘领域的首个正式项目.依托 Kubernetes 强大的容器编排和调 ...
- 云原生2.0时代,华为云DevOps立体运维实践
摘要:随着云原生2.0时代的来临,越来越多的企业及个人选择使用云原生技术来构建业务,云原生技术给业务构建.交付带了便利的同时,对运维也提出了更高的要求. 2020年12月,中国DevOps社区峰会在北 ...
- 带你认识大模型训练关键算法:分布式训练Allreduce算法
摘要:现在的模型以及其参数愈加复杂,仅仅一两张的卡已经无法满足现如今训练规模的要求,分布式训练应运而生. 本文分享自华为云社区<分布式训练Allreduce算法>,原文作者:我抽签必中. ...
- JS引擎(0):JavaScript引擎群雄演义—起底JavaScript引擎
JavaScript 既是一个 面向过程的语言 又是一个 面向对象的语言.在 JavaScript 中,通过在运行时给空对象附加方法和属性来创建对象,与编译语言如 C++ 和 Java 中常见的通过语 ...
- Spring 太肥、太慢?你受不了?那 Solon Java Framework 就是你的西施
Solon 是什么? Java 生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢,费内存.2023 ...
- Solon:Hello world!
Solon:Hello world! (一)新建一个 maven 空项目 (二)添加 maven 引用 <dependency> <groupId>org.noear</ ...
- pyshorteners 长短链接转换
import requests import pyshorteners as psn def long_to_short(url): url = psn.Shortener().chilpit.sho ...
- Linux day3:⽹络不通排查流程 linux重要数据文件 系统优化相关 上传下载 文件权限 所属用户及用户组
目录 ⽹络不通排查流程 linux重要数据文件 etc⽬录下重要的数据⽂件 usr⽬录下重要的数据⽂件 var⽬录下重要的数据⽂件 proc⽬录重要的数据⽂件 系统优化相关 环境变量 下载软件优化操作 ...