单节点 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 ...
随机推荐
- springboot 整合jdbc
在springboot底层无论关系型还是非关系型数据库都是用spring-data进行交互 新建: 通过spring initialer勾选重要依赖jdbc api和mysql driver: 源码分 ...
- 源码解析:django的CSRF认证
详解Django的CSRF认证 1.csrf原理 csrf要求发送post,put或delete请求的时候,是先以get方式发送请求,服务端响应时会分配一个随机字符串给客户端,客户端第二次发送post ...
- WPF 入门笔记 - 03 - 样式基础
程序的本质 - 数据结构 + 算法 本篇为学习李应保老师所著的<WPF专业编程指南>并搭配WPF开发圣经<WPF编程宝典第4版>以及痕迹大佬<WPF入门基础教程系列> ...
- 【.NET 深呼吸】全代码编写WPF程序
学习 Code 总有这样一个过程:入门时候比较依赖设计器.标记语言等辅助工具:等到玩熟练了就会发现纯代码写 UI 其实更高效.而且,纯代码编写也是最灵活的.Windows Forms 项目是肯定可以全 ...
- 【QCustomPlot】配置帮助文档
说明 使用 QCustomPlot 绘图库辅助开发时整理的学习笔记.同系列文章目录可见 <绘图库 QCustomPlot 学习笔记>目录.本篇介绍 QCustomPlot 帮助文档的配置. ...
- 【Linux内核】内核源码编译
Linux内核源码编译过程 总体流程: 下载Linux内核源码文件 安装所需工具 解压源码文件并配置 make编译源码 下载busybox 配置busybox并编译 1. Linux源码编译 http ...
- Shodan使用指南
Shodan是用于搜索连接到互联网的设备的工具.与搜索引擎可以帮助你找到网站不同,Shodan可以帮助你找到有关台式机,服务器,IoT设备等的信息.此信息包括元数据,例如在每个设备上运行的软件. Sh ...
- Linux下ElasticSearch及IK分词插件安装
ElasticSearch及IK分词插件相关安装 一. 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口. ...
- 自然语言处理 Paddle NLP - 开放域对话系统-理论
常见的对话系统 个人助手 •Apple Siri, Amazon Alexa, Baidu Xiaodu 客户服务•餐厅预定.商品咨询.债务催收 休闲娱乐 •Microsoft XiaoIce,Rep ...
- fidder中勾选check for certificate revocations导致手机无法连上fidder服务器
在测试过程中因为要获取一个小程序登录API,就用手机设置代理后抓取,在抓取过程中发现提示用户名密码错误(未使用代理正常登录) 遂逐步查找,在与别人核对tools-option发现自己https页签中勾 ...