[RFC PATCH] Samba RADOS service registration

Sage Weil sage at newdream.net
Tue Feb 13 02:30:20 UTC 2018


On Mon, 12 Feb 2018, Jason Dillaman wrote:
> On Mon, Feb 12, 2018 at 8:25 PM, David Disseldorp <ddiss at suse.de> wrote:
> > Hi,
> >
> > I've been working on having Samba's smbd daemon register itself with the
> > Ceph Cluster via rados_service_register(), and would appreciate some
> > input on what to include in the instance and metadata descriptors.

Nice!

> > The attached patch implements basic Samba service registration
> > functionality, but only uses a $hostname:smbd string for the instance
> > and doesn't add any extra metadata (see [1] as a sample service dump).
> 
> Just as a heads up, after making tcmu-runner and rbd-mirror daemon
> both register as service daemons, I found that using a hostname wasn't
> the best technique since you really need to ensure a unique name or
> else the last registered service daemon will clobber the previously
> registered daemon. Since the initial implementation, I now include the
> global instance id from RADOS in the service name to guarantee
> uniqueness (especially since the hostname is already automatically
> included in the metadata).

FWIW in our looming dystopian container future the pod name is (I think?) 
globally unique, and also conveniently what a user/admin will need to know 
in order to find/kill/whatever the service.

> > I'd like to (at the very least) pack the CephFS backed share names and
> > paths into the service registration. For this, I'm leaning towards
> > adding the share name as an instance suffix (i.e.
> > $hostname:smbd:$share), with a separate registration for each share.
> > Each share could then include the CephFS path as instance specific
> > metadata. That still leaves me with a few questions:
> > - does it make sense to only register shares which are backed by CephFS?
> >   + consider a server with local and CephFS shares, or worse still,
> >     shared printers
> >   + what about a Samba service without any shares?
> > - I'd be using a single RADOS cluster connection to register all
> >   shares. Can these services can be deregistered individually in case of
> >   share removal, or are separate cluster connections required?
> 
> Currently you can only register a single service per (mgr) connection.
> When I added the hooks to tcmu-runner and rbd-mirror daemons, I just
> used the service status [1] to populate any data that would be
> dynamically changing.

I would also worry that the shares count might be very large.  In all 
other cases the service maps to a daemon instance so I'd prefer to stick 
to that.

sage

> 
> >   + a rados_service_deregister() hook would be useful
> >
> > Cheers, David
> >
> > 1. Sample Samba smbd service dump with shares ignored
> >
> >> ceph service dump
> > {
> >     "epoch": 2,
> >     "modified": "2018-02-13 01:53:09.263133",
> >     "services": {
> >         "samba": {
> >             "daemons": {
> >                 "summary": "",
> >                 "rapido1:smbd": {
> >                     "start_epoch": 2,
> >                     "start_stamp": "2018-02-13 01:53:08.112102",
> >                     "gid": 4131,
> >                     "addr": "192.168.124.104:0/1984347853",
> >                     "metadata": {
> >                         "arch": "x86_64",
> >                         "ceph_version": "ceph version 12.2.1-387-g313479ab90 (313479ab90915289fa4905822d1f4825d1bf1e7c) luminous (stable)",
> >                         "cpu": "QEMU Virtual CPU version 2.5+",
> >                         "distro": "dracut",
> >                         "distro_description": "openSUSE Leap 42.3 dracut-044-29.1 (Initramfs)",
> >                         "distro_version": "044-29.1",
> >                         "hostname": "rapido1",
> >                         "kernel_description": "#21 SMP Tue Feb 13 01:05:27 CET 2018",
> >                         "kernel_version": "4.4.115+",
> >                         "mem_swap_kb": "0",
> >                         "mem_total_kb": "1022828",
> >                         "os": "Linux"
> >                     }
> >                 }
> >             }
> >         }
> >     }
> > }
> >
> 
> [1] https://github.com/ceph/ceph/blob/master/src/tools/rbd_mirror/ServiceDaemon.cc#L241
> 
> -- 
> Jason
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 



More information about the samba-technical mailing list