GlusterFS:条带(Stripe)实现源码研究

本文详细介绍了RAID技术,重点分析了条带(Stripe)技术的概念,包括其在RAID0中的应用和在GlusterFS中的实现。在GlusterFS中,条带类似RAID0,将文件分段并分布式存储,以提高读写性能。通过源码分析`stripe_writev`和`stripe_readv`函数,揭示了条带分带的核心思想。
摘要由CSDN通过智能技术生成

1.概要

1..RAID技术概念

RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文即为独立磁盘冗余阵列,或简称磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。组成磁盘阵列的不同方式成为RAID级别(RAIDLevels)。RAID技术经过不断的发展,现在已拥有了从 RAID 0 到 6 七种基本的RAID 级别。另外,还有一些基本RAID级别的组合形式,如RAID10(RAID 0与RAID 1的组合),RAID 50(RAID 0与RAID 5的组合)等。不同RAID 级别代表着不同的存储性能、数据安全性和存储成本。

Raid的分类:

1.RAID0级,无冗余无校验的磁盘阵列。数据同时分布在各个磁盘驱动器上,没有容错能力,读写速度在RAID中最快,但因为任何一个磁盘驱动器损坏都会使整个RAID系统失效,所以安全系数反倒比单个的磁盘驱动器还要低。一般用在对数据安全要求不高,但对速度要求很高的场合。

2.RAID1级,镜像磁盘阵列。每一个磁盘驱动器都有一个镜像磁盘驱动器,镜像磁盘驱动器随时保持与原磁盘驱动器的内容一致。RAID1具有最高的安全性,但只有一半的磁盘空间被用来存储数据。主要用在对数据安全性要求很高,而且要求能够快速恢复被损坏的数据的场合。

3.RAID2级,纠错海明码磁盘阵列。磁盘驱动器组中的第一个、第二个、第四个……第2n个磁盘驱动器是专门的校验盘,用于校验和纠错,例如七个磁盘驱动器的RAID2,第一、二、四个磁盘驱动器是纠错盘,其余的用于存放数据。使用的磁盘驱动器越多,校验盘在其中占的百分比越少。RAID2对大数据量的输入输出有很高的性能,但在少量数据的输入输出时性能不好。RAID2很少实际使用。

4.RAID3和RAID4,奇校验或偶校验的磁盘阵列。不论有多少数据盘,均使用一个校验盘,采用奇偶校验的方法检查错误。任何一个单独的磁盘驱动器损坏都可以恢复。RAID3和RAID4的数据读取速度很快,但写数据时要计算校验位的值以写入校验盘,速度有所下降。RAID3和RAID4的使用也不多。

5.RAID5级,无独立校验盘的奇偶校验磁盘阵列。同样采用奇偶校验来检查错误,但没有独立的校验盘,校验信息分布在各个磁盘驱动器上。RAID5对大小数据量的读写都有很好的性能,被广泛地应用。

1.2.条带技术

 条带是一种将多个磁盘驱动器合并为一个卷的方法。许多情况下, 这是通过硬件控制器来完成的。 GEOM 磁盘子系统提供了 RAID0 的软件支持,它也成为磁盘条带

  在 RAID0 系统中,数据被分为多个块,这些块将分别写入阵列的所有磁盘。写往磁盘的数据被分成“条带”,大小一般为16~256KB,每个条带以阵列形式写到不同磁盘上。与先前需要等待系统将 256k 数据写到一块磁盘上不同, RAID0 系统,能够同时分别将打碎的 64k 写到四块磁盘上,从而提供更好的 I/O 性能。这一性能提升还能够通过使用多个磁盘控制器来进一步改进。

在 RAID0 条带中的每一个盘的尺寸必须一样, 因为 I/O 请求是分散到多个盘上的, 以便让这些盘上的读写并行完成。

条带实现举例


1.3.奇偶校验技术

磁盘阵列RAID5原理 RAID5是利用奇偶校验算法对磁盘阵列数据进行冗余,允许在一块盘出现故障的情况下保证数据安全。即保证了阵列的读写效率,又可以节约企业成本。奇偶校验算法原理: A值 B值 Xor结果 0 0 0 1 0 1 0 1 1 1 1 0 通过观察可以看出,奇偶校验可以保证数据运算后位数不变,而且参加运算中的任何一个数都可以由其他数字异或产生,这是RAID5数据恢复基本原理。

Parity是应用于RAID中的另一种冗余技术。这个名词通常用在侦测校验通讯错误方面,例如Modem、内存。 RAID中的Parity类似于内存中的技术。举个例子来说,比如你的一个数据单位有X位数字,那么你可以使用这X位数字产生一个奇偶校验位,并且把这个奇偶校验位作为这个数据单位的第X+1个位,如果这X+1位中的任何一个丢失,剩下的X位仍能修复这个数据。你可能听说过奇偶校验位(parity bit)这个名词,对于数据来讲,这是个额外的数据(但是从安全性上来讲不是多余的)。在RAID中,这个奇偶校验数据将会大的多。

由任何两个值都能通过异或运算得到第三个值,这就是异或运算的特性。这个运算可以使用任意多个字节,所以你可以对整个硬盘的数据进行异或运算。现在你是不是可以想到你不必把数据存为两份,而只要一个硬盘就能保护你的数据

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值