Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • lts-team/packages/samba
  • thctlo/samba-lintianfix
  • arnaudr/samba
  • jrwren/samba
  • paride/samba
  • athos/samba
  • henrich/samba
  • cnotin/samba
  • mimi89999/samba
  • samba-team/samba
  • ahasenack/samba
  • jrtc27/samba
  • noel/samba
13 results
Show changes
Commits on Source (270)
Showing
with 528 additions and 7713 deletions
......@@ -25,7 +25,7 @@
########################################################
SAMBA_VERSION_MAJOR=4
SAMBA_VERSION_MINOR=17
SAMBA_VERSION_RELEASE=6
SAMBA_VERSION_RELEASE=11
########################################################
# If a official release has a serious bug #
......
===============================
Release Notes for Samba 4.17.11
September 07, 2023
===============================
This is the latest stable release of the Samba 4.17 release series.
Changes since 4.17.10
---------------------
o Jeremy Allison <jra@samba.org>
* BUG 15419: Weird filename can cause assert to fail in
openat_pathref_fsp_nosymlink().
* BUG 15420: reply_sesssetup_and_X() can dereference uninitialized tmp
pointer.
* BUG 15430: Missing return in reply_exit_done().
* BUG 15432: TREE_CONNECT without SETUP causes smbd to use uninitialized
pointer.
o Andrew Bartlett <abartlet@samba.org>
* BUG 15401: Improve GetNChanges to address some (but not all "Azure AD
Connect") syncronisation tool looping during the initial user sync phase.
* BUG 15407: Samba replication logs show (null) DN.
* BUG 9959: Windows client join fails if a second container CN=System exists
somewhere.
o Ralph Boehme <slow@samba.org>
* BUG 15342: Spotlight sometimes returns no results on latest macOS.
* BUG 15417: Renaming results in NT_STATUS_SHARING_VIOLATION if previously
attempted to remove the destination.
* BUG 15427: Spotlight results return wrong date in result list.
* BUG 15463: macOS mdfind returns only 50 results.
o Volker Lendecke <vl@samba.org>
* BUG 15346: 2-3min delays at reconnect with smb2_validate_sequence_number:
bad message_id 2.
o Stefan Metzmacher <metze@samba.org>
* BUG 15346: 2-3min delays at reconnect with smb2_validate_sequence_number:
bad message_id 2.
* BUG 15441: samba-tool ntacl get segfault if aio_pthread appended.
* BUG 15446: DCERPC_PKT_CO_CANCEL and DCERPC_PKT_ORPHANED can't be parsed.
o MikeLiu <mikeliu@qnap.com>
* BUG 15453: File doesn't show when user doesn't have permission if
aio_pthread is loaded.
o Noel Power <noel.power@suse.com>
* BUG 15384: net ads lookup (with unspecified realm) fails
* BUG 15435: Regression DFS not working with widelinks = true.
o Arvid Requate <requate@univention.de>
* BUG 9959: Windows client join fails if a second container CN=System exists
somewhere.
o Martin Schwenke <mschwenke@ddn.com>
* BUG 15451: ctdb_killtcp fails to work with --enable-pcap and libpcap ≥
1.9.1.
o Jones Syue <jonessyue@qnap.com>
* BUG 15441: samba-tool ntacl get segfault if aio_pthread appended.
* BUG 15449: mdssvc: Do an early talloc_free() in _mdssvc_open().
#######################################
Reporting bugs & Development Discussion
#######################################
Please discuss this release on the samba-technical mailing list or by
joining the #samba-technical:matrix.org matrix room, or
#samba-technical IRC channel on irc.libera.chat.
If you do report problems then please try to send high quality
feedback. If you don't provide vital information to help us track down
the problem then you will probably be ignored. All bug reports should
be filed under the Samba 4.1 and newer product in the project's Bugzilla
database (https://bugzilla.samba.org/).
======================================================================
== Our Code, Our Bugs, Our Responsibility.
== The Samba Team
======================================================================
Release notes for older releases follow:
----------------------------------------
===============================
Release Notes for Samba 4.17.10
July 19, 2023
===============================
This is a security release in order to address the following defects:
o CVE-2022-2127: When winbind is used for NTLM authentication, a maliciously
crafted request can trigger an out-of-bounds read in winbind
and possibly crash it.
https://www.samba.org/samba/security/CVE-2022-2127.html
o CVE-2023-3347: SMB2 packet signing is not enforced if an admin configured
"server signing = required" or for SMB2 connections to Domain
Controllers where SMB2 packet signing is mandatory.
https://www.samba.org/samba/security/CVE-2023-3347.html
o CVE-2023-34966: An infinite loop bug in Samba's mdssvc RPC service for
Spotlight can be triggered by an unauthenticated attacker by
issuing a malformed RPC request.
https://www.samba.org/samba/security/CVE-2023-34966.html
o CVE-2023-34967: Missing type validation in Samba's mdssvc RPC service for
Spotlight can be used by an unauthenticated attacker to
trigger a process crash in a shared RPC mdssvc worker process.
https://www.samba.org/samba/security/CVE-2023-34967.html
o CVE-2023-34968: As part of the Spotlight protocol Samba discloses the server-
side absolute path of shares and files and directories in
search results.
https://www.samba.org/samba/security/CVE-2023-34968.html
Changes since 4.17.9
--------------------
o Ralph Boehme <slow@samba.org>
* BUG 15072: CVE-2022-2127.
* BUG 15340: CVE-2023-34966.
* BUG 15341: CVE-2023-34967.
* BUG 15388: CVE-2023-34968.
* BUG 15397: CVE-2023-3347.
o Volker Lendecke <vl@samba.org>
* BUG 15072: CVE-2022-2127.
o Stefan Metzmacher <metze@samba.org>
* BUG 15418: Secure channel faulty since Windows 10/11 update 07/2023.
#######################################
Reporting bugs & Development Discussion
#######################################
Please discuss this release on the samba-technical mailing list or by
joining the #samba-technical:matrix.org matrix room, or
#samba-technical IRC channel on irc.libera.chat.
If you do report problems then please try to send high quality
feedback. If you don't provide vital information to help us track down
the problem then you will probably be ignored. All bug reports should
be filed under the Samba 4.1 and newer product in the project's Bugzilla
database (https://bugzilla.samba.org/).
======================================================================
== Our Code, Our Bugs, Our Responsibility.
== The Samba Team
======================================================================
----------------------------------------------------------------------
==============================
Release Notes for Samba 4.17.9
July 06, 2023
==============================
This is the latest stable release of the Samba 4.17 release series.
Changes since 4.17.8
--------------------
o Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
* BUG 15404: Backport --pidl-developer fixes.
o Ralph Boehme <slow@samba.org>
* BUG 15275: smbd_scavenger crashes when service smbd is stopped.
* BUG 15378: vfs_fruit might cause a failing open for delete.
o Samuel Cabrero <scabrero@samba.org>
* BUG 14030: named crashes on DLZ zone update.
o Volker Lendecke <vl@samba.org>
* BUG 15361: winbind recurses into itself via rpcd_lsad.
* BUG 15382: cli_list loops 100% CPU against pre-lanman2 servers.
* BUG 15391: smbclient leaks fds with showacls.
o Stefan Metzmacher <metze@samba.org>
* BUG 15374: aes256 smb3 encryption algorithms are not allowed in
smb3_sid_parse().
* BUG 15413: winbindd gets stuck on NT_STATUS_RPC_SEC_PKG_ERROR.
o Jones Syue <jonessyue@qnap.com>
* BUG 15403: smbget memory leak if failed to download files recursively.
#######################################
Reporting bugs & Development Discussion
#######################################
Please discuss this release on the samba-technical mailing list or by
joining the #samba-technical:matrix.org matrix room, or
#samba-technical IRC channel on irc.libera.chat.
If you do report problems then please try to send high quality
feedback. If you don't provide vital information to help us track down
the problem then you will probably be ignored. All bug reports should
be filed under the Samba 4.1 and newer product in the project's Bugzilla
database (https://bugzilla.samba.org/).
======================================================================
== Our Code, Our Bugs, Our Responsibility.
== The Samba Team
======================================================================
----------------------------------------------------------------------
==============================
Release Notes for Samba 4.17.8
May 11, 2023
==============================
This is the latest stable release of the Samba 4.17 release series.
Changes since 4.17.7
--------------------
o Jeremy Allison <jra@samba.org>
* BUG 15302: log flood: smbd_calculate_access_mask_fsp: Access denied:
message level should be lower.
* BUG 15306: Floating point exception (FPE) via cli_pull_send at
source3/libsmb/clireadwrite.c.
o Andrew Bartlett <abartlet@samba.org>
* BUG 15328: test_tstream_more_tcp_user_timeout_spin fails intermittently on
Rackspace GitLab runners.
* BUG 15329: Reduce flapping of ridalloc test.
* BUG 15351: large_ldap test is unreliable.
o Ralph Boehme <slow@samba.org>
* BUG 15143: New filename parser doesn't check veto files smb.conf parameter.
* BUG 15354: mdssvc may crash when initializing.
o Volker Lendecke <vl@samba.org>
* BUG 15313: Large directory optimization broken for non-lcomp path elements.
* BUG 15357: streams_depot fails to create streams.
* BUG 15358: shadow_copy2 and streams_depot don't play well together.
* BUG 15366: wbinfo -u fails on ad dc with >1000 users.
o Stefan Metzmacher <metze@samba.org>
* BUG 15317: winbindd idmap child contacts the domain controller without a
need.
* BUG 15318: idmap_autorid may fail to map sids of trusted domains for the
first time.
* BUG 15319: idmap_hash doesn't use ID_TYPE_BOTH for reverse mappings.
* BUG 15323: net ads search -P doesn't work against servers in other domains.
* BUG 15338: DS ACEs might be inherited to unrelated object classes.
* BUG 15353: Temporary smbXsrv_tcon_global.tdb can't be parsed.
o Andreas Schneider <asn@samba.org>
* BUG 15360: Setting veto files = /.*/ break listing directories.
o Joseph Sutton <josephsutton@catalyst.net.nz>
* BUG 14810: CVE-2020-25720 [SECURITY] Create Child permission should not
allow full write to all attributes (additional changes).
* BUG 15329: Reduce flapping of ridalloc test.
o Nathaniel W. Turner <nturner@exagrid.com>
* BUG 15325: dsgetdcname: assumes local system uses IPv4.
#######################################
Reporting bugs & Development Discussion
#######################################
Please discuss this release on the samba-technical mailing list or by
joining the #samba-technical:matrix.org matrix room, or
#samba-technical IRC channel on irc.libera.chat.
If you do report problems then please try to send high quality
feedback. If you don't provide vital information to help us track down
the problem then you will probably be ignored. All bug reports should
be filed under the Samba 4.1 and newer product in the project's Bugzilla
database (https://bugzilla.samba.org/).
======================================================================
== Our Code, Our Bugs, Our Responsibility.
== The Samba Team
======================================================================
----------------------------------------------------------------------
==============================
Release Notes for Samba 4.17.7
March 29, 2023
==============================
This is a security release in order to address the following defects:
o CVE-2023-0225: An incomplete access check on dnsHostName allows authenticated
but otherwise unprivileged users to delete this attribute from
any object in the directory.
https://www.samba.org/samba/security/CVE-2023-0225.html
o CVE-2023-0922: The Samba AD DC administration tool, when operating against a
remote LDAP server, will by default send new or reset
passwords over a signed-only connection.
https://www.samba.org/samba/security/CVE-2023-0922.html
o CVE-2023-0614: The fix in 4.6.16, 4.7.9, 4.8.4 and 4.9.7 for CVE-2018-10919
Confidential attribute disclosure via LDAP filters was
insufficient and an attacker may be able to obtain
confidential BitLocker recovery keys from a Samba AD DC.
Installations with such secrets in their Samba AD should
assume they have been obtained and need replacing.
https://www.samba.org/samba/security/CVE-2023-0614.html
Changes since 4.17.6
--------------------
o Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
* BUG 15276: CVE-2023-0225.
o Andrew Bartlett <abartlet@samba.org>
* BUG 15270: CVE-2023-0614.
* BUG 15331: ldb wildcard matching makes excessive allocations.
* BUG 15332: large_ldap test is inefficient.
o Rob van der Linde <rob@catalyst.net.nz>
* BUG 15315: CVE-2023-0922.
o Joseph Sutton <josephsutton@catalyst.net.nz>
* BUG 14810: CVE-2020-25720 [SECURITY] Create Child permission should not
allow full write to all attributes (additional changes).
* BUG 15270: CVE-2023-0614.
* BUG 15276: CVE-2023-0225.
#######################################
Reporting bugs & Development Discussion
#######################################
Please discuss this release on the samba-technical mailing list or by
joining the #samba-technical:matrix.org matrix room, or
#samba-technical IRC channel on irc.libera.chat.
If you do report problems then please try to send high quality
feedback. If you don't provide vital information to help us track down
the problem then you will probably be ignored. All bug reports should
be filed under the Samba 4.1 and newer product in the project's Bugzilla
database (https://bugzilla.samba.org/).
======================================================================
== Our Code, Our Bugs, Our Responsibility.
== The Samba Team
======================================================================
----------------------------------------------------------------------
==============================
Release Notes for Samba 4.17.6
March 09, 2023
......@@ -58,8 +426,7 @@ database (https://bugzilla.samba.org/).
======================================================================
Release notes for older releases follow:
----------------------------------------
----------------------------------------------------------------------
==============================
Release Notes for Samba 4.17.5
January 26, 2023
......
......@@ -747,13 +747,6 @@ int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,
return 0;
}
/*
* Packet capture
*
* If AF_PACKET is available then use a raw socket otherwise use pcap.
* wscript has checked to make sure that pcap is available if needed.
*/
static int tcp4_extract(const uint8_t *ip_pkt,
size_t pktlen,
struct sockaddr_in *src,
......@@ -864,8 +857,14 @@ static int tcp6_extract(const uint8_t *ip_pkt,
return 0;
}
/*
* Packet capture
*
* If AF_PACKET is available then use a raw socket otherwise use pcap.
* wscript has checked to make sure that pcap is available if needed.
*/
#ifdef HAVE_AF_PACKET
#if defined(HAVE_AF_PACKET) && !defined(ENABLE_PCAP)
/*
* This function is used to open a raw socket to capture from
......@@ -881,7 +880,7 @@ int ctdb_sys_open_capture_socket(const char *iface, void **private_data)
return -1;
}
DBG_DEBUG("Created RAW SOCKET FD:%d for tcp tickle\n", s);
DBG_DEBUG("Opened raw socket for TCP tickle capture (fd=%d)\n", s);
ret = set_blocking(s, false);
if (ret != 0) {
......@@ -964,22 +963,92 @@ int ctdb_sys_read_tcp_packet(int s, void *private_data,
return ENOMSG;
}
#else /* HAVE_AF_PACKET */
#else /* defined(HAVE_AF_PACKET) && !defined(ENABLE_PCAP) */
#include <pcap.h>
/*
* Assume this exists if pcap.h exists - it has been around for a
* while
*/
#include <pcap/sll.h>
int ctdb_sys_open_capture_socket(const char *iface, void **private_data)
{
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t *pt;
int pcap_packet_type;
const char *t = NULL;
int fd;
int ret;
pt=pcap_open_live(iface, 100, 0, 0, NULL);
pt = pcap_create(iface, errbuf);
if (pt == NULL) {
DBG_ERR("Failed to open capture device %s\n", iface);
DBG_ERR("Failed to open pcap capture device %s (%s)\n",
iface,
errbuf);
return -1;
}
/*
* pcap isn't very clear about defaults...
*/
ret = pcap_set_snaplen(pt, 100);
if (ret < 0) {
DBG_ERR("Failed to set snaplen for pcap capture\n");
goto fail;
}
ret = pcap_set_promisc(pt, 0);
if (ret < 0) {
DBG_ERR("Failed to unset promiscuous mode for pcap capture\n");
goto fail;
}
ret = pcap_set_timeout(pt, 0);
if (ret < 0) {
DBG_ERR("Failed to set timeout for pcap capture\n");
goto fail;
}
#ifdef HAVE_PCAP_SET_IMMEDIATE_MODE
ret = pcap_set_immediate_mode(pt, 1);
if (ret < 0) {
DBG_ERR("Failed to set immediate mode for pcap capture\n");
goto fail;
}
#endif
ret = pcap_activate(pt);
if (ret < 0) {
DBG_ERR("Failed to activate pcap capture\n");
goto fail;
}
pcap_packet_type = pcap_datalink(pt);
switch (pcap_packet_type) {
case DLT_EN10MB:
t = "DLT_EN10MB";
break;
case DLT_LINUX_SLL:
t = "DLT_LINUX_SLL";
break;
#ifdef DLT_LINUX_SLL2
case DLT_LINUX_SLL2:
t = "DLT_LINUX_SLL2";
break;
#endif /* DLT_LINUX_SLL2 */
default:
DBG_ERR("Unknown pcap packet type %d\n", pcap_packet_type);
goto fail;
}
fd = pcap_get_selectable_fd(pt);
DBG_DEBUG("Opened pcap capture for TCP tickle (type=%s, fd=%d)\n",
t,
fd);
*((pcap_t **)private_data) = pt;
return fd;
return pcap_fileno(pt);
fail:
pcap_close(pt);
return -1;
}
int ctdb_sys_close_capture_socket(void *private_data)
......@@ -999,10 +1068,12 @@ int ctdb_sys_read_tcp_packet(int s,
uint16_t *window)
{
int ret;
struct ether_header *eth;
struct pcap_pkthdr pkthdr;
const u_char *buffer;
pcap_t *pt = (pcap_t *)private_data;
int pcap_packet_type;
uint16_t ether_type;
size_t ll_hdr_len;
buffer=pcap_next(pt, &pkthdr);
if (buffer==NULL) {
......@@ -1012,36 +1083,86 @@ int ctdb_sys_read_tcp_packet(int s,
ZERO_STRUCTP(src);
ZERO_STRUCTP(dst);
/* Ethernet */
eth = (struct ether_header *)buffer;
pcap_packet_type = pcap_datalink(pt);
switch (pcap_packet_type) {
case DLT_EN10MB: {
const struct ether_header *eth =
(const struct ether_header *)buffer;
ether_type = ntohs(eth->ether_type);
ll_hdr_len = sizeof(struct ether_header);
break;
}
case DLT_LINUX_SLL: {
const struct sll_header *sll =
(const struct sll_header *)buffer;
uint16_t arphrd_type = ntohs(sll->sll_hatype);
switch (arphrd_type) {
case ARPHRD_ETHER:
case ARPHRD_INFINIBAND:
break;
default:
DBG_DEBUG("SLL: Unknown arphrd_type %"PRIu16"\n",
arphrd_type);
return EPROTONOSUPPORT;
}
ether_type = ntohs(sll->sll_protocol);
ll_hdr_len = SLL_HDR_LEN;
break;
}
#ifdef DLT_LINUX_SLL2
case DLT_LINUX_SLL2: {
const struct sll2_header *sll2 =
(const struct sll2_header *)buffer;
uint16_t arphrd_type = ntohs(sll2->sll2_hatype);
switch (arphrd_type) {
case ARPHRD_ETHER:
case ARPHRD_INFINIBAND:
break;
default:
DBG_DEBUG("SLL2: Unknown arphrd_type %"PRIu16"\n",
arphrd_type);
return EPROTONOSUPPORT;
}
ether_type = ntohs(sll2->sll2_protocol);
ll_hdr_len = SLL2_HDR_LEN;
break;
}
#endif /* DLT_LINUX_SLL2 */
default:
DBG_DEBUG("Unknown pcap packet type %d\n", pcap_packet_type);
return EPROTONOSUPPORT;
}
/* we want either IPv4 or IPv6 */
if (eth->ether_type == htons(ETHERTYPE_IP)) {
ret = tcp4_extract(buffer + sizeof(struct ether_header),
(size_t)(pkthdr.caplen -
sizeof(struct ether_header)),
switch (ether_type) {
case ETHERTYPE_IP:
ret = tcp4_extract(buffer + ll_hdr_len,
(size_t)pkthdr.caplen - ll_hdr_len,
&src->ip,
&dst->ip,
ack_seq,
seq,
rst,
window);
return ret;
} else if (eth->ether_type == htons(ETHERTYPE_IP6)) {
ret = tcp6_extract(buffer + sizeof(struct ether_header),
(size_t)(pkthdr.caplen -
sizeof(struct ether_header)),
break;
case ETHERTYPE_IP6:
ret = tcp6_extract(buffer + ll_hdr_len,
(size_t)pkthdr.caplen - ll_hdr_len,
&src->ip6,
&dst->ip6,
ack_seq,
seq,
rst,
window);
return ret;
break;
case ETHERTYPE_ARP:
/* Silently ignore ARP packets */
return EPROTO;
default:
DBG_DEBUG("Unknown ether type %"PRIu16"\n", ether_type);
return EPROTO;
}
return ENOMSG;
return ret;
}
#endif /* HAVE_AF_PACKET */
#endif /* defined(HAVE_AF_PACKET) && !defined(ENABLE_PCAP) */
......@@ -452,8 +452,14 @@ kill_tcp_connections ()
return
fi
if [ -n "$CTDB_KILLTCP_DEBUGLEVEL" ]; then
_debuglevel="$CTDB_KILLTCP_DEBUGLEVEL"
else
_debuglevel="$CTDB_DEBUGLEVEL"
fi
echo "$_connections" | \
"${CTDB_HELPER_BINDIR}/ctdb_killtcp" "$_iface" || {
CTDB_DEBUGLEVEL="$_debuglevel" \
"${CTDB_HELPER_BINDIR}/ctdb_killtcp" "$_iface" || {
echo "Failed to kill TCP connections"
return
}
......
'\" t
.\" Title: ctdb-etcd
.\" Author:
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\" Date: 03/09/2023
.\" Manual: CTDB - clustered TDB database
.\" Source: ctdb
.\" Language: English
.\"
.TH "CTDB\-ETCD" "7" "03/09/2023" "ctdb" "CTDB \- clustered TDB database"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
ctdb-etcd \- CTDB etcd integration
.SH "SYNOPSIS"
.HP \w'\fBctdb_etcd_lock\fR\ 'u
\fBctdb_etcd_lock\fR
.SH "DESCRIPTION"
.PP
ctdb_etcd_lock is intended to be run as a mutex helper for CTDB\&. It will try to connect to an existing etcd cluster and grab a lock in that cluster to function as CTDB\*(Aqs cluster lock\&. Please see
\fIctdb/doc/cluster_mutex_helper\&.txt\fR
for details on the mutex helper API\&. To use this, include the following line in the
[cluster]
section of
\fBctdb.conf\fR(5):
.sp
.if n \{\
.RS 4
.\}
.nf
cluster lock = !/usr/local/usr/libexec/ctdb/ctdb_etcd_lock
.fi
.if n \{\
.RE
.\}
.PP
You can also pass "\-v", "\-vv", or "\-vvv" to include verbose output in the CTDB log\&. Additional "v"s indicate increases in verbosity\&.
.PP
This mutex helper expects the system Python interpreter to have access to the etcd Python module\&. It also expects an etcd cluster to be configured and running\&. To integrate with this, there is an optional config file of the following format:
.sp
.if n \{\
.RS 4
.\}
.nf
key = value
.fi
.if n \{\
.RE
.\}
.PP
The following configuration parameters (and their defaults) are defined for use by ctdb_etcd_lock:
.sp
.if n \{\
.RS 4
.\}
.nf
port = 2379 # connecting port for the etcd cluster
lock_ttl = 9 # seconds for TTL
refresh = 2 # seconds between attempts to maintain lock
locks_dir = _ctdb # where to store CTDB locks in etcd
# The final etcd directory for any given lock looks like:
# /_locks/{locks_dir}/{netbios name}/
.fi
.if n \{\
.RE
.\}
.PP
In addition, any keyword parameter that can be used to configure an etcd client may be specified and modified here\&. For more documentation on these parameters, see here: https://github\&.com/jplana/python\-etcd/
.SH "SEE ALSO"
.PP
\fBctdb\fR(7),
\fBctdbd\fR(1),
\m[blue]\fB\%http://ctdb.samba.org/\fR\m[]
.SH "AUTHOR"
.br
.PP
This documentation was written by Jose A\&. Rivera
.SH "COPYRIGHT"
.br
Copyright \(co 2016 Jose A. Rivera
.br
.PP
This program 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; either version 3 of the License, or (at your option) any later version\&.
.PP
This program 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\&.
.PP
You should have received a copy of the GNU General Public License along with this program; if not, see
\m[blue]\fB\%http://www.gnu.org/licenses\fR\m[]\&.
.sp
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ctdb-etcd</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry"><a name="ctdb-etcd.7"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ctdb-etcd &#8212; CTDB etcd integration</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">ctdb_etcd_lock</code> </p></div></div><div class="refsect1"><a name="idm24"></a><h2>DESCRIPTION</h2><p>
ctdb_etcd_lock is intended to be run as a mutex helper for CTDB. It
will try to connect to an existing etcd cluster and grab a lock in that
cluster to function as CTDB's cluster lock. Please see
<span class="emphasis"><em>ctdb/doc/cluster_mutex_helper.txt</em></span> for details on
the mutex helper API. To use this, include the following line in
the <code class="literal">[cluster]</code> section of
<span class="citerefentry"><span class="refentrytitle">ctdb.conf</span>(5)</span>:
</p><pre class="screen">
cluster lock = !/usr/local/usr/libexec/ctdb/ctdb_etcd_lock
</pre><p>
You can also pass "-v", "-vv", or "-vvv" to include verbose output in
the CTDB log. Additional "v"s indicate increases in verbosity.
</p><p>
This mutex helper expects the system Python interpreter to have access
to the etcd Python module. It also expects an etcd cluster to be
configured and running. To integrate with this, there is an optional
config file of the following format:
</p><pre class="screen">
key = value
</pre><p>
The following configuration parameters (and their defaults) are defined
for use by ctdb_etcd_lock:
</p><pre class="screen">
port = 2379 # connecting port for the etcd cluster
lock_ttl = 9 # seconds for TTL
refresh = 2 # seconds between attempts to maintain lock
locks_dir = _ctdb # where to store CTDB locks in etcd
# The final etcd directory for any given lock looks like:
# /_locks/{locks_dir}/{netbios name}/
</pre><p>
In addition, any keyword parameter that can be used to configure an
etcd client may be specified and modified here. For more documentation
on these parameters, see here: https://github.com/jplana/python-etcd/
</p></div><div class="refsect1"><a name="idm39"></a><h2>SEE ALSO</h2><p>
<span class="citerefentry"><span class="refentrytitle">ctdb</span>(7)</span>,
<span class="citerefentry"><span class="refentrytitle">ctdbd</span>(1)</span>,
<a class="ulink" href="http://ctdb.samba.org/" target="_top">http://ctdb.samba.org/</a>
</p></div></div></body></html>
'\" t
.\" Title: ctdb-script.options
.\" Author:
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\" Date: 03/09/2023
.\" Manual: CTDB - clustered TDB database
.\" Source: ctdb
.\" Language: English
.\"
.TH "CTDB\-SCRIPT\&.OPTIO" "5" "03/09/2023" "ctdb" "CTDB \- clustered TDB database"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
ctdb-script.options \- CTDB scripts configuration files
.SH "DESCRIPTION"
.PP
Each CTDB script has 2 possible locations for its configuration options:
.PP
/usr/local/etc/ctdb/script\&.options
.RS 4
This is a catch\-all global file for general purpose scripts and for options that are used in multiple event scripts\&.
.RE
.PP
\fISCRIPT\fR\&.options
.RS 4
That is, options for
\fISCRIPT\fR
are placed in a file alongside the script, with a "\&.script" suffix added\&. This style is usually recommended for event scripts\&.
.sp
Options in this script\-specific file override those in the global file\&.
.RE
.PP
These files should include simple shell\-style variable assignments and shell\-style comments\&.
.SH "NETWORK CONFIGURATION"
.SS "10\&.interface"
.PP
This event script handles monitoring of interfaces using by public IP addresses\&.
.PP
CTDB_PARTIALLY_ONLINE_INTERFACES=yes|no
.RS 4
Whether one or more offline interfaces should cause a monitor event to fail if there are other interfaces that are up\&. If this is "yes" and a node has some interfaces that are down then
\fBctdb status\fR
will display the node as "PARTIALLYONLINE"\&.
.sp
Note that CTDB_PARTIALLY_ONLINE_INTERFACES=yes is not generally compatible with NAT gateway or LVS\&. NAT gateway relies on the interface configured by CTDB_NATGW_PUBLIC_IFACE to be up and LVS replies on CTDB_LVS_PUBLIC_IFACE to be up\&. CTDB does not check if these options are set in an incompatible way so care is needed to understand the interaction\&.
.sp
Default is "no"\&.
.RE
.SS "11\&.natgw"
.PP
Provides CTDB\*(Aqs NAT gateway functionality\&.
.PP
NAT gateway is used to configure fallback routing for nodes when they do not host any public IP addresses\&. For example, it allows unhealthy nodes to reliably communicate with external infrastructure\&. One node in a NAT gateway group will be designated as the NAT gateway leader node and other (follower) nodes will be configured with fallback routes via the NAT gateway leader node\&. For more information, see the
NAT GATEWAY
section in
\fBctdb\fR(7)\&.
.PP
CTDB_NATGW_DEFAULT_GATEWAY=\fIIPADDR\fR
.RS 4
IPADDR is an alternate network gateway to use on the NAT gateway leader node\&. If set, a fallback default route is added via this network gateway\&.
.sp
No default\&. Setting this variable is optional \- if not set that no route is created on the NAT gateway leader node\&.
.RE
.PP
CTDB_NATGW_NODES=\fIFILENAME\fR
.RS 4
FILENAME contains the list of nodes that belong to the same NAT gateway group\&.
.sp
File format:
.sp
.if n \{\
.RS 4
.\}
.nf
\fIIPADDR\fR [follower\-only]
.fi
.if n \{\
.RE
.\}
.sp
IPADDR is the private IP address of each node in the NAT gateway group\&.
.sp
If "follower\-only" is specified then the corresponding node can not be the NAT gateway leader node\&. In this case
\fICTDB_NATGW_PUBLIC_IFACE\fR
and
\fICTDB_NATGW_PUBLIC_IP\fR
are optional and unused\&.
.sp
No default, usually
/usr/local/etc/ctdb/natgw_nodes
when enabled\&.
.RE
.PP
CTDB_NATGW_PRIVATE_NETWORK=\fIIPADDR/MASK\fR
.RS 4
IPADDR/MASK is the private sub\-network that is internally routed via the NAT gateway leader node\&. This is usually the private network that is used for node addresses\&.
.sp
No default\&.
.RE
.PP
CTDB_NATGW_PUBLIC_IFACE=\fIIFACE\fR
.RS 4
IFACE is the network interface on which the CTDB_NATGW_PUBLIC_IP will be configured\&.
.sp
No default\&.
.RE
.PP
CTDB_NATGW_PUBLIC_IP=\fIIPADDR/MASK\fR
.RS 4
IPADDR/MASK indicates the IP address that is used for outgoing traffic (originating from CTDB_NATGW_PRIVATE_NETWORK) on the NAT gateway leader node\&. This
\fImust not\fR
be a configured public IP address\&.
.sp
No default\&.
.RE
.PP
CTDB_NATGW_STATIC_ROUTES=\fIIPADDR/MASK[@GATEWAY]\fR \&.\&.\&.
.RS 4
Each IPADDR/MASK identifies a network or host to which NATGW should create a fallback route, instead of creating a single default route\&. This can be used when there is already a default route, via an interface that can not reach required infrastructure, that overrides the NAT gateway default route\&.
.sp
If GATEWAY is specified then the corresponding route on the NATGW leader node will be via GATEWAY\&. Such routes are created even if
\fICTDB_NATGW_DEFAULT_GATEWAY\fR
is not specified\&. If GATEWAY is not specified for some networks then routes are only created on the NATGW leader node for those networks if
\fICTDB_NATGW_DEFAULT_GATEWAY\fR
is specified\&.
.sp
This should be used with care to avoid causing traffic to unnecessarily double\-hop through the NAT gateway leader, even when a node is hosting public IP addresses\&. Each specified network or host should probably have a corresponding automatically created link route or static route to avoid this\&.
.sp
No default\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBExample\fR
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
CTDB_NATGW_NODES=/usr/local/etc/ctdb/natgw_nodes
CTDB_NATGW_PRIVATE_NETWORK=192\&.168\&.1\&.0/24
CTDB_NATGW_DEFAULT_GATEWAY=10\&.0\&.0\&.1
CTDB_NATGW_PUBLIC_IP=10\&.0\&.0\&.227/24
CTDB_NATGW_PUBLIC_IFACE=eth0
.fi
.if n \{\
.RE
.\}
.PP
A variation that ensures that infrastructure (ADS, DNS, \&.\&.\&.) directly attached to the public network (10\&.0\&.0\&.0/24) is always reachable would look like this:
.sp
.if n \{\
.RS 4
.\}
.nf
CTDB_NATGW_NODES=/usr/local/etc/ctdb/natgw_nodes
CTDB_NATGW_PRIVATE_NETWORK=192\&.168\&.1\&.0/24
CTDB_NATGW_PUBLIC_IP=10\&.0\&.0\&.227/24
CTDB_NATGW_PUBLIC_IFACE=eth0
CTDB_NATGW_STATIC_ROUTES=10\&.0\&.0\&.0/24
.fi
.if n \{\
.RE
.\}
.PP
Note that
\fICTDB_NATGW_DEFAULT_GATEWAY\fR
is not specified\&.
.RE
.SS "13\&.per_ip_routing"
.PP
Provides CTDB\*(Aqs policy routing functionality\&.
.PP
A node running CTDB may be a component of a complex network topology\&. In particular, public addresses may be spread across several different networks (or VLANs) and it may not be possible to route packets from these public addresses via the system\*(Aqs default route\&. Therefore, CTDB has support for policy routing via the
13\&.per_ip_routing
eventscript\&. This allows routing to be specified for packets sourced from each public address\&. The routes are added and removed as CTDB moves public addresses between nodes\&.
.PP
For more information, see the
POLICY ROUTING
section in
\fBctdb\fR(7)\&.
.PP
CTDB_PER_IP_ROUTING_CONF=\fIFILENAME\fR
.RS 4
FILENAME contains elements for constructing the desired routes for each source address\&.
.sp
The special FILENAME value
\fB__auto_link_local__\fR
indicates that no configuration file is provided and that CTDB should generate reasonable link\-local routes for each public IP address\&.
.sp
File format:
.sp
.if n \{\
.RS 4
.\}
.nf
\fIIPADDR\fR \fIDEST\-IPADDR/MASK\fR [\fIGATEWAY\-IPADDR\fR]
.fi
.if n \{\
.RE
.\}
.sp
No default, usually
/usr/local/etc/ctdb/policy_routing
when enabled\&.
.RE
.PP
CTDB_PER_IP_ROUTING_RULE_PREF=\fINUM\fR
.RS 4
NUM sets the priority (or preference) for the routing rules that are added by CTDB\&.
.sp
This should be (strictly) greater than 0 and (strictly) less than 32766\&. A priority of 100 is recommended, unless this conflicts with a priority already in use on the system\&. See
\fBip\fR(8), for more details\&.
.RE
.PP
CTDB_PER_IP_ROUTING_TABLE_ID_LOW=\fILOW\-NUM\fR, CTDB_PER_IP_ROUTING_TABLE_ID_HIGH=\fIHIGH\-NUM\fR
.RS 4
CTDB determines a unique routing table number to use for the routing related to each public address\&. LOW\-NUM and HIGH\-NUM indicate the minimum and maximum routing table numbers that are used\&.
.sp
\fBip\fR(8)
uses some reserved routing table numbers below 255\&. Therefore, CTDB_PER_IP_ROUTING_TABLE_ID_LOW should be (strictly) greater than 255\&.
.sp
CTDB uses the standard file
/etc/iproute2/rt_tables
to maintain a mapping between the routing table numbers and labels\&. The label for a public address
\fIADDR\fR
will look like ctdb\&.\fIaddr\fR\&. This means that the associated rules and routes are easy to read (and manipulate)\&.
.sp
No default, usually 1000 and 9000\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBExample\fR
.RS 4
.sp
.if n \{\
.RS 4
.\}
.nf
CTDB_PER_IP_ROUTING_CONF=/usr/local/etc/ctdb/policy_routing
CTDB_PER_IP_ROUTING_RULE_PREF=100
CTDB_PER_IP_ROUTING_TABLE_ID_LOW=1000
CTDB_PER_IP_ROUTING_TABLE_ID_HIGH=9000
.fi
.if n \{\
.RE
.\}
.RE
.SS "91\&.lvs"
.PP
Provides CTDB\*(Aqs LVS functionality\&.
.PP
For a general description see the
LVS
section in
\fBctdb\fR(7)\&.
.PP
CTDB_LVS_NODES=\fIFILENAME\fR
.RS 4
FILENAME contains the list of nodes that belong to the same LVS group\&.
.sp
File format:
.sp
.if n \{\
.RS 4
.\}
.nf
\fIIPADDR\fR [follower\-only]
.fi
.if n \{\
.RE
.\}
.sp
IPADDR is the private IP address of each node in the LVS group\&.
.sp
If "follower\-only" is specified then the corresponding node can not be the LVS leader node\&. In this case
\fICTDB_LVS_PUBLIC_IFACE\fR
and
\fICTDB_LVS_PUBLIC_IP\fR
are optional and unused\&.
.sp
No default, usually
/usr/local/etc/ctdb/lvs_nodes
when enabled\&.
.RE
.PP
CTDB_LVS_PUBLIC_IFACE=\fIINTERFACE\fR
.RS 4
INTERFACE is the network interface that clients will use to connection to
\fICTDB_LVS_PUBLIC_IP\fR\&. This is optional for follower\-only nodes\&. No default\&.
.RE
.PP
CTDB_LVS_PUBLIC_IP=\fIIPADDR\fR
.RS 4
CTDB_LVS_PUBLIC_IP is the LVS public address\&. No default\&.
.RE
.SH "SERVICE CONFIGURATION"
.PP
CTDB can be configured to manage and/or monitor various NAS (and other) services via its eventscripts\&.
.PP
In the simplest case CTDB will manage a service\&. This means the service will be started and stopped along with CTDB, CTDB will monitor the service and CTDB will do any required reconfiguration of the service when public IP addresses are failed over\&.
.SS "20\&.multipathd"
.PP
Provides CTDB\*(Aqs Linux multipathd service management\&.
.PP
It can monitor multipath devices to ensure that active paths are available\&.
.PP
CTDB_MONITOR_MPDEVICES=\fIMP\-DEVICE\-LIST\fR
.RS 4
MP\-DEVICE\-LIST is a list of multipath devices for CTDB to monitor?
.sp
No default\&.
.RE
.SS "31\&.clamd"
.PP
This event script provide CTDB\*(Aqs ClamAV anti\-virus service management\&.
.PP
This eventscript is not enabled by default\&. Use
\fBctdb enablescript\fR
to enable it\&.
.PP
CTDB_CLAMD_SOCKET=\fIFILENAME\fR
.RS 4
FILENAME is the socket to monitor ClamAV\&.
.sp
No default\&.
.RE
.SS "48\&.netbios"
.PP
Provides CTDB\*(Aqs NetBIOS service management\&.
.PP
CTDB_SERVICE_NMB=\fISERVICE\fR
.RS 4
Distribution specific SERVICE for managing nmbd\&.
.sp
Default is distribution\-dependant\&.
.RE
.SS "49\&.winbind"
.PP
Provides CTDB\*(Aqs Samba winbind service management\&.
.PP
CTDB_SERVICE_WINBIND=\fISERVICE\fR
.RS 4
Distribution specific SERVICE for managing winbindd\&.
.sp
Default is "winbind"\&.
.RE
.SS "50\&.samba"
.PP
Provides the core of CTDB\*(Aqs Samba file service management\&.
.PP
CTDB_SAMBA_CHECK_PORTS=\fIPORT\-LIST\fR
.RS 4
When monitoring Samba, check TCP ports in space\-separated PORT\-LIST\&.
.sp
Default is to monitor ports that Samba is configured to listen on\&.
.RE
.PP
CTDB_SAMBA_SKIP_SHARE_CHECK=yes|no
.RS 4
As part of monitoring, should CTDB skip the check for the existence of each directory configured as share in Samba\&. This may be desirable if there is a large number of shares\&.
.sp
Default is no\&.
.RE
.PP
CTDB_SERVICE_SMB=\fISERVICE\fR
.RS 4
Distribution specific SERVICE for managing smbd\&.
.sp
Default is distribution\-dependant\&.
.RE
.SS "60\&.nfs"
.PP
This event script (along with 06\&.nfs) provides CTDB\*(Aqs NFS service management\&.
.PP
This includes parameters for the kernel NFS server\&. Alternative NFS subsystems (such as
\m[blue]\fBNFS\-Ganesha\fR\m[]\&\s-2\u[1]\d\s+2) can be integrated using
\fICTDB_NFS_CALLOUT\fR\&.
.PP
CTDB_NFS_CALLOUT=\fICOMMAND\fR
.RS 4
COMMAND specifies the path to a callout to handle interactions with the configured NFS system, including startup, shutdown, monitoring\&.
.sp
Default is the included
\fBnfs\-linux\-kernel\-callout\fR\&.
.RE
.PP
CTDB_NFS_CHECKS_DIR=\fIDIRECTORY\fR
.RS 4
Specifies the path to a DIRECTORY containing files that describe how to monitor the responsiveness of NFS RPC services\&. See the README file for this directory for an explanation of the contents of these "check" files\&.
.sp
CTDB_NFS_CHECKS_DIR can be used to point to different sets of checks for different NFS servers\&.
.sp
One way of using this is to have it point to, say,
/usr/local/etc/ctdb/nfs\-checks\-enabled\&.d
and populate it with symbolic links to the desired check files\&. This avoids duplication and is upgrade\-safe\&.
.sp
Default is
/usr/local/etc/ctdb/nfs\-checks\&.d, which contains NFS RPC checks suitable for Linux kernel NFS\&.
.RE
.PP
CTDB_NFS_SKIP_SHARE_CHECK=yes|no
.RS 4
As part of monitoring, should CTDB skip the check for the existence of each directory exported via NFS\&. This may be desirable if there is a large number of exports\&.
.sp
Default is no\&.
.RE
.PP
CTDB_RPCINFO_LOCALHOST=\fIIPADDR\fR|\fIHOSTNAME\fR
.RS 4
IPADDR or HOSTNAME indicates the address that
\fBrpcinfo\fR
should connect to when doing
\fBrpcinfo\fR
check on IPv4 RPC service during monitoring\&. Optimally this would be "localhost"\&. However, this can add some performance overheads\&.
.sp
Default is "127\&.0\&.0\&.1"\&.
.RE
.PP
CTDB_RPCINFO_LOCALHOST6=\fIIPADDR\fR|\fIHOSTNAME\fR
.RS 4
IPADDR or HOSTNAME indicates the address that
\fBrpcinfo\fR
should connect to when doing
\fBrpcinfo\fR
check on IPv6 RPC service during monitoring\&. Optimally this would be "localhost6" (or similar)\&. However, this can add some performance overheads\&.
.sp
Default is "::1"\&.
.RE
.PP
CTDB_NFS_STATE_FS_TYPE=\fITYPE\fR
.RS 4
The type of filesystem used for a clustered NFS\*(Aq shared state\&. No default\&.
.RE
.PP
CTDB_NFS_STATE_MNT=\fIDIR\fR
.RS 4
The directory where a clustered NFS\*(Aq shared state will be located\&. No default\&.
.RE
.SS "70\&.iscsi"
.PP
Provides CTDB\*(Aqs Linux iSCSI tgtd service management\&.
.PP
CTDB_START_ISCSI_SCRIPTS=\fIDIRECTORY\fR
.RS 4
DIRECTORY on shared storage containing scripts to start tgtd for each public IP address\&.
.sp
No default\&.
.RE
.SH "DATABASE SETUP"
.PP
CTDB checks the consistency of databases during startup\&.
.SS "00\&.ctdb"
.PP
CTDB_MAX_CORRUPT_DB_BACKUPS=\fINUM\fR
.RS 4
NUM is the maximum number of volatile TDB database backups to be kept (for each database) when a corrupt database is found during startup\&. Volatile TDBs are zeroed during startup so backups are needed to debug any corruption that occurs before a restart\&.
.sp
Default is 10\&.
.RE
.SH "SYSTEM RESOURCE MONITORING"
.SS "05\&.system"
.PP
Provides CTDB\*(Aqs filesystem and memory usage monitoring\&.
.PP
CTDB can experience seemingly random (performance and other) issues if system resources become too constrained\&. Options in this section can be enabled to allow certain system resources to be checked\&. They allows warnings to be logged and nodes to be marked unhealthy when system resource usage reaches the configured thresholds\&.
.PP
Some checks are enabled by default\&. It is recommended that these checks remain enabled or are augmented by extra checks\&. There is no supported way of completely disabling the checks\&.
.PP
CTDB_MONITOR_FILESYSTEM_USAGE=\fIFS\-LIMIT\-LIST\fR
.RS 4
FS\-LIMIT\-LIST is a space\-separated list of
\fIFILESYSTEM\fR:\fIWARN_LIMIT\fR[:\fIUNHEALTHY_LIMIT\fR]
triples indicating that warnings should be logged if the space used on FILESYSTEM reaches WARN_LIMIT%\&. If usage reaches UNHEALTHY_LIMIT then the node should be flagged unhealthy\&. Either WARN_LIMIT or UNHEALTHY_LIMIT may be left blank, meaning that check will be omitted\&.
.sp
Default is to warn for each filesystem containing a database directory (volatile\ \&database\ \&directory,
persistent\ \&database\ \&directory,
state\ \&database\ \&directory) with a threshold of 90%\&.
.RE
.PP
CTDB_MONITOR_MEMORY_USAGE=\fIMEM\-LIMITS\fR
.RS 4
MEM\-LIMITS takes the form
\fIWARN_LIMIT\fR[:\fIUNHEALTHY_LIMIT\fR]
indicating that warnings should be logged if memory usage reaches WARN_LIMIT%\&. If usage reaches UNHEALTHY_LIMIT then the node should be flagged unhealthy\&. Either WARN_LIMIT or UNHEALTHY_LIMIT may be left blank, meaning that check will be omitted\&.
.sp
Default is 80, so warnings will be logged when memory usage reaches 80%\&.
.RE
.SH "EVENT SCRIPT DEBUGGING"
.SS "debug\-hung\-script\&.sh"
.PP
CTDB_DEBUG_HUNG_SCRIPT_STACKPAT=\fIREGEXP\fR
.RS 4
REGEXP specifies interesting processes for which stack traces should be logged when debugging hung eventscripts and those processes are matched in pstree output\&. REGEXP is an extended regexp so choices are separated by pipes (\*(Aq|\*(Aq)\&. However, REGEXP should not contain parentheses\&. See also the
\fBctdb.conf\fR(5)
[event] "debug\ \&script" option\&.
.sp
Default is "exportfs|rpcinfo"\&.
.RE
.SH "FILES"
.RS 4
/usr/local/etc/ctdb/script\&.options
.RE
.SH "SEE ALSO"
.PP
\fBctdbd\fR(1),
\fBctdb\fR(7),
\m[blue]\fB\%http://ctdb.samba.org/\fR\m[]
.SH "AUTHOR"
.br
.PP
This documentation was written by Amitay Isaacs, Martin Schwenke
.SH "COPYRIGHT"
.br
Copyright \(co 2007 Andrew Tridgell, Ronnie Sahlberg
.br
.PP
This program 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; either version 3 of the License, or (at your option) any later version\&.
.PP
This program 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\&.
.PP
You should have received a copy of the GNU General Public License along with this program; if not, see
\m[blue]\fB\%http://www.gnu.org/licenses\fR\m[]\&.
.sp
.SH "NOTES"
.IP " 1." 4
NFS-Ganesha
.RS 4
\%https://github.com/nfs-ganesha/nfs-ganesha/wiki
.RE
This diff is collapsed.
'\" t
.\" Title: ctdb-statistics
.\" Author:
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\" Date: 03/09/2023
.\" Manual: CTDB - clustered TDB database
.\" Source: ctdb
.\" Language: English
.\"
.TH "CTDB\-STATISTICS" "7" "03/09/2023" "ctdb" "CTDB \- clustered TDB database"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
ctdb-statistics \- CTDB statistics output
.SH "OVERALL STATISTICS"
.PP
CTDB maintains information about various messages communicated and some of the important operations per node\&. See the
\fBctdb\fR(1)
commands
\fBstatistics\fR
and
\fBstatisticsreset\fR
for displaying statistics\&.
.SS "Example: ctdb statistics"
.sp
.if n \{\
.RS 4
.\}
.nf
CTDB version 1
Current time of statistics : Fri Sep 12 13:32:32 2014
Statistics collected since : (000 01:49:20) Fri Sep 12 11:43:12 2014
num_clients 6
frozen 0
recovering 0
num_recoveries 2
client_packets_sent 281293
client_packets_recv 296317
node_packets_sent 452387
node_packets_recv 182394
keepalive_packets_sent 3927
keepalive_packets_recv 3928
node
req_call 48605
reply_call 1
req_dmaster 23404
reply_dmaster 24917
reply_error 0
req_message 958
req_control 197513
reply_control 153705
client
req_call 130866
req_message 770
req_control 168921
timeouts
call 0
control 0
traverse 0
locks
num_calls 220
num_current 0
num_pending 0
num_failed 0
total_calls 130866
pending_calls 0
childwrite_calls 1
pending_childwrite_calls 0
memory_used 334490
max_hop_count 18
total_ro_delegations 2
total_ro_revokes 2
hop_count_buckets: 42816 5464 26 1 0 0 0 0 0 0 0 0 0 0 0 0
lock_buckets: 9 165 14 15 7 2 2 0 0 0 0 0 0 0 0 0
locks_latency MIN/AVG/MAX 0\&.000685/0\&.160302/6\&.369342 sec out of 214
reclock_ctdbd MIN/AVG/MAX 0\&.004940/0\&.004969/0\&.004998 sec out of 2
reclock_recd MIN/AVG/MAX 0\&.000000/0\&.000000/0\&.000000 sec out of 0
call_latency MIN/AVG/MAX 0\&.000006/0\&.000719/4\&.562991 sec out of 126626
childwrite_latency MIN/AVG/MAX 0\&.014527/0\&.014527/0\&.014527 sec out of 1
.fi
.if n \{\
.RE
.\}
.SS "CTDB version"
.PP
Version of the ctdb protocol used by the node\&.
.SS "Current time of statistics"
.PP
Time when the statistics are generated\&.
.PP
This is useful when collecting statistics output periodically for post\-processing\&.
.SS "Statistics collected since"
.PP
Time when ctdb was started or the last time statistics was reset\&. The output shows the duration and the timestamp\&.
.SS "num_clients"
.PP
Number of processes currently connected to CTDB\*(Aqs unix socket\&. This includes recovery daemon, ctdb tool and samba processes (smbd, winbindd)\&.
.SS "frozen"
.PP
1 if the databases are currently frozen, 0 otherwise\&.
.SS "recovering"
.PP
1 if recovery is active, 0 otherwise\&.
.SS "num_recoveries"
.PP
Number of recoveries since the start of ctdb or since the last statistics reset\&.
.SS "client_packets_sent"
.PP
Number of packets sent to client processes via unix domain socket\&.
.SS "client_packets_recv"
.PP
Number of packets received from client processes via unix domain socket\&.
.SS "node_packets_sent"
.PP
Number of packets sent to the other nodes in the cluster via TCP\&.
.SS "node_packets_recv"
.PP
Number of packets received from the other nodes in the cluster via TCP\&.
.SS "keepalive_packets_sent"
.PP
Number of keepalive messages sent to other nodes\&.
.PP
CTDB periodically sends keepalive messages to other nodes\&. See
KeepaliveInterval
tunable in
\fBctdb-tunables\fR(7)
for more details\&.
.SS "keepalive_packets_recv"
.PP
Number of keepalive messages received from other nodes\&.
.SS "node"
.PP
This section lists various types of messages processed which originated from other nodes via TCP\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreq_call\fR
.RS 4
.PP
Number of REQ_CALL messages from the other nodes\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreply_call\fR
.RS 4
.PP
Number of REPLY_CALL messages from the other nodes\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreq_dmaster\fR
.RS 4
.PP
Number of REQ_DMASTER messages from the other nodes\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreply_dmaster\fR
.RS 4
.PP
Number of REPLY_DMASTER messages from the other nodes\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreply_error\fR
.RS 4
.PP
Number of REPLY_ERROR messages from the other nodes\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreq_message\fR
.RS 4
.PP
Number of REQ_MESSAGE messages from the other nodes\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreq_control\fR
.RS 4
.PP
Number of REQ_CONTROL messages from the other nodes\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreply_control\fR
.RS 4
.PP
Number of REPLY_CONTROL messages from the other nodes\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreq_tunnel\fR
.RS 4
.PP
Number of REQ_TUNNEL messages from the other nodes\&.
.RE
.SS "client"
.PP
This section lists various types of messages processed which originated from clients via unix domain socket\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreq_call\fR
.RS 4
.PP
Number of REQ_CALL messages from the clients\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreq_message\fR
.RS 4
.PP
Number of REQ_MESSAGE messages from the clients\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreq_control\fR
.RS 4
.PP
Number of REQ_CONTROL messages from the clients\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBreq_tunnel\fR
.RS 4
.PP
Number of REQ_TUNNEL messages from the clients\&.
.RE
.SS "timeouts"
.PP
This section lists timeouts occurred when sending various messages\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBcall\fR
.RS 4
.PP
Number of timeouts for REQ_CALL messages\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBcontrol\fR
.RS 4
.PP
Number of timeouts for REQ_CONTROL messages\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBtraverse\fR
.RS 4
.PP
Number of timeouts for database traverse operations\&.
.RE
.SS "locks"
.PP
This section lists locking statistics\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBnum_calls\fR
.RS 4
.PP
Number of completed lock calls\&. This includes database locks and record locks\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBnum_current\fR
.RS 4
.PP
Number of scheduled lock calls\&. This includes database locks and record locks\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBnum_pending\fR
.RS 4
.PP
Number of queued lock calls\&. This includes database locks and record locks\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBnum_failed\fR
.RS 4
.PP
Number of failed lock calls\&. This includes database locks and record locks\&.
.RE
.SS "total_calls"
.PP
Number of req_call messages processed from clients\&. This number should be same as client \-\-> req_call\&.
.SS "pending_calls"
.PP
Number of req_call messages which are currently being processed\&. This number indicates the number of record migrations in flight\&.
.SS "childwrite_calls"
.PP
Number of record update calls\&. Record update calls are used to update a record under a transaction\&.
.SS "pending_childwrite_calls"
.PP
Number of record update calls currently active\&.
.SS "memory_used"
.PP
The amount of memory in bytes currently used by CTDB using talloc\&. This includes all the memory used for CTDB\*(Aqs internal data structures\&. This does not include the memory mapped TDB databases\&.
.SS "max_hop_count"
.PP
The maximum number of hops required for a record migration request to obtain the record\&. High numbers indicate record contention\&.
.SS "total_ro_delegations"
.PP
Number of readonly delegations created\&.
.SS "total_ro_revokes"
.PP
Number of readonly delegations that were revoked\&. The difference between total_ro_revokes and total_ro_delegations gives the number of currently active readonly delegations\&.
.SS "hop_count_buckets"
.PP
Distribution of migration requests based on hop counts values\&. Buckets are 0, <\ \&2, <\ \&4, <\ \&8, <\ \&16, <\ \&32, <\ \&64, <\ \&128, <\ \&256, <\ \&512, <\ \&1024, <\ \&2048, <\ \&4096, <\ \&8192, <\ \&16384, ≥\ \&16384\&.
.SS "lock_buckets"
.PP
Distribution of record lock requests based on time required to obtain locks\&. Buckets are <\ \&1ms, <\ \&10ms, <\ \&100ms, <\ \&1s, <\ \&2s, <\ \&4s, <\ \&8s, <\ \&16s, <\ \&32s, <\ \&64s, ≥\ \&64s\&.
.SS "locks_latency"
.PP
The minimum, the average and the maximum time (in seconds) required to obtain record locks\&.
.SS "reclock_ctdbd"
.PP
The minimum, the average and the maximum time (in seconds) required to check if recovery lock is still held by recovery daemon when recovery mode is changed\&. This check is done in ctdb daemon\&.
.SS "reclock_recd"
.PP
The minimum, the average and the maximum time (in seconds) required to check if recovery lock is still held by recovery daemon during recovery\&. This check is done in recovery daemon\&.
.SS "call_latency"
.PP
The minimum, the average and the maximum time (in seconds) required to process a REQ_CALL message from client\&. This includes the time required to migrate a record from remote node, if the record is not available on the local node\&.
.SS "childwrite_latency"
.PP
Default: 0
.PP
The minimum, the average and the maximum time (in seconds) required to update records under a transaction\&.
.SH "DATABASE STATISTICS"
.PP
CTDB maintains per database statistics about important operations\&. See the
\fBctdb\fR(1)
command
\fBdbstatistics\fR
for displaying database statistics\&.
.SS "Example: ctdb dbstatistics notify_index\&.tdb"
.sp
.if n \{\
.RS 4
.\}
.nf
DB Statistics: notify_index\&.tdb
ro_delegations 0
ro_revokes 0
locks
total 131
failed 0
current 0
pending 0
hop_count_buckets: 9890 5454 26 1 0 0 0 0 0 0 0 0 0 0 0 0
lock_buckets: 4 117 10 0 0 0 0 0 0 0 0 0 0 0 0 0
locks_latency MIN/AVG/MAX 0\&.000683/0\&.004198/0\&.014730 sec out of 131
Num Hot Keys: 3
Count:7 Key:2f636c75737465726673
Count:18 Key:2f636c757374657266732f64617461
Count:7 Key:2f636c757374657266732f646174612f636c69656e7473
.fi
.if n \{\
.RE
.\}
.SS "DB Statistics"
.PP
Name of the database\&.
.SS "ro_delegations"
.PP
Number of readonly delegations created in the database\&.
.SS "ro_revokes"
.PP
Number of readonly delegations revoked\&. The difference in ro_delegations and ro_revokes indicates the currently active readonly delegations\&.
.SS "locks"
.PP
This section lists locking statistics\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBtotal\fR
.RS 4
.PP
Number of completed lock calls\&. This includes database locks and record locks\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBfailed\fR
.RS 4
.PP
Number of failed lock calls\&. This includes database locks and record locks\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBcurrent\fR
.RS 4
.PP
Number of scheduled lock calls\&. This includes database locks and record locks\&.
.RE
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBpending\fR
.RS 4
.PP
Number of queued lock calls\&. This includes database locks and record locks\&.
.RE
.SS "hop_count_buckets"
.PP
Distribution of migration requests based on hop counts values\&. Buckets are 0, <\ \&2, <\ \&4, <\ \&8, <\ \&16, <\ \&32, <\ \&64, <\ \&128, <\ \&256, <\ \&512, <\ \&1024, <\ \&2048, <\ \&4096, <\ \&8192, <\ \&16384, ≥\ \&16384\&.
.SS "lock_buckets"
.PP
Distribution of record lock requests based on time required to obtain locks\&. Buckets are <\ \&1ms, <\ \&10ms, <\ \&100ms, <\ \&1s, <\ \&2s, <\ \&4s, <\ \&8s, <\ \&16s, <\ \&32s, <\ \&64s, ≥\ \&64s\&.
.SS "locks_latency"
.PP
The minimum, the average and the maximum time (in seconds) required to obtain record locks\&.
.SS "Num Hot Keys"
.PP
Number of contended records determined by hop count\&. CTDB keeps track of top 10 hot records and the output shows hex encoded keys for the hot records\&.
.SH "SEE ALSO"
.PP
\fBctdb\fR(1),
\fBctdbd\fR(1),
\fBctdb-tunables\fR(7),
\m[blue]\fB\%http://ctdb.samba.org/\fR\m[]
.SH "AUTHOR"
.br
.PP
This documentation was written by Amitay Isaacs, Martin Schwenke
.SH "COPYRIGHT"
.br
Copyright \(co 2007 Andrew Tridgell, Ronnie Sahlberg
.br
.PP
This program 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; either version 3 of the License, or (at your option) any later version\&.
.PP
This program 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\&.
.PP
You should have received a copy of the GNU General Public License along with this program; if not, see
\m[blue]\fB\%http://www.gnu.org/licenses\fR\m[]\&.
.sp
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ctdb-statistics</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry"><a name="ctdb-statistics.7"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ctdb-statistics &#8212; CTDB statistics output</p></div><div class="refsect1"><a name="idm10"></a><h2>OVERALL STATISTICS</h2><p>
CTDB maintains information about various messages communicated
and some of the important operations per node. See the
<span class="citerefentry"><span class="refentrytitle">ctdb</span>(1)</span> commands
<span class="command"><strong>statistics</strong></span> and <span class="command"><strong>statisticsreset</strong></span>
for displaying statistics.
</p><div class="refsect2"><a name="idm18"></a><h3>Example: ctdb statistics</h3><pre class="screen">
CTDB version 1
Current time of statistics : Fri Sep 12 13:32:32 2014
Statistics collected since : (000 01:49:20) Fri Sep 12 11:43:12 2014
num_clients 6
frozen 0
recovering 0
num_recoveries 2
client_packets_sent 281293
client_packets_recv 296317
node_packets_sent 452387
node_packets_recv 182394
keepalive_packets_sent 3927
keepalive_packets_recv 3928
node
req_call 48605
reply_call 1
req_dmaster 23404
reply_dmaster 24917
reply_error 0
req_message 958
req_control 197513
reply_control 153705
client
req_call 130866
req_message 770
req_control 168921
timeouts
call 0
control 0
traverse 0
locks
num_calls 220
num_current 0
num_pending 0
num_failed 0
total_calls 130866
pending_calls 0
childwrite_calls 1
pending_childwrite_calls 0
memory_used 334490
max_hop_count 18
total_ro_delegations 2
total_ro_revokes 2
hop_count_buckets: 42816 5464 26 1 0 0 0 0 0 0 0 0 0 0 0 0
lock_buckets: 9 165 14 15 7 2 2 0 0 0 0 0 0 0 0 0
locks_latency MIN/AVG/MAX 0.000685/0.160302/6.369342 sec out of 214
reclock_ctdbd MIN/AVG/MAX 0.004940/0.004969/0.004998 sec out of 2
reclock_recd MIN/AVG/MAX 0.000000/0.000000/0.000000 sec out of 0
call_latency MIN/AVG/MAX 0.000006/0.000719/4.562991 sec out of 126626
childwrite_latency MIN/AVG/MAX 0.014527/0.014527/0.014527 sec out of 1
</pre></div><div class="refsect2"><a name="idm21"></a><h3>CTDB version</h3><p>
Version of the ctdb protocol used by the node.
</p></div><div class="refsect2"><a name="idm24"></a><h3>Current time of statistics</h3><p>
Time when the statistics are generated.
</p><p>
This is useful when collecting statistics output periodically
for post-processing.
</p></div><div class="refsect2"><a name="idm28"></a><h3>Statistics collected since</h3><p>
Time when ctdb was started or the last time statistics was reset.
The output shows the duration and the timestamp.
</p></div><div class="refsect2"><a name="idm31"></a><h3>num_clients</h3><p>
Number of processes currently connected to CTDB's unix socket.
This includes recovery daemon, ctdb tool and samba processes
(smbd, winbindd).
</p></div><div class="refsect2"><a name="idm34"></a><h3>frozen</h3><p>
1 if the databases are currently frozen, 0 otherwise.
</p></div><div class="refsect2"><a name="idm37"></a><h3>recovering</h3><p>
1 if recovery is active, 0 otherwise.
</p></div><div class="refsect2"><a name="idm40"></a><h3>num_recoveries</h3><p>
Number of recoveries since the start of ctdb or since the last
statistics reset.
</p></div><div class="refsect2"><a name="idm43"></a><h3>client_packets_sent</h3><p>
Number of packets sent to client processes via unix domain socket.
</p></div><div class="refsect2"><a name="idm46"></a><h3>client_packets_recv</h3><p>
Number of packets received from client processes via unix domain socket.
</p></div><div class="refsect2"><a name="idm49"></a><h3>node_packets_sent</h3><p>
Number of packets sent to the other nodes in the cluster via TCP.
</p></div><div class="refsect2"><a name="idm52"></a><h3>node_packets_recv</h3><p>
Number of packets received from the other nodes in the cluster via TCP.
</p></div><div class="refsect2"><a name="idm55"></a><h3>keepalive_packets_sent</h3><p>
Number of keepalive messages sent to other nodes.
</p><p>
CTDB periodically sends keepalive messages to other nodes.
See <em class="citetitle">KeepaliveInterval</em> tunable in
<span class="citerefentry"><span class="refentrytitle">ctdb-tunables</span>(7)</span> for more details.
</p></div><div class="refsect2"><a name="idm63"></a><h3>keepalive_packets_recv</h3><p>
Number of keepalive messages received from other nodes.
</p></div><div class="refsect2"><a name="idm66"></a><h3>node</h3><p>
This section lists various types of messages processed which
originated from other nodes via TCP.
</p><div class="refsect3"><a name="idm69"></a><h4>req_call</h4><p>
Number of REQ_CALL messages from the other nodes.
</p></div><div class="refsect3"><a name="idm72"></a><h4>reply_call</h4><p>
Number of REPLY_CALL messages from the other nodes.
</p></div><div class="refsect3"><a name="idm75"></a><h4>req_dmaster</h4><p>
Number of REQ_DMASTER messages from the other nodes.
</p></div><div class="refsect3"><a name="idm78"></a><h4>reply_dmaster</h4><p>
Number of REPLY_DMASTER messages from the other nodes.
</p></div><div class="refsect3"><a name="idm81"></a><h4>reply_error</h4><p>
Number of REPLY_ERROR messages from the other nodes.
</p></div><div class="refsect3"><a name="idm84"></a><h4>req_message</h4><p>
Number of REQ_MESSAGE messages from the other nodes.
</p></div><div class="refsect3"><a name="idm87"></a><h4>req_control</h4><p>
Number of REQ_CONTROL messages from the other nodes.
</p></div><div class="refsect3"><a name="idm90"></a><h4>reply_control</h4><p>
Number of REPLY_CONTROL messages from the other nodes.
</p></div><div class="refsect3"><a name="idm93"></a><h4>req_tunnel</h4><p>
Number of REQ_TUNNEL messages from the other nodes.
</p></div></div><div class="refsect2"><a name="idm96"></a><h3>client</h3><p>
This section lists various types of messages processed which
originated from clients via unix domain socket.
</p><div class="refsect3"><a name="idm99"></a><h4>req_call</h4><p>
Number of REQ_CALL messages from the clients.
</p></div><div class="refsect3"><a name="idm102"></a><h4>req_message</h4><p>
Number of REQ_MESSAGE messages from the clients.
</p></div><div class="refsect3"><a name="idm105"></a><h4>req_control</h4><p>
Number of REQ_CONTROL messages from the clients.
</p></div><div class="refsect3"><a name="idm108"></a><h4>req_tunnel</h4><p>
Number of REQ_TUNNEL messages from the clients.
</p></div></div><div class="refsect2"><a name="idm111"></a><h3>timeouts</h3><p>
This section lists timeouts occurred when sending various messages.
</p><div class="refsect3"><a name="idm114"></a><h4>call</h4><p>
Number of timeouts for REQ_CALL messages.
</p></div><div class="refsect3"><a name="idm117"></a><h4>control</h4><p>
Number of timeouts for REQ_CONTROL messages.
</p></div><div class="refsect3"><a name="idm120"></a><h4>traverse</h4><p>
Number of timeouts for database traverse operations.
</p></div></div><div class="refsect2"><a name="idm123"></a><h3>locks</h3><p>
This section lists locking statistics.
</p><div class="refsect3"><a name="idm126"></a><h4>num_calls</h4><p>
Number of completed lock calls. This includes database locks
and record locks.
</p></div><div class="refsect3"><a name="idm129"></a><h4>num_current</h4><p>
Number of scheduled lock calls. This includes database locks
and record locks.
</p></div><div class="refsect3"><a name="idm132"></a><h4>num_pending</h4><p>
Number of queued lock calls. This includes database locks and
record locks.
</p></div><div class="refsect3"><a name="idm135"></a><h4>num_failed</h4><p>
Number of failed lock calls. This includes database locks and
record locks.
</p></div></div><div class="refsect2"><a name="idm138"></a><h3>total_calls</h3><p>
Number of req_call messages processed from clients. This number
should be same as client --&gt; req_call.
</p></div><div class="refsect2"><a name="idm141"></a><h3>pending_calls</h3><p>
Number of req_call messages which are currently being processed.
This number indicates the number of record migrations in flight.
</p></div><div class="refsect2"><a name="idm144"></a><h3>childwrite_calls</h3><p>
Number of record update calls. Record update calls are used to
update a record under a transaction.
</p></div><div class="refsect2"><a name="idm147"></a><h3>pending_childwrite_calls</h3><p>
Number of record update calls currently active.
</p></div><div class="refsect2"><a name="idm150"></a><h3>memory_used</h3><p>
The amount of memory in bytes currently used by CTDB using
talloc. This includes all the memory used for CTDB's internal
data structures. This does not include the memory mapped TDB
databases.
</p></div><div class="refsect2"><a name="idm153"></a><h3>max_hop_count</h3><p>
The maximum number of hops required for a record migration request
to obtain the record. High numbers indicate record contention.
</p></div><div class="refsect2"><a name="idm156"></a><h3>total_ro_delegations</h3><p>
Number of readonly delegations created.
</p></div><div class="refsect2"><a name="idm159"></a><h3>total_ro_revokes</h3><p>
Number of readonly delegations that were revoked. The difference
between total_ro_revokes and total_ro_delegations gives the
number of currently active readonly delegations.
</p></div><div class="refsect2"><a name="idm162"></a><h3>hop_count_buckets</h3><p>
Distribution of migration requests based on hop counts values.
Buckets are 0, &lt;2, &lt;4, &lt;8,
&lt;16, &lt;32, &lt;64, &lt;128,
&lt;256, &lt;512, &lt;1024, &lt;2048,
&lt;4096, &lt;8192, &lt;16384, &#8805;16384.
</p></div><div class="refsect2"><a name="idm165"></a><h3>lock_buckets</h3><p>
Distribution of record lock requests based on time required to
obtain locks. Buckets are &lt;1ms, &lt;10ms,
&lt;100ms, &lt;1s, &lt;2s, &lt;4s,
&lt;8s, &lt;16s, &lt;32s, &lt;64s,
&#8805;64s.
</p></div><div class="refsect2"><a name="idm168"></a><h3>locks_latency</h3><p>
The minimum, the average and the maximum time (in seconds)
required to obtain record locks.
</p></div><div class="refsect2"><a name="idm171"></a><h3>reclock_ctdbd</h3><p>
The minimum, the average and the maximum time (in seconds)
required to check if recovery lock is still held by recovery
daemon when recovery mode is changed. This check is done in ctdb daemon.
</p></div><div class="refsect2"><a name="idm174"></a><h3>reclock_recd</h3><p>
The minimum, the average and the maximum time (in seconds)
required to check if recovery lock is still held by recovery
daemon during recovery. This check is done in recovery daemon.
</p></div><div class="refsect2"><a name="idm177"></a><h3>call_latency</h3><p>
The minimum, the average and the maximum time (in seconds) required
to process a REQ_CALL message from client. This includes the time
required to migrate a record from remote node, if the record is
not available on the local node.
</p></div><div class="refsect2"><a name="idm180"></a><h3>childwrite_latency</h3><p>Default: 0</p><p>
The minimum, the average and the maximum time (in seconds)
required to update records under a transaction.
</p></div></div><div class="refsect1"><a name="idm184"></a><h2>DATABASE STATISTICS</h2><p>
CTDB maintains per database statistics about important operations.
See the <span class="citerefentry"><span class="refentrytitle">ctdb</span>(1)</span> command
<span class="command"><strong>dbstatistics</strong></span> for displaying database statistics.
</p><div class="refsect2"><a name="idm191"></a><h3>Example: ctdb dbstatistics notify_index.tdb</h3><pre class="screen">
DB Statistics: notify_index.tdb
ro_delegations 0
ro_revokes 0
locks
total 131
failed 0
current 0
pending 0
hop_count_buckets: 9890 5454 26 1 0 0 0 0 0 0 0 0 0 0 0 0
lock_buckets: 4 117 10 0 0 0 0 0 0 0 0 0 0 0 0 0
locks_latency MIN/AVG/MAX 0.000683/0.004198/0.014730 sec out of 131
Num Hot Keys: 3
Count:7 Key:2f636c75737465726673
Count:18 Key:2f636c757374657266732f64617461
Count:7 Key:2f636c757374657266732f646174612f636c69656e7473
</pre></div><div class="refsect2"><a name="idm194"></a><h3>DB Statistics</h3><p>
Name of the database.
</p></div><div class="refsect2"><a name="idm197"></a><h3>ro_delegations</h3><p>
Number of readonly delegations created in the database.
</p></div><div class="refsect2"><a name="idm200"></a><h3>ro_revokes</h3><p>
Number of readonly delegations revoked. The difference in
ro_delegations and ro_revokes indicates the currently active
readonly delegations.
</p></div><div class="refsect2"><a name="idm203"></a><h3>locks</h3><p>
This section lists locking statistics.
</p><div class="refsect3"><a name="idm206"></a><h4>total</h4><p>
Number of completed lock calls. This includes database locks
and record locks.
</p></div><div class="refsect3"><a name="idm209"></a><h4>failed</h4><p>
Number of failed lock calls. This includes database locks and
record locks.
</p></div><div class="refsect3"><a name="idm212"></a><h4>current</h4><p>
Number of scheduled lock calls. This includes database locks
and record locks.
</p></div><div class="refsect3"><a name="idm215"></a><h4>pending</h4><p>
Number of queued lock calls. This includes database locks and
record locks.
</p></div></div><div class="refsect2"><a name="idm218"></a><h3>hop_count_buckets</h3><p>
Distribution of migration requests based on hop counts values.
Buckets are 0, &lt;2, &lt;4, &lt;8,
&lt;16, &lt;32, &lt;64, &lt;128,
&lt;256, &lt;512, &lt;1024, &lt;2048,
&lt;4096, &lt;8192, &lt;16384, &#8805;16384.
</p></div><div class="refsect2"><a name="idm221"></a><h3>lock_buckets</h3><p>
Distribution of record lock requests based on time required to
obtain locks. Buckets are &lt;1ms, &lt;10ms,
&lt;100ms, &lt;1s, &lt;2s, &lt;4s,
&lt;8s, &lt;16s, &lt;32s, &lt;64s,
&#8805;64s.
</p></div><div class="refsect2"><a name="idm224"></a><h3>locks_latency</h3><p>
The minimum, the average and the maximum time (in seconds)
required to obtain record locks.
</p></div><div class="refsect2"><a name="idm227"></a><h3>Num Hot Keys</h3><p>
Number of contended records determined by hop count. CTDB keeps
track of top 10 hot records and the output shows hex encoded
keys for the hot records.
</p></div></div><div class="refsect1"><a name="idm230"></a><h2>SEE ALSO</h2><p>
<span class="citerefentry"><span class="refentrytitle">ctdb</span>(1)</span>,
<span class="citerefentry"><span class="refentrytitle">ctdbd</span>(1)</span>,
<span class="citerefentry"><span class="refentrytitle">ctdb-tunables</span>(7)</span>,
<a class="ulink" href="http://ctdb.samba.org/" target="_top">http://ctdb.samba.org/</a>
</p></div></div></body></html>
'\" t
.\" Title: ctdb-tunables
.\" Author:
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\" Date: 03/09/2023
.\" Manual: CTDB - clustered TDB database
.\" Source: ctdb
.\" Language: English
.\"
.TH "CTDB\-TUNABLES" "7" "03/09/2023" "ctdb" "CTDB \- clustered TDB database"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
ctdb-tunables \- CTDB tunable configuration variables
.SH "DESCRIPTION"
.PP
CTDB\*(Aqs behaviour can be configured by setting run\-time tunable variables\&. This lists and describes all tunables\&. See the
\fBctdb\fR(1)
\fBlistvars\fR,
\fBsetvar\fR
and
\fBgetvar\fR
commands for more details\&.
.PP
Unless otherwise stated, tunables should be set to the same value on all nodes\&. Setting tunables to different values across nodes may produce unexpected results\&. Future releases may set (some or most) tunables globally across the cluster but doing so is currently a manual process\&.
.PP
Tunables can be set at startup from the
/usr/local/etc/ctdb/ctdb\&.tunables
configuration file\&.
.sp
.if n \{\
.RS 4
.\}
.nf
\fITUNABLE\fR=\fIVALUE\fR
.fi
.if n \{\
.RE
.\}
.sp
Comment lines beginning with \*(Aq#\*(Aq are permitted\&. Whitespace may be used for formatting/alignment\&. VALUE must be a non\-negative integer and must be the last thing on a line (i\&.e\&. no trailing garbage, trailing comments are not permitted)\&.
.PP
For example:
.sp
.if n \{\
.RS 4
.\}
.nf
MonitorInterval=20
.fi
.if n \{\
.RE
.\}
.PP
The available tunable variables are listed alphabetically below\&.
.SS "AllowClientDBAttach"
.PP
Default: 1
.PP
When set to 0, clients are not allowed to attach to any databases\&. This can be used to temporarily block any new processes from attaching to and accessing the databases\&. This is mainly used for detaching a volatile database using \*(Aqctdb detach\*(Aq\&.
.SS "AllowMixedVersions"
.PP
Default: 0
.PP
CTDB will not allow incompatible versions to co\-exist in a cluster\&. If a version mismatch is found, then losing CTDB will shutdown\&. To disable the incompatible version check, set this tunable to 1\&.
.PP
For version checking, CTDB uses major and minor version\&. For example, CTDB 4\&.6\&.1 and CTDB 4\&.6\&.2 are matching versions; CTDB 4\&.5\&.x and CTDB 4\&.6\&.y do not match\&.
.PP
CTDB with version check support will lose to CTDB without version check support\&. Between two different CTDB versions with version check support, one running for less time will lose\&. If the running time for both CTDB versions with version check support is equal (to seconds), then the older version will lose\&. The losing CTDB daemon will shutdown\&.
.SS "AllowUnhealthyDBRead"
.PP
Default: 0
.PP
When set to 1, ctdb allows database traverses to read unhealthy databases\&. By default, ctdb does not allow reading records from unhealthy databases\&.
.SS "ControlTimeout"
.PP
Default: 60
.PP
This is the default setting for timeout for when sending a control message to either the local or a remote ctdb daemon\&.
.SS "DatabaseHashSize"
.PP
Default: 100001
.PP
Number of the hash chains for the local store of the tdbs that ctdb manages\&.
.SS "DatabaseMaxDead"
.PP
Default: 5
.PP
Maximum number of dead records per hash chain for the tdb databses managed by ctdb\&.
.SS "DBRecordCountWarn"
.PP
Default: 100000
.PP
When set to non\-zero, ctdb will log a warning during recovery if a database has more than this many records\&. This will produce a warning if a database grows uncontrollably with orphaned records\&.
.SS "DBRecordSizeWarn"
.PP
Default: 10000000
.PP
When set to non\-zero, ctdb will log a warning during recovery if a single record is bigger than this size\&. This will produce a warning if a database record grows uncontrollably\&.
.SS "DBSizeWarn"
.PP
Default: 1000000000
.PP
When set to non\-zero, ctdb will log a warning during recovery if a database size is bigger than this\&. This will produce a warning if a database grows uncontrollably\&.
.SS "DeferredAttachTO"
.PP
Default: 120
.PP
When databases are frozen we do not allow clients to attach to the databases\&. Instead of returning an error immediately to the client, the attach request from the client is deferred until the database becomes available again at which stage we respond to the client\&.
.PP
This timeout controls how long we will defer the request from the client before timing it out and returning an error to the client\&.
.SS "ElectionTimeout"
.PP
Default: 3
.PP
The number of seconds to wait for the election of recovery master to complete\&. If the election is not completed during this interval, then that round of election fails and ctdb starts a new election\&.
.SS "EnableBans"
.PP
Default: 1
.PP
This parameter allows ctdb to ban a node if the node is misbehaving\&.
.PP
When set to 0, this disables banning completely in the cluster and thus nodes can not get banned, even it they break\&. Don\*(Aqt set to 0 unless you know what you are doing\&.
.SS "EventScriptTimeout"
.PP
Default: 30
.PP
Maximum time in seconds to allow an event to run before timing out\&. This is the total time for all enabled scripts that are run for an event, not just a single event script\&.
.PP
Note that timeouts are ignored for some events ("takeip", "releaseip", "startrecovery", "recovered") and converted to success\&. The logic here is that the callers of these events implement their own additional timeout\&.
.SS "FetchCollapse"
.PP
Default: 1
.PP
This parameter is used to avoid multiple migration requests for the same record from a single node\&. All the record requests for the same record are queued up and processed when the record is migrated to the current node\&.
.PP
When many clients across many nodes try to access the same record at the same time this can lead to a fetch storm where the record becomes very active and bounces between nodes very fast\&. This leads to high CPU utilization of the ctdbd daemon, trying to bounce that record around very fast, and poor performance\&. This can improve performance and reduce CPU utilization for certain workloads\&.
.SS "HopcountMakeSticky"
.PP
Default: 50
.PP
For database(s) marked STICKY (using \*(Aqctdb setdbsticky\*(Aq), any record that is migrating so fast that hopcount exceeds this limit is marked as STICKY record for
\fIStickyDuration\fR
seconds\&. This means that after each migration the sticky record will be kept on the node
\fIStickyPindown\fRmilliseconds and prevented from being migrated off the node\&.
.PP
This will improve performance for certain workloads, such as locking\&.tdb if many clients are opening/closing the same file concurrently\&.
.SS "IPAllocAlgorithm"
.PP
Default: 2
.PP
Selects the algorithm that CTDB should use when doing public IP address allocation\&. Meaningful values are:
.PP
0
.RS 4
Deterministic IP address allocation\&.
.sp
This is a simple and fast option\&. However, it can cause unnecessary address movement during fail\-over because each address has a "home" node\&. Works badly when some nodes do not have any addresses defined\&. Should be used with care when addresses are defined across multiple networks\&.
.RE
.PP
1
.RS 4
Non\-deterministic IP address allocation\&.
.sp
This is a relatively fast option that attempts to do a minimise unnecessary address movements\&. Addresses do not have a "home" node\&. Rebalancing is limited but it usually adequate\&. Works badly when addresses are defined across multiple networks\&.
.RE
.PP
2
.RS 4
LCP2 IP address allocation\&.
.sp
Uses a heuristic to assign addresses defined across multiple networks, usually balancing addresses on each network evenly across nodes\&. Addresses do not have a "home" node\&. Minimises unnecessary address movements\&. The algorithm is complex, so is slower than other choices for a large number of addresses\&. However, it can calculate an optimal assignment of 900 addresses in under 10 seconds on modern hardware\&.
.RE
.PP
If the specified value is not one of these then the default will be used\&.
.SS "KeepaliveInterval"
.PP
Default: 5
.PP
How often in seconds should the nodes send keep\-alive packets to each other\&.
.SS "KeepaliveLimit"
.PP
Default: 5
.PP
After how many keepalive intervals without any traffic should a node wait until marking the peer as DISCONNECTED\&.
.PP
If a node has hung, it can take
\fIKeepaliveInterval\fR
* (\fIKeepaliveLimit\fR
+ 1) seconds before ctdb determines that the node is DISCONNECTED and performs a recovery\&. This limit should not be set too high to enable early detection and avoid any application timeouts (e\&.g\&. SMB1) to kick in before the fail over is completed\&.
.SS "LockProcessesPerDB"
.PP
Default: 200
.PP
This is the maximum number of lock helper processes ctdb will create for obtaining record locks\&. When ctdb cannot get a record lock without blocking, it creates a helper process that waits for the lock to be obtained\&.
.SS "LogLatencyMs"
.PP
Default: 0
.PP
When set to non\-zero, ctdb will log if certains operations take longer than this value, in milliseconds, to complete\&. These operations include "process a record request from client", "take a record or database lock", "update a persistent database record" and "vacuum a database"\&.
.SS "MaxQueueDropMsg"
.PP
Default: 1000000
.PP
This is the maximum number of messages to be queued up for a client before ctdb will treat the client as hung and will terminate the client connection\&.
.SS "MonitorInterval"
.PP
Default: 15
.PP
How often should ctdb run the \*(Aqmonitor\*(Aq event in seconds to check for a node\*(Aqs health\&.
.SS "MonitorTimeoutCount"
.PP
Default: 20
.PP
How many \*(Aqmonitor\*(Aq events in a row need to timeout before a node is flagged as UNHEALTHY\&. This setting is useful if scripts can not be written so that they do not hang for benign reasons\&.
.SS "NoIPFailback"
.PP
Default: 0
.PP
When set to 1, ctdb will not perform failback of IP addresses when a node becomes healthy\&. When a node becomes UNHEALTHY, ctdb WILL perform failover of public IP addresses, but when the node becomes HEALTHY again, ctdb will not fail the addresses back\&.
.PP
Use with caution! Normally when a node becomes available to the cluster ctdb will try to reassign public IP addresses onto the new node as a way to distribute the workload evenly across the clusternode\&. Ctdb tries to make sure that all running nodes have approximately the same number of public addresses it hosts\&.
.PP
When you enable this tunable, ctdb will no longer attempt to rebalance the cluster by failing IP addresses back to the new nodes\&. An unbalanced cluster will therefore remain unbalanced until there is manual intervention from the administrator\&. When this parameter is set, you can manually fail public IP addresses over to the new node(s) using the \*(Aqctdb moveip\*(Aq command\&.
.SS "NoIPTakeover"
.PP
Default: 0
.PP
When set to 1, ctdb will not allow IP addresses to be failed over to other nodes\&. Any IP addresses already hosted on healthy nodes will remain\&. Any IP addresses hosted on unhealthy nodes will be released by unhealthy nodes and will become un\-hosted\&.
.SS "PullDBPreallocation"
.PP
Default: 10*1024*1024
.PP
This is the size of a record buffer to pre\-allocate for sending reply to PULLDB control\&. Usually record buffer starts with size of the first record and gets reallocated every time a new record is added to the record buffer\&. For a large number of records, this can be very inefficient to grow the record buffer one record at a time\&.
.SS "QueueBufferSize"
.PP
Default: 1024
.PP
This is the maximum amount of data (in bytes) ctdb will read from a socket at a time\&.
.PP
For a busy setup, if ctdb is not able to process the TCP sockets fast enough (large amount of data in Recv\-Q for tcp sockets), then this tunable value should be increased\&. However, large values can keep ctdb busy processing packets and prevent ctdb from handling other events\&.
.SS "RecBufferSizeLimit"
.PP
Default: 1000000
.PP
This is the limit on the size of the record buffer to be sent in various controls\&. This limit is used by new controls used for recovery and controls used in vacuuming\&.
.SS "RecdFailCount"
.PP
Default: 10
.PP
If the recovery daemon has failed to ping the main daemon for this many consecutive intervals, the main daemon will consider the recovery daemon as hung and will try to restart it to recover\&.
.SS "RecdPingTimeout"
.PP
Default: 60
.PP
If the main daemon has not heard a "ping" from the recovery daemon for this many seconds, the main daemon will log a message that the recovery daemon is potentially hung\&. This also increments a counter which is checked against
\fIRecdFailCount\fR
for detection of hung recovery daemon\&.
.SS "RecLockLatencyMs"
.PP
Default: 1000
.PP
When using a reclock file for split brain prevention, if set to non\-zero this tunable will make the recovery daemon log a message if the fcntl() call to lock/testlock the recovery file takes longer than this number of milliseconds\&.
.SS "RecoverInterval"
.PP
Default: 1
.PP
How frequently in seconds should the recovery daemon perform the consistency checks to determine if it should perform a recovery\&.
.SS "RecoverTimeout"
.PP
Default: 120
.PP
This is the default setting for timeouts for controls when sent from the recovery daemon\&. We allow longer control timeouts from the recovery daemon than from normal use since the recovery daemon often use controls that can take a lot longer than normal controls\&.
.SS "RecoveryBanPeriod"
.PP
Default: 300
.PP
The duration in seconds for which a node is banned if the node fails during recovery\&. After this time has elapsed the node will automatically get unbanned and will attempt to rejoin the cluster\&.
.PP
A node usually gets banned due to real problems with the node\&. Don\*(Aqt set this value too small\&. Otherwise, a problematic node will try to re\-join cluster too soon causing unnecessary recoveries\&.
.SS "RecoveryDropAllIPs"
.PP
Default: 120
.PP
If a node is stuck in recovery, or stopped, or banned, for this many seconds, then ctdb will release all public addresses on that node\&.
.SS "RecoveryGracePeriod"
.PP
Default: 120
.PP
During recoveries, if a node has not caused recovery failures during the last grace period in seconds, any records of transgressions that the node has caused recovery failures will be forgiven\&. This resets the ban\-counter back to zero for that node\&.
.SS "RepackLimit"
.PP
Default: 10000
.PP
During vacuuming, if the number of freelist records are more than
\fIRepackLimit\fR, then the database is repacked to get rid of the freelist records to avoid fragmentation\&.
.SS "RerecoveryTimeout"
.PP
Default: 10
.PP
Once a recovery has completed, no additional recoveries are permitted until this timeout in seconds has expired\&.
.SS "SeqnumInterval"
.PP
Default: 1000
.PP
Some databases have seqnum tracking enabled, so that samba will be able to detect asynchronously when there has been updates to the database\&. Every time a database is updated its sequence number is increased\&.
.PP
This tunable is used to specify in milliseconds how frequently ctdb will send out updates to remote nodes to inform them that the sequence number is increased\&.
.SS "StatHistoryInterval"
.PP
Default: 1
.PP
Granularity of the statistics collected in the statistics history\&. This is reported by \*(Aqctdb stats\*(Aq command\&.
.SS "StickyDuration"
.PP
Default: 600
.PP
Once a record has been marked STICKY, this is the duration in seconds, the record will be flagged as a STICKY record\&.
.SS "StickyPindown"
.PP
Default: 200
.PP
Once a STICKY record has been migrated onto a node, it will be pinned down on that node for this number of milliseconds\&. Any request from other nodes to migrate the record off the node will be deferred\&.
.SS "TakeoverTimeout"
.PP
Default: 9
.PP
This is the duration in seconds in which ctdb tries to complete IP failover\&.
.SS "TickleUpdateInterval"
.PP
Default: 20
.PP
Every
\fITickleUpdateInterval\fR
seconds, ctdb synchronizes the client connection information across nodes\&.
.SS "TraverseTimeout"
.PP
Default: 20
.PP
This is the duration in seconds for which a database traverse is allowed to run\&. If the traverse does not complete during this interval, ctdb will abort the traverse\&.
.SS "VacuumFastPathCount"
.PP
Default: 60
.PP
During a vacuuming run, ctdb usually processes only the records marked for deletion also called the fast path vacuuming\&. After finishing
\fIVacuumFastPathCount\fR
number of fast path vacuuming runs, ctdb will trigger a scan of complete database for any empty records that need to be deleted\&.
.SS "VacuumInterval"
.PP
Default: 10
.PP
Periodic interval in seconds when vacuuming is triggered for volatile databases\&.
.SS "VacuumMaxRunTime"
.PP
Default: 120
.PP
The maximum time in seconds for which the vacuuming process is allowed to run\&. If vacuuming process takes longer than this value, then the vacuuming process is terminated\&.
.SS "VerboseMemoryNames"
.PP
Default: 0
.PP
When set to non\-zero, ctdb assigns verbose names for some of the talloc allocated memory objects\&. These names are visible in the talloc memory report generated by \*(Aqctdb dumpmemory\*(Aq\&.
.SH "FILES>"
.RS 4
/usr/local/etc/ctdb/ctdb\&.tunables
.RE
.SH "SEE ALSO"
.PP
\fBctdb\fR(1),
\fBctdbd\fR(1),
\fBctdb.conf\fR(5),
\fBctdb\fR(7),
\m[blue]\fB\%http://ctdb.samba.org/\fR\m[]
.SH "AUTHOR"
.br
.PP
This documentation was written by Ronnie Sahlberg, Amitay Isaacs, Martin Schwenke
.SH "COPYRIGHT"
.br
Copyright \(co 2007 Andrew Tridgell, Ronnie Sahlberg
.br
.PP
This program 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; either version 3 of the License, or (at your option) any later version\&.
.PP
This program 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\&.
.PP
You should have received a copy of the GNU General Public License along with this program; if not, see
\m[blue]\fB\%http://www.gnu.org/licenses\fR\m[]\&.
.sp
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.