条带化概念
条带化技术就是一种自动将I/O负载均衡到多个物理磁盘上的技术,条带化技术就是将一块连续的数据分成很多小部分并把他们分别存储到不同磁盘上去。
影响条带化效果的因素有两个,一是条带大小(stripesize),即数据被切成的小数据块的大小;另一个是条带宽度(stripe width),即数据被存储到多少块硬盘上。
增加条带宽度,可以提高读写性能,因为提高了并发IO。
条带大小有时也被叫做 block size, chunk size, stripe length 或者 granularity。这个参数指的是写在每块磁盘上的条带数据块的大小。条带大小对性能的影响比条带宽度难以量化的多。
减小条带大小:由于条带大小减小了,则文件被分成了更多个,更小的数据块。提高了传输的性能,但是由于要多次寻找不同的数据块,磁盘定位的性能就下降了。
增加条带大小:与减小条带大小相反,会降低传输性能,提高定位性能。
不同的应用类型,不同的性能需求,不同的驱动器特点(如SSD硬盘),不存在一个普遍适用的“最佳条带大小”。所以,这也是存储厂家,文件系统编写者允许我们自己定义条带大小的原因。
一般说来,不同条带大小对“中型大小”文件的影响是很大的。
例如,一个4盘组成的条带,对于4K的文件来说,不论条带是4K还是64K,它都分布在一块硬盘上。对于500K的文件来说,不论条带是4K还是64K,它都会被分布在4块硬盘上。但是对于20K的文件来说,如果是64K的条带,则分布在一块硬盘上,如果是4K的条带,则分布在4块硬盘上。同样,对100K的文件,如果是64K的条带,则分布在2块硬盘,而4K的条带,则分布在4块硬盘。
那条带大小到底多大合适?没有标准,只有自己分析自己的业务数据,尝试,取得一个合理的值。一般来说,64K是一个适合大部分生产环境的大小。
Demo:条带化
现有一个卷组,由两个PV构成,每个PV2g 。
不使用条带化创建LV:
# lvcreate -L 1G -n test1 demo
查看 PV 的使用情况:
# lvdisplay /dev/demo/test1 <--- 该LV分配了256个PE
# pvdisplay /dev/sdb < --- 从这个 PV 分配了256个PE出去
# pvdisplay /dev/sdc < --- 从这个PV没有分配PE出去
可见,在没使用条带化时,LV是顺序划分的,所以数据也是顺序存储的,只有在一个PV磁盘存储完毕,才会使用下一个PV。
使用条带化创建LV:
# lvcreate -L 1G -n test2 -i 2 -I 64 demo
-i 2表示跨两个PV设备(stripes), -I 64表示做条带化处理的数据单位大小是64K(stripesize)。
使用上面同样的方法,可以看到,两个PV都分配PE。由上可知,条带化时,LV会跨多个PV磁盘,数据在PV上循环存储。