xfstests-bld实战

使用 xfstests-bld 运行文件系统测试

总结

xfstests-bld是一个支持使用xfstests执行测试的工具。

  • 运行冒烟测试
  • 启动命令行管理程序
  • 对要执行的测试的更改
  • 更改测试文件系统
  • 更改测试文件系统参数

背景

xfstests是用于文件系统回归测试的测试套件,支持文件系统包括:XFS,EXT2,EXT4,CIFS,BTRFS,F2FS,REISERFS,GFS,JFS 、UDF、NFS 和 TMPFS,许多 Linux 文件系统的维护者在将它们改动合并到主分支之前会测试 xfstests。
另一方面,为了执行 xfstests 的完整测试,需要许多作为测试实现环境的要求。 换句话说,由于需要的内核配置和软件包很多,所以很难从头开始构建 xfstests 的测试环境,xfstests-bld是解决此类问题的工具,它提供了构建XFStests和构建测试环境所需的文件。
此外,在那里构建的测试环境可以从 xfstests-bld 在以下环境中执行。

  • 在具有 QEMU/KVM 的虚拟机上运行
  • 谷歌 在具有计算引擎的实例上运行
  • 使用 chroot 在安卓设备上运行

因此,在本文中,将使用 xfstests-bld 在 Qemu/kvm 上的虚拟机 (amd64) 上运行 xfstests 的过程。

在这里插入图片描述

实验环境

本文中使用的虚拟机配置如下,因为Vmware wokestation支持嵌虚拟机化,所以Host可以选用虚拟机。

环境总结
操作系统ubuntu 20.04.04
内核5.4.0-26-generic
QEMUQEMU emulator version 4.2.0 (Debian 1:4.2-3ubuntu6.3)

环境检查

在安装 KVM 之前,需要验证开发环境是否支持KVM虚拟化。

  1. 确定CPU是否支持虚拟化。

    rlk@rlk:Desktop$ egrep -c '(vmx|svm)' /proc/cpuinfo
    8
    
  2. 确定系统是否可以使用KVM加速。 (命令包含在包中)kvm-ok``cpu-checker

     leava@ubuntu:~/work$ sudo kvm-ok
     INFO: /dev/kvm exists
     KVM acceleration can be used
    

当前可以确定KVM可以在这个实验环境中使用,因此将在下一章和以后安装必要的软件包。
如果无法使用,则需要检查 BIOS 设置和内核相关配置。

