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

2023-05-16

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

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

RAID5原理

4d0acb5fddbdb225d89e6e3a5cbc709e.png

数据按条带分布在不同位置,比如图中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的布局

7398da766ce59b7be5d5bc9ec2da2dc9.png

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

2)旋转布局

4621e12584db500298a41110a662c35f.png

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

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

RAID5数据恢复

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

691de8709fa7f18b19befd42790e8376.png

盘内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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务器4块固态硬盘做raid5,固态硬盘内RAID5技术 的相关文章

  • [置顶] C# 邮件发送方法【NetMail方式】

    在上一篇博文C 邮件发送方法 webMail方式 中介绍了Webmail的邮件发送方式 xff0c 现在介绍下C 中使用NetMail发送邮件的方式 xff0c 测试代码如下 xff1a lt summary gt NetMail方式测试通
  • 用py2exe打包后的程序一闪而过

    最近用python写了个小工具 xff0c share给同事使用 xff0c 但是在测试的时候发现点完exe文件 xff0c 就一闪而过 不知道发生了什么查询了伟大的谷歌 xff0c 发现只要在结尾加上 os system 39 pause
  • WebView显示的网页在大分辨率屏下被放大--解决方案

    例如适合800px宽度的页面 xff0c 如果通过WebView在1024px的屏幕宽度下显示时 xff0c 内容 图片 会被放大 xff0c 整体页面会超出屏幕 试了将WebView的settings中的缩放都关闭了也不行 后来发现了We
  • ExtJs TreePanel 不能加载ashx数据的解决办法

    今天学习Extjs TreePanel 时在加载动态数据时经常加载不进来 xff0c 因为我是使用MVC2获取动态数据的 xff0c 单独调试MVC的返回数据时OK的 xff0c 网上有很多解决方案 xff0c 其中最简单的是 xff1a
  • 信息树和XML文件的遍历及XML文件的应用

    function Save 将INfomationTree中的不是Http开头的组 xff0c 保存到本地 xff0c 然后再从本地上传到服务器端 var IInformationTree 61 document parentWindow
  • chapter 4: A literature review(re-read papers to gain fresh understanding)

    chapter 4 A literature review re read papers to gain fresh understanding 1 Writing for Science and Engineering Papers Pr
  • Connect to a Windows PC from Ubuntu via Remote Desktop Connection

    http www 7tutorials com connecting windows remote desktop ubuntu A useful feature of Windows is being able to connect to
  • HTTP MIME type

    扩展名 类型 子类型 IIS 4 0 IIS 5 0 application octet stream 是 是 323 text h323 否 是 acx application internet property stream 否 是 a
  • [资源分享]Linode免费使用 [ 资源分享 ]

    Linode 是目前最优秀的 VPS 服务提供商 最近 xff0c Linode 推出了一种全新的 Linode 帐户注册方式 xff0c 该方式允许用户试用 Linode VPS 4个小时的时间而不需要输入付款信息 xff08 只要有邮箱
  • iOS9 Search API 之 Spotlight

    iOS9以后 有三种api提供搜搜方式 加强引导用户关注 我们的app及相关内容的方式 NSUserActivity Web Markup Core Spotlight 用法 前两种 实战操作性不够强 后续补充 这里先讲 spotlight
  • AngularJS优缺点、使用场景

    AngularJS 优缺点 优点 xff1a AngularJS模板功能强大丰富 xff0c 自带了极其丰富的angular指令 AngularJS是完全可扩展的 xff0c 与其他库的兼容效果很好 xff0c 每一个功能可以修改或更换 x
  • 面试准备

    首行占位 Python相关 1 Python3特性和变化 1 Python3默认编码是UTF 8 xff0c 2为ASCII 2 Python3中只有int xff0c 2中有int跟long xff0c 其中int不能超过sys maxi
  • matlab练习程序(地图上画经纬度)

    需要看下生成的数据在地球上的经纬度具体位置 投影为墨卡托投影 clear all close all clc load coast a 61 load 39 out txt 39 自己的经纬度数据 axesm mercator plotm
  • 让history记录命令的历史执行时间

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 让 history记录命令的历史执行时间 由于 Linux默认的 history记录仅保存了命令的内容 xff0c root 64 oracle history 1 dat
  • windows server 2012 R2登录密码忘了怎么办呢?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 先确定是否开启了内置管理员 xff0c 或是还建立了其他的管理员账户 如果有的话 xff0c 请先以其他管理员账户登入电脑 xff0c 在本地计算机和组中 xff0c 更改
  • VR的商業模式

    1 硬件销售 根据Digi Capital预估 xff0c 在5年内 xff0c AR VR将会有数亿量级的用户数 从免费到高端系统 xff0c 硬件销售将获利最多 届时每由AR VR生成的10美元利润 xff0c 就有4美元收入属于硬件销
  • RabbitMQ知多少

    1 引言 RabbitMQ Rabbit Message Queue的简写 xff0c 但不能仅仅理解其为消息队列 xff0c 消息代理更合适 RabbitMQ 是一个由 Erlang 语言开发的AMQP xff08 高级消息队列协议 xf
  • 远程控制软件VNC教程和对内网机器控制的实现

    远程控制软件VNC教程和对内网机器控制的实现 作者 Hoky ORG 出处 Hoky ORG 77 砖 82 好 评论 12 条 进入论坛 更新时间 xff1a 2006 01 25 16 02 关 键 词 xff1a 远程控制软件VNC
  • MariaDB 10.3支持update多表ORDER BY and LIMIT

    MariaDB 10 3支持update多表ORDER BY and LIMIT 1 xff09 update连表更新 xff0c limit语句 update t1 join t2 on t1 id 61 t2 id set t1 nam
  • 细胞自动机

    细胞自动机是指定形状的网格上的 有色 单元的集合 xff0c 其根据基于相邻单元的状态的一组规则通过多个离散时间步长演变 然后根据需要迭代地应用规则多个时间步长 冯 诺伊曼是最早考虑这种模型的人之一 xff0c 并将细胞模型纳入他的 通用构

