长期支持版本

    社区创新版本

      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.txtstream_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协议描述的多流功能。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份