account-server.conf(5)

πŸ“¦
version 2.38.2 Β· 2 versions
, in debian trixie, nixos 26.05, nixpkgs unstable, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– account-server.conf(5) πŸ’–

okay bestie, sit down, hydrate, and let's talk about account-server.conf β€” the configuration file for the OpenStack Swift account server. this is the man page, section 5, and it's giving ✨reference material✨. i got you. 🫢


🌸 NAME 🌸

account-server.conf β€” the configuration file for the OpenStack Swift account server. yes, that's literally it. that's the whole name section. iconic brevity. πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

account-server.conf

no flags, no args, just vibes and a filename. periodt.


πŸ¦‹ DESCRIPTION πŸ¦‹

so. this is the config file that the account server uses, plus all its little account background-service besties, namely:

  • the replicator
  • the auditor
  • the reaper

the file follows python-pastedeploy syntax, which basically means it's split into sections wrapped in square brackets [like this], and each section holds a bunch of key/value parameters. those get described below, don't worry, i'm not gonna gatekeep. 🧚

any line that starts with a # symbol? ignored. straight up ghosted. not read, not parsed, not invited to the party. πŸ’€

if you want the deep lore on the python-pastedeploy config format, it lives here:

https://docs.pylonsproject.org/projects/pastedeploy/en/latest/#config-format

πŸ‘‘ GLOBAL SECTION πŸ‘‘

this one is signaled by the section named [DEFAULT]. here's everything you're allowed to put in it, no cap:

  • bind_ip β€” the IP address the account server should bind to. default is 0.0.0.0, which means bind to literally every available address. all of them. every single one. she's everywhere. 🌈
  • bind_port β€” the TCP port the account server binds to. default is 6202.
  • keep_idle β€” the value to set for socket TCP_KEEPIDLE. default is 600.
  • bind_timeout β€” timeout for binding the socket. default is 30.
  • backlog β€” TCP backlog. the maximum number of allowed pending connections. default is 4096.
  • workers β€” how many pre-forked processes will accept connections. zero means no fork. default is auto, which makes the server try to match the number of effective cpu cores if python multiprocessing is available (that's included with most python distributions >= 2.6), and otherwise it falls back to one. also worth noting (and it IS worth noting, bestie): individual workers use a whole bunch of eventlet co-routines to service multiple concurrent requests. multitasking queen. πŸ‘‘
  • max_clients β€” the max number of clients one worker can process simultaneously. fun fact, it'll actually call accept(2) N + 1 times. setting it to one (1) means it only handles one request at a time and won't accept another request concurrently. default is 1024.
  • user β€” the system user the account server runs as. default is swift.
  • swift_dir β€” the Swift configuration directory. default is /etc/swift.
  • devices β€” the parent directory where devices are mounted. default is /srv/node.
  • mount_check β€” whether or not to check if the devices are mounted, so you don't accidentally write to the root device (😭 imagine). default is true.
  • disable_fallocate β€” disable pre-allocating disk space for a file. default is false.
  • log_name β€” the label used when logging. default is swift.
  • log_facility β€” syslog log facility. default is LOG_LOCAL0.
  • log_level β€” logging level. default is INFO.
  • log_address β€” logging address. default is /dev/log.
  • log_max_line_length β€” this caps the length of log lines to whatever value you give it. no limit if you set it to 0, which is the default.
  • log_custom_handlers β€” a comma-separated list of functions to call in order to set up custom log handlers. the functions get passed: conf, name, log_to_console, log_route, fmt, logger, adapted_logger. default is empty.
  • log_udp_host β€” if you set it, log_udp_host overrides log_address. she said move over. πŸ’…
  • log_udp_port β€” UDP log port. default is 514.
  • log_statsd_host β€” the StatsD server. IPv4/IPv6 addresses and hostnames are both supported. if a hostname resolves to both an IPv4 and an IPv6 address, the IPv4 address gets used.
  • log_statsd_port β€” default is 8125.
  • log_statsd_default_sample_rate β€” default is 1.
  • log_statsd_sample_rate_factor β€” default is 1.
  • log_statsd_metric_prefix β€” default is empty.
  • db_preallocation β€” if you don't mind the extra disk space usage in overhead, you can turn this on to preallocate disk space with SQLite databases and decrease fragmentation. default is false.
  • eventlet_debug β€” debug mode for the eventlet library. default is false.
  • fallocate_reserve β€” you can set fallocate_reserve to the number of bytes, or a percentage of disk space, that you'd like fallocate to reserve β€” whether or not there's actually space for the given file size. a percentage gets used if the value ends with a %. default is 1%.
  • nice_priority β€” modify the scheduling priority of server processes. niceness values go from -20 (most favorable to the process) to 19 (least favorable to the process). the default does not modify priority.
  • ionice_class β€” modify the I/O scheduling class of server processes. the I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort) and IOPRIO_CLASS_IDLE (idle). the default doesn't modify class and priority. this only works together with ionice_priority.
  • ionice_priority β€” modify the I/O scheduling priority of server processes. I/O niceness priority is a number from 0 to 7. the higher the value, the lower the I/O priority of the process. works only with ionice_class. ignored if IOPRIO_CLASS_IDLE is set.

