revert: remove access-frequency ILM tiering (#60)

Reverse the first-parent diff of a3df317ae0,
including the feature branch compatibility and mover follow-up fixes.
Retain the independent multi-pool correctness fixes from #178 and migrate
their shared test fixture away from access-tier code.

Tolerate retired ILM keys and XML, read old v9 statistics while writing v8,
and document migration without moving objects or rewriting their metadata.
Include regression coverage using a historical scanner/writer v9 fixture.

Signed-off-by: Feng Ruohang <rh@vonng.com>
This commit is contained in:
Feng Ruohang
2026-09-15 06:51:14 +08:00
parent 89637554d6
commit 9b76a21675
44 changed files with 581 additions and 5670 deletions
-93
View File
@@ -22,43 +22,10 @@ import "github.com/minio/minio/internal/config"
const (
transitionWorkers = "transition_workers"
expirationWorkers = "expiration_workers"
accessTiering = "access_tiering"
accessPools = "access_pools"
accessMaxSize = "access_max_size"
accessPromoteWatermark = "access_promote_watermark"
accessBinWidth = "access_bin_width"
accessBins = "access_bins"
accessFlush = "access_flush"
accessMinResidency = "access_min_residency"
accessWorkers = "access_workers"
accessMaxTracked = "access_max_tracked"
// EnvILMTransitionWorkers env variable to configure number of transition workers
EnvILMTransitionWorkers = "MINIO_ILM_TRANSITION_WORKERS"
// EnvILMExpirationWorkers env variable to configure number of expiration workers
EnvILMExpirationWorkers = "MINIO_ILM_EXPIRATION_WORKERS"
// EnvILMAccessTiering env variable to enable access based tiering
EnvILMAccessTiering = "MINIO_ILM_ACCESS_TIERING"
// EnvILMAccessPools env variable listing pool indices hottest first
EnvILMAccessPools = "MINIO_ILM_ACCESS_POOLS"
// EnvILMAccessMaxSize env variable capping bytes held on the hottest pool
EnvILMAccessMaxSize = "MINIO_ILM_ACCESS_MAX_SIZE"
// EnvILMAccessPromoteWatermark env variable for the hottest pool fill limit
EnvILMAccessPromoteWatermark = "MINIO_ILM_ACCESS_PROMOTE_WATERMARK"
// EnvILMAccessBinWidth env variable for the access counter resolution
EnvILMAccessBinWidth = "MINIO_ILM_ACCESS_BIN_WIDTH"
// EnvILMAccessBins env variable for the number of access counter bins
EnvILMAccessBins = "MINIO_ILM_ACCESS_BINS"
// EnvILMAccessFlush env variable for the counter publish and sweep interval
EnvILMAccessFlush = "MINIO_ILM_ACCESS_FLUSH"
// EnvILMAccessMinResidency env variable for the anti-thrash floor
EnvILMAccessMinResidency = "MINIO_ILM_ACCESS_MIN_RESIDENCY"
// EnvILMAccessWorkers env variable to configure number of access tiering workers
EnvILMAccessWorkers = "MINIO_ILM_ACCESS_WORKERS"
// EnvILMAccessMaxTracked env variable capping tracked objects per node
EnvILMAccessMaxTracked = "MINIO_ILM_ACCESS_MAX_TRACKED"
)
var (
@@ -81,65 +48,5 @@ var (
Description: `set the number of expiration workers` + defaultHelpPostfix(expirationWorkers),
Optional: true,
},
config.HelpKV{
Key: accessTiering,
Type: "on|off",
Description: `move objects between fast and slow server pools based on how often they are read` + defaultHelpPostfix(accessTiering),
Optional: true,
},
config.HelpKV{
Key: accessPools,
Type: "string",
Description: `server pool indices for access tiering, hottest first, e.g. "0,1"` + defaultHelpPostfix(accessPools),
Optional: true,
},
config.HelpKV{
Key: accessMaxSize,
Type: "string",
Description: `cap total bytes access tiering keeps on the fastest pool, e.g. "2TiB", 0 for unlimited` + defaultHelpPostfix(accessMaxSize),
Optional: true,
},
config.HelpKV{
Key: accessPromoteWatermark,
Type: "number",
Description: `stop promoting once the fastest pool is this percent full` + defaultHelpPostfix(accessPromoteWatermark),
Optional: true,
},
config.HelpKV{
Key: accessBinWidth,
Type: "duration",
Description: `resolution of the access counter` + defaultHelpPostfix(accessBinWidth),
Optional: true,
},
config.HelpKV{
Key: accessBins,
Type: "number",
Description: `number of access counter bins; bins times bin width caps the rule Window` + defaultHelpPostfix(accessBins),
Optional: true,
},
config.HelpKV{
Key: accessFlush,
Type: "duration",
Description: `how often access counters are published and a promotion sweep runs` + defaultHelpPostfix(accessFlush),
Optional: true,
},
config.HelpKV{
Key: accessMinResidency,
Type: "duration",
Description: `minimum time an object stays on a pool after access tiering moved it` + defaultHelpPostfix(accessMinResidency),
Optional: true,
},
config.HelpKV{
Key: accessWorkers,
Type: "number",
Description: `set the number of access tiering workers` + defaultHelpPostfix(accessWorkers),
Optional: true,
},
config.HelpKV{
Key: accessMaxTracked,
Type: "number",
Description: `maximum number of objects each node keeps access counters for` + defaultHelpPostfix(accessMaxTracked),
Optional: true,
},
}
)