[Samba] CTDB 50.samba: ERROR: smb.conf cache create failed
Davor Vusir
davortvusir at gmail.com
Sat Aug 23 12:10:23 MDT 2014
** Skickat från mobilusken! **
Den 23 aug 2014 15:50 skrev "steve" <steve at steve-ss.com>:
>
> Ubuntu 14.04, ctdb 2.5.1 from the ubuntu package. samba 4.1.11 with
> cluster support from source.
>
> Error upon startup only. Restarting ctdb on that node clears the error.
> The other node with the same config is OK. Any ideas?
> Cheers,
> Steve
>
> smb.conf
> [global]
> workgroup = ALTEA
> realm = ALTEA.SITE
> security = ADS
> kerberos method = secrets and keytab
> netbios name = SMBCLUSTER
> disable netbios = Yes
> clustering = Yes
> ctdbd socket = /var/lib/run/ctdb/ctdbd.socket
> pid director = /var/run/samba
pid director -> pid directory?
> [users]
> path = /cluster/users
> read only = No
> [profiles]
> path = /cluster/profiles
> read only = No
> [shared]
> path = /cluster/shared
> force create mode = 0770
> read only = No
>
> 50.samba
> #!/bin/sh
> # ctdb event script for Samba
>
> [ -n "$CTDB_BASE" ] || \
> export CTDB_BASE=$(cd -P $(dirname "$0") ; dirname "$PWD")
>
> . $CTDB_BASE/functions
>
> detect_init_style
>
> case $CTDB_INIT_STYLE in
> suse)
> CTDB_SERVICE_SMB=${CTDB_SERVICE_SMB:-smb}
> CTDB_SERVICE_NMB=${CTDB_SERVICE_NMB:-nmb}
> ;;
> debian)
> CTDB_SERVICE_SMB=${CTDB_SERVICE_SMB:-samba}
> CTDB_SERVICE_NMB=${CTDB_SERVICE_NMB:-""}
> ;;
> *)
> # Use redhat style as default:
>
> CTDB_SERVICE_SMB=${CTDB_SERVICE_SMB:-smb}
> CTDB_SERVICE_NMB=${CTDB_SERVICE_NMB:-""}
> ;;
> esac
>
> service_name="samba"
>
> loadconfig
>
> ctdb_setup_service_state_dir
>
> service_start ()
> {
> # make sure samba is not already started
> service "$CTDB_SERVICE_SMB" stop > /dev/null 2>&1
> if [ -n "$CTDB_SERVICE_NMB" ] ; then
> service "$CTDB_SERVICE_NMB" stop > /dev/null 2>&1
> fi
> killall -0 -q smbd && {
> sleep 1
> # make absolutely sure samba is dead
> killall -q -9 smbd
> }
> killall -0 -q nmbd && {
> sleep 1
> # make absolutely sure samba is dead
> killall -q -9 nmbd
> }
>
> # start Samba service. Start it reniced, as under very heavy load
> # the number of smbd processes will mean that it leaves few cycles
> # for anything else
> net serverid wipe
>
> if [ -n "$CTDB_SERVICE_NMB" ] ; then
> nice_service "$CTDB_SERVICE_NMB" start || die "Failed to start
nmbd"
> fi
>
> service "$CTDB_SERVICE_SMB" start || die "Failed to start samba"
> }
>
> service_stop ()
> {
> service "$CTDB_SERVICE_SMB" stop
> if [ -n "$CTDB_SERVICE_NMB" ] ; then
> service "$CTDB_SERVICE_NMB" stop
> fi
> }
>
> ######################################################################
> # Show the testparm output using a cached smb.conf to avoid delays due
> # to registry access.
>
> smbconf_cache="$service_state_dir/smb.conf.cache"
>
> testparm_foreground_update ()
> {
> _timeout="$1"
>
> if ! _out=$(timeout $_timeout testparm -v -s 2>/dev/null) ; then
> if [ -f "$smbconf_cache" ] ; then
> echo "WARNING: smb.conf cache update failed - using old cache
file"
> return 1
> else
> die "ERROR: smb.conf cache create failed"
> fi
> fi
>
> _tmpfile="${smbconf_cache}.$$"
> # Patterns to exclude...
> pat='^[[:space:]]+(registry[[:space:]]+shares|include|copy|
> winbind[[:space:]]+separator)[[:space:]]+='
> echo "$_out" | grep -Ev "$pat" >"$_tmpfile"
> mv "$_tmpfile" "$smbconf_cache" # atomic
>
> return 0
> }
>
> testparm_background_update ()
> {
> _timeout="$1"
>
> testparm_foreground_update $_timeout >/dev/null 2>&1 </dev/null &
> }
>
> testparm_cat ()
> {
> testparm -s "$smbconf_cache" "$@" 2>/dev/null
> }
>
> list_samba_shares ()
> {
> testparm_cat |
> sed -n -e 's@^[[:space:]]*path[[:space:]]*=[[:space:]]@@p' |
> sed -e 's/"//g'
> }
>
> list_samba_ports ()
> {
> testparm_cat --parameter-name="smb ports" |
> sed -e 's@,@ @g'
> }
>
> ###########################
>
> ctdb_start_stop_service
>
> is_ctdb_managed_service || exit 0
>
> ###########################
>
> case "$1" in
> startup)
> ctdb_service_start
> ;;
>
> shutdown)
> ctdb_service_stop
> ;;
>
> monitor)
> testparm_foreground_update 10
> ret=$?
>
> smb_ports="$CTDB_SAMBA_CHECK_PORTS"
> if [ -z "$smb_ports" ] ; then
> smb_ports=$(list_samba_ports)
> [ -n "$smb_ports" ] || die "Failed to set smb ports"
> fi
> ctdb_check_tcp_ports $smb_ports || exit $?
>
> if [ "$CTDB_SAMBA_SKIP_SHARE_CHECK" != "yes" ] ; then
> list_samba_shares | ctdb_check_directories || exit $?
> fi
>
> if [ $ret -ne 0 ] ; then
> testparm_background_update 10
> fi
> ;;
>
> *)
> ctdb_standard_event_handler "$@"
> ;;
> esac
> exit 0
>
>
>
> --
> To unsubscribe from this list go to the following URL and read the
> instructions: https://lists.samba.org/mailman/options/samba
More information about the samba
mailing list