astream
简介
astream是一款延长磁盘使用寿命的工具。它基于Linux提供的inotify机制进行目录监控,同时配合用户针对应用场景定义的流分配规则,为匹配到的文件在创建时设置流信息,而后通过内核透传流信息至已使能多流特性的NVMe SSD磁盘,最终使得文件的存储能够根据流信息的标识进行更优的分类存储,降低磁盘垃圾回收的工作量,从而降低磁盘的写放大水平,最终达到延长磁盘使用寿命。专注于具有明显具有相同或相似生命周期的workload特征的数据库场景应用,如MySQL。
安装
配置openEuler 22.09 LTS的yum源,直接使用yum命令安装。
yum install astream
使用方法
在介绍astream的使用方法前,首先介绍astream启动所需要的流分配规则文件。
流分配规则文件与完整示例
1.介绍
流分配规则文件是用户根据自身对workload特征的理解,针对其中具有相同或相似生命周期的一类数据定义的流信息规则集合的文件。
在一个流分配规则文件中,每一行表示定义的一条规则,每条规则示例如下: ^/data/mysql/data/undo 4
。它表示为路径/data/mysql/data
下的所有以undo
为前缀的文件都分配流信息4。
2.完整示例
如下示例为一个具体的MySQL的流分配规则文件。
^/data/mysql/data/ib_logfile 2
^/data/mysql/data/ibdata1$ 3
^/data/mysql/data/undo 4
^/data/mysql/data/mysql-bin 5
该规则文件定义了如下四条规则:
以
/data/mysql/data/ib_logfile
为前缀的文件绝对路径对应的文件配置流信息2。以
/data/mysql/data/ibdata1
为前缀的文件绝对路径对应的文件配置流信息3。以
/data/mysql/data/undo
为前缀的文件绝对路径对应的文件配置流信息4。以
/data/mysql/data/mysql-bin
为前缀的文件绝对路径对应的文件配置流信息5。
使用说明
启动astream守护进程
假设规则文件stream_rule1.txt
和stream_rule2.txt
位于/home
下,则:
监控单目录
astream -i /data/mysql/data -r /home/stream_rule1.txt
监控多目录
本工具支持同时监控多个目录,即每个监控目录都需要传入与之匹配的流分配规则文件。
如下示例同时监控两个目录:
astream -i /data/mysql-1/data /data/mysql-2/data -r /home/stream_rule1.txt /home/stream_rule2.txt
上述命令中监控以下两个目录:
- 目录1
/data/mysql-1/data
,对应的流分配规则文件为/home/stream_rule1.txt
。 - 目录2
/data/mysql-2/data
,对应的流分配规则文件为/home/stream_rule2.txt
。
命令行参数说明
astream [options]
选项 | 选项含义 | 示例 |
---|---|---|
-h | 显示astream使用说明 | astream -h |
-l | 设置astream监控过程中的日志显示级别, debug(1), info(2), warn(3), error(4) | astream -i /data/mysql/data -r /home/rule.txt -l 2 |
-i | 指定当前需要监控的目录,多个目录可以以空格间隔输入 | 该参数配合-r使用, 示例见下 |
-r | 指定监控目录对应的流分配规则文件,传入的个数取决于-i,互相对应 | astream -i /data/mysql/data -r /home/rule.txt |
stop | 正常停止astream守护进程 | astream stop |
约束限制
使用astream存在一些约束限制:
功能约束
- 仅支持实现了NVMe协议的多流(multi-stream)特性的NVMe SSD。
- 仅支持分配5个流,其约束受内核定义的常量
BLK_MAX_WRITE_HINTS
所约束,以及NVMe SSD支持的最大流个数有关。
操作约束
- 提供的命令行以root权限运行astream守护进程,在测试过程中,常驻系统。
- 待测磁盘的IO压力需要足够大,且磁盘空间占用较高,因此写放大恶化越明显,使用本工具的多流收益也就越明显。
注意事项
- 在启动astream守护进程后,不能删除受监控的目录然后创建相同目录操作,如果删除,则需要重新启动astream。
- 规则文件中支持正则匹配一组文件,用户需具备一定的正则匹配知识。
- 测试时的NVMe SSD磁盘实现了基于NVMe 1.3协议描述的多流功能。