阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

你知道RAID中的Write Hole问题吗?

510次阅读
没有评论

共计 2683 个字符,预计需要花费 7 分钟才能阅读完成。

RAID 系统中会存在一个称之为 Write Hole 的问题,这到底是一个什么问题?会给用户带来什么影响?目前开源 RAID 系统中如何解决这个问题?这类问题需要采用什么方式来解决呢?存储老吴从研发的角度和大家一起分析一下这个问题,看看这个问题的本质以及解决思路。

Write Hole 是一种非常形象的描述。对于一个采用条带内部通过校验数据进行数据保护的系统,当应用程序正在更新条带内部数据的时候,如果系统突然断电,条带数据无法正常更新完成,那么此时就会出现条带中的数据部分更新完成。在这种情况下,当系统重启之后,条带中的数据是不完整的,校验数据和条带中的有效数据无法匹配上,条带处于数据不一致的情况。这种问题就被称之为 Write Hole 问题,如下图所示:

你知道 RAID 中的 Write Hole 问题吗?

在更新条带数据的时候,D2 数据被更新成了 D2’,但是条带的校验数据 P、Q 没有被更新完成,此时系统由于发生故障而重启。在这种情况下,条带数据处于不一致的状态。系统重启之后,通常 RAID 系统无法感知这种数据不一致的条带。在这种情况下,如果条带中的 D3 再次发生了故障,那么需要通过校验数据 P 恢复 D3。在数据恢复过程中,使用到了 D2’数据,那么显然恢复出来的数据会发生错误,不再是原来的 D3 数据。所以,数据不一致的条带将会进一步引入数据正确性的问题。即 Write Hole 问题不仅破坏被更新过的数据,进一步会潜在影响未更新数据的正确性,在极端情况下会影响整条带数据的正确性。

考虑在发生 Write Hole 问题的时候,即在条带数据更新时,系统突然断电,RAID 系统中出现若干数据不一致的条带。在系统重启之后,针对这些数据不一致的条带,可以采用全系统扫描的方式对数据不一致条带进行修复。这也是目前很多 RAID 系统所常用的方法,通过这种方式可以防止数据不一致条带进一步导致未更新数据的正确性问题。在 RAID 系统中通常存在 SYNC 功能,当系统非法重启之后,可以通过 SYNC 功能对 RAID 中的所有条带进行检查,并且将数据不一致条带进行修复。这种方式可以防止 Write Hole 问题的扩散,但是还是会导致 RAID 系统中部分数据的彻底丢失。

为了彻底解决 Write Hole 问题,在设计 RAID 的时候可以采用如下两种方法:

1,采用文件系统的 Journal(日志)的设计思想,实现写请求的原子处理

2,借助于采用非易失性内存做为写缓存,达到原子写操作的目的

这两种思路本质上是类似的,第二种是对第一种的优化。我们知道文件系统在数据更新的时候为了保证数据更新的原子性,可以采用日志的方式,把一次数据更新操作看成一次 transaction(事务)。即不管一次数据更新操作有多少次 IO,从外部来看这是一次原子操作,可以称之为 atomic write。当 atomic write 中间过程发生故障时,系统重启之后可以继续操作,保证数据要么更新完成,要么完全没有写入,不会存在中间状态。RAID 系统想要解决 Write Hole 的问题,也需要引入这种 Atomic write 的机制。很直接的想法是在每次 RAID 进行条带数据更新的时候,首先记录一下日志,保存事件类型以及相关的数据;然后再将数据提交到条带中;当条带数据全部更新完成之后,清除日志数据。这种方式可以保证原子写,即使在条带数据更新过程中发生系统故障,系统重启之后,通过日志数据可以继续写过程,保证条带数据完全更新完毕,并处于数据一致的状态。

日志的方式看似完美,但是会严重影响性能。在磁盘存储系统中,日志更新非常耗时,一次更新需要进行多次磁盘 IO 操作,如果日志存储空间和条带存储空间在物理上不连续,那么将会引入磁盘抖动问题,严重影响性能。对于闪存存储系统,引入日志系统之后,所有的数据操作将会引入双倍的数据写入操作,写放大问题变得非常棘手。所以,在开源 RAID 系统中,都没有提供这种日志操作方式,通常需要上层的文件系统来解决这种 write hole 的问题。在商用的一些 RAID 系统中,为了保证极致的数据可靠性,有些系统实现了这种日志数据更新方式,达到 Atomic Write 的目的。

另一种比日志方式更好的方法是引入非易失内存 NVRAM。在更新 RAID 数据的时候,首先将数据写入非易失内存中,当 NVRAM 中的数据聚合完毕之后再更新写入条带。当条带中的数据更新完毕之后,再将 NVRAM 中的数据清楚。在条带数据更新的过程中,如果系统出现异常重启,由于 NVRAM 中依然存在未完成更新的数据,所以,条带中的数据将会被再次更新,不会存在中间数据状态,不会存在 Write Hole 的问题。

采用 NVRAM 的这种方法是比较完美的 Write Hole 解决之道。对于硬 RAID,往往采用热备电池或者超级电容的方式保护 RAID 卡上的内存,起到的就是这个作用。所以,和软 RAID 相比,硬 RAID 在这一点上会更胜一筹。在软 RAID 中,可以在系统中使用 PCIe NVRAM 或者 NVDIMM 来实现 RAID 的非易失数据缓存。通常在存储系统中,软 RAID 会和文件系统、上层的应用系统进行配合,因此,NVRAM 也会和文件系统进行共享,从而解决掉 Write Hole 的问题。EMC 的很多存储系统就会采用非易失内存 NVRAM,让文件系统与 RAID 进行配合,避免 RAID 处于 Write Hole 的状态。

Write Hole 是 RAID 的一个比较难于解决的问题,但是借助于最新 NVDIMM 等非易失内存技术之后,该类问题可以有效的避免和解决。

如何在 Linux 上构建 RAID 10 阵列  http://www.linuxidc.com/Linux/2014-12/110318.htm

Debian 软 RAID 安装笔记 – 使用 mdadm 安装 RAID1 http://www.linuxidc.com/Linux/2013-06/86487.htm

常用 RAID 技术介绍以及示例演示 (多图) http://www.linuxidc.com/Linux/2013-03/81481.htm

Linux 实现最常用的磁盘阵列 – RAID5 http://www.linuxidc.com/Linux/2013-01/77880.htm

RAID0+ 1 和 RAID5 的性能测试结果 http://www.linuxidc.com/Linux/2012-07/65567.htm

Linux 入门教程:磁盘阵列(RAID)http://www.linuxidc.com/Linux/2014-07/104444.htm

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/122119.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2683字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7828237
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...