Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.
# ceph -v
ceph version 0.56.3 (6eb7e15a4783b122e9b0c85ea9ba064145958aa5)

# repoquery -i ceph

Name        : ceph
Version     : 0.56.3
Release     : 1.el6
Architecture: x86_64
Size        : 26734691
Packager    : Fedora Project
Group       : System Environment/Base
URL         : http://ceph.com/
Repository  : epel
Summary     : User space components of the Ceph file system
Source      : ceph-0.56.3-1.el6.src.rpm
Description :
Ceph is a distributed network file system designed to provide excellent
performance, reliability, and scalability.

Manually mounting from the command line is working fine:

# ceph-fuse /mnt/ceph/
ceph-fuse[28617]: starting ceph client
ceph-fuse[28617]: starting fuse

# df -h
Filesystem            Size  Used Avail Use% Mounted on
ceph-fuse              72T  2.9T   70T   4% /mnt/ceph

But I want to do it automatically on startup. Google pointed me to this page.

/usr/sbin/mount.fuse.ceph

#!/bin/sh
#
# Helper to mount ceph-fuse from /etc/fstab.  To use, add an entry
# like:
#
# # DEVICE                           PATH         TYPE        OPTIONS
# id=admin                           /mnt/ceph    fuse.ceph   defaults   0 0
# id=myuser,conf=/etc/ceph/foo.conf  /mnt/ceph2   fuse.ceph   defaults   0 0
#
# where the device field is a comma-separated list of options to pass on
# the command line.  The examples above, for example, specify that
# ceph-fuse will authenticated as client.admin and client.myuser
# (respectively), and the second example also sets the 'conf' option to
# '/etc/ceph/foo.conf' via the ceph-fuse command line.  Any valid
# ceph-fuse can be passed in this way.

set -e

# convert device string to options
cephargs='--'`echo $1 | sed 's/,/ --/g'`

# strip out 'noauto' option; libfuse doesn't like it
opts=`echo $4 | sed 's/,noauto//' | sed 's/noauto,//'`

# go
exec ceph-fuse $cephargs $2 $3 $opts

So I tried to add the following to /etc/fstab:

id=admin,conf=/etc/ceph/ceph.conf   /mnt/ceph       fuse.ceph   defaults    0 0

but mount -a give me:

# mount -a
unrecognized command

because as far as I understand, actually, the above entry will be run as below:

# mount -t fuse.ceph id=admin,conf=/etc/ceph/ceph.conf /mnt/ceph/
unrecognized command

Did I do something wrong?

share|improve this question

3 Answers 3

I think the correct syntax should be:

/usr/sbin/mount.fuse.ceph#      /mnt/ceph       fuse        defaults    0 0

then it will be run as:

# mount -t fuse /usr/sbin/mount.fuse.ceph# /mnt/ceph/
ceph-fuse[14811]: starting ceph client
ceph-fuse[14811]: starting fuse

Verify mount point is up and running:

# df /mnt/ceph/
Filesystem           1K-blocks      Used Available Use% Mounted on
ceph-fuse            77189145600 3011411968 74177733632   4% /mnt/ceph

Reference: http://tracker.ceph.com/issues/3229

share|improve this answer
up vote 0 down vote accepted

Oh, it seems that there is something different between the version from the EPEL repo and the one from the official repo:

# ceph -v
ceph version 0.56.6 (95a0bda7f007a33b0dc7adf4b330778fa1e5d70c)

# rpmquery -i ceph
Name        : ceph                         Relocations: (not relocatable)
Version     : 0.56.6                            Vendor: (none)
Release     : 0.el6                         Build Date: Sat 04 May 2013 09:29:00 AM ICT
Install Date: Fri 10 May 2013 11:39:11 AM ICT      Build Host: gitbuilder-centos6-amd64.front.sepia.ceph.com
Group       : System Environment/Base       Source RPM: ceph-0.56.6-0.el6.src.rpm
Size        : 27854806                         License: GPL-2.0
Signature   : RSA/SHA1, Sat 04 May 2013 07:25:37 AM ICT, Key ID 7ebfdd5d17ed316d
URL         : http://ceph.com/
Summary     : User space components of the Ceph file system
Description :
Ceph is a distributed network file system designed to provide excellent
performance, reliability, and scalability.

/etc/fstab:

conf=/etc/ceph/ceph.conf      /mnt/ceph       fuse.ceph        defaults    0 0

and fuse.ceph can be specified as a filesystem type:

# mount -t fuse.ceph conf=/etc/ceph/ceph.conf /mnt/ceph/
ceph-fuse[17665]: starting ceph client
ceph-fuse[17665]: starting fuse

UPDATE Sun May 12 13:43:09 ICT 2013

I think I found the root cause of this problem.

From the mount manual page:

NOTES
   The syntax of external mount helpers is:

      /sbin/mount.<suffix> spec dir [-sfnv] [-o options] [-t type.subtype]

   where the <type> is filesystem type and -sfnvo options have same meaning like 
   standard mount options.  The  -t option is used  for filesystems with subtypes 
   support (for example /sbin/mount.fuse -t fuse.sshfs).

So if you set type to fuse.ceph, it will run /sbin/mount.fuse.ceph with the usual arguments and this helper program doesn't exist if you install ceph from the EPEL repo:

# rpm -ql ceph-fuse
/usr/bin/ceph-fuse
/usr/sbin/mount.fuse.ceph
/usr/share/doc/ceph-fuse-0.56.3
/usr/share/doc/ceph-fuse-0.56.3/COPYING
/usr/share/man/man8/ceph-fuse.8.gz

This is the reason why you get the unrecognized command error.

The quick fix is create a symlink with the name /sbin/mount.fuse.ceph and target is /usr/sbin/mount.fuse.ceph:

ln -s /usr/sbin/mount.fuse.ceph /sbin/mount.fuse.ceph
share|improve this answer

On Debian the following works with ceph-fuse_0.72.2-1:

/etc/fstab:

mount.fuse.ceph#conf=/etc/ceph/ceph.conf,id=admin    /mnt/ceph    fuse   noatime,allow_other    0  0
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.