-
Notifications
You must be signed in to change notification settings - Fork 594
HDDS-11891. Design doc for find Block missing Key tool #7548
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@xichen01 I have few questions ...
|
@sumitagrawl Thanks for your questions.
Keys/drums/volumes/clusters can be checked based on “OzoneAddress”
The output of the command will be all the missing keys, if we skip the Container state check, we may need to get this information from Recon.
In the long run, it is possible, but this may require more development, and a command tool will be more flexible and simple |
|
This seems similar to the |
|
@errose28 Thanks for your questions.
Yes, it performs better, and in our internal version, with 6 buckets checked in parallel, the total QPS can be around 70k. And the main bottleneck is OM's
Do you mean we just check the DN Block in RocksDB, not to check the disk Block file? I think it's possible.
|
|
@sumitagrawl @errose28 Is there any update? |
| title: Erasure Coding in Ozone | ||
| summary: Use Erasure Coding algorithm for efficient storage |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please update title and summary.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated.
Yes, Recon already have capability to identify missing container and reports them. It monitors all key and verify if any container is missing for the keys. But at block level, if some block is deleted at physical disk, there is no direct mechanism to identify this till data is not read via Recon. But, There is a DN Container scan task is there which verify if container metadata and disk are in consistent state. Else mark the container to un-healthy so that replication can re-replicate. (I remember this is disabled by default, need recheck this). cc: @errose28 |
Thanks for your information.
This relies on the Block being correctly placed in the Container, and the Block not being incorrectly deleted by the DN (i.e., a key that should not have been deleted through the normal deletion process), which is not guaranteed for a cluster that has been upgraded many times and run for a long time. |
|
Can you include the text in https://www.notion.so/meeting-room-Conference-Room-d17916fda32244f2b5edfec93c165cee?pvs=21 here itself, I tried to access it but I do not have access to it. |
| 1. Retrieve Key metadata: | ||
| - Gather metadata such as the Key name and BlockID (consisting of ContainerID and localID). | ||
| - After collecting sufficient Key metadata, organize it for further processing. | ||
| - There are three approaches to retrieve metadata (detailed in [Three Approaches to Retrieve Metadata](https://www.notion.so/meeting-room-Conference-Room-d17916fda32244f2b5edfec93c165cee?pvs=21)). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Notion should be markdown, we should include it here in the PR itself.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated
|
I like the idea of being able to quickly check block existence without downloading all the data. We are working on a similar set of tools that might be useful in HDDS-12206. The final implementation will look something like this:
We could add this another flag like
Let me know what you think of the approach in HDDS-12206 and if it seems like it could meet the requirements in this doc. |
This can be a similar method to check if the key is readable without downloading the key.
|
Yes I agree this tool would fit well under the
I don't follow this.
This sounds like a good addition. I think the new API should be called something like
Got it. I don't think it's clear in the doc whether the steps are applied to a single key or a whole section of the namespace. For the proposed It sounds like the block verification API is looking to batch requests for multiple blocks in one request to the DN. In this case the per-key mapping should probably be datanode to block, not container to block, since blocks for the key may be under the same datanode but in different containers.
I don't see how this would work because Since the list keys API is paginated, the bottleneck on list keys would likely be alleviated by starting the block checks for one listing batch while concurrently fetching the next listing batch as mentioned above. |
| - Disadvantages: Requires API enhancements to include Block information. | ||
| 2. Using `listStatus` and `listKeys`: | ||
| - Advantages: Can be used directly without additional development. | ||
| - Disadvantages: Lower performance and may become a bottleneck. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The lower performance comes form the block information that is passed in. If we use listKeysList and add block information, it will be the same as listKeys.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably just add the BlockID (ContaienrID + LocalID) which should have less of an impact.
Yes, I think
Support for checking Volume / Bucket / Key I will improve the documentation.
It's actually a two-level mapping ContainerID -> LocalID -> Key. This allows you to query from BlockID(ContainerID + LocalID) to Key.
We need to modify listKeysLight to add at least the BlockID information.
For clusters that don't have security turned on, perhaps getting the key list directly from the DB would be the best performance. However, this requires the command to be executed on the OM node. |
|
@errose28 PTAL. |
|
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. |
What changes were proposed in this pull request?
Design doc for find Block missing Key tool
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-11891
How was this patch tested?
N/A