mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Most of the documentation is written in American English, so it makes sense to be consistent. Signed-off-by: Simon Howard <fraggle@gmail.com> Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org>
		
			
				
	
	
		
			264 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			264 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\" SPDX-License-Identifier: CDDL-1.0
 | 
						|
.\"
 | 
						|
.\" CDDL HEADER START
 | 
						|
.\"
 | 
						|
.\" The contents of this file are subject to the terms of the
 | 
						|
.\" Common Development and Distribution License (the "License").
 | 
						|
.\" You may not use this file except in compliance with the License.
 | 
						|
.\"
 | 
						|
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 | 
						|
.\" or https://opensource.org/licenses/CDDL-1.0.
 | 
						|
.\" See the License for the specific language governing permissions
 | 
						|
.\" and limitations under the License.
 | 
						|
.\"
 | 
						|
.\" When distributing Covered Code, include this CDDL HEADER in each
 | 
						|
.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 | 
						|
.\" If applicable, add the following below this CDDL HEADER, with the
 | 
						|
.\" fields enclosed by brackets "[]" replaced with your own identifying
 | 
						|
.\" information: Portions Copyright [yyyy] [name of copyright owner]
 | 
						|
.\"
 | 
						|
.\" CDDL HEADER END
 | 
						|
.\"
 | 
						|
.\" Copyright (c) 2009 Oracle and/or its affiliates. All rights reserved.
 | 
						|
.\" Copyright (c) 2009 Michael Gebetsroither <michael.geb@gmx.at>. All rights
 | 
						|
.\" reserved.
 | 
						|
.\" Copyright (c) 2017, Intel Corporation.
 | 
						|
.\"
 | 
						|
.Dd May 26, 2021
 | 
						|
.Dt ZTEST 1
 | 
						|
.Os
 | 
						|
.
 | 
						|
.Sh NAME
 | 
						|
.Nm ztest
 | 
						|
.Nd was written by the ZFS Developers as a ZFS unit test
 | 
						|
.Sh SYNOPSIS
 | 
						|
.Nm
 | 
						|
.Op Fl VEG
 | 
						|
.Op Fl v Ar vdevs
 | 
						|
.Op Fl s Ar size_of_each_vdev
 | 
						|
.Op Fl a Ar alignment_shift
 | 
						|
.Op Fl m Ar mirror_copies
 | 
						|
.Op Fl r Ar raidz_disks/draid_disks
 | 
						|
.Op Fl R Ar raid_parity
 | 
						|
.Op Fl K Ar raid_kind
 | 
						|
.Op Fl D Ar draid_data
 | 
						|
.Op Fl S Ar draid_spares
 | 
						|
.Op Fl C Ar vdev_class_state
 | 
						|
.Op Fl d Ar datasets
 | 
						|
.Op Fl t Ar threads
 | 
						|
.Op Fl g Ar gang_block_threshold
 | 
						|
.Op Fl i Ar initialize_pool_i_times
 | 
						|
.Op Fl k Ar kill_percentage
 | 
						|
.Op Fl p Ar pool_name
 | 
						|
.Op Fl T Ar time
 | 
						|
.Op Fl z Ar zil_failure_rate
 | 
						|
.
 | 
						|
.Nm
 | 
						|
.Fl X
 | 
						|
.Op Fl VG
 | 
						|
.Op Fl s Ar size_of_each_vdev
 | 
						|
.Op Fl a Ar alignment_shift
 | 
						|
.Op Fl r Ar raidz_disks
 | 
						|
.Op Fl R Ar raid_parity
 | 
						|
.Op Fl d Ar datasets
 | 
						|
.Op Fl t Ar threads
 | 
						|
.
 | 
						|
.Sh DESCRIPTION
 | 
						|
.Nm
 | 
						|
was written by the ZFS Developers as a ZFS unit test.
 | 
						|
The tool was developed in tandem with the ZFS functionality and was
 | 
						|
executed nightly as one of the many regression test against the daily build.
 | 
						|
As features were added to ZFS, unit tests were also added to
 | 
						|
.Nm .
 | 
						|
In addition, a separate test development team wrote and
 | 
						|
executed more functional and stress tests.
 | 
						|
.
 | 
						|
.Pp
 | 
						|
By default
 | 
						|
.Nm
 | 
						|
runs for ten minutes and uses block files
 | 
						|
(stored in
 | 
						|
.Pa /tmp )
 | 
						|
to create pools rather than using physical disks.
 | 
						|
Block files afford
 | 
						|
.Nm
 | 
						|
its flexibility to play around with
 | 
						|
zpool components without requiring large hardware configurations.
 | 
						|
However, storing the block files in
 | 
						|
.Pa /tmp
 | 
						|
may not work for you if you
 | 
						|
have a small tmp directory.
 | 
						|
.
 | 
						|
.Pp
 | 
						|
By default is non-verbose.
 | 
						|
This is why entering the command above will result in
 | 
						|
.Nm
 | 
						|
quietly executing for 5 minutes.
 | 
						|
The
 | 
						|
.Fl V
 | 
						|
option can be used to increase the verbosity of the tool.
 | 
						|
Adding multiple
 | 
						|
.Fl V
 | 
						|
options is allowed and the more you add the more chatty
 | 
						|
.Nm
 | 
						|
becomes.
 | 
						|
.
 | 
						|
.Pp
 | 
						|
After the
 | 
						|
.Nm
 | 
						|
run completes, you should notice many
 | 
						|
.Pa ztest.*
 | 
						|
files lying around.
 | 
						|
Once the run completes you can safely remove these files.
 | 
						|
Note that you shouldn't remove these files during a run.
 | 
						|
You can re-use these files in your next
 | 
						|
.Nm
 | 
						|
run by using the
 | 
						|
.Fl E
 | 
						|
option.
 | 
						|
.
 | 
						|
.Sh OPTIONS
 | 
						|
.Bl -tag -width "-v v"
 | 
						|
.It Fl h , \&? , -help
 | 
						|
Print a help summary.
 | 
						|
.It Fl v , -vdevs Ns = (default: Sy 5 )
 | 
						|
Number of vdevs.
 | 
						|
.It Fl s , -vdev-size Ns = (default: Sy 64M )
 | 
						|
Size of each vdev.
 | 
						|
.It Fl a , -alignment-shift Ns = (default: Sy 9 ) No (use Sy 0 No for random )
 | 
						|
Alignment shift used in test.
 | 
						|
.It Fl m , -mirror-copies Ns = (default: Sy 2 )
 | 
						|
Number of mirror copies.
 | 
						|
.It Fl r , -raid-disks Ns = (default: Sy 4 No for raidz/ Ns Sy 16 No for draid )
 | 
						|
Number of raidz/draid disks.
 | 
						|
.It Fl R , -raid-parity Ns = (default: Sy 1 )
 | 
						|
Raid parity (raidz & draid).
 | 
						|
.It Xo
 | 
						|
.Fl K , -raid-kind Ns = Ns
 | 
						|
.Sy raidz Ns | Ns Sy eraidz Ns | Ns Sy draid Ns | Ns Sy random
 | 
						|
(default:
 | 
						|
.Sy random Ns
 | 
						|
)
 | 
						|
.Xc
 | 
						|
The kind of RAID config to use.
 | 
						|
With
 | 
						|
.Sy random
 | 
						|
the kind alternates between raidz, eraidz (expandable raidz) and draid.
 | 
						|
.It Fl D , -draid-data Ns = (default: Sy 4 )
 | 
						|
Number of data disks in a dRAID redundancy group.
 | 
						|
.It Fl S , -draid-spares Ns = (default: Sy 1 )
 | 
						|
Number of dRAID distributed spare disks.
 | 
						|
.It Fl d , -datasets Ns = (default: Sy 7 )
 | 
						|
Number of datasets.
 | 
						|
.It Fl t , -threads Ns = (default: Sy 23 )
 | 
						|
Number of threads.
 | 
						|
.It Fl g , -gang-block-threshold Ns = (default: Sy 32K )
 | 
						|
Gang block threshold.
 | 
						|
.It Fl i , -init-count Ns = (default: Sy 1 )
 | 
						|
Number of pool initializations.
 | 
						|
.It Fl k , -kill-percentage Ns = (default: Sy 70% )
 | 
						|
Kill percentage.
 | 
						|
.It Fl p , -pool-name Ns = (default: Sy ztest )
 | 
						|
Pool name.
 | 
						|
.It Fl f , -vdev-file-directory Ns = (default: Pa /tmp )
 | 
						|
File directory for vdev files.
 | 
						|
.It Fl M , -multi-host
 | 
						|
Multi-host; simulate pool imported on remote host.
 | 
						|
.It Fl E , -use-existing-pool
 | 
						|
Use existing pool (use existing pool instead of creating new one).
 | 
						|
.It Fl T , -run-time Ns = (default: Sy 300 Ns s)
 | 
						|
Total test run time.
 | 
						|
