种草-分布式文件系统的关键技术

120 阅读5分钟

一.本地文件系统技术

  • 1.磁盘空间布局

  • 2.文件的数据管理

  • 3.缓存技术

  • 4.快照与克隆技术

  • 5.日志技术

  • 6.权限管理

  • 7.配额管理

  • 8.文件锁的原理

  • 9.拓展属性与ADS

二.分布式数据布局

2.1基于动态检测的数据布局

指通过检测存储集群各个节点的负载,存储容量和网络宽带等系统信息来决定新数据放置的位置.并通过节点之间心跳可以及时发现故障节点,保证在决策时剔除.

  • a.当客户端需要写入数据时,客户端首先与控制节点交互;

  • b.控制节点根据汇总的信息计算出新数据的位置,然后反馈给客户端;

  • c.客户端根据位置信息,直接与对应的数据节点交互.

2.2基于计算位置的数据布局

通过一个算法来计算文件或数据存储的具体位置.

  • a.当客户端要访问某个文件时,请求在客户端或经过的某个代理节点计算出数据的具体位置;.

  • b.然后将请求路由到该数据节点进行处理.

三.分布式数据的可靠性

3.1复制技术

通过将数据复制到多个节点的方式来实现系统的高可靠

有两种不同的模式:

  • a.基于主节点的多副本技术;

  • b.无主节点的多副本技术.

3.2纠删码技术

为了能保证高可靠,以3副本为例,需要消耗2倍的存储空间.而纠删码技术通过校验数据来保障数据可靠性的同时,只需较低的存储空间.

纠删码技术主要有三类

  • a.阵列纠删码

  • b.RS(Reed-Solomon)类纠删码

  • c.LDPC(LowDensity Parity Check Code)纠删码. 与RS编码相比,LDPC编码效率要略低,但编码和解码性能要优于RS码以及其他的纠删码,主要得益于编解码采用的相对较少并且简单的异或操作。

RS(Reed-Solomon)类纠删码

纠删码的算法很多,但是分布式存储通常使用的是RS(Reed-Solomon),这种算法可以提供更大的冗余数据量.

RS纠删码的基本原理是采用矩阵运算,其核心是找到一个生成矩阵(Generator Matrix),通过该矩阵与n个原始数据块进行运算,最终得到n+m个要存储的数据块.能保证丢失任意m个数据块还能恢复原始数据.

要求生成矩阵的任意n*n的子矩阵是可逆的,常见的有范德蒙德和柯西两种矩阵.

范德蒙德RS编码的特征:

  • 1.最优MDS编码和最优的存储效率

  • 2.灵活的编码长度和存储效率

  • 3.编/解码算法基于域GF(2^w)运算,计算复杂度高

  • 4.高密度编码,低IO吞吐率

柯西RS编码

主要是改善计算复杂度,将求逆矩阵的计算复杂度由O(r^3)降低到O(r^2)

3.3 运算过程

生成矩阵 * 数据块向量 = (数据块 + 校验块)向量 n

有生成矩阵上补是对角线为1的单元矩阵,因此在与遇事数据块乘法的计算结果得到的依然是原始数据块.而下部的m*n的子矩阵与原始数据块计算得到的结果为校验数据.

3.4 恢复过程

恢复的原则是保障条带数据的一致性

当出现部分数据块故障:

我们可以利用生成矩阵和剩余可用数据块来计算原始数据的过程.当出现任何小于m个数据块的故障情况下,我们仍然能够生成矩阵中找到对应的一个n*n的子矩阵 B'.

因为子矩阵B'与原始数据块的乘积为结果数据块的子集R': B' * D = R'

两边同时乘以B'^-1:  B'^-1 * B' * D = R' * B'^-1

所以B'^-1 * B'消掉得到等式: D = R' * B'^-1

由于子矩阵B'可以根据生成矩阵计算得到,结果数据子集R'是已知的,因此我们可以根据两者计算出原始数据集D.

四.分布式数据一致性

由于一个数据块被放置在不同的节点上,无法保证一致性.

主要包括:

  • 1.各个节点数据的一致性问题

  • 2.客户端访问角度一致性的问题,如网络延迟导致更新延迟.

一般使用强一致性跟最终一致性来保证数据的一致性.不同的一致性要求跟性能也会不同,一般是一致性要求越高,性能越低.

五.设备故障与容错

大规模分布式系统中的设备总量很大,设备发生故障就会称为常态.为了应对系统随时出现的故障,分布式文件系统在设计时必须要考虑容错处理. 主要分为两方面:

1.能及时发现故障

通过检测磁盘,心跳包或服务异常来发现故障.

2.发现故障时,系统仍然可以无损地提供服务.

比如,GFS会将同一份数据放置到不同的数据节点,在出现故障磁盘甚至节点故障的情况下,仍然能够通过节点提供服务.