命令行接口
盘信息查询命令
命令格式
libstorage-list [<commands>] [<device>]
参数说明
commands: 只有“help”可选,“libstorage-list help”用于显示帮助内容。
device: 指定PCI地址,格式如:0000:09:00.0,允许同时多个,中间用空格隔离,如果不设置具体的PCI地址,则命令行列出所有枚举到的设备信息。
注意事项
故障注入功能仅限于开发、调试以及测试场景使用,禁止在用户现网使用,否则会引起业务及安全风险。
在执行本命令时,管理组件(ublock)服务端必须已经启动,用户态IO组件(uio)未启动或已正确启动均可。
对于未被ublock组件和用户态IO组件占用的盘,在本命令执行过程中会被占用,此时如果ublock组件或用户态IO组件尝试获取盘控制权,可能存储设备访问冲突,导致失败。
盘切换驱动命令
命令格式
libstorage-shutdown reset <device> [<device2> ...]
参数说明
reset: 用于对指定盘从uio驱动切换到内核态驱动;
device: 指定PCI地址,格式如:0000:09:00.0,允许同时多个,中间用空格隔离。
注意事项
libstorage-shutdown reset命令用于将盘从用户态uio驱动切换到内核态nvme驱动。
在执行本命令时,管理组件(ublock)服务端必须已经启动,用户态IO组件未启动或已正确启动均可。
libstoage-shutdown reset命令为危险动作,请确认在切换nvme设备驱动之前,用户态实例已经停止对nvme设备下发IO,nvme设备上的fd已全部关闭,且访问nvme设备的实例已退出。
获取IO统计数据命令
命令格式
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统计数据输出结果如下:
Device r/s w/s rKB/s wKB/s avgrq-sz avgqu-sz r_await w_await await svctm util% poll-n 设备名称 每秒读IO个数 每秒写IO个数 每秒读IO字节 每秒写IO字节 平均下发IO大小(字节) 磁盘排队的IO深度 IO读时延(us) IO写时延(us) 读写平均时延(us) 单个IO处理时延(us) 设备利用率 轮询超时次数
盘读写命令
命令格式
libstorage-rw <COMMAND> <device> [OPTIONS...]
参数说明
- COMMAND参数
read,从设备读取指定的逻辑块到数据缓存区(默认是标准输出)。
write,将数据缓存区(默认是标准输入)的数据写入到NVMe设备的指定逻辑块。
help,显示该命令行的帮助信息。
device: 指定PCI地址,格式如:0000:09:00.0。
OPTIONS参数
--start-block,-s:读写逻辑块的64位首地址(默认值为0)。
--block-count,-c:读写逻辑块的数量(从0开始计数)。
--data-size,-z:读写数据的字节数。
--namespae-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:显示相关命令的帮助信息。