Jeder Speicher-Pool enthält eines oder mehrere virtuelle Geräte. Unter einem virtuellen Gerät versteht man eine interne Darstellung eines Speicher-Pools zur Beschreibung der Struktur der physischen Datenspeicherung und Fehlercharakteristika des Speicher-Pools. Somit repräsentiert ein virtuelles Gerät die Datenträger bzw. Dateien, die zum Erstellen eines Speicher-Pools verwendet werden. Ein Pool kann beliebig viele virtuelle Geräte auf oberster Konfigurationsebene aufweisen. Diese werden vdev der obersten Ebene genannt.
Wenn ein virtuelles Gerät der obersten Ebene zwei oder mehrere physische Geräte enthält, sorgt die Konfiguration für Datenredundanz durch Datenspiegelung oder virtuelle RAID-Z-Geräte. Diese virtuellen Geräte bestehen aus Datenträgern, Datenträgerbereichen oder Dateien. Als Spare werden spezielle virtuelle Geräte bezeichnet, die die verfügbaren Hot-Spares für einen Pool überwachen.
Das folgende Beispiel zeigt, wie ein Pool erstellt wird, der aus zwei virtuellen Geräten der obersten Ebene mit je zwei gespiegelten Festplatten besteht:
# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0 |
Das folgende Beispiel zeigt, wie ein Pool erstellt wird, der aus einem virtuellen Gerät der obersten Ebene mit vier Festplatten besteht:
# zpool create mypool raidz2 c1d0 c2d0 c3d0 c4d0 |
Mit dem Befehl zpool add kann diesem Pool ein weiteres virtuelles Gerät der obersten Ebene hinzugefügt werden. Beispiel:
# zpool add mypool raidz2 c2d1 c3d1 c4d1 c5d1 |
Festplatten, Festplattenbereiche oder Dateien, die in nicht-redundanten Pools verwendet werden, fungieren als virtuelle Geräte der obersten Hierarchieebene. Speicher-Pools enthalten normalerweise mehrere virtuelle Geräte der obersten Hierarchieebene. ZFS verteilt Daten dynamisch mithilfe des sog. Stripe-Verfahrens über alle in der obersten Hierarchieebene befindlichen virtuellen Geräte eines Pools.
Virtuelle Geräte und die physischen Geräte, die in einem ZFS-Speicher-Pool enthalten sind, werden mit dem Befehl zpool status angezeigt. Beispiel:
# zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 c0t3d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors |