I/O条带化介绍zt
I/O条带化介绍zt
[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]什么是条带化(striping)[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]当多个进程同时访问一个磁盘时,可能会出现磁盘冲突。大多数磁盘系统都对访问次数(每秒的 I/O 操作,IOPS)和数据传输率(每秒传输的数据量,TPS)有限制。当达到这些限制时,后面需要访问磁盘的进程就需要等待,这时就是所谓的磁盘冲突。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]避免磁盘冲突是优化 I/O 性能的一个重要目标,而 I/O 性能的优化与其他资源(如CPU和内存)的优化有着很大的区别 ,I/O 优化最有效的手段是将 I/O 最大限度的进行平衡。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]条带化技术就是一种自动的将 I/O 的负载均衡到多个物理磁盘上的技术,条带化技术就是将一块连续的数据分成很多小部分并把他们分别http://www.storworld.com/]存储到不同磁盘上去。这就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突,而且在需要对这种数据进行顺序访问的时候可以获得最大程度上的 I/O 并行能力,从而获得非常好的性能。很多操作系统、磁盘设备供应商、各种第三方软件都能做到条带化。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]图 1 描述的是一个未经条带化处理的连续数据的分布,图 2 描述的是一个已经被条带化处理的连续数据的分布,从中比较,我们可以发现图 2 中对连续数据的读写都有最大的并发能力。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]图 1. 未经条带化处理的连续数据[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]图 2. 已经被条带化处理的连续数据[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]由于条带化在 I/O 性能问题上的优越表现,以致于在应用系统所在的计算环境中的多个层次或平台都涉及到了条带化的技术,如操作系统和http://www.storworld.com/]存储系统这两个层次中都可能使用条带化技术。
[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]影响条带化效果的两个因素
[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]当对数据做条带化时,数据被切成一块块的小数据块,各小数据块分布存储在不同的硬盘上。从这个描述中我们可以看出,影响条带化效果的因素有两个,一是条带大小(stripe size),即数据被切成的小数据块的大小,另一个条带宽度(stripe width),即数据被存储到多少块硬盘上。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]条带宽度(stripe width)是指同时可以并发读或写的条带数量。这个数量等于RAID中的物理硬盘数量。例如一个经过条带化的,具有4块物理硬盘的阵列的条带宽度就是4。增加条带宽度,可以增加阵列的读写性能。道理很明显,增加更多的硬盘,也就增加了可以同时并发读或写的条带数量。在其他条件一样的前提下,一个由8块18G硬盘组成的阵列相比一个由4块36G硬盘组成的阵列具有更高的传输性能。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]条带大小(stripe size),有时也被叫做[i]block size, [i]chunk size, [i]stripe length 或者 [i]granularity。这个参数指的是写在每块磁盘上的条带数据块的大小。RAID的数据块大小一般在2KB到512KB之间(或者更大),其数值是2的次方,即2KB,4KB,8KB,16KB这样。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]条带大小对性能的影响比条带宽度难以量化的多。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]·减小条带大小: 由于条带大小减小了,则文件被分成了更多个,更小的数据块。这些数据块会被分散到更多的硬盘上存储,因此提高了传输的性能,但是由于要多次寻找不同的数据块,磁盘定位的性能就下降了。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]·增加条带大小: 与减小条带大小相反,会降低传输性能,提高定位性能。[p=24, null, left][backcolor=rgb(250,251,254)][font=宋体, Arial, Helvetica, sans-serif]根据上边的论述,我们会发现根据不同的应用类型,不同的性能需求,不同驱动器的不同特点(如SSD硬盘),不存在一个普遍适用的"最佳条带大小"。所以这也是存储厂家,文件系统编写者允许我们自己定义条带大小的原因。不同条带大小.