文章目录
前言
在大规模的分布式存储系统中,数据是分布式地存储在不同的存储节点中。在节点数量达到比较大规模的时候,出现数据损坏的情况就会变得十分的常见了。数据节点出现数据损坏是很常见的现象,我们不能保证它是绝对完美的,因此我们的一个目标是使数据损坏对系统的影响降到最低甚至没有影响。这里其实就谈到了系统对于异常数据的处理机制了,相对于系统被动式地感知数据的损坏(用户访问行为错误触发),主动式的数据自检行为无疑是一种更好的解决办法。本文笔者就来聊聊Hadoop Ozone内部的数据自检服务Data Scrubbing服务,从原理上来说类似于HDFS BlockScanner和VolumeScanner的服务。
数据的损坏
首先我们来说说数据的损坏。一个磁盘数据的损坏会有很多可能的引发原因,包括软件层面的或者是硬件层面的,比如以下几类:
- 硬件层面的问题,比如磁盘驱动问题等。
- 磁盘的Bit rot位衰减问题。
- 文件系统lost write问题,比如实际内容已经写入磁盘,但在文件系统层面认为没有写入。或者是相反的情况。
当然,引发上述3类磁盘问题的影响因素也会有很多,比如:
- 磁盘的使用时间
- 磁盘的类型,比如企业级磁盘,或者近线性磁盘
- 磁盘数据的本地性访问等等
- …
当然以上种种因素导致磁盘数据损坏的情况时,我们如何能够快速地检测出来呢?我们继续往下看。