NFSTEST_FCMP(1)

πŸ’– NFSTEST_FCMP πŸ’–

okay bestie, welcome to nfstest_fcmp from the nfstest fam (manual section 1, version 1.0) β€” the little tool that's gonna make sure your NFS data is actually correct and not just ✨vibing✨. let's get into it 🫢


🌸 NAME 🌸

nfstest_fcmp β€” NFS file compare, aka the "did my data survive the trip" check πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

nfstest_fcmp --server <server> [options]

✨ DESCRIPTION ✨

so here's the whole plot: you create a file using one set of NFS mount options, then you read that same file back using another set of NFS mount options and verify the data is still correct. it's giving "trust but verify" and honestly? iconic πŸ”₯


πŸ’… OPTIONS πŸ’…

  • --version β€” show the program's version number and dip out πŸ‘‹
  • -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 .nfstest file in the current directory πŸ—‚οΈ

🌈 NFS specific options 🌈

  • -s SERVER, --server=SERVER β€” server name or IP address, the main character fr fr
  • -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']
  • --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 is displayed as an INFO message [default: '']
  • --notty β€” do not use terminal colors on output
  • --isatty β€” use terminal colors on output β€” lowkey a lifesaver when you're running with nohup

🧚 Packet trace options 🧚

  • --createtraces β€” create a packet trace for each test
  • --tbsize=TBSIZE β€” capture buffer size for tcpdump [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: 0]
  • --filesize=FILESIZE β€” file size to use for test files [default: 1m]
  • --rsize=RSIZE β€” read size to use when reading files [default: 64k]
  • --wsize=WSIZE β€” write size to use when writing files [default: 64k]
  • --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 for sudo [default: '/usr/bin/sudo']
  • --kill=KILL β€” full path of binary for kill [default: '/usr/bin/kill']
  • --nfsstat=NFSSTAT β€” full path of binary for nfsstat [default: '/usr/sbin/nfsstat']
  • --tcpdump=TCPDUMP β€” full path of binary for tcpdump [default: '/usr/sbin/tcpdump']
  • --iptables=IPTABLES β€” full path of binary for iptables [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']
  • --nfsopts=NFSOPTS β€” NFS options used for comparing test file. NFS mount definition is a list of arguments separated by a ':' given in the following order if positional arguments are used (see examples): ::export:nfsversion:port:proto:sec
  • --cmpopts=CMPOPTS β€” NFS mount options used for comparing test file other than the ones specified in --nfsopts [default: 'hard']

🌈 TESTS 🌈

test01

verify data read from file is correct βœ…

test02

verify data written to file is correct βœ…

all

run all tests: test01, test02 β€” the whole lineup, no skips πŸ’―


πŸ¦„ EXAMPLES πŸ¦„

use positional arguments with nfsversion=3 for the second mount:

nfstest_fcmp -s 192.168.0.2 -e /exports --nfsopts :::3

or use named arguments instead:

nfstest_fcmp -s 192.168.0.2 -e /exports --nfsopts nfsversion=3

both ate, pick your fave 🫢


πŸ’€ NOTES πŸ’€

the user id on the local host must have access to run commands as root using the 'sudo' command without the need for a password. no cap, that's a hard requirement πŸ”

🌸 SEE ALSO 🌸

nfstest.test_util(3), nfstest_alloc(1), nfstest_cache(1), nfstest_delegation(1), nfstest_dio(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) β€” the whole squad, go say hi πŸ’œ


πŸ› BUGS πŸ›

no known bugs. periodt. πŸ’…


πŸ‘‘ AUTHOR πŸ‘‘

Jorge Mora (mora@netapp.com) β€” the legend behind the vibes 🫑


and that's a wrap bestie!! this page is brought to you by NFStest 3.2, dated 21 March 2023 ✨ go forth and compare those files, you've got this πŸ’–πŸ¦‹πŸŽ€