[Samba] Avoiding constant HDD access
Rowland Penny
rpenny at samba.org
Thu Nov 8 08:48:53 UTC 2018
On Wed, 7 Nov 2018 15:57:04 -0800
Jeremy Allison via samba <samba at lists.samba.org> wrote:
> On Thu, Nov 08, 2018 at 02:34:50AM +0300, Albert Berger via samba
> wrote:
> > On Thu, Nov 08, 2018 at 06:12:40AM +1300, Andrew Bartlett wrote:
> > > On Wed, 2018-11-07 at 15:19 +0300, Albert Berger via samba wrote:
> > > >
> > > > I tried in sequence to start Samba in following conditions:
> > > >
> > > > 1. With all clients disconnected from Samba server;
> > > > 2. As above + all shares disabled;
> > > > 3. As above + minimal smb.conf
> > > > 4. With totally empty smb.conf.
> > > >
> > > > In all cases those every-60-seconds writes persist.
> > > > What else can be done in this situation? Can it be
> > > > that some Debian/Raspbian patch causes this behaviour?
> > > > Should I try to compile Samba from upstream?
> > >
> > > You haven't said what version you are running.
> > >
> > > But in general, there are essentially no specific Debian patches,
> > > we work hard to keep those packages as upstream as possible, so
> > > unless Raspbian has done something really odd (unlikely) there
> > > isn't any point going upstream.
> > >
> > > Andrew Bartlett
> > > --
> > > Andrew Bartlett http://samba.org/~abartlet/
> > > Authentication Developer, Samba Team http://samba.org
> > > Samba Developer, Catalyst IT
> > > http://catalyst.net.nz/services/samba
> > >
> >
> > Well, I mentioned that the output of "smbd --version" is
> > "4.2.14-Debian". Is this the package version? In Samba's source
> > code there are mentions of "housekeeping" activity: in the file
> > process.c one can search for SMBD_HOUSEKEEPING_INTERVAL and
> > 'housekeeping_fn' which among other things performs some operations
> > with log files. Can this be the explanation?
>
> SMBD_HOUSEKEEPING_INTERVAL is 60 seconds, and run on a tevent
> timer event, and it implements:
>
> *
> * Do the recurring log file and smb.conf reload checks.
> */
>
> static bool housekeeping_fn(const struct timeval *now, void
> *private_data) {
> struct smbd_server_connection *sconn = talloc_get_type_abort(
> private_data, struct smbd_server_connection);
>
> DEBUG(5, ("housekeeping\n"));
>
> change_to_root_user();
>
> /* update printer queue caches if necessary */
> update_monitored_printq_cache(sconn->msg_ctx);
>
> /* check if we need to reload services */
> check_reload(sconn, time_mono(NULL));
>
> /*
> * Force a log file check.
> */
> force_check_log_size();
> check_log_size();
> return true;
> }
>
> so yes it's goint to look at smb.conf and check_log_size()
> will do an fstat() on the open log file descriptor, so this
> may explain it.
>
Yes, but it isn't doing a read, it is trying to do a write and then
being cancelled.
I have left 'pidstat' running overnight and there is no mention of
'smbd' in the output anywhere.
If the OP is using 4.2-14, he is using Raspbian Jessie, I have advised
the OP to upgrade to the latest Raspbian, this will get Samba 4.5.x
Rowland
More information about the samba
mailing list