使用 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 |
QEMU | QEMU emulator version 4.2.0 (Debian 1:4.2-3ubuntu6.3) |
环境检查
在安装 KVM 之前,需要验证开发环境是否支持KVM
虚拟化。
-
确定CPU是否支持虚拟化。
rlk@rlk:Desktop$ egrep -c '(vmx|svm)' /proc/cpuinfo 8
-
确定系统是否可以使用
KVM
加速。 (命令包含在包中)kvm-ok``cpu-checker
leava@ubuntu:~/work$ sudo kvm-ok INFO: /dev/kvm exists KVM acceleration can be used
当前可以确定KVM
可以在这个实验环境中使用,因此将在下一章和以后安装必要的软件包。
如果无法使用,则需要检查 BIOS 设置和内核相关配置。
QEMU/KVM 安装
-
安装 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
-
允许普通用户可以运行虚拟机,请将其添加到组中
libvirt kvm
。leava@ubuntu:~/work$ sudo adduser `whoami` libvirt leava@ubuntu:~/work$ sudo adduser `whoami` kvm
-
检查安装是否正确
leava@ubuntu:~/work$ virsh list --all Id Name State --------------------
-
还要检查libvertd的状态(如果没有,需要启动
libvirtd
)active``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。
-
下载 xfstests-bld 源代码
rlk@rlk:curtis$ git clone https://git.kernel.org/pub/scm/fs/ext2/xfstests-bld.git fstests
-
更改工作路径
rlk@rlk:curtis$ cd fstests/run-fstests
-
下载 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
-
更改工作路径
run-fstests:~/work/fstests/kvm-xfstests$ cd ../../
为虚拟机准备 Linux 内核
准备要在 QEMU/KVM 上运行的内核。
我的理解是如果要测试自己写的文件系统的稳定性,需要将文件系统编译进入bzImage,并且要将对应mkfs.xxx封装到root_fs.img
中,这里涉及BusyBox
的相关操作(需要自己去编译rootfs镜像)。
xfstests-bld 提供了一个脚本来为 xfstests 测试环境生成内核配置。
本文使用脚本生成的配置构建内核版本为 5.15.1
。
-
下载linux内核源代码 repo或者直接从github下载对应内核版本的zip包。
rlk@rlk:curtis$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
-
更改路径
rlk@rlk:curtis:~/work$ cd linux
-
checkout v5.15
rlk@rlk:linux$ git checkout refs/tags/v5.15.1
-
基于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 #
-
编译内核,产生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/kvm
与 xfstests-bld
一起使用时,可以通过文件进行设置。
必须设置的最小参数是本地时区和内核路径。config.kvm
-
更改路径
rlk@rlk:curtis:~/work$ cd fstests/kvm-xfstests
-
配置文件
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
-
更改路径
leava@ubuntu:~/work/fstests/kvm-xfstests$ cd ../../
安装 xfstests-bld
为 xfstests-bld 生成一个脚本,并将其移动/usr/bin
目录。
-
更改路径
rlk@rlk:curtis$ cd fstests
-
为 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
-
安装
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),请查看文档和脚本。