对象服务器配置¶
本文档描述了对象服务器可用的配置选项。其他 Swift 配置选项的文档可以在 配置文档 找到。
示例对象服务器配置可以在源代码仓库的 etc/object-server.conf-sample 中找到。
可用的配置部分如下
[DEFAULT]¶
选项 |
默认值 |
描述 |
swift_dir |
/etc/swift |
Swift 配置目录 |
devices |
/srv/node |
设备挂载的父目录 |
mount_check |
true |
是否检查设备是否挂载,以防止意外写入根设备 |
bind_ip |
0.0.0.0 |
服务器绑定的 IP 地址 |
bind_port |
6200 |
服务器绑定的端口 |
keep_idle |
600 |
为 socket TCP_KEEPIDLE 设置的值 |
bind_timeout |
30 |
尝试绑定之前的秒数 |
backlog |
4096 |
允许的最大挂起连接数 |
workers |
auto |
覆盖将接受连接的预先fork的worker数量。如果设置,应为整数,零表示不fork。如果未设置,它将尝试默认为有效的cpu核心数,并回退到1。增加worker数量有助于防止一个请求中的慢文件系统操作对其他请求产生负面影响,但只有 servers_per_port 选项才能提供完全的I/O隔离,且没有可测量的开销。 |
servers_per_port |
0 |
如果每个存储策略环中的每个磁盘的“ip”值具有唯一的端口号,则可以使用此设置,使每个对象服务器worker仅服务于环中与端口匹配的单个磁盘的请求。此设置的值决定了环中每个端口(磁盘)运行的worker进程数量。如果您每个服务器有24个磁盘,并且此设置为4,那么每个存储节点将有1 + (24 * 4) = 97个对象服务器进程在运行。这提供了完全的I/O隔离,大大减少了慢磁盘对存储节点性能的影响。对象复制器和对象重构器也需要看到此设置,因此它必须在 [DEFAULT] 部分中。请参阅 每个磁盘运行对象服务器。 |
max_clients |
1024 |
单个工作进程可以同时处理的最大客户端数(它实际上会接受(2) N + 1)。将其设置为 1 将仅同时处理一个请求,而不接受另一个并发请求。 |
disable_fallocate |
false |
如果底层文件系统不支持,则禁用“快速失败” fallocate 检查。 |
log_name |
swift |
用于日志记录的标签 |
log_facility |
LOG_LOCAL0 |
syslog 日志设施 |
log_level |
INFO |
日志级别 |
log_address |
/dev/log |
日志目录 |
log_max_line_length |
0 |
将日志行长度限制为给定的值;如果设置为 0(默认值),则没有限制。 |
log_custom_handlers |
无 |
逗号分隔的函数列表,用于设置自定义日志处理程序。 |
log_udp_host |
覆盖 log_address |
|
log_udp_port |
514 |
UDP 日志端口 |
log_statsd_host |
无 |
启用 StatsD 日志记录;IPv4/IPv6 地址或主机名。如果主机名解析为 IPv4 和 IPv6 地址,则将使用 IPv4 地址。 |
log_statsd_port |
8125 |
|
log_statsd_default_sample_rate |
1.0 |
|
log_statsd_sample_rate_factor |
1.0 |
|
log_statsd_metric_prefix |
||
eventlet_debug |
false |
如果为 true,则启用 eventlet 的调试日志记录 |
fallocate_reserve |
1% |
您可以将 fallocate_reserve 设置为要预留的字节数或磁盘空间的百分比,无论是否有给定文件大小的空间。如果值以“%”结尾,则使用百分比。这对于行为不佳的系统在完全耗尽空间时很有用;您可以让服务提前假装空间不足。 |
conn_timeout |
0.5 |
尝试连接到另一个后端节点时等待的时间 |
node_timeout |
3 |
将每个数据块发送到另一个后端节点时等待的时间 |
client_timeout |
60 |
从客户端或另一个后端节点接收每个数据块时等待的时间 |
network_chunk_size |
65536 |
通过网络读取/写入的块大小 |
disk_chunk_size |
65536 |
读取/写入磁盘的块大小 |
container_update_timeout |
1 |
对象更新时发送容器更新时等待的时间。 |
reclaim_age |
604800 |
表示已删除对象的文件在可以被回收之前经过的秒数。这是您的一致性引擎的最大窗口。如果由于故障而从集群中断开连接的节点在没有清除其数据的情况下重新引入集群,则会导致暗数据。此设置应在所有对象服务中保持一致。 |
commit_window |
60 |
非持久化数据文件也可以在它们比 reclaim_age 更旧时被回收,但如果它们写入磁盘的时间(即 mtime)小于 commit_window 秒,则不会被回收。强烈建议 commit_window 大于零,以避免意外回收即将变为持久化的数据文件;commit_window 应该远小于 reclaim_age。 |
nice_priority |
无 |
服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。 |
ionice_class |
无 |
服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。 |
ionice_priority |
无 |
服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。 |
[object-server]¶
选项 |
默认值 |
描述 |
use |
对象服务器的 paste.deploy 入口点。对于大多数情况,这应该是 |
|
set log_name |
object-server |
用于日志记录的标签 |
set log_facility |
LOG_LOCAL0 |
syslog 日志设施 |
set log_level |
INFO |
日志级别 |
set log_requests |
True |
是否记录每个请求 |
set log_address |
/dev/log |
日志目录 |
user |
swift |
运行用户 |
max_upload_time |
86400 |
允许上传对象的最大时间 |
slow |
0 |
如果 > 0,PUT 或 DELETE 请求完成的最小时间(秒)。这仅在测试和开发期间用于模拟慢速设备。 |
mb_per_sync |
512 |
在 PUT 请求上,每 n MB 同步文件 |
keep_cache_size |
5242880 |
保留在缓冲区缓存中的最大对象大小 |
keep_cache_private |
false |
允许非公共对象保留在内核的缓冲区缓存中 |
keep_cache_slo_manifest |
false |
如果其大小小于 keep_cache_size,则允许 SLO 对象的 manifest 文件保留在内核的缓冲区缓存中。只有在 ‘keep_cache_private’ 为 false 时,此配置才会生效。 |
allowed_headers |
Content-Disposition, Content-Encoding, X-Delete-At, X-Object-Manifest, X-Static-Large-Object Cache-Control, Content-Language, Expires, X-Robots-Tag |
可以设置为对象元数据中的标头,以逗号分隔的列表。此列表除了 X-Object-Meta-* 标头之外,并且不能包括 Content-Type、etag、Content-Length 或 deleted |
replication_server |
配置用于创建特定服务器的参数。要处理所有动词,包括复制动词,请不要指定“replication_server”(这是默认值)。要仅处理复制,请设置为 True 值(例如“True”或“1”)。要仅处理非复制动词,请设置为“False”。除非您有单独的复制网络,否则不应指定“replication_server”的任何值。 |
|
replication_concurrency |
4 |
设置为限制并发传入 SSYNC 请求的数量;设置为 0 表示无限制 |
replication_concurrency_per_device |
1 |
设置为限制每个设备并发传入 SSYNC 请求的数量;设置为 0 表示每个设备无限制请求。这有助于控制每个设备的 I/O。这不会覆盖上述 replication_concurrency 选项,因此您可能需要根据您的硬件或网络容量调整这两个参数。 |
replication_lock_timeout |
15 |
在放弃之前等待现有复制设备锁定的秒数。 |
replication_failure_threshold |
100 |
在检查 replication_failure_ratio 之前,子请求失败的次数 |
replication_failure_ratio |
1.0 |
如果 SSYNC 子请求的失败/成功比率超过此比率,则将中止整个 SSYNC 请求 |
splice |
否 |
使用 splice() 进行零拷贝对象 GET。这需要 Linux 内核版本 3.0 或更高版本。如果您设置“splice = yes”,但内核不支持它,则启动时会出现错误消息,但您的对象服务器应该继续运行。 |
nice_priority |
无 |
服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。 |
ionice_class |
无 |
服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。 |
ionice_priority |
无 |
服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。 |
eventlet_tpool_num_threads |
auto |
eventlet 线程池中的线程数。大多数 I/O 将发生在对象服务器的主线程中,但某些“繁重”的 I/O 操作将发生在单独的 I/O 线程中,由 eventlet 管理。默认值为 auto,其实际值取决于 servers_per_port 值。如果 servers_per_port 为零,则使用 eventlet 的默认值(当前为 20 个线程)。如果 servers_per_port 非零,则每个进程仅使用 1 个线程。可以通过整数值覆盖此值。 |
[object-replicator]¶
选项 |
默认值 |
描述 |
log_name |
object-replicator |
用于日志记录的标签 |
log_facility |
LOG_LOCAL0 |
syslog 日志设施 |
log_level |
INFO |
日志级别 |
log_address |
/dev/log |
日志目录 |
daemonize |
是 |
是否将复制作为守护进程运行 |
interval |
30 |
复制传递之间等待的秒数 |
concurrency |
1 |
每个worker进程要运行的复制作业数 |
replicator_workers |
0 |
要使用的worker进程数。无论此数字有多大,每个磁盘最多将使用一个worker。默认值为 0,表示不fork;所有工作都在主进程中完成。 |
sync_method |
rsync |
要使用的同步方法;默认值为 rsync,但您可以使用 ssync 来尝试 EXPERIMENTAL all-swift-code-no-rsync-callouts 方法。一旦 ssync 被验证为或优于 rsync,我们计划弃用 rsync,以便我们可以继续进行更多复制功能。 |
rsync_timeout |
900 |
分区 rsync 的最大持续时间 |
rsync_bwlimit |
0 |
rsync 的带宽限制,单位为 kB/s。0 表示无限制。 |
rsync_io_timeout |
30 |
发送到 rsync 的 –timeout 和 –contimeout 选项的超时值 |
rsync_compress |
否 |
允许 rsync 压缩传输到目标节点的数据。但是,这仅适用于目标节点位于与本地节点不同的区域时。注意:已经压缩的对象(例如:.tar.gz、.mp3)可能会减慢同步过程。 |
stats_interval |
300 |
记录复制统计信息之间的秒数间隔 |
handoffs_first |
false |
如果设置为 True,不应该位于节点上的分区将首先被复制。默认设置不应更改,除非在极端情况下。 |
handoff_delete |
auto |
默认情况下,handoff 分区将在成功复制到所有规范节点后被删除。如果设置为整数 n,则仅在成功复制到 n 个节点后才会删除该分区。默认设置不应更改,除非在极端情况下。 |
node_timeout |
DEFAULT 或 10 |
对外部服务的请求超时。使用此处设置的值,或 DEFAULT 部分设置的值,或 10(尽管其他部分使用 3 作为最终默认值)。 |
http_timeout |
60 |
http 请求的最大持续时间。这是 REPLICATE 完成调用,因此应该比 node_timeout 长。 |
lockup_timeout |
1800 |
如果在 lockup_timeout 秒内没有任何复制,则尝试杀死所有worker |
rsync_module |
{replication_ip}::object |
rsync 模块的格式,复制器将向其中发送数据。配置值可以包含一些将从环中提取的变量。变量必须遵循 {NAME} 格式,其中 NAME 是以下之一:ip、port、replication_ip、replication_port、region、zone、device、meta。有关一些示例,请参阅 etc/rsyncd.conf-sample。 |
rsync_error_log_line_length |
0 |
限制 rsync 错误日志行的长度 |
ring_check_interval |
15 |
检查新环文件的时间间隔 |
recon_cache_path |
/var/cache/swift |
recon 缓存路径 |
nice_priority |
无 |
服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。 |
ionice_class |
无 |
服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。 |
ionice_priority |
无 |
服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。 |
[object-reconstructor]¶
选项 |
默认值 |
描述 |
log_name |
object-reconstructor |
用于日志记录的标签 |
log_facility |
LOG_LOCAL0 |
syslog 日志设施 |
log_level |
INFO |
日志级别 |
log_address |
/dev/log |
日志目录 |
daemonize |
是 |
是否将重构作为守护进程运行 |
interval |
30 |
重构传递之间等待的时间(秒) |
reconstructor_workers |
0 |
要生成的worker进程的最大数量。每个worker将处理一部分设备。设备将在worker之间均匀分配,以便worker以相似的间隔循环(这可能导致worker数量少于请求的数量)。您不能拥有比设备更多的worker。如果您没有设备,则只会生成一个worker。 |
concurrency |
1 |
每个重构器进程要生成的重构线程数。 |
stats_interval |
300 |
记录重构统计信息之间的秒数间隔 |
handoffs_only |
false |
handoffs_only 模式选项用于重新平衡期间的特殊紧急情况,例如集群中的磁盘已满。除非在极端情况下,不应更改此选项。当启用 handoffs_only 模式时,重构器将仅从 handoff 节点恢复到主节点,并且不会同步主节点与相邻主节点。这将强制重构器更快地同步和删除 handoff 的片段,并通过限制重建数量来最大程度地减少重新平衡的时间。handoffs_only 选项仅供临时使用,应在解决紧急情况后禁用。 |
rebuild_handoff_node_count |
2 |
默认情况下,对于未挂载的驱动器,重构策略会将重建的数据暂存在 handoff 节点上,直到部署更新的环。由于片段是根据片段索引重建在偏移的 handoff 上,并且代理限制了它搜索 EC 片段的深度,因此我们限制了尝试的节点数量。设置为 0 将禁用对 handoff 的重建,并且仅在环更改后将片段从未挂载的设备重建到挂载的主设备。设置为 -1 表示“无限制”。 |
max_objects_per_revert |
0 |
默认情况下,重构器尝试在单个批处理中通过单个 SSYNC 请求从 handoff 分区恢复所有对象。在特殊情况下,max_objects_per_revert 可用于临时限制每个重构器恢复类型作业恢复的对象数量。如果发送者的 handoff 分区中可用超过 max_objects_per_revert 的对象,则剩余的对象将保留在 handoff 分区中,并且在重构器下次访问该 handoff 分区之前不会恢复,即使用此选项设置,重构器的一个周期可能无法完全恢复所有 handoff 分区。该选项对重构器同步类型作业在主分区之间没有影响。值为 0(默认值)表示没有限制。 |
node_timeout |
DEFAULT 或 10 |
对外部服务的请求超时。使用此部分设置的值,或 DEFAULT 部分设置的值,或 10。 |
http_timeout |
60 |
http 请求的最大持续时间。这是 REPLICATE 完成调用,因此应该比 node_timeout 长。 |
lockup_timeout |
1800 |
如果在 lockup_timeout 秒内没有重建任何片段,则尝试杀死所有线程。 |
ring_check_interval |
15 |
检查新环文件的时间间隔 |
recon_cache_path |
/var/cache/swift |
recon 缓存路径 |
nice_priority |
无 |
服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。 |
ionice_class |
无 |
服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。 |
ionice_priority |
无 |
服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。 |
quarantine_threshold |
0 |
重构器可能在尝试重建时无法获取超过 quarantine_threshold 数量的片段(包括过时的片段)时隔离过时的孤立片段。 |
quarantine_age |
reclaim_age |
片段在被隔离之前不会被隔离,直到它们比 quarantine_age 更旧,默认值为 reclaim_age。 |
[object-updater]¶
选项 |
默认值 |
描述 |
log_name |
object-updater |
用于日志记录的标签 |
log_facility |
LOG_LOCAL0 |
syslog 日志设施 |
log_level |
INFO |
日志级别 |
log_address |
/dev/log |
日志目录 |
interval |
300 |
一次传递的最小时间 |
updater_workers |
1 |
worker进程数 |
concurrency |
8 |
每个worker进程要并发运行的更新数 |
node_timeout |
DEFAULT 或 10 |
对外部服务的请求超时。使用此处设置的值,或 DEFAULT 部分设置的值,或 10(尽管其他部分使用 3 作为最终默认值)。 |
objects_per_second |
50 |
每秒更新的最大对象数。应根据单个系统规格进行调整。0 表示无限制。 |
slowdown |
0.01 |
对象之间的秒数。已弃用,推荐使用 objects_per_second。 |
report_interval |
300 |
记录当前更新传递统计信息之间的秒数间隔。 |
recon_cache_path |
/var/cache/swift |
recon 缓存路径 |
nice_priority |
无 |
服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。 |
ionice_class |
无 |
服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。 |
ionice_priority |
无 |
服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。 |
[object-auditor]¶
选项 |
默认值 |
描述 |
log_name |
object-auditor |
用于日志记录的标签 |
log_facility |
LOG_LOCAL0 |
syslog 日志设施 |
log_level |
INFO |
日志级别 |
log_address |
/dev/log |
日志目录 |
log_time |
3600 |
状态日志的频率(秒)。 |
interval |
30 |
审计器传递之间等待的时间(秒) |
disk_chunk_size |
65536 |
在审计期间读取的块大小 |
files_per_second |
20 |
每个审计器进程每秒审计的最大文件数。应根据单个系统规格进行调整。0 表示无限制。 |
bytes_per_second |
10000000 |
每个审计器进程每秒审计的最大字节数。应根据单个系统规格进行调整。0 表示无限制。 |
concurrency |
1 |
用于校验和审计的并行进程数。 |
zero_byte_files_per_second |
50 |
|
object_size_stats |
||
recon_cache_path |
/var/cache/swift |
recon 缓存路径 |
rsync_tempfile_timeout |
auto |
rsync tempfile 在经过多少秒后将被 unlink。配置值“auto”尝试使用 object-replicator 的 rsync_timeout + 900 或回退到 86400(1 天)。 |
nice_priority |
无 |
服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。 |
ionice_class |
无 |
服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。 |
ionice_priority |
无 |
服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。 |
[object-expirer]¶
选项 |
默认值 |
描述 |
log_name |
object-expirer |
用于日志记录的标签 |
log_facility |
LOG_LOCAL0 |
syslog 日志设施 |
log_level |
INFO |
日志级别 |
log_address |
/dev/log |
日志目录 |
interval |
300 |
expirer 传递之间等待的时间(秒) |
report_interval |
300 |
状态日志的频率(秒)。 |
concurrency |
1 |
用于执行工作的并发级别,此值必须设置为至少 1 |
dequeue_from_legacy |
False |
此服务将查找旧版 expirer 任务队列中的作业。 |
round_robin_task_cache_size |
100000 |
在处理之前要缓存的任务对象数。 |
processes |
0 |
将旧版工作划分为多少部分,每个部分由将执行工作的进程处理。与 |
process |
0 |
特定旧版进程将处理的哪个部分。它是“从零开始的”,如果您想使用 3 个进程,则应使用 process 设置为 0、1 和 2 的进程运行。与 |
reclaim_age |
604800 |
未处理的已过期对象标记将被重试多长时间,然后放弃。它与一致性引擎中的 tombstone 回收年龄无关。 |
request_tries |
3 |
内部客户端在发生故障时将尝试任何给定请求的次数 |
recon_cache_path |
/var/cache/swift |
recon 缓存路径 |
nice_priority |
无 |
服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。 |
ionice_class |
无 |
服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。 |
ionice_priority |
无 |
服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。 |
delay_reaping_<ACCT> |
0.0 |
用于设置帐户级别 delay_reaping 值的动态配置选项。delay_reaping 值配置为名称位于 <ACCT> 中的帐户。对象过期器仅在 x-delete-at 时间之后经过此延迟后,才会从磁盘回收此帐户中的对象。 |
delay_reaping_<ACCT>/<CNTR> |
0.0 |
用于设置容器级别 delay_reaping 值的动态配置选项。delay_reaping 值配置为帐户名称位于 <ACCT> 且容器名称位于 <CNTR> 的容器。对象过期器仅在 x-delete-at 时间之后经过此延迟后,才会从磁盘回收此容器中的对象。 |