mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-26 23:10:44 +01:00
* feat: send EC shards in parallel per destination disk One stream per destination disk. max_shard_transfers unset means no global cap, 0 sends shards sequentially, and N is a global cap that still keeps one stream per disk. The value is persisted through TaskPolicy. The maintenance form is a checkbox plus Max transfers because unset and 0 differ. The key is intentionally omitted from GetConfigSpec. * ec shard distribution: treat negative max_shard_transfers as sequential The config layer (normalizedMaxShardTransfers) clamps negative values to 0, which selects sequential distribution. shardTransferCap diverged: a negative cap that reached ShardDistributionOptions directly would have selected uncapped parallel mode, the most aggressive setting. Align the options layer with the same normalization so invalid input degrades to the conservative mode. * ec: serialize shard transfers to a server when a target leaves disk choice to the receiver disk_id 0 is auto-placement on the receiving volume server, so an auto-placed stream can land on a disk another queued stream is pinned to. Grouping by (destNode, disk_id) alone let both run at once; collapse all of that server's transfers under the destNode key instead. * worker: clamp max_shard_transfers to the int32 wire range ReadIntConfig returned the 0 fallback for values above MaxInt32, turning a large positive cap into sequential mode. Read int64 and clamp into range instead. * worker: drop unused shard-transfer form helper The maintenance form renders and collects max_shard_transfers in plugin.templ JavaScript; the Go copy had no callers. * worker: bound max_shard_transfers conversion under an in-range guard --------- Co-authored-by: Chepurnov Simon <195125934+CHEPURNOV-S-S@users.noreply.github.com> Co-authored-by: Chris Lu <chrislusf@users.noreply.github.com>
79 lines
2.9 KiB
TOML
79 lines
2.9 KiB
TOML
# Put this file in one of the locations, with descending priority
|
|
# ./admin.toml
|
|
# $HOME/.seaweedfs/admin.toml
|
|
# /etc/seaweedfs/admin.toml
|
|
# this file is read by "weed admin"
|
|
|
|
# Maintenance task settings declared here are applied every time the admin
|
|
# server starts, overriding values saved from the admin UI under
|
|
# <dataDir>/conf. Commented-out keys keep their saved or default values.
|
|
# Requires -dataDir.
|
|
# Each value can also be set via environment variable, e.g.
|
|
# export WEED_MAINTENANCE_VACUUM_GARBAGE_THRESHOLD=0.3
|
|
|
|
[s3]
|
|
# The address clients reach the S3 gateway at, including the scheme.
|
|
# The file browser uses it to offer copyable object URLs; without it,
|
|
# the copy action is hidden.
|
|
# public_endpoint = "https://s3.example.com"
|
|
|
|
[maintenance]
|
|
# toggle the entire maintenance system (task detection and execution)
|
|
# enabled = true
|
|
|
|
[maintenance.vacuum]
|
|
# enabled = true
|
|
# vacuum volumes with more deleted content than this ratio
|
|
# garbage_threshold = 0.3
|
|
# how often to scan for volumes needing vacuum
|
|
# scan_interval_seconds = 7200
|
|
# max_concurrent = 2
|
|
# only vacuum volumes older than this (rounded up to whole hours)
|
|
# min_volume_age_seconds = 86400
|
|
# max retry attempts for a failed vacuum job (admin runtime default)
|
|
# retry_limit = 1
|
|
# seconds to wait between retry attempts
|
|
# retry_backoff_seconds = 10
|
|
|
|
[maintenance.balance]
|
|
# enabled = true
|
|
# trigger balancing when volume distribution exceeds this ratio
|
|
# imbalance_threshold = 0.2
|
|
# scan_interval_seconds = 1800
|
|
# max_concurrent = 1
|
|
# minimum number of volume servers before balancing
|
|
# min_server_count = 2
|
|
# max retry attempts for a failed balance job
|
|
# retry_limit = 1
|
|
# seconds to wait between retry attempts
|
|
# retry_backoff_seconds = 15
|
|
|
|
[maintenance.erasure_coding]
|
|
# enabled = true
|
|
# only erasure code volumes this full
|
|
# fullness_ratio = 0.95
|
|
# only erasure code volumes not modified for this long
|
|
# quiet_for_seconds = 3600
|
|
# scan_interval_seconds = 3600
|
|
# max_concurrent = 1
|
|
# min_size_mb = 30
|
|
# only process volumes from these collections, comma separated, "*" and "?" wildcards
|
|
# and regex patterns allowed ("" = all collections)
|
|
# collection_filter = ""
|
|
# disk tags preferred for shard placement
|
|
# preferred_tags = ["fast", "ssd"]
|
|
# EC shard placement constraint, e.g. "020"; empty uses the master default replication
|
|
# replica_placement = ""
|
|
# fail planning when the placement constraints cannot be met instead of relaxing them
|
|
# strict_placement = false
|
|
# volume-slot deadband for shard placement: nodes whose free volume slots differ by at
|
|
# most this much tie and fewer live shards wins; applied times data shards (0 = strict)
|
|
# free_slots_deadband = 0
|
|
# shard copy concurrency. Leave unset for one in-flight copy per destination disk.
|
|
# 0 sends shards sequentially. A positive N is a global cap, still one per disk.
|
|
# max_shard_transfers = 4
|
|
# max retry attempts for a failed erasure coding job
|
|
# retry_limit = 1
|
|
# seconds to wait between retry attempts
|
|
# retry_backoff_seconds = 30
|