object-server.conf(5)
β¨ NAME β¨
okay bestie, say hi to object-server.conf β the configuration file for the OpenStack Swift object server. This manual page is object-server.conf(5), and it's giving βI run your object storage vibesβ π
π SYNOPSIS π
object-server.conf
That's it. A whole synopsis that's just the filename. iconic, honestly.
π DESCRIPTION π
This is the config file used by the object server and other object background services, like: replicator, reconstructor, updater, auditor, and expirer. They all pull up to this file.
The file follows python-pastedeploy syntax. It's split into sections wrapped in square brackets []. Each section has some number of key/value parameters, and we're gonna spill all the tea on those later.
Any line starting with a # symbol is ignored, so go off with comments π¬
Wanna know more about python-pastedeploy config format? The link is right here: https://docs.pylonsproject.org/projects/pastedeploy/en/latest/#config-format
Now the sections. vibe check time β¨
πΈ GLOBAL SECTION πΈ
This one is marked by the section named [DEFAULT]. Here are the parameters that are acceptable in this section.
bind_ipβ the IP address the object server should bind to. Default is0.0.0.0, which makes it bind to all available addresses. So it's like, βI'm everywhere, bestieβ πbind_portβ the TCP port the object server should bind to. Default is6200.keep_idleβ value to set for socketTCP_KEEPIDLE. Default is600.bind_timeoutβ timeout to bind socket. Default is30.backlogβ TCP backlog. Maximum number of allowed pending connections. Default is4096.workersβ the number of pre-forked processes that will accept connections. Zero means no fork. Default isauto, which makes the server try to match the number of effective cpu cores if python multiprocessing is available (included with most python distributions >=2.6), or fallback to one. Also worth noting: individual workers will use many eventlet co-routines to service multiple concurrent requests. slay πmax_clientsβ maximum number of clients one worker can process simultaneously (it will actuallyaccept(2)N + 1). Setting this to one (1) will only handle one request at a time, without accepting another request concurrently. Default is1024.userβ the system user that the object server will run as. Default isswift.swift_dirβ Swift configuration directory. Default is/etc/swift.devicesβ parent directory of where devices are mounted. Default is/srv/node.mount_checkβ whether or not to check if the devices are mounted to prevent accidentally writing to the root device. Default is set totrue.disable_fallocateβ disable pre-allocate disk space for a file. Default isfalse.servers_per_portβ make object-server run this many worker processes per unique port of "local" ring devices across all storage policies. The default value of0disables this feature.log_nameβ label used when logging. Default isswift.log_facilityβ syslog log facility. Default isLOG_LOCAL0.log_levelβ logging level. Default isINFO.log_addressβ logging address. Default is/dev/log.log_max_line_lengthβ this caps the length of log lines to the value given; no limit if set to0, which is the default.log_custom_handlersβ comma separated list of functions to call to setup custom log handlers. Functions get passed:conf,name,log_to_console,log_route,fmt,logger,adapted_logger. Default is empty.log_udp_hostβ if set,log_udp_hostwill overridelog_address.log_udp_portβ UDP log port. Default is514.log_statsd_hostβ StatsD server. IPv4/IPv6 addresses and hostnames are supported. If a hostname resolves to an IPv4 and IPv6 address, the IPv4 address will be used.log_statsd_portβ default is8125.log_statsd_default_sample_rateβ default is1.log_statsd_sample_rate_factorβ default is1.log_statsd_metric_prefixβ default is empty.eventlet_debugβ debug mode for eventlet library. Default isfalse.fallocate_reserveβ you can setfallocate_reserveto the number of bytes or percentage of disk space you'd like fallocate to reserve, whether there is space for the given file size or not. Percentage will be used if the value ends with a%. Default is1%.node_timeoutβ request timeout to external services. Default is3seconds.conn_timeoutβ connection timeout to external services. Default is0.5seconds.container_update_timeoutβ time to wait while sending a container update on object update. Default is1second.client_timeoutβ time to wait while receiving each chunk of data from a client or another backend node. Default is60.network_chunk_sizeβ default is65536.disk_chunk_sizeβ default is65536.reclaim_ageβ time elapsed in seconds before an object can be reclaimed. Default is604800seconds.commit_windowβ time in seconds during which a newly written non-durable data file will not be reclaimed. The value should be greater than zero and much less thanreclaim_age. Default is60.0seconds.nice_priorityβ modify scheduling priority of server processes. Niceness values range from-20(most favorable to the process) to19(least favorable to the process). Default does not modify priority.ionice_classβ modify I/O scheduling class of server processes. I/O niceness class values areIOPRIO_CLASS_RT(realtime),IOPRIO_CLASS_BE(best-effort), andIOPRIO_CLASS_IDLE(idle). Default does not modify class and priority. Work only withionice_priority.ionice_priorityβ modify I/O scheduling priority of server processes. I/O niceness priority is a number which goes from0to7. The higher the value, the lower the I/O priority of the process. Work only withionice_class. Ignored ifIOPRIO_CLASS_IDLEis set.
π¦ PIPELINE SECTION π¦
This one is marked by section name [pipeline:main]. Here are the parameters acceptable in this section.
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 object-server".
πΈ APP SECTION πΈ
This one shows up as the section named [app:object-server]. Here's everything you can drop in there, bestie π
useβ the paste.deploy entry point for the object server. It's basically a pointer to the installed python egg. Normally it'segg:swift#object. π₯set log_nameβ the label it uses when logging. Default isobject-server.set log_facilityβ syslog log facility. Default isLOG_LOCAL0.set log_levelβ logging level. Default isINFO.set log_requestsβ turns request logging on. Default isTrue.set log_addressβ logging address. Default is/dev/log.max_upload_timeβ the default is86400. β°slowβ the default is0.keep_cache_sizeβ objects smaller than this don't get evicted from the buffercache once they've been read. Default is5242880.keep_cache_privateβ if true, objects for authenticated GET requests may be kept in buffer cache if they're small enough. Default isfalse.mb_per_syncβ on PUTs, sync data every n MB. Default is512.allowed_headersβ a comma separated list of headers that can be set in metadata on an object. This list is on top ofX-Object-Meta-*headers, and it cannot includeContent-Type,etag,Content-Length, ordeleted. The default is'Content-Disposition, Content-Encoding, X-Delete-At, X-Object-Manifest, X-Static-Large-Object, Cache-Control, Content-Language, Expires, X-Robots-Tag'.replication_serverβ the config parameter for building a specific server. To handle all verbs, including replication verbs, don't specify"replication_server"(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". Unless you have a separate replication network, you should not specify any value for"replication_server". π«Άreplication_concurrencyβ set this to restrict the number of concurrent incoming SSYNC requests. Set to0for unlimited (the default is4). Heads up: SSYNC requests are only used by the object reconstructor or the object replicator when it's configured to use ssync.replication_concurrency_per_deviceβ set this to restrict the number of concurrent incoming SSYNC requests per device; set to0for unlimited requests per device. This can help control I/O to each device. It does not overridereplication_concurrencydescribed above, so depending on your hardware or network capacity you may need to adjust both parameters. Defaults to1.replication_lock_timeoutβ number of seconds to wait for an existing replication device lock before giving up. Default is15.replication_failure_thresholdreplication_failure_ratioβ these two settings together control when the SSYNC subrequest handler will abort an incoming SSYNC attempt. An abort happens if there are at least threshold number of failures and the value of failures / successes exceeds the ratio. The defaults of100and1.0mean that at least 100 failures have to occur, and there have to be more failures than successes, for an abort to occur. πspliceβ usesplice()for zero-copy object GETs. This requires Linux kernel version 3.0 or greater. If you set"splice = yes"but the kernel doesn't support it, error messages will show up in the object server logs at startup, but your object servers should continue to function. Default isfalse.node_timeoutβ request timeout to external services. Default is3seconds.conn_timeoutβ connection timeout to external services. Default is0.5seconds.container_update_timeoutβ time to wait while sending a container update on object update. Default is1second.nice_priorityβ modify the scheduling priority of server processes. Niceness values range from-20(most favorable to the process) to19(least favorable to the process). The default does not modify priority.ionice_classβ modify the I/O scheduling class of server processes. I/O niceness class values areIOPRIO_CLASS_RT(realtime),IOPRIO_CLASS_BE(best-effort) andIOPRIO_CLASS_IDLE(idle). The default does not modify class and priority. Only works together withionice_priority.ionice_priorityβ modify the I/O scheduling priority of server processes. I/O niceness priority is a number from0to7. The higher the value, the lower the I/O priority of the process. Only works together withionice_class. Ignored ifIOPRIO_CLASS_IDLEis set.
π¦ FILTER SECTION π¦
Any section whose name starts with "filter:" is a filter section, periodt. Filters are how you specify config parameters for specific swift middlewares. Here's what's available and what each one accepts, no gatekeeping π
[filter:healthcheck]
useβ the paste.deploy entry point for the healthcheck middleware. This is the reference to the installed python egg. Normally it'segg:swift#healthcheck.disable_pathβ an optional filesystem path which, if present, will make the healthcheck URL return"503 Service Unavailable"with a body of"DISABLED BY FILE".
[filter:recon]
useβ the paste.deploy entry point for the recon middleware. This is the reference to the installed python egg. Normally it'segg:swift#recon.recon_cache_pathβ this simply sets the directory where stats for a few items will be stored. Depending on how you deployed things, you may need to create this directory manually and make sure swift has read/write. The default is/var/cache/swift.recon_lock_pathβ the default is/var/lock.
[filter:xprofile]
useβ the paste.deploy entry point for the xprofile middleware. This is the reference to the installed python egg. Normally it'segg: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 process ID and 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 β 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. The default is5.0.dump_timestampβ be careful, bestie π this option makes the profiler dump data into the file with a time stamp, which means there will be lots of files piled up in the directory. The default isfalse.pathβ this is the path of the URL to access the mini web UI. The default is__profile__.flush_at_shutdownβ clear the data when the wsgi server shuts down. The default isfalse.unwindβ unwind the iterator of applications. Default isfalse.
β¨ ADDITIONAL SECTIONS β¨
These next sections are used by the other swift-object services, like the replicator, updater, and auditor. π§
[object-replicator]
log_nameβ label used when logging. The default isobject-replicator.log_facilityβ syslog log facility. The default isLOG_LOCAL0.log_levelβ logging level. The default isINFO.log_addressβ logging address. The default is/dev/log.daemonizeβ whether or not to run replication as a daemon. The default isyes.run_pause[deprecated] β time in seconds to wait between replication passes. The default is30.intervalβ time in seconds to wait between replication passes. The default is30.concurrencyβ number of replication workers to spawn. The default is1.stats_intervalβ interval in seconds between logging replication statistics. The default is300.sync_methodβ the sync method to use; default isrsyncbut you can usessyncto try the EXPERIMENTAL all-swift-code-no-rsync-callouts method. Once ssync is verified as having performance comparable to, or better than, rsync, they plan to deprecate rsync so they can move on with more features for replication.rsync_timeoutβ max duration of a partition rsync. The default is900seconds.rsync_io_timeoutβ passed to rsync for I/O OP timeout. The default is30seconds.rsync_compressβ allow rsync to compress data which is transmitted to the destination node during sync. However, this is applicable only when the destination node is in a different region than the local one. NOTE: objects that are already compressed (for example:.tar.gz,.mp3) might slow down the syncing process. The default isfalse.rsync_moduleβ format of the rsync module where the replicator will send data. Seeetc/rsyncd.conf-samplefor some usage examples. The default is empty.node_timeoutβ request timeout to external services. The default is10seconds.rsync_bwlimitβ passed to rsync for bandwidth limit in kB/s. The default is0(unlimited).http_timeoutβ max duration of an HTTP request. The default is60seconds.lockup_timeoutβ attempts to kill all workers if nothing replicates forlockup_timeoutseconds. The default is1800seconds.ring_check_intervalβ the default is15.rsync_error_log_line_lengthβ limits how long rsync error log lines are.0(default) means to log the entire line.recon_cache_pathβ this simply sets the directory where stats for a few items will be stored. Depending on how you deployed things, you may need to create this directory manually and make sure swift has read/write. The default is/var/cache/swift. πhandoffs_firstβ the flag that says "replicate handoffs before canonical partitions, bestie". It lets you force syncing and deleting handoffs fast. If you set it to a True value (like"True"or"1"), partitions that aren't supposed to be on the node get replicated first. The default is false.handoff_deleteβ the number of replicas that are ensured in swift. If you set it to a number less than the number of replicas, object-replicator could delete local handoffs even if all replicas aren't ensured in the cluster π. Object-replicator would remove local handoff partition directories after syncing a partition when the number of successful responses is greater than or equal to this number. By default (auto), handoff partitions get removed when it has successfully replicated to all the canonical nodes.
okay listen up because this is important π¨handoffs_firstandhandoff_deleteare options for a special case, like when the cluster's disk is full. These two options SHOULD NOT BE CHANGED, except in those extreme situations (e.g. disks filled up or are about to fill up). Anyway, DO NOT let your drives fill up. periodt.
nice_priorityβ modify the scheduling priority of server processes. Niceness values range from-20(most favorable to the process) to19(least favorable to the process). The default does not modify priority.ionice_classβ modify the I/O scheduling class of server processes. I/O niceness class values areIOPRIO_CLASS_RT(realtime),IOPRIO_CLASS_BE(best-effort) andIOPRIO_CLASS_IDLE(idle). The default does not modify class and priority. Work only withionice_priority.ionice_priorityβ modify the I/O scheduling priority of server processes. I/O niceness priority is a number which goes from0to7. The higher the value, the lower the I/O priority of the process. Work only withionice_class. Ignored ifIOPRIO_CLASS_IDLEis set.
π¦ [object-reconstructor] π¦
log_nameβ label used when logging. The default isobject-reconstructor.log_facilityβ syslog log facility. The default isLOG_LOCAL0.log_levelβ logging level. The default isINFO.log_addressβ logging address. The default is/dev/log.daemonizeβ whether or not to run replication as a daemon. The default is yes.run_pause[deprecated] β time in seconds to wait between replication passes. The default is30.intervalβ time in seconds to wait between replication passes. The default is30.concurrencyβ number of replication workers to spawn. The default is1.stats_intervalβ interval in seconds between logging replication statistics. The default is300.node_timeoutβ request timeout to external services. The default is10seconds.http_timeoutβ max duration of an HTTP request. The default is60seconds.lockup_timeoutβ attempts to kill all workers if nothing replicates forlockup_timeoutseconds. The default is1800seconds.ring_check_intervalβ the default is15.recon_cache_pathβ therecon_cache_pathsimply sets the directory where stats for a few items will be stored. Depending on the method of deployment you may need to create this directory manually and ensure that swift has read/write. The default is/var/cache/swift.handoffs_firstβ the flag to replicate handoffs prior to canonical partitions. It allows one to force syncing and deleting handoffs quickly. If set to a True value (e.g."True"or"1"), partitions that are not supposed to be on the node will be replicated first. The default is false.
π [object-updater] π
log_nameβ label used when logging. The default isobject-updater.log_facilityβ syslog log facility. The default isLOG_LOCAL0.log_levelβ logging level. The default isINFO.log_addressβ logging address. The default is/dev/log.intervalβ minimum time for a pass to take. The default is300seconds.concurrencyβ number of updater workers to spawn. The default is1.node_timeoutβ request timeout to external services. The default is10seconds.objects_per_secondβ maximum objects updated per second. Should be tuned according to individual system specs.0is unlimited. The default is50.slowdown[deprecated] β slowdown will sleep that amount between objects. The default is0.01seconds. Deprecated in favor ofobjects_per_second.recon_cache_pathβ therecon_cache_pathsimply sets the directory where stats for a few items will be stored. Depending on the method of deployment you may need to create this directory manually and ensure that swift has read/write. The default is/var/cache/swift.nice_priorityβ modify the scheduling priority of server processes. Niceness values range from-20(most favorable to the process) to19(least favorable to the process). The default does not modify priority.ionice_classβ modify the I/O scheduling class of server processes. I/O niceness class values areIOPRIO_CLASS_RT(realtime),IOPRIO_CLASS_BE(best-effort) andIOPRIO_CLASS_IDLE(idle). The default does not modify class and priority. Work only withionice_priority.ionice_priorityβ modify the I/O scheduling priority of server processes. I/O niceness priority is a number which goes from0to7. The higher the value, the lower the I/O priority of the process. Work only withionice_class. Ignored ifIOPRIO_CLASS_IDLEis set.
π [object-auditor] π
log_nameβ label used when logging. The default isobject-auditor.log_facilityβ syslog log facility. The default isLOG_LOCAL0.log_levelβ logging level. The default isINFO.log_addressβ logging address. The default is/dev/log.disk_chunk_sizeβ the default is65536.files_per_secondβ maximum files audited per second. Should be tuned according to individual system specs.0is unlimited. The default is20.bytes_per_secondβ maximum bytes audited per second. Should be tuned according to individual system specs.0is unlimited. The default is10000000.concurrencyβ number of auditor workers to spawn. The default is1.log_timeβ the default is3600seconds.zero_byte_files_per_secondβ the default is50.recon_cache_pathβ therecon_cache_pathsimply sets the directory where stats for a few items will be stored. Depending on the method of deployment you may need to create this directory manually and ensure that swift has read/write. The default is/var/cache/swift.object_size_statsβ takes a comma separated list of ints. If set, the object auditor will increment a counter for every object whose size is<=to the given break points and report the result after a full scan.rsync_tempfile_timeoutβ time elapsed in seconds before rsync tempfiles will be unlinked. Config value of"auto"will try to use object-replicator'srsync_timeout+900or fall-back to86400(1 day).nice_priorityβ modify the scheduling priority of server processes. Niceness values range from-20(most favorable to the process) to19(least favorable to the process). The default does not modify priority.ionice_classβ modify the I/O scheduling class of server processes. I/O niceness class values areIOPRIO_CLASS_RT(realtime),IOPRIO_CLASS_BE(best-effort) andIOPRIO_CLASS_IDLE(idle). The default does not modify class and priority. Work only withionice_priority.ionice_priorityβ modify the I/O scheduling priority of server processes. I/O niceness priority is a number which goes from0to7. The higher the value, the lower the I/O priority of the process. Work only withionice_class. Ignored ifIOPRIO_CLASS_IDLEis set.
π [object-expirer] π
log_nameβ label used when logging. The default isobject-expirer.log_facilityβ syslog log facility. The default isLOG_LOCAL0.log_levelβ logging level. The default isINFO.log_addressβ logging address. The default is/dev/log.intervalβ minimum time for a pass to take. The default is300seconds.report_intervalβ minimum time for a pass to report. The default is300seconds.request_triesβ the number of times the expirer's internal client will attempt any given request in the event of failure. The default is3.concurrencyβ number of expirer workers to spawn. The default is1.dequeue_from_legacyβ the flag to execute legacy style expirer tasks. The default is false.processesβ processes can only be used in conjunction withdequeue_from_legacy. Processes is how many parts to divide the legacy work into, one part per process that will be doing the work. Processes set0means that a single process will be doing all the legacy work. Processes can also be specified on the command line and will override the config value. The default is0.processβ process can only be used in conjunction withdequeue_from_legacy. Process is which of the parts a particular legacy process will work on, process can also be specified on the command line and will override the config value, process is "zero based", if you want to use3processes, you should run processes with process set to0,1, and2. The default is0.reclaim_ageβ okay so if the source object isn't there, the expirer will keep re-attempting the expire for up to reclaim_age seconds before it fully gives up and yeets the task out of the queue π. Default is604800seconds (= 1 week).delay_reaping_account/containerβ so normally the expirer starts reaping expired objects immediately, no chill. But bestie, you can add options prefixed withdelay_reaping_shaped likedelay_reaping_<ACCT>[/<CNTR>]and the expirer will delay processing tasks in that account or account/container π«Ά. The<ACCT>[/<CNTR>]part of the config option names should url-quote the paths (yes fr fr). The value is in seconds. Default is no delay for any tasks.round_robin_task_cache_sizeβ the number of task objects to cache before processing. simple as that π .recon_cache_pathβ path to the recon cache directory. Default is/var/cache/swiftβ¨.nice_priorityβ lets you modify the scheduling priority of server processes. Niceness values range from-20(most favorable to the process) to19(least favorable to the process). The default does not modify priority.ionice_classβ modify the I/O scheduling class of server processes. I/O niceness class values areIOPRIO_CLASS_RT(realtime),IOPRIO_CLASS_BE(best-effort) andIOPRIO_CLASS_IDLE(idle). The default does not modify class and priority. It only works withionice_priorityπ.ionice_priorityβ modify the I/O scheduling priority of server processes. I/O niceness priority is a number which goes from0to7. The higher the value, the lower the I/O priority of the process. Works only withionice_class. It's ignored ifIOPRIO_CLASS_IDLEis set, so don't even try it π.
π DOCUMENTATION π
More in-depth documentation about the swift-object-server and also about OpenStack Swift as a whole can be found at:
like, go read it, it's giving academic but in a good way π¦
π SEE ALSO π
and that's a wrap on object-server.conf(5), bestie π this page is from the Linux manual, dated 8/26/2011 β yes it's an elder but she still ate π
go forth and configure responsibly, mwah πβ¨πΈ
π¦ where this page comes from
- debian trixie: swift-object 2.35.1-0+deb13u3 Β· Apache-2
- debian trixie: swift-object 2.35.1-0+deb13u4 Β· Apache-2
- nixos 26.05: python3.13-swift 2.37.1
- nixos 26.05: python3.14-swift 2.37.1
- nixpkgs unstable: python3.13-swift 2.38.3
- nixpkgs unstable: python3.14-swift 2.38.3
- ubuntu questing: swift-object 2.36.0-0ubuntu1
- ubuntu questing: swift-object 2.36.0-0ubuntu1.1
- ubuntu resolute: swift-object 2.37.1-0ubuntu2 Β· Apache-2
- ubuntu resolute: swift-object 2.37.1-0ubuntu2.1 Β· Apache-2
- ubuntu stonking: swift-object 2.38.2-0ubuntu1 Β· Apache-2
- Copyright (c) 2010-2012 OpenStack Foundation
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms