/
Running zfs tests

Running zfs tests

Setup VM with:
CPU - 4
Memory - 8GB
Hard disk - 100GB (for software installation) SATA
Three additional hard drives - 8GB (for zfs test) SATA or NVME

names of other pools

Do not create pools with names that can be used in the tests, i.e. testpool*. otherwise the tests work incorrectly.

Have to use DEBUG build, where we have debug macro

Create user:
useradd -m -d /var/ztest -g staff -s /bin/bash ztest
# add password for remote ssh
passwd ztest
Add user to sudo:
echo "ztest ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/ztest
Install packages for zfs tests:
apt update
apt install system-test-zfstest testrunner system-file-system-zfs-tests python3
Update /etc/sudoers:
# update /etc/sudoers:
sudo -E /usr/bin/sed -i.bak '/secure_path/a\Defaults exempt_group+=staff' /etc/sudoers
sudo -E /usr/bin/sed -i.bak 's/ requiretty/ !requiretty/' /etc/sudoers
login by user ztest and run tests and run script z.sh:
#!/bin/bash

# we need 3 x 8G drives with 512b sector size
export DISKS="c0t600144F0A31AAA6200005B2ECCE00004d0 c0t600144F0A31AAA6200005B2ECCF30005d0 c0t600144F0A31AAA6200005B2ECCFF0006d0"

# cleanup drives before tests:
sudo -E /sbin/zpool create -f test123321 $DISKS
sudo -E /sbin/zpool destroy test123321

# run tests
/bin/ksh /opt/zfs-tests/bin/zfstest

wait about 5h-6h or more for full tests and found full logs at:

/var/tmp/test_results/<ISO TIME>

Note for cli_user tests:

These tests require the creation of files in /usr/share/zfs/zpool.d:

upath

/usr/share/zfs/zpool.d/upath
#!/bin/sh
if [ "$1" = "-h" ] ; then
        echo "Show the underlying path for a device."
        exit
fi

# shellcheck disable=SC2154
echo upath="$VDEV_UPATH"

iostat, iostat-10s, iostat-1s (the content is the same)

/usr/share/zfs/zpool.d/iostat
#!/bin/sh
#
# Display most relevant iostat bandwidth/latency numbers.  The output is
# dependent on the name of the script/symlink used to call it.
# 
helpstr="
iostat:         Show iostat values since boot (summary page).
iostat-1s:      Do a single 1-second iostat sample and show values.
iostat-10s:     Do a single 10-second iostat sample and show values."
script="${0##*/}"
if [ "$1" = "-h" ] ; then
    echo "$helpstr" | grep "$script:" | tr -s '\t' | cut -f 2-
    exit
fi
if [ "$script" = "iostat-1s" ] ; then
    # Do a single one-second sample
    interval=1
    # Don't show summary stats
    brief="yes"
elif [ "$script" = "iostat-10s" ] ; then
    # Do a single ten-second sample
    interval=10
    # Don't show summary stats
    brief="yes"
fi
if [ -f "$VDEV_UPATH" ] ; then
    # We're a file-based vdev, iostat doesn't work on us.  Do nothing.
    exit
fi
out=$(iostat -x "${VDEV_UPATH##*/}" \
    ${interval:+"$interval"} \
    ${interval:+"1"} | tail -n 2)
    
# Sample output (we want the last two lines):
#   
# Linux 2.6.32-642.13.1.el6.x86_64 (centos68)   03/09/2017      _x86_64_        (6 CPU)
#
# avg-cpu:  %user   %nice %system %iowait  %steal   %idle
#           0.00    0.00    0.00    0.00    0.00  100.00
# 
# Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
# sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
#
# Get the column names
cols=$(echo "$out" | head -n 1)
# Get the values and tab separate them to make them cut-able.
vals=$(echo "$out" | tail -n 1 | tr -s '[:space:]' '\t')
i=0
for col in $cols ; do
    i=$((i+1))
    # Skip the first column since it's just the device name
    if [ $i -eq 1 ]; then
        continue
    fi
    # Get i'th value
    val=$(echo "$vals" | cut -f "$i")
    echo "$col=$val"
done

and set attribute "execute" (chmod +x upath iostat iostat-10s iostat-1s)

Related content

Запуск тестов ZFS на VM
Запуск тестов ZFS на VM
Read with this
ZFS test script
ZFS test script
More like this
How to build DEB package in userland (dilos-userland)
How to build DEB package in userland (dilos-userland)
Read with this
zfs tests 2.0.3.10-20230208-1-0+int2-run2 VMW
zfs tests 2.0.3.10-20230208-1-0+int2-run2 VMW
More like this
How to run ZFS tests on VM environment
How to run ZFS tests on VM environment
Read with this
zfs tests 2.0.3.9-20230131-1-0+int2 VMW
zfs tests 2.0.3.9-20230131-1-0+int2 VMW
More like this