Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ZINJECT(8)		    System Manager's Manual		    ZINJECT(8)

NAME
       zinject -- ZFS Fault Injector

DESCRIPTION
       zinject	creates	 artificial  problems in a ZFS pool by simulating data
       corruption or device failures.  This program is dangerous.

SYNOPSIS
	zinject
	       List injection records.

	zinject	-b objset:object:level:start:end [-f frequency]	-amu [pool]
	       Force an	error into the pool at a bookmark.

	zinject	-c id|all
	       Cancel injection	records.

	zinject	-d vdev	-A degrade|fault pool
	       Force a vdev into the DEGRADED or FAULTED state.

	zinject	-d vdev	-D latency:lanes [-T read|write] pool
	       Add an artificial delay to I/O requests on a particular device,
	       such that the requests take a minimum of	 latency  milliseconds
	       to  complete.   Each  delay  has	 an associated number of lanes
	       which defines the number	of concurrent I/O requests that	can be
	       processed.

	       For example, with a single lane delay of	10 ms (-D  10:1),  the
	       device  will  only be able to service a single I/O request at a
	       time with each request taking 10	ms to complete.	 So, if	only a
	       single request is submitted every 10 ms,	 the  average  latency
	       will  be	10 ms; but if more than	one request is submitted every
	       10 ms, the average latency will be more than 10 ms.

	       Similarly, if a delay of	10 ms is specified to have  two	 lanes
	       (-D 10:2), then the device will be able to service two requests
	       at  a  time,  each with a minimum latency of 10 ms.  So,	if two
	       requests	are submitted every 10 ms, then	 the  average  latency
	       will  be	 10  ms;  but  if more than two	requests are submitted
	       every 10	ms, the	average	latency	will be	more than 10 ms.

	       Also note, these	delays are additive.  So two invocations of -D
	       10:1 are	roughly	equivalent to a	single invocation of -D	 10:2.
	       This  also means, that one can specify multiple lanes with dif-
	       fering target latencies.	 For example, an invocation of -D 10:1
	       followed	by -D 25:2 will	create 3 lanes on the device: one lane
	       with a latency of 10 ms and two lanes with a 25 ms latency.

	 zinject  -d  vdev  [-e	device_error]  [-L label_error]	  [-T failure]
	       [-f frequency] [-F] pool
	       Force a vdev error.

	zinject	-i seconds pool
	       Add  an	artificial  delay  during the future import of a pool.
	       This injector is	automatically cleared after the	import is fin-
	       ished.

	zinject	-E delay [-a] [-m] [-f freq] [-l level]	[-r range] [-T iotype]
	       [-t type|-b bookmark]
	       Inject pipeline ready stage delays  for	the  given  object  or
	       bookmark.  The delay is specified in milliseconds.

	zinject	-I [-s seconds|-g txgs]	pool
	       Simulate	a hardware failure that	fails to honor a cache flush.

	zinject	-p function pool
	       Panic inside the	specified function.

	 zinject  -t  data -C dvas [-e device_error] [-f frequency] [-l	level]
	       [-r range] [-amq] path
	       Force an	error into the contents	of a file.

	zinject	-t dnode -C dvas [-e device_error]  [-f	frequency]  [-l	level]
	       [-amq] path
	       Force an	error into the metadnode for a file or directory.

	  zinject   -t	 mos_type  -C  dvas  [-e device_error]	[-f frequency]
	       [-l level] [-r range] [-amqu] pool
	       Force an	error into the MOS of a	pool.

OPTIONS
       -a	Flush the ARC before injection.

       -b objset:object:level:start:end
		Force an error into the	pool at	 this  bookmark	 tuple.	  Each
		number is in hexadecimal, and only one block can be specified.

       -C dvas	Inject	the  given  error  only	 into specific DVAs.  The mask
		should be specified as a list of 0-indexed DVAs	 separated  by
		commas	(e.g.  0,2).  This option is not applicable to logical
		data errors such as decompress and decrypt.

       -d vdev	A vdev specified by path or GUID.

       -e device_error
		Specify
		checksum    for	an ECKSUM error,
		decompress  for	a data decompression error,
		decrypt	    for	a data decryption error,
		corrupt	    to flip a bit in the data after a read,
		dtl	    for	an ECHILD error,
		io	    for	an EIO error where reopening the  device  will
			    succeed,
		nxio	    for	an ENXIO error where reopening the device will
			    fail, or
		noop	    to	drop  the  IO without executing	it, and	return
			    success.

		For EIO	and ENXIO, the "failed"	reads or writes	 still	occur.
		The  probe  simply  sets  the  error value reported by the I/O
		pipeline so it appears the read	or write  failed.   Decryption
		errors only currently work with	file data.

       -f frequency
		Only  inject  errors  a	 fraction of the time.	Expressed as a
		real number percentage between 0.0001 and 100.

       -F	Fail faster.  Do fewer checks.

       -f txgs	Run for	this many transaction groups before reporting failure.

       -h	Print the usage	message.

       -l level
		Inject an error	at a particular	block level.  The  default  is
		0.

       -L label_error
		Set  the  label	 error region to one of	nvlist,	pad1, pad2, or
		uber.

       -m	Automatically remount the underlying filesystem.

       -q	Quiet mode.  Only print	the handler number added.

       -r range
		Inject an error	over a particular logical range	of an  object,
		which  will  be	 translated to the appropriate blkid range ac-
		cording	to the object's	properties.

       -s seconds
		Run for	this many seconds before reporting failure.

       -T type	Inject the error into I/O of this type.
		read, write, flush, claim, free	 Fundamental I/O types
		all				 All fundamental I/O types
		probe				 Device	probe I/O

       -t mos_type
		Set this to
		mos	  for any data in the MOS,
		mosdir	  for an object	directory,
		config	  for the pool configuration,
		bpobj	  for the block	pointer	list,
		spacemap  for the space	map,
		metaslab  for the metaslab, or
		errlog	  for the persistent error log.

       -u	Unload the pool	after injection.

ENVIRONMENT VARIABLES
       ZFS_HOSTID
	   Run zinject in debug	mode.

SEE ALSO
       zfs(8), zpool(8)

FreeBSD	15.0		       January 14, 2025			    ZINJECT(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zinject&sektion=8&manpath=FreeBSD+15.0-RELEASE+and+Ports>

home | help