单节点 RAID6 可靠性模型
介绍
独立磁盘冗余阵列(Redundant Arrays of Independent Disks, RAID)是存储业界为保证数据可用性、可靠性和完整性所采用的重要技术,即使在分布式多副本如此流行和普遍的今天,许多分布式单节点依然会采用 RAID 技术来提升系统可靠性。
本文将关注在单个节点内,或者集中式存储设备中,采用双盘冗余 RAID 技术的系统可靠性模型。
背景
所谓双盘冗余,存在 2 种方式: RIAD1 3-way mirror 和 RAID6,即 3 副本存储和双校验盘(P+Q)存储,此两种技术都能够保证,在 2 块盘或者同一数据条带中 2 个硬盘位置出错,数据无法读出或者校验出错的情况下,系统能够保证读写依然正常进行和操作结果的正确性。
那么,在实际应用中,如果确定使用双盘冗余,如何选择 RAID1 或者 RAID6 呢?如果采用 RAID1 3-way mirror 类型(3 副本)来存储数据,数据的性能和单磁盘读写性能相当(单节点,无网络延迟和开销,副本映射开销忽略不计),但是,系统的空间利用率只有原来的 1/3,这对于大多数拥有海量数据的客户来讲,成本是不可承受之重。而采用 RAID6 类型来存储数据,在达到和 3 副本相同的数据安全性的前提下,空间利用率能够达到 2/3,4/5 甚至更高(这依赖于系统使用 RAID6 所采用的的宽度,如 4 data + P + Q 利用率为 2/3,8 data + P + Q 利用率为 4/5)。当然,RAID6 提升空间利用率付出的代价就是性能相比 3 副本有所下降,下降的原因是每个数据条带中冗余盘的数据需要通过特定算法计算得出(如 LDPC, Reed-Solomon ),然后再进行存储。在Intel 开源库 ISA-L 中,RIAD6 P 盘是同条带的所有数据盘执行 XOR 运算,Q 盘则是采用 Reed-Solomon 算法。如果不使用硬件加速器进行计算卸载,相对 3 副本存储来讲,RAID6 存储就要占用 CPU 计算资源执行算法计算,这或多或少会影响系统的性能。
RAID1 3-way mirror 和 RAID6 各有利弊,适用于不同的应用场景和数据类型。在实际的商用存储设备中,同一存储系统中大体可以分为 2 种数据类型:元数据和用户数据。元数据主要是为了保证用户数据的快速索引和安全性而存储的额外数据,存在数据量小、性能要求高、要求出错率极低等特点。因此,RAID1 3-way mirror 和 RAID6 混合使用同一物理空间分别存储元数据和用户数据,是包括 Dell EMC,NetApp 等一线存储厂商产品中采用的通用方案。
在商用的存储系统中,除了存在冗余盘来保证数据安全性和提升系统可靠性外,还有热备技术保证系统的自恢复能力,即在无人为干预的情况下,如果有硬盘损坏或下线,能够自动重建数据,让系统尽快恢复到正常状态,提升后续抗风险能力。当然,热备技术需要预留额外空间,以便恢复丢失的数据。这里就存在一个问题:如何平衡数据重建和正常读写的工作负载呢?系统工作负载不重的情况下,数据重建能够很快做完;但是在工作负载很重的情况下,务必基于系统允诺的可靠性前提下,在有限时间内,保证数据重建完成。
基于以上应用场景和系统可靠性要求(如 99.999%,99.9999%),建立双盘冗余的 RAID6 可靠性模型如下。
建模
业界通常使用指数分布来建立硬盘的失败概率模型,其概率密度函数和累积分布函数如下:
\\
F(t)= 1 - e{-\lambda t}, t > 0
\]
其中,$ \lambda $ 是 $ MTTF $ 的函数, $ \lambda = \frac{1}{MTTF} $.
一般的企业级 SSD 给出的 $ MTTF $ 都是 $ 2,000,000 $ 小时,因此,$ \lambda = 5 \times 10^{-7} $。
集中式存储系统或者单节点内,硬盘数量是有限的,单个或两块硬盘故障不会扩展到其他节点,该相对独立的环境称为错误域(fault domain)。在本模型中,基于当前市场上常见的存储设备,做如下设定:错误域内硬盘数量 $ N $ 最多 32 块,每块硬盘最大容量 $ Cap $ 为 32 TiB,每块硬盘的利用率 $ ratio $ 达到 80%。假定,硬盘之间相互独立,失败互不影响。
一年内 ($ T=24 \times 365 \ hours $),硬盘失败的概率 $ AFR = F(T) = 4.37 \times 10^{-3} $。因此,错误域内,一年内单块硬盘失败的概率为
= {N \choose 1} \times AFR^{1} \times (1-AFR)^{N - 1} = 0.1221
\]
当存在硬盘下线,数据丢失,系统启动数据热备和重建过程,重建过程中如果继续有硬盘故障,那么就存在数据丢失可能。对于本文基于 RAID1 3-way mirror 和 RAID6 建立的可靠性模型来讲,系统允许在重建过程中再有一块硬盘故障,总数超过 2 块,则数据丢失无法恢复。因此,数据恢复的时间,决定了数据的恢复速度和系统的可靠性。一般来讲,企业要求 24 小时必须完成系统恢复,假定 $ T_R=4\ hours $。
在 $ T_R $ 时间内,硬盘失败的概率
=F(T_R)=F(4)=2 \times 10^{-6}
\]
那么,在数据重建期间第 2 块盘失败的概率为
\]
数据重建期间第 3 块盘失败的概率为
\]
因此,数据丢失的概率为 $ P=P_1 \times P_2 \times P_3=4.54 \times 10^{-10} $,即如果能够在 $ T_R $ 小时内恢复丢失的最多 32TiB 数据,系统就能保证 9 个 9 的可靠性。
根据以上模型,下表给出在不同的重建时间下的系统可靠性数据:
Probability | $ T_R=4\ hours $ | $ T_R=8\ hours $ | $ T_R=12\ hours $ | $ T_R=24\ hours $ |
---|---|---|---|---|
$ P_1 $ | 1.2210E-01 | 1.2210E-01 | 1.2210E-01 | 1.2210E-01 |
$ P_2 $ | 6.1996E-05 | 1.2398E-04 | 1.8597E-04 | 3.7186E-04 |
$ P_3 $ | 5.9996E-05 | 1.1999E-04 | 1.7997E-04 | 3.5987E-04 |
$ P $ | 4.5415E-10 | 1.8164E-09 | 4.0863E-09 | 1.6339E-08 |
总结
本文只关注硬盘失败导致系统数据丢失的概率模型,并且是基于一些理想化的假设,如一块硬盘损坏不会对其他硬盘有任何影响。在实际的系统中,系统可靠性的影响因素非常多,单单就是硬盘生命周期,就不能使用简单的指数分布来表示。但是,数据的重建和恢复,如果建立在极其复杂的模型之上,对于系统开发者是一个不小的挑战,可能给调优和运维也带来一些挑战,而且带来的受益可能也并不大,因为系统中其他问题带来的不稳定性可能远远超过硬盘问题。因此,本模型虽然简单,在实际开发中,还是具备参考意义的。
单节点 RAID6 可靠性模型的更多相关文章
- Vertica集群单节点宕机恢复方法
Vertica集群单节点宕机恢复方法 第一种方法: 直接通过admintools -> 5 Restart Vertica on Host 第二种方法: 若第一种方法无法恢复,则清空宕机节点的c ...
- Hbase入门教程--单节点伪分布式模式的安装与使用
Hbase入门简介 HBase是一个分布式的.面向列的开源数据库,该技术来源于 FayChang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就像 ...
- 基于英特尔® 至强 E5 系列处理器的单节点 Caffe 评分和训练
原文链接 在互联网搜索引擎和医疗成像等诸多领域,深度神经网络 (DNN) 应用的重要性正在不断提升. Pradeep Dubey 在其博文中概述了英特尔® 架构机器学习愿景. 英特尔正在实现 Prad ...
- 单节点部署Hadoop教程
搭建HDFS 增加主机名 我这里仅仅增加了master主机名 [root@10 /xinghl/hadoop/bin]$ cat /etc/hosts 127.0.0.1 localhost 10.0 ...
- js 节点 document html css 表单节点操作
js 节点 document html css 表单节点操作 节点操作:访问.属性.创建 (1)节点的访问:firstChild.lastChild.childNodes.parentChild(父子 ...
- Hadoop 2.6.4单节点集群配置
1.安装配置步骤 # wget http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.rpm # rpm -i ...
- 单节点nginx为两台apache服务器提供负载均衡
需求:本实验为单节点nginx为两台apache服务器提供负载均衡,所有配置为最简单 1.初始化3台测试server,该关的关了 [root@host101 ~]# vim /etc/hosts 19 ...
- Hadoop介绍及最新稳定版Hadoop 2.4.1下载地址及单节点安装
Hadoop介绍 Hadoop是一个能对大量数据进行分布式处理的软件框架.其基本的组成包括hdfs分布式文件系统和可以运行在hdfs文件系统上的MapReduce编程模型,以及基于hdfs和MapR ...
- Openstack Grizzily 单节点测试机安装( All In One CentOS/RHEL)
Openstack Grizzily版本已经相当完善,根据官方文档安装基本不存在什么问题,但是想快速测试了解Openstack功能的用户非常多,devstack的安 装需要check最新的代码,时常碰 ...
- 恒天云单节点部署指南--OpenStack H版本虚拟机单节点部署解决方案
本帖是openstack单节点在虚拟机上部署的实践.想要玩玩和学习openstack的小伙伴都看过来,尤其是那些部署openstack失败的小伙伴.本帖可以让你先领略一下openstack的魅力.本I ...
随机推荐
- 手机app抓包个人简述
1.将在网上下载的手机软件放入apps 2.启动 3.查看结果 urls里是网址
- 警惕看不见的重试机制:为什么使用RPC必须考虑幂等性
0 文章概述 在RPC场景中因为重试或者没有实现幂等机制而导致的重复数据问题,必须引起大家重视,有可能会造成例如一次购买创建多笔订单,一条通知信息被发送多次等问题,这是技术人员必须面对和解决的问题. ...
- Vue3从入门到精通(二)
vue3 侦听器 在Vue3中,侦听器的使用方式与Vue2相同,可以使用watch选项或$watch方法来创建侦听器.不同之处在于,Vue3中取消了immediate选项,同时提供了新的选项和API. ...
- 基于MQTT的弱网环境应用
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,设计用于低带宽和不稳定网络环境下的物联网设备之间的通信. 以下是MQTT的一些关键特点和常 ...
- 现代C++学习指南-类型系统
在前一篇,我们提供了一个方向性的指南,但是学什么,怎么学却没有详细展开.本篇将在前文的基础上,着重介绍下怎样学习C++的类型系统. 写在前面 在进入类型系统之前,我们应该先达成一项共识--尽可能使用C ...
- Spring源码核心剖析
前言 SpringAOP作为Spring最核心的能力之一,其重要性不言而喻.然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能.而SpringAOP只是在AOP的基础上 ...
- Zabbix Timeout 设置不当导致的问题
哈喽大家好,我是咸鱼 今天跟大家分享一个关于 zabbix Timeout 值设置不当导致的问题,这个问题不知道大家有没有碰到过 问题 事情经过是这样的: 把某一台 zabbix agent 的模板由 ...
- Solon 也是 SSE(Server Send Events)后端开发的优选
Solon 2.3.6 在开发异步接口时,顺带也为 Solon Web 提供了 SSE (Server-Sent Events) 协议的支持插件: <dependency> <gro ...
- MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-Ant Design Blazor前端框架搭建
前言 前面的章节我们介绍了一些值得推荐的Blazor UI组件库,通过该篇文章的组件库介绍最终我选用Ant Design Blazor这个UI框架作为ToDoList系统的前端框架.因为在之前的工作中 ...
- Spring Boot 日志文件
Spring Boot 日志文件 日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断问题的追踪以及理解系统的活动等重要作用. 事件日志记录系统的执行中 ...