五、磁盘IOPS和传输带宽
磁盘IOPS:每秒能进行多少次IO,每次IO根据写入数据的大小,这个值也不是固定的。
如果IO每次都写入很大的一块连续的数据,则每秒所做的IO次数是比较低的;
如果磁头频繁换道,每次写入的数据还是较大的话,此时IOPS是这块硬盘的最低数值了。
如果在不频繁换道,每次写入最小的数据块,如512字节,则此时IOPS将是最高值。
传输带宽:指硬盘或设备在传输数据是数据流的速度,如果写入1000个1kb的文件需要10s,那么传输带宽只能达到每秒1MB,而写入一个10MB的文件用了0.1s,此时传输带宽是100MB/s。所以,即使同一块硬盘在写入不同大小的数据时,表现出来的带宽也是不同的。
具有高规格的硬盘在传输大块连续数据时具有优势,而具有IOPS的硬盘在传输小块不连续的数据时具有优势。
六、七种RAID
1.RAID0
RAID0即Data Stripping数据分条技术,RAID0只需要两块硬盘,成本低,但是没有提供冗余和错误修复能力。
横分竖割思想:
图1.1所示是4块普通硬盘,其上布满了扇区。
图1.2所示引入分割思想后的硬盘。许多文件系统或者卷管理软件都使用块而不是扇区作为基本存储单元,所以图1.2中采用4个扇区组成的块作为基本单元。
不同磁盘的相同偏移出的块组成Stripe,也就是条带。
图1.1 图1.2
1.RAID1
RAID1称为磁盘镜像,原理是把一块磁盘数据镜像到另一块磁盘上,也就是数据备份。
2.RAID2
RAID2带有海明码校验,数据条带化分布在所有磁盘上,使用海明码技术来提供错误检查和恢复,技术实施复杂,在商业环境中很少使用。由一个数据不同的位运算得到的海明校验码可以保存另一组磁盘上。由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。海明码可以判断修复一位错误的数据,并且校验盘的数量较多,4块数据盘需要3块校验盘。但是随着数据盘数量的增多,校验盘的比例会显著减小。
RAID2最适合产生连续IO,大块IO的情况。视频流服务等应用适合RAID2。
3.RAID3
RAID3和RAID2类似,两者都是将数据条带分布于不同的硬盘上,条块单位为位或者字节。RAID3采用奇偶校验码,这种码只能查错,不能纠错。
不同于RAID 2,RAID 3使用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据。 如果奇偶盘失效,则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。
4.RAID4
RAID4在RAID3基础上增加了条带深度。和RAID3,唯一不同的是,在数据分割上RAID3对数据的访问时按位进行的,RAID4是以数据块为单位。
一块数据块是一块完整的数据集合,比如一个文件就是一个典型的数据块。当然,对于硬盘的读取,一块数据块不是一个文件,而是由操作系统决定的,这就是簇(Cluser)
控制器的一个IO过来,如果这个IO小于条带深度,那么这次IO就被完全“禁锢”在一个磁盘上,写入一个磁盘的Segment,这次IO只用了一个磁盘。而其他IO也可以和这个IO同时进行,但是前提条件是,其他IO的目标不是这个IO要写入或读取的磁盘。所以实现IO并发还需要增大数据的随机分布性,而不要连续一个磁盘上分布。
5.RAID5
RAID5是分布式奇偶校验,实现了多IO并发。奇偶校验码分布于所有的磁盘上。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。
RAID 3 与RAID 5相比,重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说,大部分数据传输只对一块磁盘操作,可进行并发操作(原因是奇偶校验分布式)。在RAID 5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。
RAID5和RAID0通过条带来提升性能,但是它又克服了RAID0的鲁莽急躁,对数据用校验的方式进行保护。但是RAID5连续读性能不如RAID3。由于RAID3的条带深度很小,每次IO都能能牵动所有的磁盘为它服务,对于大块连续的数据的读写速度快。但是RAID5的条带深度比较大,每次IO一般使用一块数据盘。而通用的RAID5系统一般被设计为数据块都是先放满一个Segment,再去下一个Segment存放。RAID5在随机读方面,是首屈一指的,这要归功于它的多IO并发的实现,原因是奇偶校验采用分布式,这里指随机IO。RAID3和RAID4在IOSIZE值大的时候具有高性能,RAID5在随机IOPS大的时候具有高性能。
6.RAID6
RAID6采用双奇偶校验方法。
附:
条带深度:指的是条带的大小,也叫条带大小。有时也被叫做block size, chunk size, stripe length 或者granularity。这个参数指的是写在每块磁盘上的条带数据块的大小。RAID的数据块大小一般在2KB到512KB之间(或者更大),其数值是2 的次方,即2KB,4KB,8KB,16KB这样。
条带大小对性能的影响比条带宽度难以量化的多。
- 减小条带大小: 由于条带大小减小了,则文件被分成了更多个,更小的数据块。这些数据块会被分散到更多的硬盘上存储,因此提高了传输的性能,但是由于要多次寻找不同的数据块,磁盘定位的性能就下降了。
- 增加条带大小: 与减小条带大小相反,会降低传输性能,提高定位性能。
copyright@2015 liupan
liu.pan@datatom.com