Linux 硬盘测试脚本

Linux 硬盘测试脚本

IT, SeedBox

目前我们可以在网络中轻松找到很多不同的 Linux 基准测试脚本,包括 CPU 运算能力,网络吞吐能力,图像处理能力等。对于一台做种服务器来说,通常比较重要的部分是硬盘 IO 性能,当硬盘性能不足的时候,服务器往往会出现卡顿,CPU 占用异常等现象。那么如何测试硬盘 IO?网络上大多数的脚本都是使用 dd 来测试硬盘连续写入能力,这种测试只能测定单线程单队列深度的连续 IO 能力,因此往往只能片面的反应硬盘的 IO 性能。特别是对于 BT 软件,通常在运行过程通常并不是连续写入,因此磁盘的 IOPS 性能也应当是一个重要的考察点。在 Windows 平台我们通常直接使用一些现成的跑分软件,例如 ATTO, HD Tune Pro, AS SSD Benchmark, CrystalDiskMark。但是在 Linux 上我并没有找到一个容易部署,容易使用的测试脚本。

这周末我抽空利用 fio 作为测试软件,python 对报告进行处理,编写了一个简单的测试脚本。项目链接

脚本的核心是使用 fio 生成测试项目的报告,以 json 输出并且使用 python 自带的库解析,再输出为一个简单的命令行表格。脚本本身的依赖只有 python, python-prettytable, fio,而这三个软件包在常见平台上都可以通过系统自带软件源直接安装,基本做到了容易部署,同时我为这个 python 脚本添加了一个自动安装软件依赖的bash 脚本,这样用户就可以简单的使用一条指令得到测试结果。

fio 测试使用的4个项目参考于 CrystalDiskMark,即 32 队列深度,单线程的顺序读写,4K随机读写,单线程单队列深度的顺序读写,4K随机读写,这几个指标基本可以简单反映出硬盘/磁盘阵列的性能,同时也能正确反映出 SSD 这类拥有较高 IOPS 水平的磁盘性能。

该脚本还支持一些附加参数:

仅测试一个项目 (e.g. 4K Q32T1),多个测试可以使用 -t 1 2 的形式表示:

bash <(wget -qO- https://github.com/amefs/fio-bench/raw/master/fio-bench_zh-cn.sh -o /dev/null) -t 2

测试更大的数据块 (耗尽高速缓存)

bash <(wget -qO- https://github.com/amefs/fio-bench/raw/master/fio-bench_zh-cn.sh -o /dev/null) -s 4g

在自定义路径测试 (默认在当前文件夹中生成测试文件),有时候运行脚本的位置正好没有足够空间,所以可以手动指定一个用于产生测试数据的文件。

bash <(wget -qO- https://github.com/amefs/fio-bench/raw/master/fio-bench_zh-cn.sh -o /dev/null) -f /tmp/test.bin

除去直接运行 bash 脚本以外,你也可以单独下载 python 脚本运行,在安装好依赖以后,运行 python 脚本无需 root 权限。

参考资料:

该项目参考自 fio.py

Amefs, EFS, IT, Linux
上一篇文章
Debian 软件包制作小记 (3)
下一篇文章
轻量级单用户 Seedbox 脚本 – QuickBox Lite

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Fill out this field
Fill out this field
请输入有效的电子邮箱地址。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

keyboard_arrow_up