随机推荐

  • centos 常见故障排除

    centos 常见故障排除 实现环境 xff1a Centos x86 64 1 MBR故障和解决办法 xff08 1 xff09 模拟MBR故障 第一步 xff1a MBR中bootloader有446个字节 xff0c 在这里把这446
  • manjaro linux必装工具,在Manjaro系统中安装常用软件的方法

    本文介绍在Manjaro系统中安装一些常用的软件 xff0c 有vim chrome 截图 TIM 网易云音乐 搜狗输入法 markdown编辑器 pdf阅读器 steam git客户端 下载工具uget 视频播放器 zsh 前言 更换为中
  • 10款基于HTML5+CSS3实现的超酷源码动画

    1 基于Bootstrap的jQuery登录表单 这是一款基于Bootstrap的登录表单 xff0c 表单的外观自然不用说 xff0c 沿用了Bootstrap的风格 xff0c 非常漂亮 这款登录表单有一个经过CSS3处理过的头像图片
  • Spring AOP 对Spring MVC的Controller切面拦截不起作用

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 问题描述 当使用Spring AOP对Controller层的Controller类的方法进行切面拦截 xff0c 不起作用 AOP配置没有任何问题 2 排查过程 Sp
  • 2008年9月全国计算机等级考试二级C笔试试卷

    2008 年9月全国计算机等级考试二级C笔试试卷 一 选择题 1 一个栈的初始状态为空 现将元素1 2 3 4 5 A B C D E依次入栈 xff0c 然后在依次出栈 xff0c 则元素出栈的顺序是 B A xff09 12345ABC
  • 如何学习一门计算机编程语言

    序言 计算机编程是一个实践性很强的 游戏 xff0c 对于新入门者 xff0c 好多人都在想 xff0c 哪一门编程语言最好 xff0c 我该从哪开始呢 xff1f 我的回答是 xff1a 语言不重要 xff0c 理解编程思想才是最关键的
  • CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法

    为什么80 的码农都做不了架构师 xff1f gt gt gt 在windows下保存了一个脚本文件 xff0c 用ssh上传到centos xff0c 添加权限执行nginx提示没有那个文件或目录 shell脚本放到 etc init d
  • 微软面试题

    1 求函数返回值 xff0c 输入 x 61 9999 int func x int countx 61 0 while x countx 43 43 x 61 x amp x 1 return countx 试题解析 解这道题的时候 xf
  • hexo常用命令笔记

    hexo 皮肤Github hexo 皮肤预览 hexo bashnpm install hexo g 安装 npm update hexo g 升级 hexo init 初始化 简写 hexo n 34 我的博客 34 61 61 hex
  • 什么是MariaDB中的thread pool,连接池简介

    Thread pool是什么 MySQL是每个连接上来都要创建一个线程来执行语句 这样每一个新的连接进来即会创建一个新的线程 xff0c 这种动作对MySQL本身压力比较大 Threadpool是提供一种线程代理的模型执行每个连接的语句 而
  • 程序员工作5年以上,找工作还看学历吗?

    很多程序员都有这样的觉悟 xff1b 找工作学历是敲门砖 xff0c 没有211 985起步的学历 xff0c 想进一家大公司不太可能 举个例子好了 xff1b 如果你是大厂面试官 xff0c 参与面试的有10个刚刚毕业没有工作经验的普通学
  • win10下VirtualBox虚拟机开机后台自启动

    每次使用linux的时候 xff0c 都是打开virtualBox gt 启动安装的linux系统 gt 再用远程桌面 xff08 SSH等 xff09 连接 xff0c 每次手动打开比较麻烦 xff0c 而且linux虚拟机也有窗口 xf
  • 审批流程数据库设计

    要做一个通用的流程系统 xff0c 大概应建立如下数据表 xff1a 1 流程表 xff08 tbl flow xff09 字段名数据类型备注flow idint流程编号 xff0c 主键flow noint流程号 xff0c 唯一列flo
  • 【Wax】使用Wax (framework方式,XCode 4.6)

    前情提示 xff1a Wax 使用Wax xff08 非framework方式 xff0c XCode 4 6 xff09 这次 xff0c 将以framework的方式来使用Wax 那么 xff0c 让我们开始吧 xff01 xff01
  • Spring Boot利用AOP获取用户操作实现日志记录

    环境 xff1a IDEA版本2017 3 1 x64 xff0c JDK1 8 xff0c SpringBoot2 1 1 xff0c Druid1 1 8 xff0c mybatis1 3 2 xff0c Security5 1 2 x
  • HomeBrew

    搜索软件 xff1a brew search 软件名 xff0c 如brew search wget 安装软件 xff1a brew install 软件名 xff0c 如brew install wget 卸载软件 xff1a brew
  • 如何使用tar命令使tar打包多个文件

    tar c 建立压缩档案 x xff1a 解压 t xff1a 查看内容 r xff1a 向压缩归档文件末尾追加文件 u xff1a 更新原压缩包中的文件 这五个是独立的命令 xff0c 压缩解压都要用到其中一个 xff0c 可以和别的命令
  • mysql数据库报错1146_数据库错误代码1146 - 本地与在线

    我是这个站点的新手 请温和请 xff1a P localhost上的mySQL数据库适用于插入语句 xff0c 但只要将数据库连接更改为服务器连接它给了我错误 xff1a 错误代码1146 xff1a 1146没有任何错误描述 可能是什么原
  • java内存过高排查_java应用占用内存过高排查的解决方案

    故障 xff1a 收到服务器报警 xff0c 内存使用率超过80 1 查看 使用dstat和top查看内存使用最高的应用 使用dstat 查到内存占用最高的是java应用 xff0c 使用2253M内存 xff0c 但是这台服务器跑了好几个
  • 服务器4块固态硬盘做raid5,固态硬盘内RAID5技术

    提到冗余保护 xff0c 最容易想到的就是RAID Redundant Arrays of Independent Disks 它是一种把多块独立的物理硬盘按不同方式组合形成一个硬盘组 xff0c 以此提供比单个硬盘更高的存储性能和数据冗余