ovsdb-server(1)
π ovsdb-server(1) π
okay bestie, this is the Open VSwitch Manual page for ovsdb-server, and it's a whole main-character situation. Let's get into it π
πΈ NAME πΈ
ovsdb-server β Open vSwitch database server
β¨ SYNOPSIS β¨
ovsdb-server [database]... [relay:schema_name:remote]...
[--remote=remote]... [--config-file=file] [--run=command]
Daemon options:
[--pidfile[=pidfile]] [--overwrite-pidfile] [--detach]
[--no-chdir] [--no-self-confinement]
Logging options:
[-v[module[:destination[:level]]]]...
[--verbose[=module[:destination[:level]]]]...
[--log-file[=file]]
Active-backup options:
[--sync-from=server] [--sync-exclude-
tables=db:table[,db:table]...] [--active]
Public key infrastructure options:
[--private-key=privkey.pem]
[--certificate=cert.pem]
[--ca-cert=cacert.pem]
[--ssl-server-name=servername]
[--bootstrap-ca-cert=cacert.pem]
[--peer-ca-cert=peer-cacert.pem]
SSL/TLS connection options:
[--ssl-protocols=protocols]
[--ssl-ciphers=ciphers]
[--ssl-ciphersuites=ciphersuites]
Runtime management options:
--unixctl=socket
Replay options:
[--record[=directory]] [--replay[=directory]]
Common options:
[-h | --help] [-V | --version]
π¦ DESCRIPTION π¦
The ovsdb-server program provides RPC interfaces to one or more Open vSwitch databases (OVSDBs). It supports JSON-RPC client connections over active or passive TCP/IP or Unix domain sockets. For an introduction to OVSDB and its implementation in Open vSwitch, see ovsdb(7).
Each OVSDB file may be specified on the command line as database. Relay databases may be specified on the command line as relay:schema_name:remote. For a detailed description of the relay database argument, see ovsdb(7). If none of database files or relay databases is specified, the default is /etc/openvswitch/conf.db. The database files must already have been created and initialized using, for example, ovsdb-tool's create, create-cluster, or join-cluster command.
All types of databases can alternatively be added using a configuration file provided via --config-file option. This option is mutually exclusive with specifying database on the command line. For a detailed description of the configuration file format see ovsdb(7).
This OVSDB implementation supports standalone, active-backup, relay and clustered database service models, as well as database replication. See the Service Models section of ovsdb(7) for more information.
For clustered databases, when the --detach option is used, ovsdb-server detaches without waiting for the server to successfully join a cluster (if the database file is freshly created with ovsdb-tool join-cluster) or connect to a cluster that it has already joined. Use ovsdb-client wait (see ovsdb-client(1)) to wait until the server has successfully joined and connected to a cluster. The same is true for relay databases. Same commands could be used to wait for a relay database to connect to the relay source (remote).
In addition to user-specified databases, ovsdb-server version 2.9 and later also always hosts a built-in database named _Server. Please see ovsdb-server(5) for documentation on this database's schema.
π OPTIONS π
--remote=remoteβ Adds remote as a connection method used byovsdb-server. The remote may be an OVSDB active or passive connection method, e.g.pssl:6640, as described inovsdb(7). The following additional form is also supported:db:db,table,columnβ Reads additional connection methods from column in all of the rows in table within db. As the contents of column changes,ovsdb-serveralso adds and drops connection methods accordingly.
If column's type is string or set of strings, then the connection methods are taken directly from the column. The connection methods in the column must have one of the forms described above.
If column's type is UUID or set of UUIDs and references a table, then each UUID is looked up in the referenced table to obtain a row. The following columns in the row, if present and of the correct type, configure a connection method. Any additional columns are ignored.
target(string) β Connection method, in one of the forms described above. This column is mandatory: if it is missing or empty then no connection method can be configured.max_backoff(integer) β Maximum number of milliseconds to wait between connection attempts.inactivity_probe(integer) β Maximum number of milliseconds of idle time on connection to client before sending an inactivity probe message.read_only(boolean) β If true, only read-only transactions are allowed on this connection.
It is an error for column to have another type.
To connect or listen on multiple connection methods, use multiple --remote options.
Alternatively, remotes can be specified in a "remotes" section of the configuration file, if provided using --config-file option. --config-file and --remote options are mutually exclusive.
--config-file=fileβ Specifies a configuration file forovsdb-server. This file can contain connection methods and databases used by the server. The file contains a JSON object with two main elements:remotesβ JSON object that contains a set of connection methods in the following format:"target": { "option": value, ... }. Where target is in the same format as remote in--remoteoption. option can bemax-backoff(integer),inactivity-probe(integer),read-only(boolean),role(string) ordscp(integer) with their allowed values respectively. The meaning of these options is the same as in configuration of remote via a database row with--remoteoption.databasesβ JSON object that describes databases that should be added to theovsdb-serverin the following format:"name":{ "option": value, ... }. Where name is either a file name of a previously created and initialized database or a schema name in case of relay databases. Available options are:service-model(string) β Describes the service model of this database. One of:standalone,clustered,active-backuporrelay. This option is required for all types, except forstandaloneandclustered. For these databases the service model will be inferred from the file, if not specified explicitly.ovsdb-serverwill refuse to add a database if the specifiedservice-modeldoesn't match with the provided file.source(JSON object; active-backup or relay) β Describes the connection method to the active database or to the relay source. It is a JSON object with exactly one element in the same format as elements of"remotes", except thatread-onlyandroleoptions are not applicable. E.g."source": { "unix:db.sock": { "inactivity-probe": 10000, "max-backoff": 8000 } }backup(boolean; active-backup only) β If set to true,ovsdb-serverwill use this database as a backup for the specified source. Will be served as an active database otherwise.exclude-tables(JSON array of strings; active-backup only) β List of table names that should be excluded from replication in backup mode, e.g."exclude-tables": [ "Table_One", "Table_Two" ].
Content of the most basic configuration file may look like this:
{ "remotes": { "pssl:6640": {} }, "databases": { "conf.db": {} } }
Examples of configuration files for different service models can be found in in ovsdb(7).
--config-file option is mutually exclusive with the --remote as well as with specifying database on a command line. It is also mutually exclusive with all the Active-Backup Options and all the RUNTIME MANAGEMENT COMMANDS that can change the configuration of the server in conflict with the content of the file, i.e. all the commands that manipulate with remotes and databases. Read-only commands can still be used.
In case of changes in the file, users should run the ovsdb-server/reload command with ovs-appctl(8) in order for changes to take effect.
--run=command]β Ordinarilyovsdb-serverruns forever, or until it is told to exit (see RUNTIME MANAGEMENT COMMANDS below). With this option,ovsdb-serverinstead starts a shell subprocess running command. When the subprocess terminates,ovsdb-serveralso exits gracefully. If the subprocess exits normally with exit code 0, thenovsdb-serverexits with exit code 0 also; otherwise, it exits with exit code 1.
This option can be useful where a database server is needed only to run a single command, e.g.:
ovsdb-server --remote=punix:socket --run='ovsdb-client dump unix:socket Open_vSwitch'
π οΈ Daemon Options π οΈ
The following options are valid on POSIX based platforms.
--pidfile[=pidfile]β Causes a file (by default,ovsdb-server.pid) to be created indicating the PID of the running process. If the pidfile argument is not specified, or if it does not begin with/, then it is created in/run/openvswitch.
If --pidfile is not specified, no pidfile is created.
--overwrite-pidfileβ By default, when--pidfileis specified and the specified pidfile already exists and is locked by a running process,ovsdb-serverrefuses to start. Specify--overwrite-pidfileto cause it to instead overwrite the pidfile.
When --pidfile is not specified, this option has no effect.
--detachβ bestie, this makesovsdb-serverrun as a background process π . The process forks, and in the child it starts a new session, closes the standard file descriptors (which, lowkey, has the side effect of disabling logging to the console), and changes its current directory to the root β unless you said--no-chdir. After the child finishes its initialization, the parent exits. And here's the β¨iconicβ¨ part:ovsdb-serverdetaches only after it starts listening on all configured remotes π«Ά. At that point, all standalone and active-backup databases are ready for use. Clustered databases, tho? They only become ready for use after they finish joining their clusters (which could have already happened in previous runs ofovsdb-server, no cap).--monitorβ creates an additional process to monitor theovsdb-serverdaemon π. If the daemon dies due to a signal that indicates a programming error (SIGABRT,SIGALRM,SIGBUS,SIGFPE,SIGILL,SIGPIPE,SIGSEGV,SIGXCPU, orSIGXFSZ) then the monitor process starts a new copy of it π₯. If the daemon dies or exits for another reason, the monitor process exits. This option is normally used with--detach, but it also functions without it. slay.--no-chdirβ so by default, when--detachis specified,ovsdb-serverchanges its current working directory to the root directory after it detaches. Otherwise, invokingovsdb-serverfrom a carelessly chosen directory would prevent the administrator from unmounting the file system that holds that directory π¬. Specifying--no-chdirsuppresses this behavior, preventingovsdb-serverfrom changing its current working directory. This may be useful for collecting core files, since it is common behavior to write core dumps into the current working directory and the root directory is not a good directory to use π.
This option has no effect when --detach is not specified. fr fr, it just sits there doing nothing.
--no-self-confinementβ by default the daemon will try to self-confine itself to work with files under well-known directories determined during build π. It is better to stick with this default behavior and not to use this flag unless some other Access Control is used to confine the daemon. Note that in contrast to other access control implementations that are typically enforced from kernel-space (e.g. DAC or MAC), self-confinement is imposed from the user-space daemon itself and hence should not be considered as a full confinement strategy β instead it should be viewed as an additional layer of security π‘οΈ. it's giving defense in depth, not defense in only.--userβ causesovsdb-serverto run as a different user specified in"user:group", thus dropping most of the root privileges πβ‘οΈπ§. Short forms"user"and":group"are also allowed, with current user or group assumed respectively. Only daemons started by the root user accept this argument.
On Linux, daemons will be granted CAP_IPC_LOCK and CAP_NET_BIND_SERVICES before dropping root privileges. Daemons that interact with a datapath, such as ovs-vswitchd, will be granted three additional capabilities, namely CAP_NET_ADMIN, CAP_NET_BROADCAST and CAP_NET_RAW. The capability change will apply even if the new user is root. wild but true π.
πΈ Logging Options πΈ
-v[spec],--verbose=[spec]β sets logging levels β¨. Without any spec, it sets the log level for every module and destination todbg. Otherwise, spec is a list of words separated by spaces or commas or colons, up to one from each category below:- A valid module name, as displayed by the
vlog/listcommand onovs-appctl(8), limits the log level change to the specified module. syslog,console, orfile, to limit the log level change to only to the system log, to the console, or to a file, respectively. (If--detachis specified,ovsdb-servercloses its standard file descriptors, so logging to the console will have no effect β yeah, that's the tradeoff bestie π.)off,emer,err,warn,info, ordbg, to control the log level. Messages of the given severity or higher will be logged, and messages of lower severity will be filtered out.offfilters out all messages. Seeovs-appctl(8)for a definition of each log level.
- A valid module name, as displayed by the
Case is not significant within spec π.
Regardless of the log levels set for file, logging to a file will not take place unless --log-file is also specified (see below). read that again, iykyk.
For compatibility with older versions of OVS, any is accepted as a word but has no effect. it's just vibing there π¦.
-v,--verboseβ sets the maximum logging verbosity level, equivalent to--verbose=dbgπ₯.-vPATTERN:destination:pattern,--verbose=PATTERN:destination:patternβ sets the log pattern for destination to pattern. Refer toovs-appctl(8)for a description of the valid syntax for pattern.-vFACILITY:facility,--verbose=FACILITY:facilityβ sets the RFC5424 facility of the log message. facility can be one ofkern,user,mail,daemon,auth,syslog,lpr,news,uucp,clock,ftp,ntp,audit,alert,clock2,local0,local1,local2,local3,local4,local5,local6orlocal7. If this option is not specified,daemonis used as the default for the local system syslog andlocal0is used while sending a message to the target provided via the--syslog-targetoption. iconic defaults tbh π .--log-file[=file]β enables logging to a file π. If file is specified, then it is used as the exact name for the log file. The default log file name used if file is omitted is/var/log/openvswitch/ovsdb-server.log.--syslog-target=host:portβ send syslog messages to UDP port on host, in addition to the system syslog. The host must be a numerical IP address, not a hostname π«π·οΈ (no names allowed, only numbers, periodt).--syslog-method=methodβ specify method how syslog messages should be sent to syslog daemon. Following forms are supported:libc, use libcsyslog()function. Downside of using this options is that libc adds fixed prefix to every message before it is actually sent to the syslog daemon over/dev/logUNIX domain socket π¬.unix:file, use UNIX domain socket directly. It is possible to specify arbitrary message format with this option. However,rsyslogd8.9 and older versions use hard coded parser function anyway that limits UNIX domain socket use. If you want to use arbitrary message format with olderrsyslogdversions, then use UDP socket to localhost IP address instead π«Ά.udp:ip:port, use UDP socket. With this method it is possible to use arbitrary message format also with olderrsyslogd. When sending syslog messages over UDP socket extra precaution needs to be taken into account, for example, syslog daemon needs to be configured to listen on the specified UDP port, accidentaliptablesrules could be interfering with local syslog traffic and there are some security considerations that apply to UDP sockets, but do not apply to UNIX domain sockets β οΈ. be careful out there.null, discards all messages logged to syslog ποΈ.
The default is taken from the OVS_SYSLOG_METHOD environment variable; if it is unset, the default is libc.
π¦ Active-Backup Options π¦
These options support the ovsdb-server active-backup service model and database replication π. These options apply only to databases in the format used for standalone and active-backup databases, which is the database format created by ovsdb-tool create. By default, when it serves a database in this format, ovsdb-server runs as a standalone server. These options can configure it for active-backup use:
- Use
--sync-from=serverto start the server in the backup role, replicating data from server. Whenovsdb-serveris running as a backup server, it rejects all transactions that can modify the database content, including lock commands π«βοΈ. The same form can be used to configure the local database as a replica of server. - Use
--sync-from=server --activeto start the server in the active role, but prepared to switch to the backup role in which it would replicate data from server. Whenovsdb-serverruns in active mode, it allows all transactions, including those that modify the database β .
At runtime, management commands can change a server's role and otherwise manage active-backup features. See Active-Backup Commands, below, for more information π.
--sync-from=serverβ sets upovsdb-serverto synchronize its databases with the databases in server, which must be an active connection method in one of the forms documented inovsdb-client(1)π‘. Every transaction committed by server will be replicated toovsdb-server. This option makesovsdb-serverstart as a backup server; add--activeto make it start as an active server.--sync-exclude-tables=db:table[,db:table]...β causes the specified tables to be excluded from replication π ββοΈ.--activeβ by default,--sync-frommakesovsdb-serverstart up as a backup for server. With--active, however,ovsdb-serverstarts as an active server. Use this option to allow the syncing options to be specified using command line options, yet start the server, as the default, active server. To switch the running server to backup mode, useovs-appctl(1)to execute theovsdb-server/connect-active-ovsdb-servercommand π.
These options are mutually exclusive with the --config-file. like, they cannot coexist, bestie, pick a lane π.
π Public Key Infrastructure Options π
The options described below for configuring the SSL public key infrastructure accept a special syntax for obtaining their configuration from the database β¨. If any of these options is given db:db,table,column as its argument, then the actual file name is read from the specified column in table within the db database. The column must have type string or set of strings. The first nonempty string in the table is taken as the file name. (This means that ordinarily there should be at most one row in table.) iykyk π
-pprivkey.pem,--private-key=privkey.pemβ specifies a PEM file containing the private key used asovsdb-server's identity for outgoing SSL/TLS connections ππ.-c cert.pem,--certificate=cert.pemβ tells ovsdb-server which PEM file holds the certificate that proves the private key from-p/--private-keyis actually trustworthy π. Heads up: that certificate has to be signed by the certificate authority (CA) that the peer in your SSL/TLS connections will use to verify it β no CA match, no vibe π-C cacert.pem,--ca-cert=cacert.pemβ names the PEM file with the CA certificate ovsdb-server should use to verify the certificates that SSL/TLS peers hand over to it π. And yes, this may be the same certificate that those peers use to verify the one you gave on-c/--certificate, or it may be a totally different one β it all depends on the PKI design in use, iykyk.-C none,--ca-cert=noneβ straight up disables verification of certificates presented by SSL/TLS peers π. This introduces a security risk, fr fr, because it means certificates cannot be verified to be those of known trusted hosts. You're basically letting anyone in. Choose chaos consciously.--ssl-server-name=servernameβ sets the server name used for TLS Server Name Indication (SNI) β¨. By default, the hostname from the connection string is used for SNI, and this option lets you override that SNI hostname β super useful when you're connecting through proxies or service meshes where the connection endpoint differs from the intended server name π¦.--bootstrap-ca-cert=cacert.pemβ here's the tea β: whencacert.pemexists, this option does exactly the same thing as-Cor--ca-cert. But if it does not exist, then ovsdb-server will attempt to obtain the CA certificate from the SSL/TLS peer on its first SSL/TLS connection and save it to the named PEM file πΎ. If that works, it will immediately drop the connection and reconnect, and from then on all SSL/TLS connections must be authenticated by a certificate signed by the CA certificate thus obtained π
β οΈ Bestie, listen: this option exposes the SSL/TLS connection to a man-in-the-middle attack obtaining the initial CA certificate π. It may be useful for bootstrapping, but that's the trade-off.
This option is only useful if the SSL/TLS peer sends its CA certificate as part of the SSL/TLS certificate chain β and SSL/TLS protocols do not require the server to send the CA certificate π.
This option is mutually exclusive with -C and --ca-cert β pick a lane π
--peer-ca-cert=peer-cacert.pemβ points at a PEM file containing one or more additional certificates to send to SSL/TLS peers πΈ.peer-cacert.pemshould be the CA certificate used to sign ovsdb-server's own certificate, that is, the certificate specified on-cor--certificate. If ovsdb-server's certificate is self-signed, then--certificateand--peer-ca-certshould specify the same file π«Ά.
Ngl, this option is not useful in normal operation, because the SSL/TLS peer must already have the CA certificate for the peer to have any confidence in ovsdb-server's identity. However, it offers a way for a new installation to bootstrap the CA certificate on its first SSL/TLS connection β.
β¨ SSL Connection Options β¨
--ssl-protocols=protocolsβ specifies a range, or a comma- or space-delimited list, of the SSL/TLS protocols ovsdb-server will enable for SSL/TLS connections π. Supported protocols includeTLSv1.2andTLSv1.3.
Ranges can be provided in a form of two protocol names separated with a dash, or as a single protocol name with a plus sign. For example, use TLSv1.2-TLSv1.3 to allow TLSv1.2 and TLSv1.3. Use TLSv1.2+ to allow TLSv1.2 and any later protocol π₯.
The option accepts a list of protocols or exactly one range. The range is a preferred way of specifying protocols, and the option always behaves as if the range between the minimum and the maximum specified version is provided β i.e., if the option is set to TLSv1.X,TLSv1.(X+2), the TLSv1.(X+1) will also be enabled as if it was a range π. Regardless of order, the highest protocol supported by both sides will be chosen when making the connection.
The default when this option is omitted is TLSv1.2 or later π.
--ssl-ciphers=ciphersβ specifies, in OpenSSL cipher string format, the ciphers ovsdb-server will support for SSL/TLS connections withTLSv1.2π. The default when this option is omitted isDEFAULT:@SECLEVEL=2.--ssl-ciphersuites=ciphersuitesβ specifies, in OpenSSL ciphersuite string format, the ciphersuites ovsdb-server will support for SSL/TLS connections withTLSv1.3and later π. Default value from OpenSSL will be used when this option is omitted.
πΈ Other Options πΈ
--unixctl=socketβ sets the name of the control socket on which ovsdb-server listens for runtime management commands (see RUNTIME MANAGEMENT COMMANDS, below) π§. Ifsocketdoes not begin with/, it is interpreted as relative to/run/openvswitch. If--unixctlis not used at all, the default socket is/run/openvswitch/ovsdb-server.pid.ctl, where pid is ovsdb-server's process ID.
Specifying none for socket disables the control socket feature π«.
--record[=directory]β sets the process in "recording" mode, in which it will record all the connections, data from streams (Unix domain and network sockets) and some other important necessary bits, so they could be replayed later πΌ. Recorded data is stored in replay files in the specifieddirectory. Ifdirectorydoes not begin with/, it is interpreted as relative to/run/openvswitch. Ifdirectoryis not specified,/run/openvswitchwill be used.--replay[=directory]β sets the process in "replay" mode, in which it will read information about connections, data from streams (Unix domain and network sockets) and some other necessary bits directly from replay files instead of using real sockets π¦. Replay files from thedirectorywill be used. Ifdirectorydoes not begin with/, it is interpreted as relative to/run/openvswitch. Ifdirectoryis not specified,/run/openvswitchwill be used.-h,--helpβ prints a brief help message to the console π¬.-V,--versionβ prints version information to the console π·οΈ.
π RUNTIME MANAGEMENT COMMANDS π
ovs-appctl(8) can send commands to a running ovsdb-server process π¨. The currently supported commands are described below.
π ovsdb-server Commands π
These commands are specific to ovsdb-server.
exitβ causes ovsdb-server to gracefully terminate π«Ά. A polite little goodbye.ovsdb-server/compact [db]β compacts databasedbin-place ποΈ. Ifdbis not specified, compacts every database in-place.
A database is also compacted automatically when a transaction is logged if it is over 2 times as large as its previous compacted size (and at least 10 MB), but not before 100 commits have been added or 10 minutes have elapsed since the last compaction β±οΈ. It will also be compacted automatically after 24 hours since the last compaction if 100 commits were added regardless of its size. She keeps herself tidy, no cap.
ovsdb-server/memory-trim-on-compaction on|offβ if this option ison, ovsdb-server will try to reclaim all unused heap memory back to the system after each successful database compaction to reduce the memory consumption of the process π§Ή.offby default.ovsdb-server/reconnectβ makes ovsdb-server drop all of the JSON-RPC connections to database clients and reconnect π.
This command might be useful for debugging issues with database clients, iykyk π.
ovsdb-server/add-remote remoteβ adds a remote, as if--remote=remotehad been specified on the ovsdb-server command line β. (Ifremoteis already a remote, this command succeeds without changing the configuration β she's chill like that.)
Mutually exclusive with the --config-file option π«.
ovsdb-server/remove-remote remoteβ removes the specified remote from the configuration, failing with an error ifremoteis not configured as a remote β. This command only works with remotes that were named on--remoteorovsdb-server/add-remote, that is, it will not remove remotes added indirectly because they were read from the database by configuring adb:db,table,columnremote π. (You can remove a database source withovsdb-server/remove-remote db:db,table,column, but not individual remotes found indirectly through the database.)
Mutually exclusive with the --config-file option.
ovsdb-server/list-remotesβ outputs a list of the currently configured remotes named on--remoteorovsdb-server/add-remote, that is, it does not list remotes added indirectly because they were read from the database by configuring adb:db,table,columnremote π.ovsdb-server/add-db databaseβ adds thedatabaseto the running ovsdb-server πΎ.databasecould be a database file or a relay description in the following format:relay:schema_name:remote. The database file must already have been created and initialized using, for example,ovsdb-tool create.
Mutually exclusive with the --config-file option π«.
ovsdb-server/remove-db databaseβ removesdatabasefrom the running ovsdb-server ποΈ.databasemust be a database name as listed byovsdb-server/list-dbs.
If a remote has been configured that points to the specified database (e.g. --remote=db:database,... on the command line), then it will be disabled until another database with the same name is added again (with ovsdb-server/add-db) π΄.
Any public key infrastructure options specified through this database (e.g. --private-key=db:database,... on the command line) will be disabled until another database with the same name is added again (with ovsdb-server/add-db) π.
Mutually exclusive with the --config-file option.
ovsdb-server/list-dbsβ outputs a list of the currently configured databases added either through the command line or through theovsdb-server/add-dbcommand π.ovsdb-server/tlog-set database:table on|offβ enables or disables logging of all operations executed on the specifieddatabaseandtableπ. Logs are generated atINFOlevel and are rate limited.ovsdb-server/tlog-listβ displays the logging state for all currently configured databases and tables π.
π¦ Active-Backup Commands π¦
These commands query and update the role of ovsdb-server within an active-backup pair of servers. See Active-Backup Options, above, and Active-Backup Database Service Model in ovsdb(7) for more info. π
β οΈ Heads up bestie: every Active-Backup Command that changes the state ofovsdb-serveris mutually exclusive with the--config-fileoption.
ovsdb-server/set-active-ovsdb-serverserver β Sets the active server from whichovsdb-serverconnects throughovsdb-server/connect-active-ovsdb-server. This overrides the--sync-fromcommand-line option.ovsdb-server/get-active-ovsdb-serverβ Gets the active server from whichovsdb-serveris currently synchronizing its databases.ovsdb-server/connect-active-ovsdb-serverβ Switches the server to a backup role. The server starts synchronizing its databases with the active server specified byovsdb-server/set-active-ovsdb-server(or the--sync-fromcommand-line option) and closes all existing client connections, which requires clients to reconnect.ovsdb-server/disconnect-active-ovsdb-serverβ Switches the server to an active role. The server stops synchronizing its databases with an active server and closes all existing client connections, which requires clients to reconnect.ovsdb-server/set-active-ovsdb-server-probe-intervalprobe interval β Sets the probe interval (in milli seconds) for the connection to active server.ovsdb-server/set-sync-exclude-tablesdb:table[,db:table]... β Sets the table withindbthat will be excluded from synchronization. This overrides the--sync-exclude-tablescommand-line option.ovsdb-server/get-sync-exclude-tablesβ Gets the tables that are currently excluded from synchronization.ovsdb-server/sync-statusβ Prints a summary of replication run time information. The state information is always provided, indicating whether the server is running in the active or the backup mode. For all databases with active-backup service model, replication connection status, which can be eitherconnecting,replicatingorerror, are shown. When the connection is inreplicatingstate, further output shows the tables that are currently excluded from replication.
π¦ Cluster Commands π¦
These commands support the ovsdb-server clustered service model. They apply only to databases in the format used for clustered databases, which is the database format created by ovsdb-tool create-cluster and ovsdb-tool join-cluster. β¨
cluster/ciddb β Prints the cluster ID fordb, which is a UUID that identifies the cluster. Ifdbis a database newly created byovsdb-tool cluster-jointhat has not yet successfully joined its cluster, and--cidwas not specified on thecluster-joincommand line, then this command will report an error because the cluster ID is not yet known.cluster/siddb β Prints the server ID fordb, which is a UUID that identifies this server within the cluster.cluster/statusdb β Prints this serverβs status within the cluster and the status of its connections to other servers in the cluster.cluster/leavedb β This command starts the server gracefully removing itself from its cluster. At least one server must remain, and the cluster must be healthy, that is, over half of the clusterβs servers must be up.
When the server successfully leaves the cluster, it stops serving db, as if ovsdb-server/remove-db db had been executed.
Use ovsdb-client wait (see ovsdb-client(1)) to wait until the server has left the cluster.
Once a server leaves a cluster, it may never rejoin it. Instead, create a new server and join it to the cluster.
Note that removing the server from the cluster alters the total size of the cluster. For example, if you remove two servers from a three server cluster, then the "cluster" becomes a single functioning server. This does not result in a three server cluster that lacks quorum.
cluster/kickdb server β Start graceful removal ofserverfromdbβs cluster, likecluster/leave, except that it can remove any server, not just this one.
server may be a server ID, as printed by cluster/sid, or the serverβs local network address as passed to ovsdb-toolβs create-cluster or join-cluster command. Use cluster/status to see a list of cluster members.
cluster/change-election-timerdb time β Change the leader election timeout base value of the cluster, in milliseconds.
Leader election will be initiated by a follower if there is no heartbeat received from the leader within this time plus a random time within 1 second.
The default value is 1000, if not changed with this command. This command can be used to adjust the value when necessary, according to the expected load and response time of the servers.
This command must be executed on the leader. It initiates the change to the cluster. To see if the change takes effect (committed), use cluster/status to show the current setting. Once a change is committed, it persists at server restarts.
cluster/set-backlog-thresholddb n_msgs n_bytes β Sets the backlog limits fordbβs RAFT connections to a maximum ofn_msgsmessages orn_bytesbytes. If the backlog on one of the connections reaches the limit, it will be disconnected (and re-established). Values are checked only if the backlog contains more than 50 messages.
π VLOG COMMANDS π
These commands manage ovsdb-serverβs logging settings. π
vlog/set [spec]β Sets logging levels. Without anyspec, sets the log level for every module and destination todbg. Otherwise,specis a list of words separated by spaces or commas or colons, up to one from each category below:- A valid module name, as displayed by the
vlog/listcommand onovs-appctl(8), limits the log level change to the specified module. syslog,console, orfile, to limit the log level change to only to the system log, to the console, or to a file, respectively.off,emer,err,warn,info, ordbg, to control the log level. Messages of the given severity or higher will be logged, and messages of lower severity will be filtered out.offfilters out all messages. Seeovs-appctl(8)for a definition of each log level.
- A valid module name, as displayed by the
For vlog/set, case is not significant within spec.
Regardless of the log levels set for file, logging to a file will not take place unless ovsdb-server was invoked with the --log-file option.
For compatibility with older versions of OVS, any is accepted as a word but has no effect.
vlog/set PATTERN:destination:patternβ Sets the log pattern fordestinationtopattern. Refer toovs-appctl(8)for a description of the valid syntax forpattern.vlog/listβ Lists the supported logging modules and their current levels.vlog/list-patternβ Lists logging patterns used for each destination.vlog/closeβ Causesovsdb-serverto close its log file, if it is open. (Usevlog/reopento reopen it later.)vlog/reopenβ Causesovsdb-serverto close its log file, if it is open, and then reopen it. (This is useful after rotating log files, to cause a new log file to be used.)
This has no effect unless ovsdb-server was invoked with the --log-file option.
vlog/disable-rate-limit [module].../vlog/enable-rate-limit [module]...β By default,ovsdb-serverlimits the rate at which certain messages can be logged. When a message would appear more frequently than the limit, it is suppressed. This saves disk space, makes logs easier to read, and speeds up execution, but occasionally troubleshooting requires more detail. Therefore,vlog/disable-rate-limitallows rate limits to be disabled at the level of an individual log module. Specify one or more module names, as displayed by thevlog/listcommand. Specifying either no module names at all or the keywordanydisables rate limits for every log module.
The vlog/enable-rate-limit command, whose syntax is the same as vlog/disable-rate-limit, can be used to re-enable a rate limit that was previously disabled.
π§ MEMORY COMMANDS π§
These commands report memory usage. π«Ά
memory/showβ Displays some basic statistics aboutovsdb-serverβs memory usage.ovsdb-serveralso logs this information soon after startup and periodically as its memory consumption grows.
π COVERAGE COMMANDS π
These commands manage ovsdb-serverβs βcoverage counters,β which count the number of times particular events occur during a daemonβs runtime. In addition to these commands, ovsdb-server automatically logs coverage counter values, at INFO level, when it detects that the daemonβs main loop takes unusually long to run. π
Coverage counters are useful mainly for performance analysis and debugging.
coverage/showβ Displays the averaged per-second rates for the last few seconds, the last minute and the last hour, and the total counts of all of the coverage counters.coverage/read-countercounter β Displays the total count for the given coverage counter.
π BUGS π
In Open vSwitch before version 2.4, when ovsdb-server sent JSON-RPC error responses to some requests, it incorrectly formulated them with the result and error swapped, so that the response appeared to indicate success (with a nonsensical result) rather than an error. The requests that suffered from this problem were:
transactget_schemaβ only if the request names a nonexistent database.monitorlockunlockβ in all error cases.
Of these cases, the only error that a well-written application is likely to encounter in practice is monitor of tables or columns that do not exist, in a situation where the application has been upgraded but the old database schema is still temporarily in use. To handle this situation gracefully, we recommend that clients should treat a monitor response with a result that contains an error key-value pair as an error (assuming that the database being monitored does not contain a table named error). π
β¨ SEE ALSO β¨
okay bestie, you're at the end of the page, which means it's time for the β¨friend groupβ¨ β the other manpages that live in the same universe as this one. go read them, they're literally all slay:
ovsdb(7)β the big-picture overview of the OVSDB vibe itself πovsdb-tool(1)β the utility for poking at OVSDB files directly π οΈovsdb-server(5)β the config-file side of things πovsdb-server(7)β and the deeper lore on the server itself π¦
and that's a wrap on ovsdb-server(1), bestie!! ππ«Ά you made it all the way to the bottom, which is honestly main character energy. this whole thing comes from Open vSwitch, version 4.0.0 β so if you're citing it or filing a bug or whatever, that's the source and version to name-drop, periodt π
β¨ go forth and serve some databases, you've got this ππ
π¦ where this page comes from
- arch rolling: openvswitch 4.0.0-1 Β· Apache-2.0
- Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms