HDDS-11233. Ozone Storage Policy Support.#6989
Conversation
|
cc @sodonnel |
| | Tier | StorageType of Pipeline | One Replication | ||
| Container Replicas Storage Type | Three replication | ||
| Container Replicas Storage Type | EC | ||
| Container Replicas Storage Type | | ||
| | --- | --- | --- | --- | --- | | ||
| | SSD | SSD | SSD | 3 SSD | n SSD | | ||
| | DISK | DISK | DISK | 3 DISK | n DISK | | ||
| | ARCHIVE | ARCHIVE | ARCHIVE | 3 ARCHIVE | n ARCHIVE | |
There was a problem hiding this comment.
Nit: The table does not seem to be rendered properly.
|
|
||
| | Storage Policy | Storage Tier for Write | Fallback Tier for Write | | ||
| | --- | --- | --- | | ||
| | Hot | SSD | DISK | |
There was a problem hiding this comment.
Is this the final list of desired/planned storage policies? Wouldn't we like to implement policies like in HDFS - https://hadoop.apache.org/docs/r3.4.1/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html ?
There was a problem hiding this comment.
Yes, we only support these three simple storage policies current, we can extend it in the future.
| The relation of Storage Policy, Storage Type and Storage Tier | ||
|
|
||
| - The storage policy is the property of key/bucket/ prefix (Managed by OM); | ||
| - The storage tier is the property of Pipeline and Container (Managed by SCM); |
There was a problem hiding this comment.
Will we deal with the storage tier as an entry of the cluster topology?
There was a problem hiding this comment.
What does “deal with as a cluster topology” mean?
Storage Tier is the property of Pipeline and Container, when we create the key we will select the matched Storage Tier Pipeline and Container based on the key Storage Policy.
There was a problem hiding this comment.
I meant org.apache.hadoop.hdds.scm.net.NodeSchema. Will the Storage Tier (aka rack of specific storage volumes) become a part of the network topology
There was a problem hiding this comment.
Storage Tier is more like the ReplicationConfig, will be a independent fields in ContainerInfo and Pipeline
| ## SCM Pipeline / ContainerReplica Management and Block Allocation | ||
|
|
||
| - Pipeline needs to add tier-related fields to distinguish between different tiers of Pipelines. | ||
| - For Pipelines tier: |
There was a problem hiding this comment.
The current implementation of the background pipeline creator creates a limited list of RATIS/THREE-pipelines per datanode. The design doc proposes to deal with specific pipelines for different storage policies. Is there any proposal doc on how we gonna deal with the limitation mentioned earlier? (How should we deal with the distribution of the pipelines of different types: 30% per storage tire or some other option? What if the pipelines of one of the storrage tire will not be used?)
There was a problem hiding this comment.
The count limit for current Pipeline count will be extend to each storage tier, so in the extreme condition, there will be three times Pipeline in a cluster.
But in the actual situation, there may not be so many Pipelines, because a Pipeline may support multiple tiers, such as DISK and SSD, because there may be both SSD and DISK type Volume in a Datanode machine.
And the background Pipeline creator will check the current cluster's Volume type, if a cluster has only SSD Volume, the background Pipeline will create a Pipeline with only SSD Tier type.
There was a problem hiding this comment.
However, on a dedicated-tier cluster (16 SSD, 16 DISK nodes), the SSD tier can only form a limited number of EC 3+2 pipelines. Does the background creator have a target count? Does it back off when the tier is saturated?
There was a problem hiding this comment.
Ratis' Pipeline utilizes a Background service for creation (BackgroundPipelineCreator). The number of Ratis Pipelines can be controlled through configuration.
EC-type Pipelines are created only when used. Different EC configurations generate distinct Pipelines. Pipelines from different EC configurations do not interfere with each other. (WritableECContainerProvider#getContainer) SCM selects the DN with the appropriate Storage Type to create the Pipeline.
|
@xichen01 is there an understanding of the time frame for the functionality to be implemented? I'd start creating the JIRA tickets and implementing them |
|
@xichen01 @kerneltime @sodonnel, could you help somehow to force the review of the design doc? The feature is very needed, and I would gladly start implementation. |
|
@vtutrinov Currently the implementation is being worked on internally for the past one year. The basic implementation of storage policy and storage types integration on containers, pipelines, volumes, s3 storage class, and creating key / file with storage policy has been implemented but still need extensive testing. Currently we are focusing on storage policy migration implementation. @xichen01 would know more about the approximate timestamps, but we hope to have a working implementation in the next quarter (i.e. Q3 2025) or so. We are currently quite busy with our internal works so there might not be any bandwidth to backport all these patches in the short term. |
|
@ivandika3 thanks for the response! |
|
@vtutrinov the fastest way I think we can do is to provide you with the diffs. However these diffs won't apply cleanly on the master branch since our branch is based on 1.4.1 version with some of our internal specific changes. I probably can provide some of it this weekend. Feature branch in community fork might take a while since we need to resolve the conflicts. |
|
@ivandika3 it would be great! |
|
@ivandika3 I don't want to rush, but is there any news about the mentioned diff? |
|
@vtutrinov Thanks for the reminder. I have attached https://issues.apache.org/jira/secure/attachment/13077025/storage-policy-diff.tar.gz for the list of diffs of the storage policy integration. Please be reminded to attribute @xichen01 for any commits generated from these diffs. |
|
@ivandika3 @xichen01 the diff above has references to the following non-existent files (relative to ozone-1.4.1): Could you provide them too, or point me to the commit where I can fetch them? |
|
This PR has been marked as stale due to 21 days of inactivity. Please comment or remove the stale label to keep it open. Otherwise, it will be automatically closed in 7 days. |
|
Thank you for your contribution. This PR is being closed due to inactivity. If needed, feel free to reopen it. |
|
Hi, do you know if any work is planned for this ticket? AFAIK, the patch diff wasn't added to the branch and is probably out of date right now. What are the next steps here? |
|
Hi @greenwich I see you have also opened #9807. If you would like to continue work on this, we should start by reaching agreement on a design doc. I'm not sure we finished that process yet. @ivandika3 @xichen01 does this doc need more updates/review? Should we continue work on it here or open a new PR? |
|
@errose28 Thanks for looking! I am very sorry for the noise my PR caused; it wasn't intended to be public (My bad - I haven't set it to Draft when I created it). Let me explain my motivation.
This would allow my team to start using the functionality early, gather real-world feedback, and better understand practical requirements. I believe this iterative approach could also help inform and refine the broader design discussion. I am currently working on MVP-1, and MVP-2 already includes many of the most important features we need. My plan is to validate these internally in our TEST environment (and eventually PROD if stable), and then share the results and learnings with the Ozone community for discussion and alignment. Of course, I’m very open to feedback on this approach and happy to adjust direction based on community input.
|
|
@errose28 Thanks for noticing this PR. @greenwich Thank you for the update. Regarding the current status of this PRThe current PR hasn't been updated for a while, mainly because there doesn't seem to be a strong demand for this feature from other members of the community, so reviews have stagnated. We also support S3 Lifecycle (https://issues.apache.org/jira/browse/HDDS-8342), allowing you to set a Lifecycle for a Bucket to migrate specified keys to a specified StoragePolicy at a specified time (including from SSD migrate to DISK, and also from THREE Replication migrate to EC) or similar HDFS SPS (Storage Policy Satisfaction) functionality. Follow-upIf you or others in the community are willing, we can continue to move forward with this PR, of course, you can also move forward with your own proposals, we can cooperate if you need it. |
|
@xichen01, Thanks for the update. That's great news indeed! In that case, there is no point for me to invent a wheel. I had a quick look at the patch you submitted earlier, and it looks comprehensive. I will have a detailed look today. Would it be possible to move forward with that PR (and merge it, or at least create a working branch and sync it with master)? Also, as I am very interested in that feature, I can provide assistance on my end. cc: @ivandika3 @chungen0126 |
|
@xichen01 Let's reopen this patch and move this forward. I am willing spend some time on the storage policy support development. Hopefully other community members (@errose28 @chungen0126) are also able to help to push the review process and commit to our implementation. @greenwich As mentioned in the #8811 (reply in thread) discussion last year. There are mainly two phases of Ozone Storage Policy Support
Phase 1 goal is to allow client to upload keys with different storage policy and integrate storage policy and types to all Ozone pipeline, containers, etc. This will be our short term focus now since we are not introducing any new subsystem. @xichen01 Let's start by backporting this to the community fork and ensure that everything works normally, we can discuss on which patch we will do. Phase 2 goal is to support Storage Policy Migration. However, our current implementation requires a separate job worker subsystem. This will be longer term since we are introducing some new subsystem. If you don't require a separate job worker subsystem, you might need to write your own implementation of "Storage Policy Satisfier". That said, hope you understand that all contributions to Ozone are purely voluntary and made by members with other higher level priorities and therefore we cannot 100% guarantee that this will be done in a timely manner. |
@ivandika3, I managed to do a similar thing because I wanted to prepare everything up-front to make things go faster for this PR.
|
|
Thanks @greenwich , @xichen01 would you mind take a look at that? I'm currently backporting it in my fork, but the test are still failing (https://github.com/ivandika3/ozone/tree/refs/heads/backport-storage-policy-storage-class) |
|
@greenwich @xichen01 FYI, test in https://github.com/ivandika3/ozone/tree/refs/heads/backport-storage-policy-storage-class passed. You can refer to the diff in ivandika3#4 |
@greenwich Yes, we can first implement a standalone StoragePolicySatisfier (similar to HDFS Mover or HDFS StoragePolicySatisfier) without needing to implement a separate subsystem. |
@ivandika3 We can create corresponding sub tasks for these commits and then merge them into the HDDS-8342 branch via MR |
|
@xichen01 How about we cut a new HDDS-11233 branch? The current branch can be done without the transition patch (HDDS-8342). We can add the transition after HDDS-8342 is merged to master. |
I think we can create a new HDDS-11233 branch on the Apache Ozone repositories, just like https://github.com/apache/ozone/tree/HDDS-8342. Then we can merge related Commit to this branch. |
|
@xichen01 Could you help to take over? I'm currently quite busy and my GH account was recently blocked from GH actions (still waiting for support) so no CI can be triggered. |
OK, I will |
|
The new HDDS-11233 branch https://github.com/apache/ozone/tree/HDDS-11233 |
|
@ivandika3 @greenwich @chungen0126 |
chungen0126
left a comment
There was a problem hiding this comment.
Overall, looks good to me.
Looks good! |
|
@ivandika3, @xichen01, as we have HDDS-15239 merged and a new branch created. Are we ready to move forward? |
Yes, we will continue to submit new PRs after the merge |
|
This PR has been marked as stale due to 21 days of inactivity. Please comment or remove the stale label to keep it open. Otherwise, it will be automatically closed in 7 days. |
|
This PR has been marked as stale due to 21 days of inactivity. Please comment or remove the stale label to keep it open. Otherwise, it will be automatically closed in 7 days. |
What changes were proposed in this pull request?
Design storage policy for for Ozone. Please comment inline on the markdown document to ask questions and post feedback. Switch to
Rich Diffmode for smoother reading.What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-11233
How was this patch tested?
N/A