############################################################
-# type is commonly supported and more portable than which(1)
-# shellcheck disable=SC2039
-select_tdb_checker()
-{
- # Find the best TDB consistency check available.
- use_tdb_tool_check=false
- type tdbtool >/dev/null 2>&1 && found_tdbtool=true
- type tdbdump >/dev/null 2>&1 && found_tdbdump=true
-
- if $found_tdbtool && echo "help" | tdbtool | grep -q check; then
- use_tdb_tool_check=true
- elif $found_tdbtool && $found_tdbdump; then
- cat <<EOF
-WARNING: The installed 'tdbtool' does not offer the 'check' subcommand.
- Using 'tdbdump' for database checks.
- Consider updating 'tdbtool' for better checks!
-EOF
- elif $found_tdbdump; then
- cat <<EOF
-WARNING: 'tdbtool' is not available.
- Using 'tdbdump' to check the databases.
- Consider installing a recent 'tdbtool' for better checks!
-EOF
- else
- cat <<EOF
-WARNING: Cannot check databases since neither
- 'tdbdump' nor 'tdbtool check' is available.
- Consider installing tdbtool or at least tdbdump!
-EOF
- return 1
- fi
-}
-
-check_tdb()
-{
- _db="$1"
-
- if $use_tdb_tool_check; then
- # tdbtool always exits with 0 :-(
- if timeout 10 tdbtool "$_db" check 2>/dev/null |
- grep -q "Database integrity is OK"; then
- return 0
- else
- return 1
- fi
- else
- timeout 10 tdbdump "$_db" >/dev/null 2>/dev/null
- return $?
- fi
-}
-
-check_persistent_databases()
-{
- _dir="${CTDB_DBDIR_PERSISTENT:-${CTDB_VARDIR}/persistent}"
- [ -d "$_dir" ] || return 0
-
- for _db in "$_dir/"*.tdb.*[0-9]; do
- [ -r "$_db" ] || continue
- check_tdb "$_db" ||
- die "Persistent database $_db is corrupted! CTDB will not start."
- done
-}
-
-check_non_persistent_databases()
-{
- _dir="${CTDB_DBDIR:-${CTDB_VARDIR}}"
- [ -d "$_dir" ] || return 0
-
- for _db in "${_dir}/"*.tdb.*[0-9]; do
- [ -r "$_db" ] || continue
- check_tdb "$_db" || {
- _backup="${_db}.$(date +'%Y%m%d.%H%M%S').corrupt"
- cat <<EOF
-WARNING: database ${_db} is corrupted.
- Moving to backup ${_backup} for later analysis.
-EOF
- mv "$_db" "$_backup"
-
- # Now remove excess backups
- _max="${CTDB_MAX_CORRUPT_DB_BACKUPS:-10}"
- _bdb="${_db##*/}" # basename
- find "$_dir" -name "${_bdb}.*.corrupt" |
- sort -r |
- tail -n +$((_max + 1)) |
- xargs rm -f
- }
- done
-}
-
-############################################################
-
ctdb_check_args "$@"
case "$1" in
init)
- # make sure we have a blank state directory for the scripts to work with
+ # Initialise script directory
rm -rf "$CTDB_SCRIPT_VARDIR"
mkdir -p "$CTDB_SCRIPT_VARDIR" ||
die "mkdir -p ${CTDB_SCRIPT_VARDIR} - failed - $?" $?
-
- # Load/cache database options from configuration file
- ctdb_get_db_options
-
- if select_tdb_checker; then
- check_persistent_databases || exit $?
- check_non_persistent_databases
- fi
;;
esac
--- /dev/null
+#!/bin/sh
+
+# Event script for ctdb-specific setup and other things that don't fit
+# elsewhere.
+
+[ -n "$CTDB_BASE" ] ||
+ CTDB_BASE=$(d=$(dirname "$0") && cd -P "$d" && dirname "$PWD")
+
+. "${CTDB_BASE}/functions"
+
+load_script_options
+
+############################################################
+
+# type is commonly supported and more portable than which(1)
+# shellcheck disable=SC2039
+select_tdb_checker()
+{
+ # Find the best TDB consistency check available.
+ use_tdb_tool_check=false
+ type tdbtool >/dev/null 2>&1 && found_tdbtool=true
+ type tdbdump >/dev/null 2>&1 && found_tdbdump=true
+
+ if $found_tdbtool && echo "help" | tdbtool | grep -q check; then
+ use_tdb_tool_check=true
+ elif $found_tdbtool && $found_tdbdump; then
+ cat <<EOF
+WARNING: The installed 'tdbtool' does not offer the 'check' subcommand.
+ Using 'tdbdump' for database checks.
+ Consider updating 'tdbtool' for better checks!
+EOF
+ elif $found_tdbdump; then
+ cat <<EOF
+WARNING: 'tdbtool' is not available.
+ Using 'tdbdump' to check the databases.
+ Consider installing a recent 'tdbtool' for better checks!
+EOF
+ else
+ cat <<EOF
+WARNING: Cannot check databases since neither
+ 'tdbdump' nor 'tdbtool check' is available.
+ Consider installing tdbtool or at least tdbdump!
+EOF
+ return 1
+ fi
+}
+
+check_tdb()
+{
+ _db="$1"
+
+ if $use_tdb_tool_check; then
+ # tdbtool always exits with 0 :-(
+ if timeout 10 tdbtool "$_db" check 2>/dev/null |
+ grep -q "Database integrity is OK"; then
+ return 0
+ else
+ return 1
+ fi
+ else
+ timeout 10 tdbdump "$_db" >/dev/null 2>/dev/null
+ return $?
+ fi
+}
+
+check_persistent_databases()
+{
+ _dir="${CTDB_DBDIR_PERSISTENT:-${CTDB_VARDIR}/persistent}"
+ [ -d "$_dir" ] || return 0
+
+ for _db in "$_dir/"*.tdb.*[0-9]; do
+ [ -r "$_db" ] || continue
+ check_tdb "$_db" ||
+ die "Persistent database $_db is corrupted! CTDB will not start."
+ done
+}
+
+check_non_persistent_databases()
+{
+ _dir="${CTDB_DBDIR:-${CTDB_VARDIR}}"
+ [ -d "$_dir" ] || return 0
+
+ for _db in "${_dir}/"*.tdb.*[0-9]; do
+ [ -r "$_db" ] || continue
+ check_tdb "$_db" || {
+ _backup="${_db}.$(date +'%Y%m%d.%H%M%S').corrupt"
+ cat <<EOF
+WARNING: database ${_db} is corrupted.
+ Moving to backup ${_backup} for later analysis.
+EOF
+ mv "$_db" "$_backup"
+
+ # Now remove excess backups
+ _max="${CTDB_MAX_CORRUPT_DB_BACKUPS:-10}"
+ _bdb="${_db##*/}" # basename
+ find "$_dir" -name "${_bdb}.*.corrupt" |
+ sort -r |
+ tail -n +$((_max + 1)) |
+ xargs rm -f
+ }
+ done
+}
+
+############################################################
+
+ctdb_check_args "$@"
+
+case "$1" in
+init)
+ # Load/cache database options from configuration file
+ ctdb_get_db_options
+
+ if select_tdb_checker; then
+ check_persistent_databases || exit $?
+ check_non_persistent_databases
+ fi
+ ;;
+esac
+
+# all OK
+exit 0
<refsect1>
<title>
- DATABASE SETUP
+ DATABASE HANDLING
</title>
<para>
</para>
<refsect2>
- <title>00.ctdb</title>
+ <title>95.database</title>
<variablelist>
</para>
<screen>
# ctdb event status legacy monitor
-00.ctdb OK 0.014 Sat Dec 17 19:39:11 2016
-01.reclock OK 0.013 Sat Dec 17 19:39:11 2016
-05.system OK 0.029 Sat Dec 17 19:39:11 2016
-10.interface OK 0.037 Sat Dec 17 19:39:11 2016
-11.natgw OK 0.011 Sat Dec 17 19:39:11 2016
-11.routing OK 0.007 Sat Dec 17 19:39:11 2016
-13.per_ip_routing OK 0.007 Sat Dec 17 19:39:11 2016
-20.multipathd OK 0.007 Sat Dec 17 19:39:11 2016
-31.clamd OK 0.007 Sat Dec 17 19:39:11 2016
-40.vsftpd OK 0.013 Sat Dec 17 19:39:11 2016
-41.httpd OK 0.018 Sat Dec 17 19:39:11 2016
-49.winbind OK 0.023 Sat Dec 17 19:39:11 2016
-50.samba OK 0.100 Sat Dec 17 19:39:12 2016
-60.nfs OK 0.376 Sat Dec 17 19:39:12 2016
-70.iscsi OK 0.009 Sat Dec 17 19:39:12 2016
-91.lvs OK 0.007 Sat Dec 17 19:39:12 2016
+00.ctdb OK 0.014 Sat Apr 15 19:39:11 2024
+01.reclock OK 0.013 Sat Apr 15 19:39:11 2024
+05.system OK 0.029 Sat Apr 15 19:39:11 2024
+10.interface OK 0.037 Sat Apr 15 19:39:11 2024
+11.natgw OK 0.011 Sat Apr 15 19:39:11 2024
+11.routing OK 0.007 Sat Apr 15 19:39:11 2024
+13.per_ip_routing OK 0.007 Sat Apr 15 19:39:11 2024
+20.multipathd OK 0.007 Sat Apr 15 19:39:11 2024
+31.clamd OK 0.007 Sat Apr 15 19:39:11 2024
+40.vsftpd OK 0.013 Sat Apr 15 19:39:11 2024
+41.httpd OK 0.018 Sat Apr 15 19:39:11 2024
+49.winbind OK 0.023 Sat Apr 15 19:39:11 2024
+50.samba OK 0.100 Sat Apr 15 19:39:12 2024
+60.nfs OK 0.376 Sat Apr 15 19:39:12 2024
+70.iscsi OK 0.009 Sat Apr 15 19:39:12 2024
+91.lvs OK 0.007 Sat Apr 15 19:39:12 2024
+95.database OK 0.009 Sat Apr 15 19:39:12 2024
</screen>
<para>
</para>
<screen>
# ctdb event status legacy monitor
-00.ctdb OK 0.011 Sat Dec 17 19:40:46 2016
-01.reclock OK 0.010 Sat Dec 17 19:40:46 2016
-05.system OK 0.030 Sat Dec 17 19:40:46 2016
-10.interface OK 0.041 Sat Dec 17 19:40:46 2016
-11.natgw OK 0.008 Sat Dec 17 19:40:46 2016
-11.routing OK 0.007 Sat Dec 17 19:40:46 2016
-13.per_ip_routing OK 0.007 Sat Dec 17 19:40:46 2016
-20.multipathd OK 0.007 Sat Dec 17 19:40:46 2016
-31.clamd OK 0.007 Sat Dec 17 19:40:46 2016
-40.vsftpd OK 0.013 Sat Dec 17 19:40:46 2016
-41.httpd OK 0.015 Sat Dec 17 19:40:46 2016
-49.winbind OK 0.022 Sat Dec 17 19:40:46 2016
-50.samba ERROR 0.077 Sat Dec 17 19:40:46 2016
+00.ctdb OK 0.011 Sat Apr 15 19:40:46 2024
+01.reclock OK 0.010 Sat Apr 15 19:40:46 2024
+05.system OK 0.030 Sat Apr 15 19:40:46 2024
+10.interface OK 0.041 Sat Apr 15 19:40:46 2024
+11.natgw OK 0.008 Sat Apr 15 19:40:46 2024
+11.routing OK 0.007 Sat Apr 15 19:40:46 2024
+13.per_ip_routing OK 0.007 Sat Apr 15 19:40:46 2024
+20.multipathd OK 0.007 Sat Apr 15 19:40:46 2024
+31.clamd OK 0.007 Sat Apr 15 19:40:46 2024
+40.vsftpd OK 0.013 Sat Apr 15 19:40:46 2024
+41.httpd OK 0.015 Sat Apr 15 19:40:46 2024
+49.winbind OK 0.022 Sat Apr 15 19:40:46 2024
+50.samba ERROR 0.077 Sat Apr 15 19:40:46 2024
OUTPUT: ERROR: samba tcp port 445 is not responding
</screen>
</listitem>
* 60.nfs
70.iscsi
91.lvs
+* 95.database
* 02.local
</screen>
01.reclock
05.system
10.interface
+ 95.database
"
for t in $default_scripts ; do
tgt="%{_datadir}/ctdb/events/legacy/${t}.script"
'01.reclock',
'05.system',
'10.interface',
+ '95.database',
]
for t in default_scripts:
tgt = os.path.join(bld.env.CTDB_DATADIR, fmt % (t))