.It Fl P , -pass-time Ns = (default: Sy 60 Ns s)
 | 
						|
Time per pass.
 | 
						|
.It Fl F , -freeze-loops Ns = (default: Sy 50 )
 | 
						|
Max loops in
 | 
						|
.Fn spa_freeze .
 | 
						|
.It Fl B , -alt-ztest Ns =
 | 
						|
Path to alternate ("older")
 | 
						|
.Nm ztest
 | 
						|
to drive, which will be used to initialize the pool, and, a stochastic half the
 | 
						|
time, to run the tests.
 | 
						|
The parallel
 | 
						|
.Pa lib
 | 
						|
directory is prepended to
 | 
						|
.Ev LD_LIBRARY_PATH ;
 | 
						|
i.e. given
 | 
						|
.Fl B Pa ./chroots/lenny/usr/bin/ Ns Nm ,
 | 
						|
.Pa ./chroots/lenny/usr/lib
 | 
						|
will be loaded.
 | 
						|
.It Fl C , -vdev-class-state Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Sy random No (default : Sy random  )
 | 
						|
The vdev allocation class state.
 | 
						|
.It Fl o , -option Ns = Ns Ar variable Ns = Ns Ar value
 | 
						|
Set global
 | 
						|
.Ar variable
 | 
						|
to an unsigned 32-bit integer
 | 
						|
.Ar value
 | 
						|
(little-endian only).
 | 
						|
.It Fl G , -dump-debug
 | 
						|
Dump zfs_dbgmsg buffer before exiting due to an error.
 | 
						|
.It Fl V , -verbose
 | 
						|
Verbose (use multiple times for ever more verbosity).
 | 
						|
.It Fl X , -raidz-expansion
 | 
						|
Perform a dedicated raidz expansion test.
 | 
						|
.El
 | 
						|
.
 | 
						|
.Sh EXAMPLES
 | 
						|
To override
 | 
						|
.Pa /tmp
 | 
						|
as your location for block files, you can use the
 | 
						|
.Fl f
 | 
						|
option:
 | 
						|
.Dl # ztest -f /
 | 
						|
.Pp
 | 
						|
To get an idea of what
 | 
						|
.Nm
 | 
						|
is actually testing try this:
 | 
						|
.Dl # ztest -f / -VVV
 | 
						|
.Pp
 | 
						|
Maybe you'd like to run
 | 
						|
.Nm ztest
 | 
						|
for longer? To do so simply use the
 | 
						|
.Fl T
 | 
						|
option and specify the runlength in seconds like so:
 | 
						|
.Dl # ztest -f / -V -T 120
 | 
						|
.
 | 
						|
.Sh ENVIRONMENT VARIABLES
 | 
						|
.Bl -tag -width "ZF"
 | 
						|
.It Ev ZFS_HOSTID Ns = Ns Em id
 | 
						|
Use
 | 
						|
.Em id
 | 
						|
instead of the SPL hostid to identify this host.
 | 
						|
Intended for use with
 | 
						|
.Nm , but this environment variable will affect any utility which uses
 | 
						|
libzpool, including
 | 
						|
.Xr zpool 8 .
 | 
						|
Since the kernel is unaware of this setting,
 | 
						|
results with utilities other than ztest are undefined.
 | 
						|
.It Ev ZFS_STACK_SIZE Ns = Ns Em stacksize
 | 
						|
Limit the default stack size to
 | 
						|
.Em stacksize
 | 
						|
bytes for the purpose of
 | 
						|
detecting and debugging kernel stack overflows.
 | 
						|
This value defaults to
 | 
						|
.Em 32K
 | 
						|
which is double the default
 | 
						|
.Em 16K
 | 
						|
Linux kernel stack size.
 | 
						|
.Pp
 | 
						|
In practice, setting the stack size slightly higher is needed because
 | 
						|
differences in stack usage between kernel and user space can lead to spurious
 | 
						|
stack overflows (especially when debugging is enabled).
 | 
						|
The specified value
 | 
						|
will be rounded up to a floor of PTHREAD_STACK_MIN which is the minimum stack
 | 
						|
required for a NULL procedure in user space.
 | 
						|
.Pp
 | 
						|
By default the stack size is limited to
 | 
						|
.Em 256K .
 | 
						|
.El
 | 
						|
.
 | 
						|
.Sh SEE ALSO
 | 
						|
.Xr zdb 1 ,
 | 
						|
.Xr zfs 1 ,
 | 
						|
.Xr zpool 1 ,
 | 
						|
.Xr spl 4
 |