-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Feature: zpool get/set/list being able to address pool vdevs/vdev members #3810
Comments
To bump this a little after the OpenFS Summit talk about vdev properties (youtube) @allanjude Thanks for working on this. As the vdevs are a hirarchical tree structure, wouldn't it make more sense to extend the existing interface of zpool get/set/list by allowing the [pool] argument of them to be This would change the example in your talk from
to
Which would be easier to read and way less (especially when querying multiple vdevs) to type. Plus this kind information would also be accessible through |
We have been discussing this in the #vdev-properties channel on the OpenZFS slack, and we came up with: We have been through about 5 iterations so far this week ;) |
About your other point, for 'write only' on members of a mirror, the current plan is to implement that something like this: That is to say, implement it as a property of the top-level vdev, rather than as a property of the leaf, so that it would persist through a |
Apart from the question of what is wrong with / as a path separator, as it's universally used basically everywhere (filesystems, URI zfs datasets, whatnot): What is the reasoning behind aiming for a flat addressing scheme for a hirarchical data structure?
Why the need to survive a replace? And why put that into the mirror vdev instead of the member where it actually belongs (don't read from this, unless needed) so that the code picking the mirror disk to read from (which is already working with the leafs to look at queue depths and whatnot) can easily access it and quickly test for it? Rotational and other flags relevant to the disk are also in the mirror vdev leafs, not their parent node... |
@allanjude futher thought on readbias: Using a 7.2k RPM HDD with 100 IOPS vs. a SSD with 250k read IOPS to make the point: Bias isn't what I (and I guess everyone else) want. Should readbias work as writeonly, just with reversed tagging: Please name it less misleading to avoid confusion. |
It was interesting to learn from @grwilson that the queueing happens at the top-level vdev, not the leaf. So that was one of the reasons we decided we didn't need to worry about the leaf vdevs as much. Currently, leaf vdev ZAPs are empty aside from vdev removal cases. Based on the discussion, the first implementation will focus on top-level vdevs, and we'll look at leaf vdevs for an expanded version after. The complexity of 'zpool replace', and the promotion/demotion from top level vdev, when you zpool attach/detach and turn single devices into mirrors, or mirrors into single devices, was greater than we expected when we white boarded it at the ZFS DevSummit Hackathon |
@allanjude Any progress on this? |
To pick this topic up, a little while later:
I think something like |
It would be beneficial to allow zpool get/set operations to target vdevs and their members.
Get ashift of pool (#2024):
Allow features like
No new allocations on vdev (for whatever reasons), or even automatically when degraded (manually set, or while replace of member disk is running) while still updating superblocks to keep the pool consistent:
Do not serve reads from this vdev member while redundancy allows it (slow drive in mirror for more cheap redundancy, #1742):
This would also deliver the interface to tune features like Metadata Allocation Class (#3779)
Combined this would allow for interesting performing setups, (example) pool with:
The text was updated successfully, but these errors were encountered: