This is an old revision of the document!


iRDOS Fuse lite (irodsfs)

Linux users are able to mount iRODS collections and data objects (i.e. the iRODS version of directories and files) in their local directory hierarchy by using irodsfs, a FUSE implementation of the iRODS client that you can download here: https://github.com/cyverse/irodsfs.

In this way, you can access data stored on an iRODS system, in our case on the RDMS, via the local directory hierarchy. This also allows you to use common Linux tools, e.g. rsync, cp, mkdir or vi, to transfer, read, and/or organize the files present on the RDMS.

The irodsfs package is pre-installed on the (virtual) Linux workplace and can be invoked by running the irodsfs command from the terminal.

For other Linux systems, the developer of irodsfs provides pre-built binaries which you can download from Releases on the official Github instance of the project (https://github.com/cyverse/irodsfs/releases).

To install and set up irodsfs on your personal Linux environment, follow steps 1-4. If you use the LWP instead, irodsfs is already preinstalled, and steps 1 and 2 can be skipped.

1. Download the correct irodsfs version from Github (https://github.com/cyverse/irodsfs), either via browser or terminal. In this example, the download is performed using wget and the file is downloaded to your home directory.

$ cd 
$ wget https://github.com/cyverse/irodsfs/releases/download/vX.X.X/irodsfs-vX.X.X-linux-amd64.tar.gz

Be sure that you substitute vX.X.X with the current version, and also change amd64 to the correct parameters for the CPU that you are using.

Alternatively, you can use the following command to check for the newest version of irodsfs and download the .tar.gz to the current working directory:

$ curl -s https://api.github.com/repos/cyverse/irodsfs/releases/latest | grep "browser_download_url.*amd64.tar.gz\"" | cut -d ':' -f 2,3 | tr -d \" | wget -i -

2. Extract the downloaded .tar.gz file:

tar -xvf irodsfs-vX.X.X-linux-amd64.tar.gz

You can directly run the extracted irodsfs binary from every location, provided you specify the path to it in your terminal command. You can also add the path to the binary to your $PATH environment variable to make it available globally, without having to specify its location every time you call the command. In this tutorial, we will assume that you did NOT add the path to the binary to the $PATH environment variable.

3. Create a configuration file for irodsfs:

$ touch ~/.irods/config.yaml

Open the created config.yaml file and paste the following content in it, then save the file:

host: rdms-prod-icat.data.rug.nl
port: 1247
proxy_user: <username>@rug.nl
client_user: <username>@rug.nl
zone: rug
password:

auth_scheme: "pam" 
ssl_ca_cert_file: "/etc/ssl/certs/ca-bundle.crt"
ssl_encryption_key_size: 32
ssl_encryption_algorithm: "AES-256-CBC"
ssl_encryption_salt_size: 8
ssl_encryption_hash_rounds: 16

path_mappings:
  - irods_path: /rug/home/<username> 
    mapping_path: /
    resource_type: dir

Attention! In irodsfs versions prior to v0.8.3 the configuration file used autscheme instead of auth_scheme. Please check the version of irodsfs you are using and keep this in mind when using the above example configuration file!

Another important aspect is that you take care verify that the correct username is specified in the configuration file.

Before you can mount the RDMS location onto your system, you also need to create an empty mount point in your Linux system. This can be done with:

$ mkdir ~/irods_mount/

which will create the empty folder irods_mount/ in your home directory, which will then be used as the mount point for irodsfs.

To mount your RDMS/iRODS collection to your local file system, run:

$ ~/irodsfs --config ~/.irods/config.yaml ~/irods_mount/

You will be prompted for your password, and if no error messages are shown, you can now access your personal iRODS directory is mounted at ~/irods_mount/

If you want to use the version that is preinstalled on the LWP, you do not need to specify the absolute path to irodsfs, the command to mount the drive therefore becomes

$ irodsfs --config ~/.irods/config.yaml ~/irods_mount/

To unmount a previously mounted collection, in this example ~/irods_mount/, the following command can be used:

$ fusermount -u ~/irods_mount/

irodsfs also allows to map multiple RDMS collections to the mount point. This behavior can be adjusted by changing the `path_mapping` in the config.yaml file that contains the irodsfs configuration.

The following configuration will mount the users personal RDMS Home Drive at ~/irods_mountpoint/RDMS_Home, but also a RDMS Team Drive at ~/irods_mountpoint/RDMS_Team.

host: rdms-prod-icat.data.rug.nl
port: 1247
proxy_user: <username>@rug.nl
client_user: <username>@rug.nl
zone: rug
password:

authscheme: "pam" 
ssl_ca_cert_file: "/etc/ssl/certs/ca-bundle.crt"
sslencryption_key_size: 32
ssl_encryption_algorithm: "AES-256-CBC"
ssl_encryption_salt_size: 8
ssl_encryption_hash_rounds: 16


path_mappings:
  - irods_path: /rug/home/<username>@rug.nl
    mapping_path: /RDMS_Home
    resource_type: dir
  - irods_path: /rug/home/<Team_Drive_Name>
    mapping_path: /RDMS_Team
    resource_type: dir

It is also possible to use irodsfs inside the Peregrine HPC cluster. Just connect via ssh and follow the manual as if working on your local Linux machine.

It is also possible to provide the user password directly in the config.yaml file, but it is not recommended to do so.

irodsfs can be also installed and used in the Windows Subsystem for Linux (WSL).