I wanted to ask about testing suites available for testing Linux file systems. I am looking for more of stress and load testing suites, which can stress the system, find corruptions by validating the data it wrote, among other things.
Is there such a tool available for both local FS like ext*, and network protocols such as NFS/CIFS?
Thanks in advance.
Let's focus on the concrete parts of your question. Tools and suites will be given for the following Linux filesystems: ext4, CIFS, NFS.
General test suites (for correctness and robustness)
- xfstests - http://git.kernel.org/cgit/fs/xfs/xfstests-dev.git/tree/
- Linux Test Project (LTP) https://github.com/linux-test-project/ltp/tree/master/testcases/kernel/io,
https://github.com/linux-test-project/ltp/tree/master/testcases/kernel/fs
(xfstests sometimes has newer copies of the tests in this folder)
- pjdfstest (POSIX Filesystem Test Suite) - http://sourceforge.net/p/ntfs-3g/pjd-fstest/ci/master/tree/ (also see https://github.com/pjd/pjdfstest for the original author's version)
"stress and load testing suites"
- fsx - https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git/tree/ltp/fsx.c is a modern Linux version of fsx (but also see Dave Jones' fascinating fsx history (archive.org link) page for the background of this tool)
- dbench - http://dbench.samba.org/
- crefi - https://github.com/vijaykumar-koppad/Crefi
- xdd - https://github.com/bws/xdd
- mtd-utils (contains power loss tests) - http://git.infradead.org/mtd-utils.git/tree/HEAD:/tests
- fsync power loss testing - https://gist.github.com/bradfitz/3172656
- See I/O exercisers (dt, fio, vdbench) below
"find corruptions by validating the data"
- dt (I/O exerciser and verifier) - https://github.com/RobinTMiller/dt
- fio (I/O exerciser and verifier) - https://github.com/axboe/fio
- vdbench (I/O exerciser and verifier) - https://www.oracle.com/downloads/server-storage/vdbench-downloads.html
CIFS
- smbtorture (backend only) - https://git.samba.org/?p=samba.git;a=tree;f=source4/torture;hb=HEAD
- See Connectathon below
NFS
- Connectathon - http://git.linux-nfs.org/?p=steved/cthon04.git;a=tree
- Pynfs - http://git.linux-nfs.org/?p=bfields/pynfs.git;a=tree
- NFS Test Suite - http://git.linux-nfs.org/?p=mora/nfstest.git;a=tree
- SGI NFS Test Tools - https://web.archive.org/web/20090514072259/http://oss.sgi.com/projects/nfs/testtools/ (archive.org link because HP turned off oss.sgi.com ages ago)
- Linux Test Project (LTP) NFS tests https://github.com/linux-test-project/ltp/tree/master/testcases/network/nfs, https://github.com/linux-test-project/ltp/tree/master/testcases/network/nfsv4
Sources
- http://sg.danny.cz/sg/tools.html
- http://wiki.linux-nfs.org/wiki/index.php/Testing_tools
- http://ftp.samba.org/pub/samba/slides/samba4_testing_tutorial.pdf
- http://www.magiksys.net/ddumbfs/regression_suite.html
-
Ted T'so (ext4 lead developer) recommending xfstests in a Stack Overflow answer
Depends on how far down the rabbit hole you're going. For starters, here's the list of Linux test utilities, which do basic benchmarking for the Linux file systems.
http://ltp.sourceforge.net/tooltable.php
If you're doing serious performance evaluation, I'd suggest something like filebench, or iozone, both of which are very flexible tools for benchmarking. They'll work for either local or network file systems, but they simply write files to a mounted file system, they don't exercise the NFS or CIFS driver directly.
Also check out the file system benchmarking portal (original link broken as of 2017, archived version available), which has a nice long list of available testing tools, as well as their applications. It's also got a bunch of information on how to correctly set up benchmarks to correct for things like cache effects, so that your numbers reflect the true performance.
You can enable diagnostic mode in iozone to check for corruptions, and I believe filebench has something similar. Or just checksum your data and validate it at the end, but that's slightly less out of the box.