一、简介
最初xfstests是被开发用于xfs文件系统的测试,作为一个文件系统的回归测试套。现在xfstests只在linux上被支持。如今,xfstests被用作所有Linux主要文件系统的文件系统回归测试套件:xfs、ext2、ext4、cifs、btrfs、f2fs、reiserfs、gfs、jfs、udf、nfs和tmpfs。许多文件系统维护者在向Linus发送补丁之前会运行一套完整的xfstests,并且要求在提交集成之前,任何重大更改都要使用xfstests进行测试。
1.1 xfstests中的测试集(tests)
xfstests中的测试最初使用三位数来命名。2013年,测试集被转移到不同的类中,这取决于测试是特定于文件系统的,“generic”(意味着它是独立于文件系统的),还是“shared”(意味着测试不是真正的通用,但在少数文件系统上有用)。在此方案中,测试集的名称像这样:
- btrfs/126
- generic/013
- ext4/271
- shared/051
- xfs/090
测试集可以属于多个组,例如"auto"、"quick"、"aio"、"prealloc"、"ioctl"和"dangerous"。
“auto”组表示最适合自动测试spinners的测试。
“quick”组中的测试应该完全快速,并且运行quick组对于文件系统的冒烟测试很好。
“dangerous”组是可以使内核崩溃的测试,因此应该小心运行它们。
其他组可以指示测试执行的文件系统功能。例如“aio”、“prealloc”和“ioctl”等组。
1.2 测试设备
xfstests使用的1到2个块设备用于测试。一块被命令为TEST(必须),一块被命名为SCRATCH(可选)。大多数测试只用一块,少数测试例需要同时用到两块。
SCRATCH 设备会被需要使用SCRATCH设备的用例集重新格式化。个别测试集不会假设SCRATCH设备上有一个合法的文件系统。相反,TEST设备不会被xfstests格式化,它将是一个长期存在的“老化”的文件系统。
对大多数ext4文件系统配置,TEST设备和SCRATCH设备应该是5GB。
二、虚机本地方式运行xfstests
这里采用创建虚机,在虚机内部安装运行xfstests来测试虚机的内核文件系统。
2.1 准备虚机及工具安装配置
step1、宿主机上安装libvirt,qemu-kvm
step2、使用ctyunos2或者ctyunos23.01的img镜像,创建虚机,虚机配置直通yum源
step3、 从社区下载工具包,上传到虚机
step4、虚机内依赖包安装
yum install acl attr automake bc dump e2fsprogs fio gawk gcc gdbm-devel git indent kernel-devel libacl-devel libaio-devel libcap-devel libtool libuuid-devel lvm2 make psmisc python3 quota sed sqlite xfsprogs xfsdump xfsprogs-devel xfsprogs-help
step5、虚机内对xfstests工具进行编译安装
cd xfstest-master
make
make install
step6、创建测试设备test.img和scratch.img,命令如:
[root@localhost xfstests-master]# cd /root/tmp
[root@localhost tmp]# xfs_io -f -c "falloc 0 10g" test.img
[root@localhost tmp]# xfs_io -f -c "falloc 0 10g" scratch.img
[root@localhost tmp]# mkfs.ext4 test.img #如果测试xfs文件系统,mkfs.xfs test.img
[root@localhost tmp]# losetup /dev/loop0 ./test.img
[root@localhost tmp]# losetup /dev/loop1 ./scratch.img
[root@localhost tmp]# mkdir -p /mnt/test && mount /dev/loop0 /mnt/test
[root@localhost tmp]# mkdir -p /mnt/scratch
step7、配置文件设置
[root@localhost tmp]# cd /root/xfstests-master
[root@localhost xfstests-master]# cp local.config.example local.config
$ cat local.config
export TEST_DEV=/dev/loop0
export TEST_DIR=/mnt/test
export SCRATCH_DEV=/dev/loop1
export SCRATCH_MNT=/mnt/scratch
step8、新增用户(建议配置,不配置比如generic/688会失败)
[root@localhost xfstests-master]# useradd -m fsgqa
[root@localhost xfstests-master]# useradd 123456-fsgqa
[root@localhost xfstests-master]# useradd fsgqa2
[root@localhost xfstests-master]# groupadd fsgqa
2.2 测试运行
测试用例执行可以按单个用例,也可以按组来执行,具体的执行方式示例如下:
cd /root/xfstests-master
./check generic/001 #执行单个用例
./check -g quick # 执行quick组的用例
2.3测试结果说明
该工具的测试结果直接回显到命令行,可通过工具记录日志或者保存到文件方式保存测试结果。
执行单个用例的结果如: