Don and I are working on the metadata allocation classes and we think it
would be cleaner if we could get rid of the idea of "segregated vdevs", and
handle DRAID mirroring as a separate top-level vdev. The new
"DRAID-mirror" vdev would get its space from a corresponding DRAID device,
but the allocation code would see it as a separate top-level vdev so we
could treat it as a "special vdev" for allocation purposes. (The
DRAID-mirror vdev would be designated "special" by default - and probably
we wouldn't allow it to be designated non-special.) This would be similar
in some ways to the DRAID "virtual spare" vdev.
I think we discussed this idea previously but dismissed it as too hard.
Given that the change would be primarily to simplify the metadata
allocation code, Don and I can help implement the changes needed to the
We aren't set on this course, but wanted to open the discussion since I
think it could be an overall better implementation of metadata allocation +
DRAID, as well as potentially being easier for sysadmins to understand
what's going on (since the DRAID-mirror special vdev would have all the
usual vdev-level accounting and monitoring).
I tried to join our meeting today but it didn't seem to be happening.
That's fine since I don't have anything to report - except that Isaac's
talk at the OpenZFS Developer Summit was very well received. Several
people commented that it was much improved from the DRAID talk 2 years ago.
Next meeting is scheduled for November 16th?