如何做文件系统testing?

我打算testing一个文件系统。 我应该考虑做什么 或如何完成相同的。 是否有任何工具来testing文件系统或任何可靠的参考?

目的:计划从ext3转移到EFS。

我的第一个答案也将是bonnie ++,一个快速search也会揭示Iozone3 。 两者都以Debian软件包的forms提供。 如果你做了简单的testing(cp,mv,rm),你应该考虑在每次testing之前用echo 1 > /proc/sys/vm/drop_caches清除内核保存的caching,否则可能会导致不能代表文件系统本身。

这里有两个选项,我发现它们对于文件系统基准testing非常有用。

1) 邮戳 – 这是一个模拟真实世界使用繁忙邮件服务器访问的文件系统的基准。

下载地址: http : //www.freshports.org/benchmarks/postmark/

testing时,确保你已经比较了不同的ext3日志logging选项 – 它们在性能方面可能有很大的不同(回写日志在我的Postmark实验中给出了最好的结果)。

2) Filebench – 另一个伟大的基准,给你更多的灵活性。 如果你有一个特殊的理由来考虑从ext3的转移,你可能会喜欢filebench – 它有许多不同的工作量,所以你只能专注于你感兴趣的性能瓶颈(文件创build/删除操作或顺序读/写vs随机的,给你几个例子)。

你必须谷歌,因为我不允许任何更多的超链接 – 项目本身托pipe在SourceForge,并在OpenSolaris.org网站上find一个非常好的快速入门指南。

最后一点:确保将负载分散到尽可能多的磁盘(主轴)上,以获得最准确的结果。 分配几个专门用于基准testing的磁盘也是有意义的,并且在每次运行基准testing之前新增它们。

不要只testing速度,也要考虑可靠性。 尝试,例如,closures繁忙的文件系统上的磁盘,看看剩下的是什么。

可用的修复和恢复工具的质量也很重要,很难单独进行testing。 块结构可以例如禁止尝试以原始模式从不可修复的文件系统中挽回数据的工具。

有关在非常严酷的殴打中testing文件系统的更多提示,您可能会感兴趣的是ZFS人员做了什么: One Two

我们使用Rugg来testing我们服务器的文件系统。 它基于Python,易于使用。 它通过创build一个大文件进行细分,然后按顺序或并行执行各种操作。

编辑:这是一个示例脚本,将重复testing/数据(一个分区),直到脚本死亡:

 #!/bin/bash ( while true do cd /data rm -rf * rugg 'zone 97%, subdivide 16 | blank | ensure blank | fill same text, ensure same' done ) | tee /tmp/rugg.log exit 0 

多一点:

  • fio类似于上面提到的filebench:“fio是一个I / O工具,用于基准和压力/硬件validation,它支持13种不同types的I / O引擎(sync,mmap,libaio,posixaio ,SG v3,splice,null,network,syslet,guasi,solarisaio等),I / O优先级(对于更新的Linux内核),I / O,分叉或线程作业等等。设备以及文件,fio以简单易懂的文本格式接受工作描述,包括几个示例工作文件,fio显示各种I / O性能信息,支持Linux,FreeBSD和OpenSolaris。
  • 文件系统练习器(fsx)最初来自苹果公司,但现在有各种操作系统的变种。

虽然Bonnie ++主要关注基准testing性能,但确实可以在文件系统上运行。 它执行一些testing,每个文件系统给出不同的结果。 我怀疑你也可能对与EFS相关的性能变化感兴趣,所以你可能想至less尝试一下你的testing。