NFSTEST_DIO(1)
πΈ NAME πΈ
okay so bestie, meet nfstest_dio(1) β it's the Direct I/O tests page from nfstest_dio 1.5, and we're gonna read it together, no cap π
β¨ SYNOPSIS β¨
nfstest_dio --server <server> [options]
like literally that's it, that's the whole vibe check π¦
π« DESCRIPTION π«
Functional direct I/O tests are the ones that make sure every single READ/WRITE actually goes to the server instead of the client just being lazy and caching the requests π
ββοΈ. The client bypasses read ahead by sending the READ with only the requested bytes. Then we verify the client correctly handles the eof marker when reading the whole file. And we verify the client ignores delegation while writing a file. iconic behavior, honestly.
Direct I/O on pNFS tests verify the client sends the READ/WRITE to the correct DS, or to the MDS if it's using a PAGESIZE aligned buffer or not, respectively. yes the "respectively" is doing heavy lifting there, we love her π
Direct I/O data correctness tests verify that a file written with buffered I/O is read correctly with direct I/O. And also verify that a file written with direct I/O is read correctly with buffered I/O. it goes both ways, as it should π«Ά
Vectored I/O tests verify coalescence of multiple vectors into one READ/WRITE packet when all vectors are PAGESIZE aligned. Vectors with different alignments get sent on separate packets. no merging for the misaligned girlies β¨
Valid for NFSv4.0 and NFSv4.1 including pNFS.
π OPTIONS π
the basics, bestie
--versionβ show the program's version number and exit, bye π-h,--helpβ show this help message and exit π-f FILE,--file=FILEβ the file where options are specified, besides the system wide file/etc/nfstest, the user wide file$HOME/.nfstest, or the.nfstestfile in the current directory ποΈ
π¦ NFS specific options π¦
-s SERVER,--server=SERVERβ server name or IP address π-e EXPORT,--export=EXPORTβ exported file system to mount [default:'/']--nfsversion=NFSVERSIONβ NFS version, e.g.,3,4,4.1, etc. [default:4.1]-m MTPOINT,--mtpoint=MTPOINTβ mount point [default:'/mnt/t']-p PORT,--port=PORTβ NFS server port [default:2049]--proto=PROTOβ NFS protocol name [default:'tcp']--sec=SECβ security flavor [default:'sys']--nconnect=NCONNECTβ multiple TCP connections option [default:'1']-o MTOPTS,--mtopts=MTOPTSβ mount options [default:'hard,intr']--datadir=DATADIRβ data directory where files are created; the directory is created on the mount point [default:'']
π Logging options π
-v VERBOSE,--verbose=VERBOSEβ verbose level for debug messages [default:'opts|info|dbg1|dbg2|dbg3']--tverbose=TVERBOSEβ verbose level for test messages [default:'1']--createlogβ create log file π--rexeclogβ create rexec log files--warningsβ display warnings β οΈ--tag=TAGβ informational tag, it gets displayed as an INFO message [default:'']--nottyβ do not use terminal colors on output π«π¨--isattyβ use terminal colors on output β super useful when running withnohupβ¨
π Packet trace options π
--createtracesβ create a packet trace for each test--tbsize=TBSIZEβ capture buffer size fortcpdump[default:192k]--trcdelay=TRCDELAYβ seconds to delay before stopping packet trace [default:2.0]--keeptracesβ do not remove any trace files [default: remove trace files if no errors]--rmtracesβ remove trace files [default: remove trace files if no errors]-i INTERFACE,--interface=INTERFACEβ device interface [default: automatically selected]
π§ File options π§
--nfiles=NFILESβ number of files to create [default:2]--filesize=FILESIZEβ file size to use for test files [default:262144]--rsize=RSIZEβ read size to use when reading files [default:4k]--wsize=WSIZEβ write size to use when writing files [default:4k]--iodelay=IODELAYβ seconds to delay I/O operations [default:0.1]--offset-delta=OFFSET_DELTAβ read/write offset delta [default:4k]
π Path options π
--sudo=SUDOβ full path of binary forsudo[default:'/usr/bin/sudo']--kill=KILLβ full path of binary forkill[default:'/usr/bin/kill']--nfsstat=NFSSTATβ full path of binary fornfsstat[default:'/usr/sbin/nfsstat']--tcpdump=TCPDUMPβ full path of binary fortcpdump[default:'/usr/sbin/tcpdump']--iptables=IPTABLESβ full path of binary foriptables[default:'/usr/sbin/iptables']--messages=MESSAGESβ full path of log messages file [default:'/var/log/messages']--trcevents=TRCEVENTSβ full path of tracing events directory [default:'/sys/kernel/debug/tracing/events']--trcpipe=TRCPIPEβ full path of trace pipe file [default:'/sys/kernel/debug/tracing/trace_pipe']--tmpdir=TMPDIRβ temporary directory [default:'/tmp']
π Debug options π
--nocleanupβ do not cleanup created files π§Ήβ--notimestampsβ do not display timestamps in debug messages--bugmsgs=BUGMSGSβ file containing test messages to mark as bugs if they failed--nomountβ do not mount server and run the tests on local disk space--basename=BASENAMEβ base name for all files and logs [default: automatically generated]--nfsdebug=NFSDEBUGβ set NFS kernel debug flags and save log messages [default:'']--rpcdebug=RPCDEBUGβ set RPC kernel debug flags and save log messages [default:'']--tracepoints=TRACEPOINTSβ list of trace points modules to enable [default:'']--nfsstatsβ get NFS stats [default:'False']--pktdispβ display main packets related to the given test--nfserrorsβ fail every NFS error found in the packet trace π--client-ipaddr=CLIENT_IPADDRβ IP address of localhost
β Reporting options β
--xunit-reportβ generate xUnit compatible test report--xunit-report-file=XUNIT_REPORT_FILEβ path to xout report file
π₯ Test options π₯
--runtest=RUNTESTβ comma separated list of tests to run; if the list starts with a'^'then all tests are run except the ones listed [default:'all']--iotype=IOTYPEβ list of I/O types to test [default:'read,write']--biotype=BIOTYPEβ list of buffered I/O types to test [default:'none,read,write']--withdeleg=WITHDELEGβ use delegation on tests [default: both without and with delegation]
π TESTS π
eof
Verify the eof marker is handled correctly when reading the end of the file. π«Ά
correctness
Verify data correctness when reading/writing using direct I/O. A file created with buffered I/O is read correctly with direct I/O. A file created with direct I/O is read correctly with buffered I/O. β¨
fstat
Verify fstat() gets the correct file size after writing. π
read
Verify READ is sent after writing when the file is open for both read and write.
read_ahead
Verify READ is sent with only the requested bytes, bypassing read ahead. πββοΈ
basic
Verify a packet is sent for each I/O request. one packet, one request, periodt π
rsize
Verify multiple READ packets are sent for each read request having request size > rsize.
wsize
Verify multiple WRITE packets are sent for each write request having request size > wsize
aligned
Verify the packet is sent to the correct DS server when using a memory which is PAGESIZE aligned. β
nonaligned
Verify the packet is sent to the MDS when using a memory which is not PAGESIZE aligned.
diffalign
Verify packets are sent to both the MDS and the correct DS on the same open, using buffers with different alignments. π
stripesize
Verify multiple packets are sent for each request having the request size greater than stripe size.
vectored_io
Verify vectored I/O functionality.
all
Run all tests: eof, correctness, fstat, read, read_ahead, basic, rsize, wsize, aligned, nonaligned, diffalign, stripesize, vectored_io π
π EXAMPLES π
The only required option is --server, bestie. that's the whole assignment π
$ nfstest_dio --server 192.168.0.11
π NOTES π
The user id in the local host must have access to run commands as root using the 'sudo' command without the need for a password. so like, set that up first, or you're gonna have a bad time π
π¦ SEE ALSO π¦
formatstr(3), nfstest.test_util(3), nfstest_alloc(1), nfstest_cache(1), nfstest_delegation(1), nfstest_fcmp(1), nfstest_file(1), nfstest_interop(1), nfstest_io(1), nfstest_lock(1), nfstest_pkt(1), nfstest_pnfs(1), nfstest_posix(1), nfstest_rdma(1), nfstest_sparse(1), nfstest_ssc(1), nfstest_xattr(1), nfstest_xid(1), packet.nfs.nfs3_const(3), packet.nfs.nfs4_const(3)
go read those too, iykyk ππ
π BUGS π
No known bugs. we ate and left no crumbs, fr fr β¨
π AUTHOR π
Jorge Mora (mora@netapp.com) β ty for your service king π«Ά
and that's the whole page bestie!! this was NFStest 3.2, dated 21 March 2023 β slay, iconic, no notes πβ¨π
π¦ where this page comes from
- debian trixie: nfstest 3.2-3
- fedora 43: NFStest 3.2-14.fc43 Β· GPL-2.0-or-later
- fedora 44: NFStest 3.2-16.fc44 Β· GPL-2.0-or-later
- ubuntu noble: nfstest 3.2-2
- ubuntu questing: nfstest 3.2-3
- ubuntu resolute: nfstest 3.2-3build1
- ubuntu stonking: nfstest 3.2-5
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms