本发明涉及数据读取技术领域,更具体的说是涉及一种基于Linux系统小文件预读功能的可靠性测试方法。
背景技术:
Linux系统很重要的一个性能提升点就是它的Pagecache,因为内存比IO快太多了,所以大家都想尽办法来利用这个cache。文件系统也不例外,为了达到高性能,文件读取通常采用预读来预测用户的行为,把用户可能需要的数据预先读取到cache去,达到高性能的目的。
由于预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一。针对此功能的客户有很多,比如车流量检测中车辆识别拍照等,每天都会产生几百万的文件,日积月累,小文件的预读量是海量的,一旦程序崩溃,造成系统发生故障,将会对客户造成难以挽回的损失。
因此,针对小文件预读的功能。需要一种可靠性方法,用来检测该功能的可靠性和系统的稳定性。
技术实现要素:
针对以上问题,本发明的目的在于提供一种基于Linux系统小文件预读功能的可靠性测试方法,通过创建大量的小文件进行长时间的压力读写,并通过监测core目录,来检测文件预读功能的可靠性,在验证该功能的同时,还可验证整个系统的稳定性与可靠性。
本发明为实现上述目的,通过以下技术方案实现:一种基于Linux系统小文件预读功能的可靠性测试方法,包括如下步骤:
步骤1:在存储端修改配置,添加预读功能;
步骤2:重启mds(MetadataServer),重启nfs(NetworkFile System)功能;
步骤3:在客户端配置文件预读开关,并开启文件预读功能;
步骤4:重新挂载客户端;
步骤5:将客户端core文件的数量改为无限制,将core文件转存至/core目录下;
步骤6:预先填充数据,运行性能测试负载工具,写入大量小文件;
步骤7:在压力机上运行性能测试工具,执行读写操作;
步骤8:设置运行时间,并运行脚本;
步骤9:脚本运行结束后查看客户端的core目录和存储端的nfs进程,若core目录下无core文件且nfs进程存在、系统状态正常,则测试成功,文件预读功能正常。
进一步,在客户端配置文件预读开关,并开启文件预读功能之前,先在存储端创建nfs共享目录nfstest1,并将其共享给本地IP用户。
进一步,重新挂载客户端时,挂载点为/mnt/icfs/dir1。
进一步,所述性能测试负载工具为vdbench。
进一步,所述步骤6具体为:预先填充数据,运行性能测试负载工具,写入个六十万个128k的小文件。
进一步,所述步骤7具体为:在压力机上同时运行性能测试工具,对写入的小文件以16个线程,每次i/o以64k大小的数据块进行顺序读和写。
进一步,设置运行时间具体为:写操作运行时间设为3.5-4.5小时,读操作运行时间设为7.5-8.5小时。
进一步,写操作运行时间设为4小时,读操作运行时间设为8小时。
对比现有技术,本发明有益效果在于:本发明提出的一种基于Linux系统小文件预读功能的可靠性测试方法,首先在存储端修改配置,添加预读功能,并将配置同步至其他节点,重启元数据服务器。由于本专利采用nfs网络文件系统挂载,故需重启nfs功能。其次在客户端开启数据预读开关,配置后重新挂载客户端。检测core文件的生成是否收到限制,改为无限制。创建/core目录,并将./目录下所有生成的core文件均放置该目录下。预先填充数据,运行性能测试负载工具vdbench,写入六十万个128k的小文件,在压力机上同时运行性能测试工具,执行读写操作。该脚本可执行24小时以上,查看core目录下是否有core文件,用来检测文件预读功能的可靠性,查看存储端的nfs进程是否存在、系统状态是否正常,用来验证系统的稳定性。
本发明在验证小文件预读功能的同时,可验证整个系统的稳定性与可靠性,通过自动运行脚本实现,减少了工作时间,提高整体的工作效率。由于本发明适用于多种分布式文件存储场景,可用性强。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
附图1是本发明的方法流程图。
具体实施方式
下面结合附图对本发明的具体实施方式做出说明。
如图1所示的一种基于Linux系统小文件预读功能的可靠性测试方法,包括如下步骤:
步骤1:在存储端修改配置,添加预读功能;
步骤2:重启mds(Metadata Server),重启nfs(Network File System)功能;
步骤3:在客户端配置文件预读开关,并开启文件预读功能;
步骤4:重新挂载客户端;
步骤5:将客户端core文件的数量改为无限制,将core文件转存至/core目录下;
步骤6:预先填充数据,运行性能测试负载工具,写入大量小文件;
步骤7:在压力机上运行性能测试工具,执行读写操作;
步骤8:设置运行时间,并运行脚本;
步骤9:脚本运行结束后查看客户端的core目录和存储端的nfs进程,若core目录下无core文件且nfs进程存在、系统状态正常,则测试成功,文件预读功能正常。
在上述基础上,具体的程序实现方法如下:
1前置工作
1.1在存储端添加预读配置。
vi/etc/icfs/icfs.conf
client_file_readahead=true
mds_md_readahead=true
重启mds,重启nfs服务
systemctl restart icfs-mds.target
systemctl restart ganesha
1.2在存储端创建nfs共享目录nfstest1,并将其共享给本地IP用户:100.7.32.165。
mkdir/mnt/icfs/nfstest1
icfs-admin-nfs–create–p/nfstest1–a rw—
icfs-admin-nfs–create–p/nfstest1–host 100.7.32.165–arw-
1.3客户端数据中配置文件预读开关。
vi/etc/icfs/icfs.conf
client_file_readahead=true
配置后挂载客户端,挂载点为/mnt/icfs/dir1。
mkdir/mnt/icfs/dir1
mount–t nfs 100.7.40.173:/nfstest1/mnt/icfs/dir1–o ver=3
将客户端core文件的数量改为无限制,将core文件转存至/core目录下。
ulimit–c unlimited
mv/ll./|core*/core
2脚本的自动化实现
2.1预先填充数据,运行性能测试负载工具vdbench,写入个六十万个128k的小文件。系统定义设置如下:
fsd=fsd1,anchor=/mnt/icfs/dir1,depth=2,width=4,files=40000,size=128k
2.2在压力机上同时运行性能测试工具,对上述写入的小文件以16个线程,每次i/o以64k大小的数据块进行顺序读和写,负载参数设计如下:
fwd=fwd2,fsd=fsd1,operation=write,xfersize=64K,fileio=sequential,fileselect=sequential,threads=16
fwd=fwd3,fsd=fsd1,operation=read,xfersize=64K,fileio=sequential,fileselect=sequential,threads=16
2.3运行时间设定,写设置时间为4小时,读设置时间为8小时,整体脚本运行时间为设置运行参数如下:
rd=rd2,fwd=fwd2,fwdrate=max,format=no,elapsed=14400,interval=10
rd=rd3,fwd=fwd3,fwdrate=max,format=no,elapsed=28800,interval=10
2.4在客户端与存储端查看共享目录,查看nfs以及ftp客户端,同时查看core目录,如果系统运行正常,服务存在且功能正常core目录未产生core文件,则检测文件预读功能正常。
结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所限定的范围。