Dear devs (ceph-devel / nfs-ganesha-devel),
Matt Benjamin asked me in this github issue [1] to send an email to the
dev mailing lists to discuss a feature [1]. As this feature needs
support from both "(lib)cephfs", librados as well as nfs-ganesha I'm
sending it to both lists.
TL;DR:
Add support for nfs-ganesha to make use of 1) librados namespace, 2)
(lib)cephfs namespace in order to avoid seperate pools for each
nfs-ganesha instance.
Motivation:
As far as I'm aware of libcephfs / librados support "namespaces". Note:
namespaces in this context are not "multiple filesystems" but rather an
"object prefix" to separate different objects in cephfs / RADOS. One of
the benefits of "namespaces" is that you can have multiple instances of
ganesha using the same pool / filesystem without objects clashing.
Currently you would need a separate pool for "RADOS_KV" and
"RADOS_URLS"
per nfs-ganesha instance. With namespace support in libcephfs you
would be able to logically seperate the objects per namespace: one for
each nfs-ganesha instance ... and restrict access to only this namespace
instead of the whole pool:
caps: [mds] allow rw path=/path/on/cephfs
caps: [mon] allow r
caps: [osd] allow rw pool=cephfs_data namespace=your-name-space-here
As a (Ceph) storage admin you would be able to provide tenants the
(cephx) capabilities to use nfs-ganesha, without the need to give them
rw access to your cephfs_data pool(s).
As it turns out the "librados" support is already present in nfs-ganesha
2.7 [2]. However, only when you are using the CEPH FSAL in
"active/active" mode. It would be nice to "backport" / reuse this
code
to be able to use it with the "rados_ng" RADOS_KV recovery backend and /
or RADOS_URLS. This would be useful for those that (still) want to use a
"active/passive" setup (CTDB, pacemaker / corosync).
The "libcephfs" namespace support is not yet implemented in nfs-ganesha
AFAIK. This would provide the benefits as discussed in motivation.
With adding support for "namespaces" it opens the way for nfs-ganesha
multi-tenancy.
Does this makes sense? Do you agree on the use case? Would this indeed
need support from both ceph as well as nfs-ganesha developers?
Thanks,
Stefan Kooman
[1]:
https://github.com/nfs-ganesha/nfs-ganesha/issues/353
[2]:
https://github.com/nfs-ganesha/nfs-ganesha/blob/next/src/doc/man/ganesha-...
--
| BIT BV
http://www.bit.nl/ Kamer van Koophandel 09090351
| GPG: 0xD14839C6 +31 318 648 688 / info(a)bit.nl