单节点 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 ...
随机推荐
- c++的前世今生
C++ 语言是本贾尼·斯特劳斯特卢普 在1982 年发明的,早期版本被称为C with Classes,之后在1983年更名为C++. C++语言在发明后很快就获得了广泛的应用,由于其具有高效.灵活和 ...
- 生信入门必须掌握的 30 个 Linux 命令
学习生物信息,Linux 是必须掌握的内容,其实常用的 Linux 命令也就 30 个左右,而且这些命令都是单词的简写,记忆起来并不困难.这里列出了常用的 30 个命令. 1. cd Change d ...
- 信息收集_网络扫描_nmap
信息收集_网络扫描nmap 目标说明 -iL <inputname> (从列表或文件输入) -iR <hostnum> (随机选择生成目标数量) --exclude <h ...
- 使用c#实现23种常见的设计模式
使用c#实现23种常见的设计模式 设计模式通常分为三个主要类别: 创建型模式 结构型模式 行为型模式. 这些模式是用于解决常见的对象导向设计问题的最佳实践. 以下是23种常见的设计模式并且提供c#代码 ...
- Java基础之基础语法与面向对象
前言 小知识 Java由Sun公司于1995年推出,2009年Sun公司被Oracle公司收购,取得Java的版权 Java之父:James Gosling(詹姆斯·高斯林) 专业术语 JDK:jav ...
- Mybatis的ResultMap对column和property的理解
Mybatis的ResultMap对column和property的理解 首先,先看看这张图,看能不能一下看明白: select元素有很多属性(这里说用的比较多的): id:命名空间唯一标识,可以被用 ...
- [ARM 汇编]高级部分—系统控制协处理器—3.2.3 控制寄存器的读写操作
在这一部分,我们将学习如何使用ARM汇编指令在系统控制协处理器(CP15)的控制寄存器上执行读写操作.我们将通过实例来讲解如何使用MCR(Move to Coprocessor Register)和M ...
- Multi-Modal Attention Network Learning for Semantic Source Code Retrieval 解读
Multi-Modal Attention Network Learning for Semantic Source Code Retrieva Multi-Modal Attention Netwo ...
- 实际上手体验maven面对冲突Jar包的加载规则
一.问题背景 相信大家在日常的开发过程中都遇到过Jar包冲突的问题,emm,在最近处理业务需求时我也遇到了不同版本jar包冲突导致项目加载出错的问题.主要是一个完整的项目会不可避免的使用第三方的Jar ...
- webshell工具流量特征
常见的webshell管理工具及流量特征 菜刀 作为老牌 Webshell 管理神器,中国菜刀的攻击流量特征明显,容易被各类安全设备检测,实际场景中越来越少使用,加密 Webshell 正变得日趋流行 ...