文件系统测试维度
文件系统的测试比块要复杂一些,因为在文件是在块之上叠加了文件系统目录树结构,除直接访问裸盘外还需要搜索元数据路径。
文件系统测试主要从以下4个维度进行评估:读写比例、OPS(每秒操作次数)、带宽(吞吐量)和时延。
今天主要看看常用的文件系统测试工具有哪些:
vdbench
vdbench为首推文件系统测试工具,它是是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能,
它是一个免费的工具,容易使用,而且常常用于测试和基准测试。
1.安装
需要安装jdk
到oracel下载vdbench504;不需要安装,直接以绝对路径执行就可以
2.使用
./vdbench -t
这一步先测试一下工具能不能用,如何正常,会在目录下自动生成一个output
./vdbench -f parmfile
根据指定配置文件测试
这里的parmfile需要根据测试环境修改,可以参考output目录下的parmfile
3.参数说明
对于一个文件系统,配置以下参数:
HD:主机定义。与虚拟块设备相同。
FSD:文件系统定义
fsd= 标识文件系统定义的名称
anchor= 将在其中创建目录结构的目录
width= 要在定位符下创建的目录数
depth= 要在定位符下创建的级别数
files= 要在最低级别创建的文件数
sizes= (size,size,…) 将创建的文件大小
distribution= bottom(如果希望仅在最低级别创建文件)和 all(如果希望在所有目录中创建文件)
openflags= 用于打开一个文件系统 (Solaris) 的 flag_list
FWD:文件系统工作负载定义
fwd= 标识文件系统工作负载定义的名称。
fsd= 要使用的文件系统定义的 ID。
host= 要用于此工作负载的主机的 ID。
fileio= random 或 sequential,表示文件 I/O 将执行的方式。
fileselect= random 或 sequential,标识选择文件或目录的方式。
xfersizes= 数据传输(读取和写入操作)处理的数据大小。
operation= mkdir、rmdir、create、delete、open、close、read、write、getattr 和 setattr。选择要执行的单个文件操作。
rdpct= (仅)读取和写入操作的百分比。
threads= 此工作负载的并发线程数量。每个线程需要至少 1 个文件。
RD:运行定义
fwd= 要使用的文件系统工作负载定义的 ID。
fwdrate= 每秒执行的文件系统操作数量。
format= yes / no / only / restart / clean / directories。在开始运行之前要执行的操作。
operations= 覆盖 fwd 操作。选项相同。
4.示例
messagescan=no
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=ceph105,system=100.100.5.105
hd=ceph104,system=100.100.5.104
hd=ceph103,system=100.100.5.103
hd=host-192-168-5-102,system=100.100.5.102
hd=host-192-168-5-101,system=100.100.5.101
fsd=default,depth=2,width=10,files=1000,size=64k,shared=yes
fsd=fsd51,anchor=/mycephfs1/client14wmix-04101008-105-1
fsd=fsd52,anchor=/mycephfs2/client14wmix-04101008-105-2
fsd=fsd53,anchor=/mycephfs3/client14wmix-04101008-105-3
fsd=fsd54,anchor=/mycephfs4/client14wmix-04101008-105-4
fsd=fsd55,anchor=/mycephfs5/client14wmix-04101008-105-5
fsd=fsd56,anchor=/mycephfs6/client14wmix-04101008-105-6
fsd=fsd41,anchor=/mycephfs1/client14wmix-04101008-104-1
fsd=fsd42,anchor=/mycephfs2/client14wmix-04101008-104-2
fsd=fsd43,anchor=/mycephfs3/client14wmix-04101008-104-3
fsd=fsd44,anchor=/mycephfs4/client14wmix-04101008-104-4
fsd=fsd45,anchor=/mycephfs5/client14wmix-04101008-104-5
fsd=fsd46,anchor=/mycephfs6/client14wmix-04101008-104-6
fsd=fsd31,anchor=/mycephfs1/client14wmix-04101008-103-1
fsd=fsd32,anchor=/mycephfs2/client14wmix-04101008-103-2
fsd=fsd33,anchor=/mycephfs3/client14wmix-04101008-103-3
fsd=fsd34,anchor=/mycephfs4/client14wmix-04101008-103-4
fsd=fsd35,anchor=/mycephfs5/client14wmix-04101008-103-5
fsd=fsd36,anchor=/mycephfs6/client14wmix-04101008-103-6
fsd=fsd21,anchor=/mycephfs1/client14wmix-04101008-102-1
fsd=fsd22,anchor=/mycephfs2/client14wmix-04101008-102-2
fsd=fsd23,anchor=/mycephfs3/client14wmix-04101008-102-3
fsd=fsd24,anchor=/mycephfs4/client14wmix-04101008-102-4
fsd=fsd25,anchor=/mycephfs5/client14wmix-04101008-102-5
fsd=fsd26,anchor=/mycephfs6/client14wmix-04101008-102-6
fsd=fsd11,anchor=/mycephfs1/client14wmix-04101008-101-1
fsd=fsd12,anchor=/mycephfs2/client14wmix-04101008-101-2
fsd=fsd13,anchor=/mycephfs3/client14wmix-04101008-101-3
fsd=fsd14,anchor=/mycephfs4/client14wmix-04101008-101-4
fsd=fsd15,anchor=/mycephfs5/client14wmix-04101008-101-5
fsd=fsd16,anchor=/mycephfs6/client14wmix-04101008-101-6
fwd=default,rdpct=60,xfersizes=64k,fileio=random,fileselect=random,threads=128
fwd=fwd5,fsd=fsd5*,host=ceph105
fwd=fwd4,fsd=fsd4*,host=ceph104
fwd=fwd3,fsd=fsd3*,host=ceph103
fwd=fwd2,fsd=fsd2*,host=host-192-168-5-102
fwd=fwd1,fsd=fsd1*,host=host-192-168-5-101
rd=rd1,fwd=fwd*,fwdrate=max,format=restart,elapsed=600,interval=1
blogbench
blogbench是尝试重现真实繁忙的文件服务器的负载来进行基准测试工具,它只进行总体打分测试。 测试指标包括:Spawning writers、Spawning rewriters、Spawning commenters、Spawning readers
示例:
blogbench -d /data -c 10 -i 10 -r 10 -w 10 -W 10 -s 10
iozone
IOZONE中基本概念
Write: 测试向一个新文件写入的性能
Re-write: 测试向一个已存在的文件写入的性能
Read: 测试读一个已存在的文件的性能。
Re-Read: 测试读一个最 近读过的文件的性能
Stride Read: 测试跳跃读一个文件的性能
512M~4096M是指:测试的文件大小
64、4096是指:是指以64K和4M来进行传输
示例:
命令:iozone -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /root/myCephFS2/iozone -Rb ./iozone.xls
iozone -a -s 4g -i 0 -i 1 -f /root/mynfs/iozone -Rb /root/iozone_5.xls
fio
FIO是用于测试IOPS非常好用的工具,支持13种不同的I/O引擎,包括sync、mmap、libaio、posixaio等等。
fio 官网地址:http://freshmeat.net/projects/fio/
参数:
-filename: 表示测试的文件名称,一般是指要测试的文件夹目录地址
-direct: 测试时绕开机器自带的buffer。
-iodepth: 每一个文件的队列长度
-thread -rw: 测试时类型:read/write/randread/randwrite/randrw
-ioengine:IO引擎
-bs: 单次IO块大小
-size: 测试文件大小
-numjobs:测试的线程数
-runtime: 测试时间
-group_reporting:统计汇总结果
-name: 报告名称
根据以上工具,测试CephFS后得出的结论如下:
(1) 内核态挂载和fuse挂载比较
内核态整体(带宽和时延)要比fuse挂载好50%~100%,但内核态时延抖动较大
(2) 元数据在SSD磁盘与在HDD磁盘的区别
元数据的瓶颈在海量小文件时,会体现出来,相比较SSD的性能是HDD性能的3倍以上。
(3) 单MDS与多MDS的区别
多MDS性能很明显要好于单MDS的性能
(4) Ceph-Fuse与NFS的区别
Ceph-Fuse在横向扩展上有优势,NFS横向扩展需要使用分布式NAS技术,另外NFS的大文件性能要好于CephFS-Fuse
NFS的时延要好于Ceph-Fuse.