QEMU/KVM 安装

  1. 安装 KVM 相关软件包

     leava@ubuntu:~/work$ sudo apt update
     leava@ubuntu:~/work$ sudo apt install qemu-kvm
     leava@ubuntu:~/work$ sudo apt install libvirt-daemon-system libvirt-clients bridge-utils
     leava@ubuntu:~/work$ sudo apt install virt-manager
    
  2. 允许普通用户可以运行虚拟机,请将其添加到组中libvirt kvm

     leava@ubuntu:~/work$ sudo adduser `whoami` libvirt
     leava@ubuntu:~/work$ sudo adduser `whoami` kvm  
    
  3. 检查安装是否正确

     leava@ubuntu:~/work$ virsh list --all
      Id   Name   State
     --------------------
    
  4. 还要检查libvertd的状态(如果没有,需要启动libvirtdactive``sudo systemctl enable --now libvirtd

     leava@ubuntu:~/work$ sudo systemctl status libvirtd
     ● libvirtd.service - Virtualization daemon
          Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
          Active: active (running) since Wed 2022-02-23 13:36:41 JST; 10min ago
     TriggeredBy: ● libvirtd.socket
                  ● libvirtd-ro.socket
                  ● libvirtd-admin.socket
            Docs: man:libvirtd(8)
                  https://libvirt.org
        Main PID: 1128 (libvirtd)
           Tasks: 19 (limit: 32768)
          Memory: 30.0M
          CGroup: /system.slice/libvirtd.service
                  ├─1128 /usr/sbin/libvirtd
                  ├─1403 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
                  └─1404 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
    

下载要使用的文件

下载xfstests-bld 源代码和 rootfs_img
xfstests-bld提供了一种为测试环境创建rootfs的方法。 详情参考 building-rootfs.md

注意:以下步骤可能会因为 xfstests-bld 的版本而有所差异。

本次将使用维护者准备的rootfs(amd64 / arm64 / i386)中的amd64。

  1. 下载 xfstests-bld 源代码

     rlk@rlk:curtis$ git clone https://git.kernel.org/pub/scm/fs/ext2/xfstests-bld.git fstests
    
  2. 更改工作路径

    rlk@rlk:curtis$ cd fstests/run-fstests
    
  3. 下载 xfstests 维护者准备的 rootfs

    rlk@rlk:run-fstests$ wget -O test-appliance/root_fs.img https://www.kernel.org/pub/linux/kernel/people/tytso/kvm-xfstests/root_fs.img.i386
    
  4. 更改工作路径

    run-fstests:~/work/fstests/kvm-xfstests$ cd ../../
    

为虚拟机准备 Linux 内核

准备要在 QEMU/KVM 上运行的内核。
我的理解是如果要测试自己写的文件系统的稳定性,需要将文件系统编译进入bzImage,并且要将对应mkfs.xxx封装到root_fs.img中,这里涉及BusyBox的相关操作(需要自己去编译rootfs镜像)。
xfstests-bld 提供了一个脚本来为 xfstests 测试环境生成内核配置。

本文使用脚本生成的配置构建内核版本为 5.15.1

  1. 下载linux内核源代码 repo或者直接从github下载对应内核版本的zip包。

      rlk@rlk:curtis$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
    
  2. 更改路径

      rlk@rlk:curtis:~/work$ cd linux
    
  3. checkout v5.15

      rlk@rlk:linux$ git checkout refs/tags/v5.15.1
    
  4. 基于kvm-xfstests创建内核编译配置文件.config

    rlk@rlk:linux-5.10.1$ ../fstests/run-fstests/kvm-xfstests install-kconfig
      HOSTCC  scripts/basic/fixdep
      HOSTCC  scripts/kconfig/conf.o
      HOSTCC  scripts/kconfig/confdata.o
      HOSTCC  scripts/kconfig/expr.o
      LEX     scripts/kconfig/lexer.lex.c
      YACC    scripts/kconfig/parser.tab.[ch]
      HOSTCC  scripts/kconfig/lexer.lex.o
      HOSTCC  scripts/kconfig/parser.tab.o
      HOSTCC  scripts/kconfig/preprocess.o
      HOSTCC  scripts/kconfig/symbol.o
      HOSTCC  scripts/kconfig/util.o
      HOSTLD  scripts/kconfig/conf
    #
    # configuration written to .config
    #
    
  5. 编译内核,产生bzImage

    rlk@rlk:linux-5.10.1$ make -j$(nproc) bzImage
      ........
      MKPIGGY arch/x86/boot/compressed/piggy.S
      AS      arch/x86/boot/compressed/piggy.o
      LD      arch/x86/boot/compressed/vmlinux
      ZOFFSET arch/x86/boot/zoffset.h
      OBJCOPY arch/x86/boot/vmlinux.bin
      AS      arch/x86/boot/header.o
      LD      arch/x86/boot/setup.elf
      OBJCOPY arch/x86/boot/setup.bin
      BUILD   arch/x86/boot/bzImage
    Kernel: arch/x86/boot/bzImage is ready  (#1)
    

xfstests-bld 设置

当将 Qemu/kvmxfstests-bld 一起使用时,可以通过文件进行设置。
必须设置的最小参数是本地时区和内核路径。config.kvm

  1. 更改路径

      rlk@rlk:curtis:~/work$ cd fstests/kvm-xfstests
    
  2. 配置文件

    rlk@rlk:run-fstests$ echo "TZ=Shanghai" >> config.kvm 
    rlk@rlk:run-fstests$ echo "KERNEL=/home/rlk/curtis/linux-5.10.1/arch/x86/boot/bzImage" >> config.kvm
    
  3. 更改路径

     leava@ubuntu:~/work/fstests/kvm-xfstests$ cd ../../
    

安装 xfstests-bld

为 xfstests-bld 生成一个脚本,并将其移动/usr/bin目录。

  1. 更改路径

    rlk@rlk:curtis$ cd fstests
    
  2. 为 QEMU/KVM 构建 xfstests-bld

    rlk@rlk:fstests$ make kvm-xfstests
    sed -e "s;@DIR@;$(pwd);" < run-fstests/kvm-xfstests.sh.in > kvm-xfstests
    chmod +x kvm-xfstests
    
  3. 安装 xfstests-bld for QEMU/KVM

    rlk@rlk:fstests$ sudo cp kvm-xfstests /usr/bin/
    [sudo] password for rlk:
    

运行 xfstests-bld

要运行xfstestes相关测试,运行 kvm-xfstests 脚本,可以在kvm-xfstests脚本中设置各种参数。

在这里,以下描述描述了如何使用它。kvm-xfstests

    Usage: kvm-xfstests [<OPTIONS>] smoke|full
    Usage: kvm-xfstests [<OPTIONS>] <test> ...
    Usage: kvm-xfstests [<OPTIONS>] -g <group> ...
    Usage: kvm-xfstests [<OPTIONS>] shell|maint
    Usage: kvm-xfstests [<OPTIONS>] syz <repro>

    Common options are:
            -a              - Disable auto-exclude; run all tests
            -c config       - Specify a file system configuration
            -C count        - Run the specified tests multiple times
            -I image        - Use this test appliance image
            -m mountopts    - Append mount options to fs config
            -n nr_cpus      - Specify the number of cpu's
            -numa num       - Ask KVM to create <num> NUMA nodes
            -N              - Enable networking (requires root)
            -o opts         - Extra kernel command line options
            -O opts         - Extra options for test runner
            -r ram          - Specify memory to be used in megabytes
            -x group        - Exclude group of tests from running
            -X test         - Exclude test from running
            --kernel file   - Boot the specified kernel
            --initrd initrd - Boot with the specified initrd
            --no-log        - Don't save the log file for this run
            --no-action     - Print the command to start the VM

但是,上述选项并不是全部。 (参见 kvm-xfstests/util/parse_cli

要终止已启动的 VM,必须强制结束ps -aux | grep qemu | grep -v qemu | awk '{print $2}' | xargs kill,测试结果存储在下面的目录中fstest/logs

  • 运行冒烟测试
  • 启动命令行管理程序
  • 对要执行的测试的更改
  • 更改测试文件系统
  • 更改测试文件系统参数
运行冒烟测试
# kvm-xfstests smoke`您可以执行冒烟测试 ()。`-g quick
rlk@rlk:curtis:~/work$ kvm-xfstests smoke
MDLINE: "smoke"
KERNEL: kernel	5.10.1-xfstests #1 SMP Tue Feb 21 07:26:04 CST 2023 x86_64
FSTESTVER: blktests	4e07b0c (Fri, 15 Jul 2022 14:40:03 +0900)
FSTESTVER: fio		fio-3.31 (Tue, 9 Aug 2022 14:41:25 -0600)
FSTESTVER: fsverity	v1.5 (Sun, 6 Feb 2022 10:59:13 -0800)
FSTESTVER: ima-evm-utils	v1.3.2 (Wed, 28 Oct 2020 13:18:08 -0400)
FSTESTVER: nvme-cli	v1.16 (Thu, 11 Nov 2021 13:09:06 -0800)
FSTESTVER: quota		v4.05-43-gd2256ac (Fri, 17 Sep 2021 14:04:16 +0200)
FSTESTVER: util-linux	v2.38.1 (Thu, 4 Aug 2022 11:06:21 +0200)
FSTESTVER: xfsprogs	v5.19.0 (Fri, 12 Aug 2022 13:45:01 -0500)
FSTESTVER: xfstests	v2022.08.21-8-g289f50f8 (Sun, 21 Aug 2022 15:21:34 -0400)
FSTESTVER: xfstests-bld	bb566bcf (Wed, 24 Aug 2022 23:07:24 -0400)
FSTESTVER: zz_build-distro	bullseye
FSTESTCFG: "4k"
FSTESTSET: "-g quick"
FSTESTEXC: ""
FSTESTOPT: "aex"
MNTOPTS: ""
CPUS: "2"
MEM: "1978.1"
               total        used        free      shared  buff/cache   available
Mem:            1978          67        1835           0          75        1877
Swap:              0           0           0
[    6.109619] NFSD: Using UMH upcall client tracking operations.
BEGIN TEST 4k (597 tests): Ext4 4k block Mon Feb 20 23:37:07 UTC 2023
DEVICE: /dev/vdb
EXT_MKFS_OPTIONS: -b 4096
EXT_MOUNT_OPTIONS: -o block_validity
FSTYP         -- ext4
PLATFORM      -- Linux/x86_64 kvm-xfstests 5.10.1-xfstests #1 SMP Tue Feb 21 07:26:04 CST 2023
MKFS_OPTIONS  -- -F -q -b 4096 /dev/vdc
MOUNT_OPTIONS -- -o acl,user_xattr -o block_validity /dev/vdc /vdc

ext4/001        [23:37:09][   14.619461] run fstests ext4/001 at 2023-02-20 23:37:09
 [23:37:10] 1s
ext4/002        [23:37:10][   15.126939] run fstests ext4/002 at 2023-02-20 23:37:10

......
# 从日志来看跑出了ext4文件系统故障
[  102.885910] ------------[ cut here ]------------
[  102.909336] kernel BUG at fs/ext4/mballoc.c:3568!
[  102.948235] invalid opcode: 0000 [#1] SMP NOPTI
[  102.949298] CPU: 0 PID: 58228 Comm: xfs_io Not tainted 5.10.1-xfstests #1
[  102.951400] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1 04/01/2014
[  102.965550] RIP: 0010:ext4_mb_normalize_request.constprop.49+0x4d9/0x570
[  102.967456] Code: 00 00 e8 6a 0e 57 00 48 83 c4 18 e9 c2 fc ff ff 48 8b 04 24 8b 50 10 31 c0 e9 88 fc ff ff 0f 0b bb 00 00 01 00 e9 bc fc ff ff <0f> 0b 0f 0b
[  102.972336] RSP: 0018:ffffc900031d3978 EFLAGS: 00010246
[  102.973638] RAX: 0000000000000000 RBX: 0000000000001500 RCX: 0000000000001500
[  102.975494] RDX: 0000000000001500 RSI: 0000000000000000 RDI: 0000000000000001
[  102.977178] RBP: ffff888044951eb0 R08: ffff888008852800 R09: 0000000000000800
[  102.979555] R10: 0000000000660000 R11: ffff888044951c30 R12: 0000000000001500
[  102.981400] R13: ffff888004f0d780 R14: ffff888044951eb0 R15: ffff888004f0d780
[  102.984582] FS:  00007fafb1217740(0000) GS:ffff88807dc00000(0000) knlGS:0000000000000000
[  102.986612] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  102.988185] CR2: 000055b1c0430f88 CR3: 000000000732a002 CR4: 0000000000770ef0
[  103.010584] PKRU: 55555554
[  103.011966] Call Trace:
[  103.012894]  ext4_mb_new_blocks+0x867/0x1190
[  103.015260]  ? __read_extent_tree_block+0xe1/0x150
[  103.020965]  ext4_ext_map_blocks+0x72e/0xea0
[  103.021966]  ext4_map_blocks+0x39e/0x660
[  103.022892]  _ext4_get_block+0x72/0x100
[  103.023799]  ext4_block_write_begin+0x14b/0x4d0
[  103.024866]  ? _ext4_get_block+0x100/0x100
[  103.025833]  ? __ext4_journal_start_sb+0x100/0x120
[  103.027635]  ext4_write_begin+0x186/0x570
[  103.036311]  generic_perform_write+0xb6/0x1d0
[  103.037479]  ext4_buffered_write_iter+0xaf/0x140
[  103.038688]  ext4_file_write_iter+0x6e/0x680
[  103.039730]  ? __mod_memcg_lruvec_state+0x1f/0x100
[  103.040965]  new_sync_write+0x11f/0x1b0
[  103.042415]  vfs_write+0x238/0x290
[  103.044227]  ksys_pwrite64+0x71/0x90
[  103.045031]  do_syscall_64+0x33/0x40
[  103.045909]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[  103.047135] RIP: 0033:0x7fafb13f29c7
[  103.048003] Code: 08 89 3c 24 48 89 4c 24 18 e8 55 f3 ff ff 4c 8b 54 24 18 48 8b 54 24 10 41 89 c0 48 8b 74 24 08 8b 3c 24 b8 12 00 00 00 0f 05 <48> 3d 00 fb
[  103.052298] RSP: 002b:00007ffc3cf7eda0 EFLAGS: 00000293 ORIG_RAX: 0000000000000012
[  103.054052] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fafb13f29c7
[  103.055709] RDX: 0000000000001000 RSI: 000055b1c042f000 RDI: 0000000000000003
[  103.057368] RBP: 00000000ffffffff R08: 0000000000000000 R09: 00007ffc3cff3000
[  103.060638] R10: 0000000000570000 R11: 0000000000000293 R12: 0000000000570000
[  103.062293] R13: 0000000000010000 R14: 0000000000000000 R15: 0000000000000000
[  103.064059] ---[ end trace dc1f08c88a276764 ]---
[  103.065297] RIP: 0010:ext4_mb_normalize_request.constprop.49+0x4d9/0x570
[  103.066875] Code: 00 00 e8 6a 0e 57 00 48 83 c4 18 e9 c2 fc ff ff 48 8b 04 24 8b 50 10 31 c0 e9 88 fc ff ff 0f 0b bb 00 00 01 00 e9 bc fc ff ff <0f> 0b 0f 0b
[  103.071784] RSP: 0018:ffffc900031d3978 EFLAGS: 00010246
[  103.073249] RAX: 0000000000000000 RBX: 0000000000001500 RCX: 0000000000001500
[  103.077266] RDX: 0000000000001500 RSI: 0000000000000000 RDI: 0000000000000001
[  103.107842] RBP: ffff888044951eb0 R08: ffff888008852800 R09: 0000000000000800
[  103.122333] R10: 0000000000660000 R11: ffff888044951c30 R12: 0000000000001500
[  103.124972] R13: ffff888004f0d780 R14: ffff888044951eb0 R15: ffff888004f0d780
[  103.127282] FS:  00007fafb1217740(0000) GS:ffff88807dc00000(0000) knlGS:0000000000000000
[  103.129252] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  103.130745] CR2: 000055b1c0430f88 CR3: 000000000732a002 CR4: 0000000000770ef0
[  103.132450] PKRU: 55555554

测试结束后,虚拟机将自动退出。

启动命令行管理程序

kvm-xfstests shell您可以使用 登录到虚拟机。

    leava@ubuntu:~/work/$ kvm-xfstests shell

    Debian GNU/Linux 11 kvm-xfstests ttyS0

    kvm-xfstests login: root (automatic login)

    Linux kvm-xfstests 5.15.0-xfstests #456 SMP Wed Feb 23 19:12:12 JST 2022 x86_64

    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Thu Feb 24 23:56:29 JST 2022 on ttyS1
    COLUMNS=238
    LINES=58
    root@kvm-xfstests:~# 

请注意,当虚拟机终止时,将丢弃此环境中更新的内容。
因此,如果要更新 rootfs,请运行。kvm-xfstestsmaint

若要从命令行管理程序运行测试,请运行它。/root/runtest.sh

    root@kvm-xfstests:~# /root/runtests.sh 
    CMDLINE: ""
    KERNEL: kernel  5.15.0-xfstests #456 SMP Wed Feb 23 19:12:12 JST 2022 x86_64
    FSTESTVER: blktests     3be7849 (Tue, 19 Oct 2021 12:22:17 -0700)
    FSTESTVER: e2fsprogs    v1.46.4-27-g6b7a6e4a (Thu, 4 Nov 2021 20:29:19 -0400)
    FSTESTVER: fio          fio-3.29 (Sat, 18 Dec 2021 07:09:32 -0700)
    FSTESTVER: fsverity     v1.4-4-gddc6bc9 (Wed, 22 Sep 2021 11:55:11 -0700)
    FSTESTVER: ima-evm-utils        v1.3.2 (Wed, 28 Oct 2020 13:18:08 -0400)
    FSTESTVER: nvme-cli     v1.16 (Thu, 11 Nov 2021 13:09:06 -0800)
    FSTESTVER: quota                v4.05-43-gd2256ac (Fri, 17 Sep 2021 14:04:16 +0200)
    FSTESTVER: util-linux   v2.37.2 (Mon, 16 Aug 2021 15:23:50 +0200)
    FSTESTVER: xfsprogs     v5.13.0 (Fri, 20 Aug 2021 12:03:57 -0400)
    FSTESTVER: xfstests     linux-v3.8-3438-gf0a05db9 (Sun, 9 Jan 2022 18:58:11 -0500)
    FSTESTVER: xfstests-bld 8b681c94 (Sat, 8 Jan 2022 22:20:42 -0500)
    FSTESTVER: zz_build-distro      bullseye
    FSTESTCFG: "4k"
    FSTESTSET: "generic/001"
    FSTESTEXC: ""
    FSTESTOPT: "aex"
    MNTOPTS: ""
    CPUS: "2"
    MEM: "1958.76"
                   total        used        free      shared  buff/cache   available
    Mem:            1958          82        1775           0          99        1843
    Swap:              0           0           0

此时,参数已设置。
通过设置这些环境变量,,可以更改 xfstests 的测试环境。/root/test-env

在此环境中,以下端口 (TCP) 可用于调试目的:

  • 远程登录: 7500, 7501, 7502
  • QEMU: 7498

例如,Host可以使用 gdb 访问它。

    leava@ubuntu:~/work$ gdb linux/vmlinux
    (gdb) target remote :7499
    Remote debugging using :7499
    0xffffffff81dcbce0 in default_idle () at ./arch/x86/include/asm/irqflags.h:51
    51              asm volatile("sti; hlt": : :"memory");
更改要执行的测试用例

xfsstests-bld和xfstests一样,只允许执行特定的测试。
例如,如果要执行测试,可以按如下方式执行。generic/001

    leava@ubuntu:~/work$ kvm-xfstests generic/001
    CMDLINE: "generic/001"
    KERNEL: kernel  5.15.0-xfstests #456 SMP Wed Feb 23 19:12:12 JST 2022 x86_64
    FSTESTVER: blktests     3be7849 (Tue, 19 Oct 2021 12:22:17 -0700)
    FSTESTVER: e2fsprogs    v1.46.4-27-g6b7a6e4a (Thu, 4 Nov 2021 20:29:19 -0400)
    FSTESTVER: fio          fio-3.29 (Sat, 18 Dec 2021 07:09:32 -0700)
    FSTESTVER: fsverity     v1.4-4-gddc6bc9 (Wed, 22 Sep 2021 11:55:11 -0700)
    FSTESTVER: ima-evm-utils        v1.3.2 (Wed, 28 Oct 2020 13:18:08 -0400)
    FSTESTVER: nvme-cli     v1.16 (Thu, 11 Nov 2021 13:09:06 -0800)
    FSTESTVER: quota                v4.05-43-gd2256ac (Fri, 17 Sep 2021 14:04:16 +0200)
    FSTESTVER: util-linux   v2.37.2 (Mon, 16 Aug 2021 15:23:50 +0200)
    FSTESTVER: xfsprogs     v5.13.0 (Fri, 20 Aug 2021 12:03:57 -0400)
    FSTESTVER: xfstests     linux-v3.8-3438-gf0a05db9 (Sun, 9 Jan 2022 18:58:11 -0500)
    FSTESTVER: xfstests-bld 8b681c94 (Sat, 8 Jan 2022 22:20:42 -0500)
    FSTESTVER: zz_build-distro      bullseye
    FSTESTCFG: "all"
    FSTESTSET: "generic/001"
    FSTESTEXC: ""
    FSTESTOPT: "aex"
    MNTOPTS: ""
    CPUS: "2"
    MEM: "1958.76"
                   total        used        free      shared  buff/cache   available
    Mem:            1958          80        1782           0          95        1845
    Swap:              0           0           0

此外,与 xfstests 一样,也可以按组指定测试。 例如,如果要执行属于组的测试,可以按如下方式执行。rw

    leava@ubuntu:~/work$ kvm-xfstests -g rw
    CMDLINE: "-g rw"
    KERNEL: kernel  5.15.0-xfstests #456 SMP Wed Feb 23 19:12:12 JST 2022 x86_64
    FSTESTVER: blktests     3be7849 (Tue, 19 Oct 2021 12:22:17 -0700)
    FSTESTVER: e2fsprogs    v1.46.4-27-g6b7a6e4a (Thu, 4 Nov 2021 20:29:19 -0400)
    FSTESTVER: fio          fio-3.29 (Sat, 18 Dec 2021 07:09:32 -0700)
    FSTESTVER: fsverity     v1.4-4-gddc6bc9 (Wed, 22 Sep 2021 11:55:11 -0700)
    FSTESTVER: ima-evm-utils        v1.3.2 (Wed, 28 Oct 2020 13:18:08 -0400)
    FSTESTVER: nvme-cli     v1.16 (Thu, 11 Nov 2021 13:09:06 -0800)
    FSTESTVER: quota                v4.05-43-gd2256ac (Fri, 17 Sep 2021 14:04:16 +0200)
    FSTESTVER: util-linux   v2.37.2 (Mon, 16 Aug 2021 15:23:50 +0200)
    FSTESTVER: xfsprogs     v5.13.0 (Fri, 20 Aug 2021 12:03:57 -0400)
    FSTESTVER: xfstests     linux-v3.8-3438-gf0a05db9 (Sun, 9 Jan 2022 18:58:11 -0500)
    FSTESTVER: xfstests-bld 8b681c94 (Sat, 8 Jan 2022 22:20:42 -0500)
    FSTESTVER: zz_build-distro      bullseye
    FSTESTCFG: "all"
    FSTESTSET: "-g rw"
    FSTESTEXC: ""
    FSTESTOPT: "aex"
    MNTOPTS: ""
    CPUS: "2"
    MEM: "1958.76"
                   total        used        free      shared  buff/cache   available
    Mem:            1958          80        1782           0          95        1845
    Swap:              0           0           0
更改测试文件系统

xfstests-bld 指定要测试的文件系统。
此参数需要编辑文件或指定选项。PRIMARY_FSTYPE``run-fstests/config.common``--primary_fstype

例如,如果要在 XFS 文件系统上永久测试,可以按如下方式修改该文件:run-fstests/config.common

diff --git a/kvm-xfstests/config.common b/kvm-xfstests/config.commonindex 12cae0a..1de021f 100644--- a/kvm-xfstests/config.common+++ b/kvm-xfstests/config.common@@ -4,4 +4,4 @@ # Variables set here may be overridden in ~/.config/xfstests-common # -PRIMARY_FSTYPE="ext4"+PRIMARY_FSTYPE="xfs"

另一方面,如果要临时在 xfs 文件系统上运行测试,可以按如下方式运行。

    leava@ubuntu:~/work$ kvm-xfstests --primary_fstype xfs generic/001
    CMDLINE: "--primary_fstype xfs smoke"
    KERNEL: kernel  5.15.0-xfstests #456 SMP Wed Feb 23 19:12:12 JST 2022 x86_64
    FSTESTVER: blktests     3be7849 (Tue, 19 Oct 2021 12:22:17 -0700)
    FSTESTVER: e2fsprogs    v1.46.4-27-g6b7a6e4a (Thu, 4 Nov 2021 20:29:19 -0400)
    FSTESTVER: fio          fio-3.29 (Sat, 18 Dec 2021 07:09:32 -0700)
    FSTESTVER: fsverity     v1.4-4-gddc6bc9 (Wed, 22 Sep 2021 11:55:11 -0700)
    FSTESTVER: ima-evm-utils        v1.3.2 (Wed, 28 Oct 2020 13:18:08 -0400)
    FSTESTVER: nvme-cli     v1.16 (Thu, 11 Nov 2021 13:09:06 -0800)
    FSTESTVER: quota                v4.05-43-gd2256ac (Fri, 17 Sep 2021 14:04:16 +0200)
    FSTESTVER: util-linux   v2.37.2 (Mon, 16 Aug 2021 15:23:50 +0200)
    FSTESTVER: xfsprogs     v5.13.0 (Fri, 20 Aug 2021 12:03:57 -0400)
    FSTESTVER: xfstests     linux-v3.8-3438-gf0a05db9 (Sun, 9 Jan 2022 18:58:11 -0500)
    FSTESTVER: xfstests-bld 8b681c94 (Sat, 8 Jan 2022 22:20:42 -0500)
    FSTESTVER: zz_build-distro      bullseye
    FSTESTCFG: "4k"
    FSTESTSET: "-g quick"
    FSTESTEXC: ""
    FSTESTOPT: "aex"
    MNTOPTS: ""
    CPUS: "2"
    MEM: "1958.76"
                   total        used        free      shared  buff/cache   available
    Mem:            1958          81        1780           0          96        1845
    Swap:     
更改测试文件系统参数

xfstests-bld 允许更改测试文件系统的参数,文件系统的参数是“mkfs 参数”和“挂载选项”。cfg

默认情况下提供的文件存储在中,则可以将这些文件指定为选项。cfg``fstests/test-appliance/files/root/fs/${fsname}/cfg``kvm-xfstests``-c

例如,如果要在 中执行测试,可以按如下方式执行该测试。nojournal``generic/001

    leava@ubuntu:~/work$ kvm-xfstests -c nojournal generic/001
    CMDLINE:   -c 4k generic/001
    CPUS:      2
    MEM:       1958.76

    ext4/4k: 1 tests, 4 seconds
      generic/001  Pass     4s
    Totals: 1 tests, 0 skipped, 0 failures, 0 errors, 4s

    FSTESTVER: blktests 3be7849 (Tue, 19 Oct 2021 12:22:17 -0700)
    FSTESTVER: e2fsprogs v1.46.4-27-g6b7a6e4a (Thu, 4 Nov 2021 20:29:19 -0400)
    FSTESTVER: fio  fio-3.29 (Sat, 18 Dec 2021 07:09:32 -0700)
    FSTESTVER: fsverity v1.4-4-gddc6bc9 (Wed, 22 Sep 2021 11:55:11 -0700)
    FSTESTVER: ima-evm-utils v1.3.2 (Wed, 28 Oct 2020 13:18:08 -0400)
    FSTESTVER: nvme-cli v1.16 (Thu, 11 Nov 2021 13:09:06 -0800)
    FSTESTVER: quota  v4.05-43-gd2256ac (Fri, 17 Sep 2021 14:04:16 +0200)
    FSTESTVER: util-linux v2.37.2 (Mon, 16 Aug 2021 15:23:50 +0200)
    FSTESTVER: xfsprogs v5.13.0 (Fri, 20 Aug 2021 12:03:57 -0400)
    CMDLINE: "-c nojournal generic/001"
    KERNEL: kernel  5.15.0-xfstests #456 SMP Wed Feb 23 19:12:12 JST 2022 x86_64
    FSTESTVER: blktests     3be7849 (Tue, 19 Oct 2021 12:22:17 -0700)
    FSTESTVER: e2fsprogs    v1.46.4-27-g6b7a6e4a (Thu, 4 Nov 2021 20:29:19 -0400)
    FSTESTVER: fio          fio-3.29 (Sat, 18 Dec 2021 07:09:32 -0700)
    FSTESTVER: fsverity     v1.4-4-gddc6bc9 (Wed, 22 Sep 2021 11:55:11 -0700)
    FSTESTVER: ima-evm-utils        v1.3.2 (Wed, 28 Oct 2020 13:18:08 -0400)
    FSTESTVER: nvme-cli     v1.16 (Thu, 11 Nov 2021 13:09:06 -0800)
    FSTESTVER: quota                v4.05-43-gd2256ac (Fri, 17 Sep 2021 14:04:16 +0200)
    FSTESTVER: util-linux   v2.37.2 (Mon, 16 Aug 2021 15:23:50 +0200)
    FSTESTVER: xfsprogs     v5.13.0 (Fri, 20 Aug 2021 12:03:57 -0400)
    FSTESTVER: xfstests     linux-v3.8-3438-gf0a05db9 (Sun, 9 Jan 2022 18:58:11 -0500)
    FSTESTVER: xfstests-bld 8b681c94 (Sat, 8 Jan 2022 22:20:42 -0500)
    FSTESTVER: zz_build-distro      bullseye
    FSTESTCFG: "nojournal"
    FSTESTSET: "generic/001"
    FSTESTEXC: ""
    FSTESTOPT: "aex"
    MNTOPTS: ""
    CPUS: "2"
    MEM: "1958.76"
                   total        used        free      shared  buff/cache   available
    Mem:            1958          81        1781           0          95        1844
    Swap:              0           0           0        

此外,如果未指定文件,则引用。cfg``fstests/kvm-xfstests/test-appliance/files/root/fs/${fsname}/cfg/all.list

结论

在本文中,我们确认了使用 xfstests-bld 在 QEMU/KVM 上的虚拟机 (amd64) 上运行 xfstests 测试的过程,与单独使用 xfstests 运行测试相比,创建测试环境更容易,此外,本文总结的内容只是 xfstests-bld 的几个功能,对于其他用途(例如,如何自定义 rootfs),请查看文档和脚本。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值