Dave,
In general, I like this, as it does require less artificial naming of
objects. A couple of things.
1. The zpool attribute on the disk_name element would seemingly be
redundant if the vdev names were required to be unique across all
pools in the manifest. Undecided whether that's a good thing or not.
We could perhaps make the zpool attribute optional, only required if
the vdev names are not unique.
I don't think we should enforce the zpool name in the vdev label. I did
that for readability, but as you'll see below, it's not necessary. I
would be concerned that users wouldn't follow that naming convention and
it could cause all kinds of issues.
2. I think we need one more case, such as concatenated raidz stripes.
A pretty large (and real) example is below. The ZFS Configuration
Guide on solarisinternals.com also has some interesting configurations
that are similar to this.
<snip> giant zpool status dump
See attached XML file for my take at this.
-Drew
<target>
<!-- c11 disks -->
<disk>
<disk_name name="c11t0d0" name_type="ctd" zpool="z" vdev="this"/>
</disk>
<disk>
<disk_name name="c11t1d0" name_type="ctd" zpool="z" vdev="use"/>
</disk>
<disk>
<disk_name name="c11t2d0" name_type="ctd" zpool="z" vdev="case"/>
</disk>
<disk>
<disk_name name="c11t3d0" name_type="ctd" zpool="z" vdev="is"/>
</disk>
<disk>
<disk_name name="c11t4d0" name_type="ctd" zpool="z" vdev="an"/>
</disk>
<disk>
<disk_name name="c11t5d0" name_type="ctd" zpool="z" vdev="absurd"/>
</disk>
<disk>
<disk_name name="c11t6d0" name_type="ctd" zpool="z" vdev="example"/>
</disk>
<disk>
<disk_name name="c11t7d0" name_type="ctd" zpool="z" vdev="of"/>
</disk>
<disk>
<disk_name name="c11t8d0" name_type="ctd" zpool="z" vdev="the"/>
</disk>
<disk>
<disk_name name="c11t9d0" name_type="ctd" zpool="z" vdev="power"/>
</disk>
<disk>
<disk_name name="c11t10d0" name_type="ctd" zpool="z" vdev="of"/>
</disk>
<!-- c12 disks -->
<disk>
<disk_name name="c12t48d0" name_type="ctd" zpool="z" vdev="this"/>
</disk>
<disk>
<disk_name name="c12t49d0" name_type="ctd" zpool="z" vdev="use"/>
</disk>
<disk>
<disk_name name="c12t50d0" name_type="ctd" zpool="z" vdev="case"/>
</disk>
<disk>
<disk_name name="c12t51d0" name_type="ctd" zpool="z" vdev="is"/>
</disk>
<disk>
<disk_name name="c12t52d0" name_type="ctd" zpool="z" vdev="an"/>
</disk>
<disk>
<disk_name name="c12t53d0" name_type="ctd" zpool="z" vdev="absurd"/>
</disk>
<disk>
<disk_name name="c12t54d0" name_type="ctd" zpool="z" vdev="example"/>
</disk>
<disk>
<disk_name name="c12t55d0" name_type="ctd" zpool="z" vdev="of"/>
</disk>
<disk>
<disk_name name="c12t56d0" name_type="ctd" zpool="z" vdev="the"/>
</disk>
<disk>
<disk_name name="c12t57d0" name_type="ctd" zpool="z" vdev="power"/>
</disk>
<disk>
<disk_name name="c12t58d0" name_type="ctd" zpool="z" vdev="of"/>
</disk>
<!-- c14 disks -->
<disk>
<disk_name name="c14t16d0" name_type="ctd" zpool="z" vdev="this"/>
</disk>
<disk>
<disk_name name="c14t17d0" name_type="ctd" zpool="z" vdev="use"/>
</disk>
<disk>
<disk_name name="c14t18d0" name_type="ctd" zpool="z" vdev="case"/>
</disk>
<disk>
<disk_name name="c14t19d0" name_type="ctd" zpool="z" vdev="is"/>
</disk>
<disk>
<disk_name name="c14t20d0" name_type="ctd" zpool="z" vdev="an"/>
</disk>
<disk>
<disk_name name="c14t21d0" name_type="ctd" zpool="z" vdev="absurd"/>
</disk>
<disk>
<disk_name name="c14t22d0" name_type="ctd" zpool="z" vdev="example"/>
</disk>
<disk>
<disk_name name="c14t23d0" name_type="ctd" zpool="z" vdev="of"/>
</disk>
<disk>
<disk_name name="c14t24d0" name_type="ctd" zpool="z" vdev="the"/>
</disk>
<disk>
<disk_name name="c14t25d0" name_type="ctd" zpool="z" vdev="power"/>
</disk>
<disk>
<disk_name name="c14t26d0" name_type="ctd" zpool="z" vdev="of"/>
</disk>
<!-- c15 disks -->
<disk>
<disk_name name="c15t32d0" name_type="ctd" zpool="z" vdev="this"/>
</disk>
<disk>
<disk_name name="c15t33d0" name_type="ctd" zpool="z" vdev="use"/>
</disk>
<disk>
<disk_name name="c15t34d0" name_type="ctd" zpool="z" vdev="case"/>
</disk>
<disk>
<disk_name name="c15t35d0" name_type="ctd" zpool="z" vdev="is"/>
</disk>
<disk>
<disk_name name="c15t36d0" name_type="ctd" zpool="z" vdev="an"/>
</disk>
<disk>
<disk_name name="c15t37d0" name_type="ctd" zpool="z" vdev="absurd"/>
</disk>
<disk>
<disk_name name="c15t38d0" name_type="ctd" zpool="z" vdev="example"/>
</disk>
<disk>
<disk_name name="c15t39d0" name_type="ctd" zpool="z" vdev="of"/>
</disk>
<disk>
<disk_name name="c15t40d0" name_type="ctd" zpool="z" vdev="the"/>
</disk>
<disk>
<disk_name name="c15t41d0" name_type="ctd" zpool="z" vdev="power"/>
</disk>
<disk>
<disk_name name="c15t42d0" name_type="ctd" zpool="z" vdev="of"/>
</disk>
<!-- WWN disks -->
<disk>
<disk_name name="c0t600C0FF000000000082F6B1EA30EF700d0" name_type="ctd"
zpool="z" vdev="zfs"/>
</disk>
<disk>
<disk_name name="c0t600C0FF000000000082F6B4138DF8700d0" name_type="ctd"
zpool="z" vdev="zfs"/>
</disk>
<!-- spare disks -->
<disk>
<disk_name name="c1t4d0" name_type="ctd" zpool="z" vdev="spares"/>
</disk>
<disk>
<disk_name name="c1t5d0" name_type="ctd" zpool="z" vdev="spares"/>
</disk>
<logical>
<zpool name="z" action="create" is_root="false" />
<vdev name="this" redundancy="raidz1"/>
<vdev name="use" redundancy="raidz1"/>
<vdev name="case" redundancy="raidz1"/>
<vdev name="is" redundancy="raidz1"/>
<vdev name="an" redundancy="raidz1"/>
<vdev name="absurd" redundancy="raidz1"/>
<vdev name="example" redundancy="raidz1"/>
<vdev name="of" redundancy="raidz1"/>
<vdev name="the" redundancy="raidz1"/>
<vdev name="power" redundancy="raidz1"/>
<vdev name="of" redundancy="raidz1"/>
<!-- would need to add 'mirror log' to the list of valid
redundancy entries -->
<vdev name="zfs" redundancy="mirror log"/>
<vdev name="spares" redundancy="spare"/>
</zpool>
</logical>
</target>
_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss