Skip to content

DAOS-19604 doc: design for phase1 pool conversion - #19101

Open
NiuYawei wants to merge 2 commits into
masterfrom
niu/DAOS-19604-design
Open

NiuYawei wants to merge 2 commits into
masterfrom
niu/DAOS-19604-design

Conversation

@NiuYawei

Copy link
Copy Markdown
Contributor

Design for phase1 to phase2 pool conversion.

Steps for the author:

  • Commit message follows the guidelines.
  • Appropriate Features or Test-tag pragmas were used.
  • Appropriate Functional Test Stages were run.
  • At least two positive code reviews including at least one code owner from each category referenced in the PR.
  • Testing is complete. If necessary, forced-landing label added and a reason added in a comment.

After all prior steps are complete:

  • Gatekeeper requested (daos-gatekeeper added as a reviewer).

@NiuYawei
NiuYawei requested a review from a team as a code owner September 17, 2026 03:50
@github-actions

github-actions Bot commented Sep 17, 2026

Copy link
Copy Markdown

Ticket title is 'Convert pools with --mem-ratio 100% to --mem-ratio <100% and bigger meta blob'
Status is 'In Progress'
Labels: 'md_on_ssd2'
https://daosio.atlassian.net/browse/DAOS-19604

Design for phase1 to phase2 pool conversion.

Signed-off-by: Niu Yawei <yawei.niu@hpe.com>
@NiuYawei

Copy link
Copy Markdown
Contributor Author

@liw I recall you had a proposal for the pool offline feature. Could you review this and see if it conflicts with your plan? Thanks.
@tanabarr Could you review the control plane changes and see if it makes sense to you? Thanks.


- **Problem**: A legacy MD-on-SSD pool created with a 100% memory ratio operates in phase1 mode. All existing metadata is non-evictable (NE), and the META blob has no evictable capacity for phase2 allocations.

- **Proposal**: Add a `dmg pool convert` operation that makes the pool temporarily unavailable, enlarges every target's META blob, slightly enlarges every VOS memory file, and enables phase2. Existing DAV2 zones remain NE; newly appended META zones provide evictable (E) capacity.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel dmg pool resize is better name.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, 'resize' is a better name if we consider future pool vertical extending feature.

```
dmg pool convert <pool> --mem-ratio <percent> [--ne-reserve <size>] [--dry-run] [--wait[=<timeout>]]
dmg pool convert-status <pool> [--generation <uuid>]
dmg pool convert-cancel <pool> --generation <uuid>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is --generation used for?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right. It could be simplified if we allow only exclusive pool conversion.


- All pool ranks and targets are available. Conversion does not run on an excluded, down, rebuilding, or reintegrating target.

- No rebuild, upgrade, check, extend, drain, exclude, reintegrate, or destroy operation is active.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need consider how this work with existed pool reint command. considering there are targets are excluded before pool convert. after pool converted successfully. currently reint will reuse existed vos pool if existed without converting. So pool reint need extra size check and regenerating pool even existed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Converting with excluded rank isn't supported. (see above precondition).

- remove 'convert UUID' option for 'dmg pool convert-status' and
  'dmg pool convert-cancel'
- rename command from 'convert' to 'resize'

Signed-off-by: Niu Yawei <yawei.niu@hpe.com>

- **After any META blob grows**: Keep the pool fenced and resume forward. Expanded blobs are not shrunk.

- **Before the evictable flag is set**: A shard remains phase1-compatible with larger storage. Resume heap/VOS preparation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If some of shards set with evict-able flag, but some are not. and convert status marked as failed. Are we going to make this DAOS system workable or not?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. evict-able flag for each shard is independent, the pool could open for service after 'dmg resize-cancel' is done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants