CERN Accelerating science

Fuse failed mount

On my Centos8 test server (archive.ru.is), I now have a mgm, mq, and fst1-3 service setup basically as described in the deployment guide: Develop — EOS CITRINE documentation
I successfully was able to copy files to and from system using eos and the xrdcp.

I’m now trying to mount it via fuse, but getting an error:

 env EOS_MGM_URL=root://archive.ru.is eos fuse mount /eos
===> Mountpoint   : /eos
===> Fuse-Options : max_readahead=131072,max_write=4194304,fsname=archive.ru.is,url=root://archive.ru.is//eos/
===> fuse readahead        : 1
===> fuse readahead-window : 1048576
===> fuse debug            : 0
===> fuse low-level debug  : 0
===> fuse log-level        : 5
===> fuse write-cache      : 1
===> fuse write-cache-size : 67108864
===> fuse rm level protect : 1
===> fuse lazy-open-ro     : 0
===> fuse lazy-open-rw     : 1
==== fuse multi-threading  : true
error: failed mount, maybe still mounted? Check with df and eventually 'killall eosd'

This worked fine on the docker setup, but I’m not sure where to look for information to debug this. Nothing is mounted on /eos (checked using df). ‘killall eosd’ didn’t find anything
There are no interesting messages in ‘/var/log/eos/mgm’
Any additional help is appreciated. Thank you for being patient with me.

I noticed some people mentioning fusex. Is this an alternative that I should be using instead?

Hi Joseph,

You should try using the eosxd for the FUSE mount which is the new fuse implementation.
You can find more info about this in the following readme:
https://gitlab.cern.ch/dss/eos/-/tree/master/fusex

Basically you can use something like this to start it:
eosxd -ofsname=dev /eos/
which uses by default the /etc/eos/fuse.dev.conf file. You can see an example below:

[esindril@esdss000 ~]$ ls -lrt /etc/eos/fuse.dev.conf 
-rw-r--r--. 1 root root 812 Jul 28  2020 /etc/eos/fuse.dev.conf
[esindril@esdss000 ~]$ cat /etc/eos/fuse.dev.conf 
{
  "name" : "eosdev",
  "hostport" : "localhost:1094",
  "remotemountdir" : "/eos/",
  "localmountdir" : "/eos/",
  "mdcachedir" : "/var/eos/fusex/",
  "mdzmqtarget" : "tcp://localhost:1100",
  "mdzmqidentity" : "eosxd",
  "options" : {
    "debug" : 1,
    "lowleveldebug" : 0,
    "debuglevel" : 5,
    "libfusethreads" : 0,
    "md-kernelcache" : 1,
    "hide-versions" : 1,
    "data-kernelcache" : 1,
    "mkdir-is-sync" : 1,
    "create-is-sync" : 1,
    "global-flush" : 1,
    "global-locking" : 1,
    "fd-limit" : 65536,
    "no-fsync" : [ ".db", ".db-journal", ".sqlite", ".sqlite-journal", ".db3", ".db3-journal", "*.o"    ]
  },
  "cache" : {  
    "type" : "disk",
    "size-mb" : 1000,
    "location" : "/var/eos/fusex/",
    "journal"  : "/var/tmp/fusex/"
  },
  "auth" : {
     "sss" : 0
  }
}

Cheers,
Elvin

Interesting. Of note, there is no /etc/eos nor etc/eos/fuse.dev.conf created on the Centos 8 machine by default. I’m assuming I should be editing /etc/fuse.conf or /etc/fuse.conf.eos
Hmm. Perhaps not. This doesn’t look like the same file format.

#root@archive[16,0]/etc/
 cat fuse.conf.eos
user_allow_other
#root@archive[17,0]/etc/
 cat fuse.conf
# mount_max = 1000
# user_allow_other
#root@archive[18,0]/etc/

I created the directory and the configuration file you mentioned and now I can mount it. This is a great step forward. Thank you.

The simplest way to mount an instance with FUSEx is:

mkdir /eos
mount -t fuse eosxd -ofsname=mgm-address:/eos/ /eos/

where mgmaddress is the fully qualified hostname of your MGM host (host + domain). There is rarely a need to write the config file with individual settings.