Skip to content

[ILM] Relocate hot objects across server pools by GET frequency - #60

Open
mrjavadseydi wants to merge 1 commit into
pgsty:mainfrom
mrjavadseydi:feat/access-based-ilm
Open

[ILM] Relocate hot objects across server pools by GET frequency#60
mrjavadseydi wants to merge 1 commit into
pgsty:mainfrom
mrjavadseydi:feat/access-based-ilm

Conversation

@mrjavadseydi

@mrjavadseydi mrjavadseydi commented Aug 15, 2026

Copy link
Copy Markdown

Contribution Licensing (no CLA, inbound=outbound, DCO required)

This project does not use a CLA; contributions are accepted inbound=outbound.
By submitting this pull request I represent that I have the right to contribute
the changes, which are licensed under this repository's
GNU Affero General Public License v3.0 or later
and remain my copyright. Every commit must carry a DCO Signed-off-by trailer
(git commit -s) certifying the
Developer Certificate of Origin — see
CONTRIBUTING.md.

Description

Access-frequency ILM that moves a full local version stack between server pools.
Successful GETs feed a best-effort rolling counter; the leader promotes to the
hottest configured pool and demotes previously moved objects once they go idle.

Motivation and Context

NVMe/HDD pool pairs currently only spread new writes by free space. This lets
operators keep hot objects on the fast pool without remote ILM transition.

How to test this PR?

  • go test ./internal/bucket/lifecycle/ ./internal/config/ilm/ ./cmd/ -count=1
  • Two-pool cluster: enable ilm access_tiering=on access_pools="0,1", PUT the
    AccessTransition XML via docs/bucket/lifecycle/setup_ilm_access_tiering.sh,
    generate GETs, watch /minio/metrics/v3/ilm and ilm:access-tier audit events.

Compatibility impact

  • Default off. Enabling requires at least two server pools.
  • Lifecycle XML gains optional AccessTransition / AccessTierQuota (omitted on rewrite of old configs). Stock AWS SDKs may strip them.
  • Data-usage cache version 9 (HotTierSize); v8 caches migrate in place.
  • New MINIO_ILM_ACCESS_* keys and /minio/metrics/v3/ilm access-tier series.
  • Rollback: turn access_tiering off. v9 caches remain readable.

Types of changes

  • New feature (non-breaking change which adds functionality)

Checklist:

  • All commits are signed off (git commit -s) per the DCO
  • Unit tests added/updated
  • Relevant package tests and make build pass
  • Compatibility and rollback impact documented
  • Internal documentation updated

Keep NVMe/HDD pool pairs useful without remote tiering: promote objects that
are read often, demote previously moved objects once they go idle, and leave
the feature off until operators set a two-pool topology.

Signed-off-by: mr javad seydi <seydi.birjand@gmail.com>
@mrjavadseydi
mrjavadseydi force-pushed the feat/access-based-ilm branch from c4aec22 to 7a060ca Compare August 15, 2026 10:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant