Linux内核之blktests简单介绍

blktests

最近遇到了个补丁引起的blktests测试问题,顺便了解了下blktests

blktests是Linux内核块设备和存储堆栈的一个测试框架。它的灵感来自于xfstests文件系统测试框架。

blktests is a test framework for the Linux kernel block layer and storage stack. It is inspired by the xfstests filesystem testing framework. It was originally written by Omar Sandoval and announced in 2017.

简单使用

安装依赖

确保安装相关依赖:

  • bash (>= 4.2)
  • GNU coreutils
  • GNU awk
  • util-linux
  • fio
  • gcc
  • make

有些测试可能要求更多组件:

  • e2fsprogs and xfsprogs
  • multipath-tools (Debian, openSUSE, Arch Linux) or device-mapper-multipath (Fedora)
  • dmsetup (Debian) or device-mapper (Fedora, openSUSE, Arch Linux)
  • rublk (cargo install --version=^0.1 rublk) for ublk test

编译安装

编译安装比较简单,和一般的程序一样,直接make,如需安装就make install,默认安装路径为/usr/local/blktests,如果需要修改安装路径可通过DESTDIRprefix

运行测试

  1. 指定测试的块设备,在config文件里面添加需要测试的块设备列表:
    TEST_DEVS=(/dev/nvme0n1 /dev/sdb)
    #也可以直接使用环境变量: export TEST_DEVS=/dev/nvme0n1p5
  2. 切换为root用户,默认运行所有的测试项:./check,也可以只运行某一项,如:
    ./check block/022

特别注意:这些测试具有潜在的破坏性!!!千万不要将保存有自己资料的设备指定为测试设备!!!

更多测试相关的信息(包括配置及运行测试等)可以看官方源码里的文档:Documentation/running-tests.md

增加新的测试项

这里就不再详述,看参考官方文档。

参考