sfsmaster(8)
============

== NAME

sfsmaster - start, restart or stop Sauna File System metadata server process

== SYNOPSIS

[verse]
sfsmaster [*-c* 'CFGFILE'] [*-u*] [*-d*] [*-t* 'LOCKTIMEOUT'] ['ACTION']

[verse]
*sfsmaster -v*

[verse]
*sfsmaster -h*

== DESCRIPTION

*sfsmaster* is the metadata server program of Sauna File System. Depending on
parameters it can start, restart or stop SaunaFS metadata server process.
Without any options it starts SaunaFS metadata server, killing previously run
process if lock file exists.

Metadata server can work in one of two modes (personalities):

. master . shadow

If metadata server works with 'master' personality it acts as main metadata
server govering all file system metadata modifications. If metadata server
works with 'shadow' personality it acts as backup metadata server ready for
immediate deployment as new 'master' in case of current 'master' failure.
Shadow only accepts connections from saunafs-admin, i.e. sfschunkserver,
sfsmetalogger and sfsmount (the client) are not allowed to connect to 'shadow'
instance.

Current metadata server personality is defined in metadata server configuration
file and can be changed on the fly from 'shadow' to 'master' by proper
modification and reloading of its configuration file.

'Master' and 'shadow' are designed to run simultaneously in sync forever. It is
very unlikely but still (due to a memory corruption or a bug) possible that
after some time their metadata will somehow differ. Since version 2.5.2
metadata checksum is maintained both by 'master' and 'shadow', in order to
detect and fix possible metadata corruptions. In case mismatch is detected
'shadow' asks 'master' to double check its metadata and dump its current
snapshot. After the metadata is dumped and the checksum in 'master' is
recalculated shadow downloads the new metadata snapshot, which should ensure
that master and all shadows have exactly the same metadata.

SIGHUP (or 'reload' 'ACTION') forces *sfsmaster* to reload all configuration
files.

*-v*::
print version information and exit

*-h*::
print usage information and exit

*-c* 'CFGFILE'::
specify alternative path of configuration file (default is *sfsmaster.cfg* in
system configuration directory)

*-u*::
log undefined configuration values (when default is assumed)

*-d*::
run in foreground, don't daemonize

*-t* 'LOCKTIMEOUT'::
how long to wait for lockfile (default is 60 seconds)

'ACTION'::
is the one of *start*, *stop*, *restart*, *reload*, *test*, *isalive* or
*kill*. Default action is *restart*.

== FILES

*sfsmaster.cfg*:: configuration file for SaunaFS master process (see
*sfsmaster.cfg*(5) manual)

*sfsexports.cfg*:: SaunaFS access control file (used with *sfsmount*`s` 1.6.0
or later, see *sfsexports.cfg*(5) manual)

*sfstopology.cfg*:: Network topology definitions (see *sfstopology.cfg*(5)
manual)

*sfsmaster.lock*:: PID file of running SaunaFS master process

*.sfsmaster.lock*:: lock file of running SaunaFS master process (created in
data directory)

*metadata.sfs*, *metadata.sfs.back*:: SaunaFS filesystem metadata image

*`changelog.*.sfs`*:: SaunaFS filesystem metadata change logs (merged into
*metadata.sfs* once per hour)

*data.stats*:: SaunaFS master charts state

== REPORTING BUGS

Report bugs to the GitHub repository <https://github.com/leil-io/saunafs> as an
issue.

== COPYRIGHT

Copyright 2008-2009 Gemius SA

Copyright 2013-2019 Skytechnology sp. z o.o.

Copyright 2023-2024 Leil Storage OÜ

SaunaFS is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation, version 3.

SaunaFS is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
SaunaFS. If not, see <http://www.gnu.org/licenses/>.

== SEE ALSO

sfsmetarestore(8), sfschunkserver(8), sfsmount(1),
sfsmaster.cfg(5), sfsexports.cfg(5), sfstopology.cfg(5),
sfs(7)
