searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

xfstests简介及使用介绍

2023-10-27 06:24:55
90
0

一、简介

最初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测试结果说明

该工具的测试结果直接回显到命令行,可通过工具记录日志或者保存到文件方式保存测试结果。

执行单个用例的结果如:

0条评论
0 / 1000
h****n
3文章数
0粉丝数
h****n
3 文章 | 0 粉丝