🌈 PIPELINE SECTION 🌈

signaled by the section name [pipeline:main]. here's what's allowed in there:

  • pipeline β€” used when you need to apply a number of filters. it's a list of filters, ended by an application. the normal pipeline is "healthcheck recon account-server". that's the default lineup, the main cast. ⭐

πŸ”₯ APP SECTION πŸ”₯

signaled by the section name [app:account-server]. parameters allowed in this section:

  • use β€” entry point for paste.deploy for the account server. this is the reference to the installed python egg. normally it's egg:swift#account.
  • set log_name β€” the label used when logging. default is account-server.
  • set log_facility β€” syslog log facility. default is LOG_LOCAL0.
  • set log_level β€” logging level. default is INFO.
  • set log_requests β€” enables request logging. default is True.
  • set log_address β€” logging address. default is /dev/log.
  • replication_server β€” the configure parameter for creating a specific server. here's the tea:
    • to handle all verbs, including replication verbs, don't specify "replication_server" at all β€” that's the default.
    • to only handle replication, set it to a true value (like "true" or "1").
    • to handle only non-replication verbs, set it to "false".
bestie, listen: unless you have a separate replication network, you should not specify any value for "replication_server". the default is empty.
  • nice_priority β€” modify the scheduling priority of server processes. niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). the default doesn't modify priority.
  • ionice_class β€” modify the I/O scheduling class of server processes. the I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort) and IOPRIO_CLASS_IDLE (idle). the default doesn't modify class and priority. works only with ionice_priority.
  • ionice_priority β€” modify the I/O scheduling priority of server processes. I/O niceness priority is a number from 0 to 7. higher value = lower I/O priority for the process. works only with ionice_class. ignored if IOPRIO_CLASS_IDLE is set.

🧚 FILTER SECTION 🧚

any section whose name starts with filter: is a filter section. filters are how you specify configuration parameters for specific swift middlewares. below are all the filters available and their respective acceptable parameters. buckle up, there's three. πŸ’–

✨ [filter:healthcheck] ✨

  • use β€” entry point for paste.deploy for the healthcheck middleware. this is the reference to the installed python egg. normally egg:swift#healthcheck.
  • disable_path β€” an optional filesystem path which, if it exists, will cause the healthcheck URL to return "503 Service Unavailable" with a body of "DISABLED BY FILE". dramatic much? πŸ’€

✨ [filter:recon] ✨

  • use β€” entry point for paste.deploy for the recon middleware. this is the reference to the installed python egg. normally egg:swift#recon.
  • recon_cache_path β€” this simply sets the directory where stats for a few items get stored. depending on how you deployed things, you may need to create this directory manually and make sure swift has read/write access. default is /var/cache/swift.

✨ [filter:xprofile] ✨

  • use β€” entry point for paste.deploy for the xprofile middleware. this is the reference to the installed python egg. normally egg:swift#xprofile.
  • profile_module β€” this option lets you switch profilers, which should inherit from the python standard profiler. currently the supported value can be 'cProfile', 'eventlet.green.profile' etc.
  • log_filename_prefix β€” this prefix gets combined with the process ID and a timestamp to name the profile data file. make sure the executing user has permission to write into this path (missing path segments will be created, if necessary). if you enable profiling in more than one type of daemon, you must override it with a unique value β€” like, the default is /var/log/swift/profile/account.profile.
  • dump_interval β€” the profile data gets dumped to local disk based on the above naming rule, in this interval. default is 5.0.
  • dump_timestamp β€” ⚠️ be careful, this option enables the profiler to dump data into files with a time stamp, which means there will be lots of files piled up in the directory. the default is false.
  • path β€” this is the path of the URL used to access the mini web UI. default is __profile__.
  • flush_at_shutdown β€” clear the data when the wsgi server shuts down. default is false.
  • unwind β€” unwind the iterator of applications. default is false.

okay that's the first half bestie, don't go anywhere, there's more coming πŸ’œ

✨ ADDITIONAL SECTIONS ✨

okay so these next ones? they're not the main character of the account server, but they're the supporting cast that keeps everything cute and functional πŸ’– They get used by the other swift-account services β€” the replicator, the auditor and the reaper. iykyk.


