object-server.conf - configuration file for the OpenStack
Swift object server
This is the configuration file used by the object server and other
object background services, such as; replicator, reconstructor, updater,
auditor, and expirer.
The configuration file follows the python-pastedeploy syntax. The
file is divided into sections, which are enclosed by square brackets. Each
section will contain a certain number of key/value parameters which are
described later.
Any line that begins with a '#' symbol is ignored.
You can find more information about python-pastedeploy
configuration format at
https://docs.pylonsproject.org/projects/pastedeploy/en/latest/#config-format
This is indicated by section named [DEFAULT]. Below are
the parameters that are acceptable within this section.
- bind_ip
- IP address the object server should bind to. The default is 0.0.0.0 which
will make it bind to all available addresses.
- bind_port
- TCP port the object server should bind to. The default is 6200.
- keep_idle
- Value to set for socket TCP_KEEPIDLE. The default value is 600.
- bind_timeout
- Timeout to bind socket. The default is 30.
- backlog
- TCP backlog. Maximum number of allowed pending connections. The default
value is 4096.
- workers
- The number of pre-forked processes that will accept connections. Zero
means no fork. The default is auto which will make 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.
It's worth noting that individual workers will use many eventlet
co-routines to service multiple concurrent requests.
- max_clients
- Maximum number of clients one worker can process simultaneously (it will
actually accept(2) N + 1). Setting this to one (1) will only handle one
request at a time, without accepting another request concurrently. The
default is 1024.
- user
- The system user that the object server will run as. The default is
swift.
- swift_dir
- Swift configuration directory. The default is /etc/swift.
- devices
- Parent directory of where devices are mounted. Default is /srv/node.
- mount_check
- Whether or not check if the devices are mounted to prevent accidentally
writing to the root device. The default is set to true.
- disable_fallocate
- Disable pre-allocate disk space for a file. The default is false.
- expiring_objects_container_divisor
- The default is 86400.
- expiring_objects_account_name
- Account name used for legacy style expirer task queue. The default is
'expiring_objects'.
- 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 of 0 disables this feature.
- log_name
- Label used when logging. The default is swift.
- log_facility
- Syslog log facility. The default is LOG_LOCAL0.
- log_level
- Logging level. The default is INFO.
- log_address
- Logging address. The default is /dev/log.
- log_max_line_length
- The following caps the length of log lines to the value given; no limit if
set to 0, 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. The default is empty.
- log_udp_host
- If set, log_udp_host will override log_address.
- log_udp_port
- UDP log port, the default is 514.
- 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
- The default is 8125.
- log_statsd_default_sample_rate
- The default is 1.
- log_statsd_sample_rate_factor
- The default is 1.
- log_statsd_metric_prefix
- The default is empty.
- eventlet_debug
- Debug mode for eventlet library. The default is false.
- fallocate_reserve
- You can set fallocate_reserve to 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
'%'. The default is 1%.
- node_timeout
- Request timeout to external services. The default is 3 seconds.
- conn_timeout
- Connection timeout to external services. The default is 0.5 seconds.
- container_update_timeout
- Time to wait while sending a container update on object update. The
default is 1 second.
- client_timeout
- Time to wait while receiving each chunk of data from a client or another
backend node. The default is 60.
- network_chunk_size
- The default is 65536.
- disk_chunk_size
- The default is 65536.
- reclaim_age
- Time elapsed in seconds before an object can be reclaimed. The default is
604800 seconds.
- 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 than
reclaim_age. The default is 60.0 seconds.
- nice_priority
- Modify 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
- Modify 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.
Work only with ionice_priority.
- ionice_priority
- Modify 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. Work only with ionice_class. Ignored if
IOPRIO_CLASS_IDLE is set.
This is indicated by section name [pipeline:main]. Below
are the parameters that are acceptable within this section.
- pipeline
- It is used when you need to apply a number of filters. It is a list of
filters ended by an application. The normal pipeline is "healthcheck
recon object-server".
This is indicated by section name [app:object-server].
Below are the parameters that are acceptable within this section.
- use
- Entry point for paste.deploy for the object server. This is the reference
to the installed python egg. This is normally
egg:swift#object.
- set log_name
- Label used when logging. The default is object-server.
- set
log_facility
- Syslog log facility. The default is LOG_LOCAL0.
- set
log_level
- Logging level. The default is INFO.
- set
log_requests
- Enables request logging. The default is True.
- set
log_address
- Logging address. The default is /dev/log.
- max_upload_time
- The default is 86400.
- slow
- The default is 0.
- keep_cache_size
- Objects smaller than this are not evicted from the buffercache once read.
The default is 5242880.
- keep_cache_private
- If true, objects for authenticated GET requests may be kept in buffer
cache if small enough. The default is false.
- mb_per_sync
- On PUTs, sync data every n MB. The default is 512.
- Comma separated list of headers that can be set in metadata on an object.
This list is in addition to X-Object-Meta-* headers and cannot include
Content-Type, etag, Content-Length, or deleted. 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
- Configure parameter for creating specific server To handle all verbs,
including replication verbs, do not specify "replication_server"
(this is the default). To only handle replication, set to a True value
(e.g. "True" or "1"). To handle only non-replication
verbs, set to "False". Unless you have a separate replication
network, you should not specify any value for
"replication_server".
- replication_concurrency
- Set to restrict the number of concurrent incoming SSYNC requests Set to 0
for unlimited (the default is 4). Note that SSYNC requests are only used
by the object reconstructor or the object replicator when configured to
use ssync.
- replication_concurrency_per_device
- Set to restrict the number of concurrent incoming SSYNC requests per
device; set to 0 for unlimited requests per devices. This can help control
I/O to each device. This does not override replication_concurrency
described above, so you may need to adjust both parameters depending on
your hardware or network capacity. Defaults to 1.
- replication_lock_timeout
- Number of seconds to wait for an existing replication device lock before
giving up. The default is 15.
- replication_failure_threshold
- replication_failure_ratio
- These two settings control when the SSYNC subrequest handler will abort an
incoming SSYNC attempt. An abort will occur if there are at least
threshold number of failures and the value of failures / successes exceeds
the ratio. The defaults of 100 and 1.0 means that at least 100 failures
have to occur and there have to be more failures than successes for an
abort to occur.
- splice
- Use splice() for zero-copy object GETs. This requires Linux kernel version
3.0 or greater. If you set "splice = yes" but the kernel does
not support it, error messages will appear in the object server logs at
startup, but your object servers should continue to function. The default
is false.
- node_timeout
- Request timeout to external services. The default is 3 seconds.
- conn_timeout
- Connection timeout to external services. The default is 0.5 seconds.
- container_update_timeout
- Time to wait while sending a container update on object update. The
default is 1 second.
- nice_priority
- Modify 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
- Modify 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.
Work only with ionice_priority.
- ionice_priority
- Modify 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. Work only with ionice_class. Ignored if
IOPRIO_CLASS_IDLE is set.
Any section that has its name prefixed by
"filter:" indicates a filter section. Filters are used to specify
configuration parameters for specific swift middlewares. Below are the filters
available and respective acceptable parameters.
- [filter:healthcheck]
- use
- Entry point for paste.deploy for the healthcheck middleware. This is the
reference to the installed python egg. This is normally
egg:swift#healthcheck.
- disable_path
- An optional filesystem path which, if present, will cause the healthcheck
URL to return "503 Service Unavailable" with a body of
"DISABLED BY FILE".
- use
- Entry point for paste.deploy for the recon middleware. This is the
reference to the installed python egg. This is normally
egg:swift#recon.
- recon_cache_path
- The recon_cache_path simply 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.
- recon_lock_path
- The default is /var/lock.
- [filter:xprofile]
- use
- Entry point for paste.deploy for the xprofile middleware. This is the
reference to the installed python egg. This is normally
egg:swift#xprofile.
- profile_module
- This option enable you to switch profilers which should inherit from
python standard profiler. Currently the supported value can be 'cProfile',
'eventlet.green.profile' etc.
- log_filename_prefix
- This prefix will be used to combine 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 an unique value like, the default is
/var/log/swift/profile/account.profile.
- dump_interval
- The profile data will be dumped to local disk based on above naming rule
in this interval. The default is 5.0.
- dump_timestamp
- Be careful, this option will enable profiler to dump data into the file
with 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 to access the mini web UI. The default is
__profile__.
- flush_at_shutdown
- Clear the data when the wsgi server shutdown. The default is false.
- unwind
- Unwind the iterator of applications. Default is false.
The following sections are used by other swift-object
services, such as replicator, updater, auditor.
- [object-replicator]
- log_name
- Label used when logging. The default is object-replicator.
- log_facility
- Syslog log facility. The default is LOG_LOCAL0.
- log_level
- Logging level. The default is INFO.
- 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 is
30.
- interval
- Time in seconds to wait between replication passes. The default is
30.
- concurrency
- Number of replication workers to spawn. The default is 1.
- stats_interval
- Interval in seconds between logging replication statistics. The default is
300.
- sync_method
- The sync method to use; default is rsync but you can use ssync to try the
EXPERIMENTAL all-swift-code-no-rsync-callouts method. Once ssync is
verified as having performance comparable to, or better than, rsync, we
plan to deprecate rsync so we can move on with more features for
replication.
- rsync_timeout
- Max duration of a partition rsync. The default is 900 seconds.
- rsync_io_timeout
- Passed to rsync for I/O OP timeout. The default is 30 seconds.
- rsync_compress
- Allow rsync to compress data which is transmitted to destination node
during sync. However, this is applicable only when 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 is false.
- rsync_module
- Format of the rsync module where the replicator will send data. See
etc/rsyncd.conf-sample for some usage examples. The default is empty.
- node_timeout
- Request timeout to external services. The default is 10 seconds.
- rsync_bwlimit
- Passed to rsync for bandwidth limit in kB/s. The default is 0
(unlimited).
- http_timeout
- Max duration of an HTTP request. The default is 60 seconds.
- lockup_timeout
- Attempts to kill all workers if nothing replicates for lockup_timeout
seconds. The default is 1800 seconds.
- ring_check_interval
- The default is 15.
- rsync_error_log_line_length
- Limits how long rsync error log lines are. 0 (default) means to log the
entire line.
- recon_cache_path
- The recon_cache_path simply 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.
- handoff_delete
- The number of replicas which are ensured in swift. If the number less than
the number of replicas is set, object-replicator could delete local
handoffs even if all replicas are not ensured in the cluster.
Object-replicator would remove local handoff partition directories after
syncing partition when the number of successful responses is greater than
or equal to this number. By default(auto), handoff partitions will be
removed when it has successfully replicated to all the canonical nodes.
The handoffs_first and handoff_delete are options for a
special case such as disk full in the cluster. These two options SHOULD
NOT BE CHANGED, except for such an extreme situations. (e.g. disks
filled up or are about to fill up. Anyway, DO NOT let your drives fill
up).
- nice_priority
- Modify 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
- Modify 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.
Work only with ionice_priority.
- ionice_priority
- Modify 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. Work only with ionice_class. Ignored if
IOPRIO_CLASS_IDLE is set.
- log_name
- Label used when logging. The default is object-reconstructor.
- log_facility
- Syslog log facility. The default is LOG_LOCAL0.
- log_level
- Logging level. The default is INFO.
- 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 is
30.
- interval
- Time in seconds to wait between replication passes. The default is
30.
- concurrency
- Number of replication workers to spawn. The default is 1.
- stats_interval
- Interval in seconds between logging replication statistics. The default is
300.
- node_timeout
- Request timeout to external services. The default is 10 seconds.
- http_timeout
- Max duration of an HTTP request. The default is 60 seconds.
- lockup_timeout
- Attempts to kill all workers if nothing replicates for lockup_timeout
seconds. The default is 1800 seconds.
- ring_check_interval
- The default is 15.
- recon_cache_path
- The recon_cache_path simply 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.
- log_name
- Label used when logging. The default is object-updater.
- log_facility
- Syslog log facility. The default is LOG_LOCAL0.
- log_level
- Logging level. The default is INFO.
- log_address
- Logging address. The default is /dev/log.
- interval
- Minimum time for a pass to take. The default is 300 seconds.
- concurrency
- Number of updater workers to spawn. The default is 1.
- node_timeout
- Request timeout to external services. The default is 10 seconds.
- objects_per_second
- Maximum objects updated per second. Should be tuned according to
individual system specs. 0 is unlimited. The default is 50.
- slowdown
[deprecated]
- Slowdown will sleep that amount between objects. The default is 0.01
seconds. Deprecated in favor of objects_per_second.
- recon_cache_path
- The recon_cache_path simply 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 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
- Modify 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.
Work only with ionice_priority.
- ionice_priority
- Modify 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. Work only with ionice_class. Ignored if
IOPRIO_CLASS_IDLE is set.
- log_name
- Label used when logging. The default is object-auditor.
- log_facility
- Syslog log facility. The default is LOG_LOCAL0.
- log_level
- Logging level. The default is INFO.
- log_address
- Logging address. The default is /dev/log.
- disk_chunk_size
- The default is 65536.
- files_per_second
- Maximum files audited per second. Should be tuned according to individual
system specs. 0 is unlimited. The default is 20.
- bytes_per_second
- Maximum bytes audited per second. Should be tuned according to individual
system specs. 0 is unlimited. The default is 10000000.
- concurrency
- Number of auditor workers to spawn. The default is 1.
- log_time
- The default is 3600 seconds.
- zero_byte_files_per_second
- The default is 50.
- recon_cache_path
- The recon_cache_path simply 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's
rsync_timeout + 900 or fall-back to 86400 (1 day).
- nice_priority
- Modify 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
- Modify 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.
Work only with ionice_priority.
- ionice_priority
- Modify 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. Work only with ionice_class. Ignored if
IOPRIO_CLASS_IDLE is set.
- log_name
- Label used when logging. The default is object-expirer.
- log_facility
- Syslog log facility. The default is LOG_LOCAL0.
- log_level
- Logging level. The default is INFO.
- log_address
- Logging address. The default is /dev/log.
- interval
- Minimum time for a pass to take. The default is 300 seconds.
- report_interval
- Minimum time for a pass to report. The default is 300 seconds.
- request_tries
- The number of times the expirer's internal client will attempt any given
request in the event of failure. The default is 3.
- concurrency
- Number of expirer workers to spawn. The default is 1.
- dequeue_from_legacy
- The flag to execute legacy style expirer tasks. The default is false.
- processes
- Processes can only be used in conjunction with `dequeue_from_legacy`.
Processes is how many parts to divide the legacy work into, one part per
process that will be doing the work. Processes set 0 means 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 is
0.
- process
- Process can only be used in conjunction with `dequeue_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 use 3
processes, you should run processes with process set to 0, 1, and 2. The
default is 0.
- reclaim_age
- The expirer will re-attempt expiring if the source object is not available
up to reclaim_age seconds before it gives up and deletes the task in the
queue. The default is 604800 seconds (= 1 week).
- recon_cache_path
- Path to recon cache directory. The default is /var/cache/swift
- nice_priority
- Modify 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
- Modify 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.
Work only with ionice_priority.
- ionice_priority
- Modify 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. Work only with ionice_class. Ignored if
IOPRIO_CLASS_IDLE is set.
More in depth documentation about the swift-object-server and also
OpenStack Swift as a whole can be found at
https://docs.openstack.org/swift/latest/admin_guide.html and
https://docs.openstack.org/swift/latest/