提到冗余保护,最容易想到的就是RAID(Redundant Arrays of Independent Disks)。它是一种把多块独立的物理硬盘按不同方式组合形成一个硬盘组,以此提供比单个硬盘更高的存储性能和数据冗余的技术。该技术在服务器和存储阵列产品中广泛应用。

近年来,随着固态硬盘的使用率上升,提升固态硬盘的性能和可靠性(包括寿命)一直是行业攻关的重点。RAID技术在固态硬盘内已经得到了广泛应用。关键数据多副本,可以看作是RAID1保护,用户数据更常见的则是使用性价比较高的RAID5。具体使用什么RAID级别,一般是根据实际情况进行选择。DapuStor的HaiShen系列产品就使用RAID5技术为用户数据提供冗余保护,提升可靠性。这里,我们就将盘内RAID5技术做一个简单介绍。

RAID5原理

数据按条带分布在不同位置,比如图中A1~Ap是一个条带,B1~Bp是另一个条带,每个条带中的一份数据(比如A1)叫做条带单元。每个条带有一份校验数据(比如Ap),所以我们一般也称它为N+1的RAID组。RAID5校验计算通常采用异或(XOR)算法。现在很多主控也提供RAID5计算的硬件加速功能。

盘内RAID5条带布局

为了保证任意时候,一个Block或者DIE损坏,不会导致数据丢失。一个RAID5条带中的每个条带单元最好是来自不同的Block和不同的DIE。这种我们一般称为DIE级别的RAID冗余。跟上图对应,比如A1数据在DIE 1的某个Block,A2数据在DIE2的某个Block。最直观的组条带方式就是每个DIE各选一个Block,然后每个Block的相同Page组成一个条带。各个Block的Page组成RAID5条带有下面几种常见布局:

1)固定DIE的布局

在组成一个RAID组的Block中,使用一个固定DIE的Block存储校验(类似传统的RAID3),但是组成不同RAID组的Block可以不同。

2)旋转布局

组成一个RAID组的Block中,校验不固定在某个Block上,而是有规律的旋转变化(RAID5的旋转布局有多种方式,此处只列举了一种)。

不同的数据布局,会产生不同的盘内数据布局。最直观的,顺序写后,顺序读,各个DIE或者Block上的压力模型,在前面提到两种布局下是不同的。

RAID5数据恢复

如果Host 读某个Nand Page发生UNC(UNCorrectable)错误,这时RAID5恢复的原理是读这个条带内其他数据和校验数据,进行计算,得到期望的数据。

盘内RAID的异常处理

RAID5的数据恢复依赖分条的完整性,因为故障可能发生在任何阶段,所以数据恢复前必须判断出校验的有效性,避免恢复出错误数据。

典型场景1:某个Nand Block故障时,这个Block已经在一个写完成的条带上,此时RAID其实处于降级状态,较优的想法是把相关条带的数据重新放到一个健康的条带或者重建出故障Block的数据来替换它。

典型场景2:某个Nand Block 故障时,此时还没有数据写入,尽量把它从RAID组的Block中剔除,选一个健康的Block替换或者让当前RAID组从N+1保护转换成(N-1)+1。

典型场景3:一个条带单元的数据写入Nand 过程中发生了Program fail,同时另一个位置的读又遇到UNC,这些场景在DapuStor的HaiShen系列产品中都有专门处理,保障可以恢复出正确数据。

因为错误可能发生在任何时刻,所以其他场景这里就不一一列举。

RAID带来的影响

1.OP(Over Provisioning)空间降低

引入RAID后,有的Nand空间用于存储校验数据,间接导致用户数据的可用OP空间降低,

2.WA(Write Amplification)变大

因为每个条带额外写入了一份校验数据,所以整个生命周期的WA会增大。

3.性能影响

前面两点提到的OP变小,写放大变大,其实最终也都会表现成对性能的影响。另外,一个直观感受是顺序写和读的过程,因为每个条带都有一个DIE没有提供给Host IO服务,所以性能也必定会有影响。

盘内冗余技术发展

RAID5为用户数据提供了N+1级别的冗余保护。随着盘内功能增强,业务对盘内可靠性要求的提高,不同成本和可靠性定位的用户可能会需要不同冗余保护的级别。技术上还有一些更高级别的冗余保护:

1.RAID6

相比RAID5的N+1,它提供了N+2的保护。对应在SSD产品中,它当然也会带来更大的OP损耗。

2.EC(Erasure Coding)

现在分布式存储时代,多备份和EC相比传统RAID是更广泛的应用。EC算法提供了N+M的保护级别,可以有更广阔的选择空间。

原文标题:盘内数据冗余保护

文章出处:【微信公众号:大普微】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

