服务器

版本:25.03

HSAK 工具使用说明

命令行接口

盘信息查询命令

命令格式

shell
libstorage-list [<commands>] [<device>]

参数说明

  • commands: 只有“help”可选,“libstorage-list help”用于显示帮助内容。

  • device: 指定PCI地址,格式如:0000:09:00.0,允许同时多个,中间用空格隔离,如果不设置具体的PCI地址,则命令行列出所有枚举到的设备信息。

注意事项

  • 故障注入功能仅限于开发、调试以及测试场景使用,禁止在用户现网使用,否则会引起业务及安全风险。

  • 在执行本命令时,管理组件(ublock)服务端必须已经启动,用户态IO组件(uio)未启动或已正确启动均可。

  • 对于未被ublock组件和用户态IO组件占用的盘,在本命令执行过程中会被占用,此时如果ublock组件或用户态IO组件尝试获取盘控制权,可能存储设备访问冲突,导致失败。

盘切换驱动命令

命令格式

shell
libstorage-shutdown reset <device> [<device2> ...]

参数说明

  • reset: 用于对指定盘从uio驱动切换到内核态驱动;

  • device: 指定PCI地址,格式如:0000:09:00.0,允许同时多个,中间用空格隔离。

注意事项

  • libstorage-shutdown reset命令用于将盘从用户态uio驱动切换到内核态nvme驱动。

  • 在执行本命令时,管理组件(ublock)服务端必须已经启动,用户态IO组件未启动或已正确启动均可。

  • libstorage-shutdown reset命令为危险动作,请确认在切换nvme设备驱动之前,用户态实例已经停止对nvme设备下发IO,nvme设备上的fd已全部关闭,且访问nvme设备的实例已退出。

获取IO统计数据命令

命令格式

shell
libstorage-iostat [-t <interval>] [-i <count>] [-d <device1,device2,...>]

参数说明

  • -t: 时间间隔,以秒为单位,最小1秒,最大为3600秒。该参数为int型,如果入参值超过int型上限,将被截断成负数或者正数。

  • -i: 收集次数,最小为1,最大为MAX_INT次,如果不设置,默认以时间间隔持续收集。该参数为int型,如果入参超过int型上限,将被截断成负数或者正数。

  • -d:指定块设备名称(eg:nvme0n1,其依赖于/etc/spdk/nvme.conf.in中配置的控制器名称),可以通过本参数收集指定一个或多个设备性能数据,如果不设置本参数,则收集所有识别到的设备性能数据。

注意事项

  • IO统计配置项已使能。

  • 进程已经通过用户态IO组件对所需要查询性能信息的盘下发IO操作。

  • 如果当前环境上没有任何设备被业务进程占用下发IO,则该命令将在提示:You cannot get iostat info for nvme device no deliver io后退出。

  • 在磁盘打开多队列情况下,IO统计工具将该磁盘上多队列的性能数据汇总后统一输出。

  • IO统计工具最多支持8192个磁盘队列的数据记录。

  • IO统计数据输出结果如下:

    Devicer/sw/srKB/swKB/savgrq-szavgqu-szr_awaitw_awaitawaitsvctmutil%poll-n
    设备名称每秒读IO个数每秒写IO个数每秒读IO字节每秒写IO字节平均下发IO大小(字节)磁盘排队的IO深度IO读时延(us)IO写时延(us)读写平均时延(us)单个IO处理时延(us)设备利用率轮询超时次数

盘读写命令

命令格式

shell
libstorage-rw <COMMAND> <device> [OPTIONS...]

参数说明

  1. COMMAND参数

    • read,从设备读取指定的逻辑块到数据缓存区(默认是标准输出)。

    • write,将数据缓存区(默认是标准输入)的数据写入到NVMe设备的指定逻辑块。

    • help,显示该命令行的帮助信息。

  2. device: 指定PCI地址,格式如:0000:09:00.0。

  3. OPTIONS参数

    • --start-block,-s:读写逻辑块的64位首地址(缺省值为0)。

    • --block-count,-c:读写逻辑块的数量(从0开始计数)。

    • --data-size,-z:读写数据的字节数。

    • --namespace-id,-n:设备的namespace id(默认id值是1)。

    • --data,-d:读写用的数据文件(读时保存读出的数据,写时提供写入数据)。

    • --limited-retry,-l:设备控制器进行有限次数的重启来完成设备读写。

    • --force-unit-access,-f:确保指令完成之前从非易失介质中完成读写。

    • --show-command,-v:发送读写命令之前显示指令相关信息。

    • --dry-run,-w:仅显示读写指令相关信息,不进行实际读写操作。

    • --latency,-t:统计命令行端到端读写的时延。

    • --help,-h:显示相关命令的帮助信息。