Bryan Horstmann-Allen wrote:
+------------------------------------------------------------------------------
| On 2010-11-08 13:27:09, Peter Taps wrote:
| | From zfs documentation, it appears that a "vdev" can be built from more vdevs. That is, a raidz vdev can be built across a bunch of mirrored vdevs, and a mirror can be built across a few raidz vdevs. | | Is my understanding correct? Also, is there a limit on the depth of a vdev?
It looks like there is confusion coming from the use of the terms virtual device and vdev. The documentation can be confusing in this regard.

There are two types of vdevs: root and leaf. A pool's root vdevs are usually of the 'mirror' or 'raidz' type, but can also directly use the underlying devices if you don't want any redundancy from ZFS whatsoever. Pools dynamically stripe data across all the root vdevs present (and not yet full) in that pool at the time the data was written.

Leaf vdevs directly use the underlying devices. Underlying devices may be hard drives, solid state drives, iSCSI volumes, or even files on filesystems. Root vdevs cannot directly be used as underlying devices.


You are incorrect.

The man page states:

     Virtual devices cannot be nested, so a mirror or raidz  vir-
     tual device can only contain files or disks. Mirrors of mir-
     rors (or other combinations) are not allowed.

     A pool can have any number of virtual devices at the top  of
     the  configuration  (known as "root vdevs"). Data is dynami-
     cally distributed across all top-level  devices  to  balance
     data  among  devices.  As new virtual devices are added, ZFS
     automatically places data on the newly available devices.

     A pool can have any number of virtual devices at the top  of
     the  configuration  (known as "root vdevs"). Data is dynami-
     cally distributed across all top-level  devices  to  balance
     data  among  devices.  As new virtual devices are added, ZFS
     automatically places data on the newly available devices.

This has been touched on and discussed in some previous threads. There is a way to perform nesting, but it is *not* recommended. The trick is to insert another abstraction layer that hides ZFS from itself (or in other words convert a root vdev into an underlying device). An example would be creating iSCSI targets out of a ZFS pool, and then creating a second ZFS pool out of those iSCSI targets. Another example would be creating a ZFS pool out of files stored on another ZFS pool. The main reasons that have been given for not doing this are unknown edge and corner cases that may lead to deadlocks, and that it creates a complex structure with potentially undesirable and unintended performance and reliability implications. Deadlocks may occur in low resource conditions. If resources (disk space and RAM) never run low, the deadlock scenarios may not arise.

_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to