服务器4块固态硬盘做raid5,固态硬盘内RAID5技术相关推荐

  1. 服务器4块固态硬盘做raid5,RAID 5与RAID 10、硬盘和固态硬盘

    (转载:www.idcew.com) 让我们预先设置一些参考点,以便我们可以准确地讨论这两种类型的RAID阵列之间的差异. 磁盘阵列 RAID 5是一种使用带奇偶校验的磁盘条带化的RAID((独立磁盘 ...

  2. 固态硬盘坏块修复工具_哪些情况影响固态硬盘寿命 影响固态硬盘寿命症状【详解】...

    现在大部分有需要的人都会给自己的电脑配上个固态硬盘,虽说固态硬盘寿命与抗摔性比机械硬盘好一些,但固态硬盘也有坏的一天,要是突发破坏会造成硬盘中的数据无法读取出来等损失,为了不给自己造成太大的伤害,下面 ...

  3. 服务器硬盘数据备份到nas,谁说固态硬盘做存储是鸡肋?NAS存储服务器还能这样玩...

    原标题:谁说固态硬盘做存储是鸡肋?NAS存储服务器还能这样玩 前一阵子美亚廉价10TB机械硬盘让不少拥有NAS或打算购买NAS的朋友狂欢了一把.不过双盘位.固态硬盘这些看似不入流的NAS玩法也有自己的 ...

  4. raid配置ssd为缓存_固态硬盘做缓存如何设置

    无论是固态硬盘,还是机械硬盘都有缓存,如16MB.32MB.64MB,但这个容量仅仅只能起到一定的加速作用,就类似CPU有了L1.L2.L3高速缓存后一样需要有大容量的内存一样,用固态硬盘做缓存盘就好 ...

  5. 计算机固态硬盘256g,用固态硬盘的亲们 你们256g够用么?做什么用途?要买电脑 不得不考虑这个...

    从目前的Windows系统看,256G的固态硬盘足以支持系统运行.硬盘容量主要还是看用户对电脑的需求,对于喜欢大量下载资源的用户来说,又不会合理使用电脑,再大容量的硬盘也有用满的时候.接下来详细介绍: ...

  6. 真正无需修改BIOS即可让任意老主板实现NVME协议的固态硬盘做启动盘 2021年(适用于支持UEFI启动的老主板)

    前言 这是本人公开发表的第 1 篇<电脑使用实操总结>类原创文章,请大家多多指教. 网上有很多大神写过类似的教程,但是经过本人实践,总有些遗漏,对于计算机小白来说,这些跳过的步骤真的很难理 ...

  7. 台式计算机加固态硬盘,台式机添加固态硬盘教程_台式主机固态硬盘怎么安装-win7之家...

    固态硬盘是用固态电子存储芯片阵列制成的硬盘,也是电脑中比较常见的内存硬件,有些用户在使用电脑时候,由于内存不足导致系统运行较卡的情况,往往会选择添加固态硬盘来解决,那么台式主机固态硬盘怎么安装呢?这里 ...

  8. [安装之2] 台式计算机加固态硬盘,台式机添加固态硬盘教程_台式主机固态硬盘怎么安装

    固态硬盘是用固态电子存储芯片阵列制成的硬盘,也是电脑中比较常见的内存硬件,有些用户在使用电脑时候,由于内存不足导致系统运行较卡的情况,往往会选择添加固态硬盘来解决,那么台式主机固态硬盘怎么安装呢?这里 ...

  9. 计算机固态硬盘作用,笔记本固态硬盘有哪些作用 笔记本固态硬盘有什么用?...

    如果现在您去购买电脑会发现很多笔记本是会带有固态硬盘的,及时很多人购买的时候需要性能高的也会给主机加上固态硬盘,为什么很多人喜欢加上固态硬盘呢?笔记本固态硬盘到底有什么用呢?我们一起来了解一下. 首先 ...

最新文章

  1. Linux下如何使用虚拟用户增加FTP的安全性
  2. PHP中类和文件的代码注释规范
  3. 区块链BaaS云服务(18)华为 BCS“跨链”
  4. EasyUI中拖动draggable的使用
  5. 关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点
  6. php 字符型转变为数值,php怎么把字符串转换为数值?
  7. php foreach ,PHP学习之foreach循环时加符号的说明
  8. js网页文件资源加载器
  9. 【古典入门】巴洛克音乐家-斯卡拉蒂
  10. java获取当前行数
  11. rust大油井频率怎么用_90%的人都不会用电吹风!用不好危害大!1分钟告诉你到底怎么用...
  12. java enum private_初步理解Java枚举类型
  13. 卸载mac的flash player
  14. 人工智能发展与应用综述--(科普)
  15. 【项目三、车牌检测+识别项目】三、LPRNet车牌识别网络原理和核心源码解读
  16. 第二课堂计算机记录,第二课堂计算机小结
  17. 第十二天学习内容 综合应用 推箱子和对战游戏
  18. 关于接口幂等性问题的简单总结
  19. 儿童玩具语音智能机器人如何配置联网
  20. Android Studio 2.2 JNI编译及Rxjava使用初级

热门文章

  1. Atitit保证架构超前性 前瞻性 目录 第一章 简单抽象原则 道和术的区别 1 第一节 原则 kiss 1 第二节 提升到层次哲学层次 1 第三节 命名也要通用抽象 隐藏细节 1 第二章 通用性原
  2. 【前端面试】Part 1:2020届初级前端校招笔试题及面经总结 —— 基础知识题
  3. 清爽的VS开发字体 -- Consolas
  4. win 10 显示未识别网络的 一种解决办法
  5. linux防火墙之firewalld
  6. “当当收店庆费一事”之我见
  7. 关于C++报错:“表达式必须含有常值”的解决办法
  8. 计算机毕设(附源码)JAVA-SSM化妆品销售网站
  9. 你的灯还亮着吗?--走出问题的乌托邦
  10. 希腊女孩创办自媒体教希腊语,如今用户已达1000人