在RAID上创建XFS的时候,mkfs.xfs会自动计算出RAID的stripe unit size 与 stripe width。并对XFS的磁盘格式做优化。XFS在分配块的时候,会以更加细的粒度进行分配。
我同时在一块盘上以及RAID0上做了XFS,发现RAID0上的XFS的性能要好于单块盘的性能,而且用iostat可以发现,每个磁盘的io带宽也都增加了很多。
在md0中,可以设置chunk size,chunksize的大小的选择非常重要,当文件较大时,应该设置较小的chunksize,这样的话,可以将数据均匀的分布到各个磁盘上。当访问md0的I/O为较小的请求时,使用较大的chunksize可以使较多细碎的I/O都集中在某一个磁盘上,避免了性能的浪费。
mdadm设置的RAID5 的chunk size=64KB,在创建xfs 的时候,会根据条带大小和条带宽度来填充XFS里面的参数。如图所示,sunit=chunksize/blocksize=64KB/4KB=16。swidth=2*16=32,因为是两块数据盘。
XFS根据以上信息,每次申请数据,或者inode的元数据,或者申请log的时候,都是以条带大小对齐的来从磁盘上申请空间。这样可以避免不对齐导致的读写操作。
在RAID上,XFS的性能提高了很多,每个盘上的io带宽也提高很多。
阅读(4647) | 评论(0) | 转发(0) |