🌸 [account-replicator] 🌸

  • log_name β€” the label that shows up when logging. default is account-replicator.
  • log_facility β€” syslog log facility. default is LOG_LOCAL0.
  • log_level β€” logging level. default is INFO.
  • log_address β€” logging address. default is /dev/log.
  • per_diff β€” the max number of database rows that get sync'd in one single HTTP replication request. default is 1000.
  • max_diffs β€” this one caps how long the replicator will spend trying to sync a given database per pass, so that the other databases don't get starved. so considerate of it honestly default is 100.
  • concurrency β€” number of replication workers to spawn. default is 8.
  • run_pause [deprecated] β€” time in seconds to wait between replication passes. default is 30.
  • interval β€” replaces run_pause with the more standard "interval", which means the replicator won't pause unless it takes less than the interval set. default is 30.
  • node_timeout β€” request timeout to external services. default is 10 seconds.
  • conn_timeout β€” connection timeout to external services. default is 0.5 seconds.
  • reclaim_age β€” time elapsed in seconds before an account can be reclaimed. default is 604800 seconds.
  • rsync_compress β€” lets rsync compress the data that gets transmitted to the destination node during sync. but heads up bestie, this only applies when the destination node is in a different region than the local one. default is false.
  • rsync_module β€” the format of the rsync module where the replicator will send data. peep etc/rsyncd.conf-sample for some usage examples πŸ‘€
  • recon_cache_path β€” path to the recon cache directory. default is /var/cache/swift.
  • nice_priority β€” modifies the scheduling priority of server processes. niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). the default does not modify priority.
  • ionice_class β€” modifies the I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort) and IOPRIO_CLASS_IDLE (idle). the default does not modify class and priority. works only with ionice_priority.
  • ionice_priority β€” modifies the I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. the higher the value, the lower the I/O priority of the process. works only with ionice_class. ignored if IOPRIO_CLASS_IDLE is set.

πŸ¦‹ [account-auditor] πŸ¦‹

  • log_name β€” the label that shows up when logging. default is account-auditor.
  • log_facility β€” syslog log facility. default is LOG_LOCAL0.
  • log_level β€” logging level. default is INFO.
  • log_address β€” logging address. default is /dev/log.
  • interval β€” will audit, at most, 1 account per device per interval. default is 1800 seconds.
  • accounts_per_second β€” maximum accounts audited per second. should be tuned according to individual system specs. 0 is unlimited. default is 200.
  • recon_cache_path β€” path to the recon cache directory. default is /var/cache/swift.
  • nice_priority β€” modifies the scheduling priority of server processes. niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). the default does not modify priority.
  • ionice_class β€” modifies the I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort) and IOPRIO_CLASS_IDLE (idle). the default does not modify class and priority. works only with ionice_priority.
  • ionice_priority β€” modifies the I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. the higher the value, the lower the I/O priority of the process. works only with ionice_class. ignored if IOPRIO_CLASS_IDLE is set.

πŸŽ€ [account-reaper] πŸŽ€

  • log_name β€” the label that shows up when logging. default is account-reaper.
  • log_facility β€” syslog log facility. default is LOG_LOCAL0.
  • log_level β€” logging level. default is INFO.
  • log_address β€” logging address. default is /dev/log.
  • concurrency β€” number of reaper workers to spawn. default is 25.
  • interval β€” minimum time for a pass to take. default is 3600 seconds.
  • node_timeout β€” request timeout to external services. default is 10 seconds.
  • conn_timeout β€” connection timeout to external services. default is 0.5 seconds.
  • delay_reaping β€” normally the reaper starts deleting account information for deleted accounts immediately, but you can set this to delay its work if you want. the value is in seconds. default is 0.
bestie listen πŸ‘‘ the sum of this value and the container-updater interval should be less than the account-replicator reclaim_age. that's what ensures that once the account-reaper has deleted a container, there's sufficient time for the container-updater to report to the account before the account DB is removed. it's giving ✨timing✨.
  • reap_warn_after β€” if the account fails to be reaped due to a persistent error, the account reaper will log a message such as:
Account <name> has not been reaped since <date>

you can search logs for this message if space is not being reclaimed after you delete account(s). default is 2592000 seconds (30 days). this is in addition to any time requested by delay_reaping.

  • nice_priority β€” modifies the scheduling priority of server processes. niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). the default does not modify priority.
  • ionice_class β€” modifies the I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort) and IOPRIO_CLASS_IDLE (idle). the default does not modify class and priority. works only with ionice_priority.
  • ionice_priority β€” modifies the I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. the higher the value, the lower the I/O priority of the process. works only with ionice_class. ignored if IOPRIO_CLASS_IDLE is set.

πŸ“š DOCUMENTATION πŸ“š

want more in-depth tea about the swift-account-server, and also about OpenStack Swift as a whole? it lives here:

go read, you'll be obsessed πŸ’…


πŸ‘€ SEE ALSO πŸ‘€


and that's a wrap on the whole page, bestie!! 🫢 this one's from the Linux collection, dated 8/26/2011, filed under account-server.conf(5) β€” go forth and configure responsibly, mwah πŸ’–βœ¨