cyverse/irods_client_fuse

Name: irods_client_fuse

Owner: CyVerse

Description: null

Forked from: irods/irods_client_fuse

Created: 2017-01-17 05:01:12.0

Updated: 2018-03-21 02:13:46.0

Pushed: 2018-03-21 02:13:44.0

Homepage: null

Size: 101

Language: C++

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

iRODS FUSE client

Description

This repository builds the irodsFs binary which can be used to mount an iRODS collection to a local directory. Then the files and sub-collections in the mounted iRODS collection can be accessed using regular UNIX commands through the local directory.

FUSE (Filesystem in Userspace) is a free Unix kernel module that allows non-privileged users to create their own file systems without editing the kernel code. This is achieved by running the file system code in user space, while the FUSE module only provides a “bridge” to the actual kernel interfaces.

The iRODS FUSE implementation allows normal users to access data stored in iRODS using standard UNIX commands (ls, cp, etc) and system calls (open, read, write, etc).

The user's iRODS passwd or credential will be used for authentication at the time of the mount. e.g., doing a iinit before the mount and he/she will be able to access all files/collections he/she is allowed to access under iRODS. The user will need to set the appropriate UNIX permission (mode) of the UNIX mount directory to control access to the mounted data.

Prerequisites for building iRODS FUSE:

You will need to install a few packages from https://packages.irods.org:

 apt-get install irods-dev
 apt-get install irods-runtime
 apt-get install irods-externals-clang3.8-0
 apt-get install irods-externals-cppzmq4.1-0
 apt-get install irods-externals-cmake3.5.2-0

This will install the necessary buildchain into /opt/irods-externals.

You will also need a couple additional packages:

 apt-get install pkg-config
 apt-get install libfuse-dev

Make sure that the iRODS CMake is in your PATH:

rt PATH=/opt/irods-externals/cmake3.5.2-0/bin:$PATH
Building iRODS FUSE:

If /usr/lib/x86_64-linux-gnu/libstdc++.so does not exist, you may need to create a symlink:

 ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so

clone https://github.com/irods/irods_client_fuse
rods_client_fuse
r build
uild
e ../

Running iRODS FUSE:

Make sure the iCommands are already capable of logging into your Zone:

t

Mount the home collection to a local directory:

r /usr/tmp/fmount
sFs /usr/tmp/fmount

The user's home collection is now mounted. The iRODS files and sub-collections in the user's home collection should be accessible with normal UNIX commands through the /usr/tmp/fmount directory.

Run irodsFs in debug mode

To run irodsFs in debug mode:

1) set the env variable irodsLogLevel to 4:

rt irodsLogLevel=4

2) run irodsFs in debug mode, e.g.

sFs -d yourMountPoint
Use irodsFsCtl for control

1) Clear all metadata cache:

sFsCtl.py reset_cache yourMountPoint

2) Show established connections:

sFsCtl.py show_connections yourMountPoint
Helpful options

1) Arguments

2) Enabling/disabling features

3) Other configurations

For example, following command will 1) reuse connections, 2) prefetch next 5 blocks and 3) set timeout of metadata cache to 1 hour.

sFs --connreuse --preloadblocks 5 --metadatacachetimeout 3600 yourMountPoint

An example of using ticket is:

sFs --connreuse -t yourTicket -w dataDirectory yourMountPoint
WARNING

When a collection is mounted using irodsFs, uses of iCommands such as iput, irm, icp, etc that change the content of the collection should be avoided because the FUSE implementation caches the attributes of the contents of the collection.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.