mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-25 22:40:44 +01:00
* feat: Free Volume Deadband (M) for EC Place nodes and racks |ΔfreeSlots| ≤ M is a tie; remainder is liveShards. M=0 stays strict freeSlots. M is free volume slots (× dataShards). pickNodeInRackEligible and pickRackEligible share the rule. Worker plugin config free_slots_deadband, default 0. Not on the write path. * fix: anchor EC freeSlots deadband on class maxFree Pairwise |Δfree|≤M vs the current winner is not transitive: 120→110→100 at M=10 slots picked 100. After evenness, rank by maxFree, keep |free-maxFree|≤M, then min liveShards. Shared by node and rack. M=0 is still only maxFree then live. * worker: add free_slots_deadband to ErasureCodingTaskConfig * erasure_coding: persist free_slots_deadband through TaskPolicy ApplyMaintenanceConfigFromToml accepted the key but the admin save path round-trips config through ToTaskPolicy, so the value was dropped on reload; serialize it like the other EC settings. * erasure_coding: bound free_slots_deadband at its declared maximum The TOML loader and the plugin worker config only clamped negatives, so a value above the spec's 100000 could reach the int32 TaskPolicy field and wrap; cap at 100000 on both entry paths and declare MaxValue on the plugin field. * erasure_coding: document free_slots_deadband in scaffold admin.toml --------- Co-authored-by: Chepurnov Simon <195125934+CHEPURNOV-S-S@users.noreply.github.com> Co-authored-by: user.email <chrislusf@users.noreply.github.com>
76 lines
2.7 KiB
TOML
76 lines
2.7 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
|
|
# max retry attempts for a failed erasure coding job
|
|
# retry_limit = 1
|
|
# seconds to wait between retry attempts
|
|
# retry_backoff_seconds = 30
|