Kory Draughn

Software Developer

iRODS Consortium

June 8-11, 2021

iRODS User Group Meeting 2021

Virtual Event

NFSRODS 2.0

NFSRODS 2.0

Overview

  • Brief description of NFSRODS
  • What's changed since the last release
  • The list operation (i.e. /bin/ls)
  • Future Work

What is NFSRODS?

A standalone NFSv4.1 server that enables presenting iRODS as a mountable filesystem.

  • Configurable
  • Users do not have to learn iCommands
  • Users do not have to install any additional packages
  • Supports many common *nix commands and software

What's changed since 1.0.0?

13 issues have been resolved.

  • NFSRODS now uses Jargon Connection Caching
  • The mtime rule engine plugin requirement has been relaxed
  • The rename operation (i.e. mv) now supports overwriting data objects
  • The portmap service message warning has been resolved

 

All resolved issues can be found at the following URL:

The list operation

Prior implementations had issues.

  • Didn't handle large collections
    • Results were truncated
    • The implementation was incorrect
  • Poor performance against Oracle databases
  • Slow
    • Extra work
    • No caching

The list operation (cont.)

These issues have been resolved.

  • NFSRODS now caches many, if not all, results obtained through Jargon
  • Added options to Jargon that enable support of Oracle. See the troubleshooting section of the NFSRODS README for details
  • We learned that using a log level that results in a lot of messages degrades performance
  • We learned that applying color to the output triggers more stat operations (which means more network traffic)

The list operation (cont.)

Performance comparison between 1.0.0 and 2.0.0.

 

Test setup:

  • iRODS provider (backed by Postgres) running on Ubuntu 16.04 (32 cores)
  • NFSRODS container running on the same machine hosting the provider
  • Set NFSRODS log level to INFO
  • Mount command: sudo mount -o port=2050 localhost:/ /mnt/nfsrods
  • Timing command: time /bin/ls <collection> | wc -l
Collection Size 1.0.0 2.0.0 (no cache) 2.0.0 (cached)
500 1m7.211s 0m0.857s 0m0.046s
1,000 3m49.246s 0m0.708s 0m0.041s
3,000 ​31m45.147s 0m2.345s 0m0.045s
6,000 86m56.771s (results truncated) 0m5.274s 0m0.052s
10,000 87m18.675s (results truncated) 0m9.302s 0m0.058s

Future Work

  • Add parallel I/O support for large file transfers
  • Investigate support of metadata via extended file attributes
  • Improve test coverage
  • Return better error messages
  • SMBRODS

Thank you!

Questions?

UGM 2021 - NFSRODS 2.0

By iRODS Consortium

UGM 2021 - NFSRODS 2.0

  • 880