Table of Contents
This section provides detailed information about the following storage pool components:
Disks
Files
Virtual devices
The most basic element of a storage pool is a piece of physical storage.
Physical storage can be any block device of at least 128 Mbytes in size. Typically,
this device is a hard drive that is visible to the system in the /dev/dsk
directory.
A storage device can be a whole disk (c1t0d0
) or
an individual slice (c0t0d0s7
). The recommended mode
of operation is to use an entire disk, in which case the disk does not need
to be specially formatted. ZFS formats the disk using an EFI label to contain
a single, large slice. When used in this way, the partition table that is
displayed by the format command appears similar to the
following:
Current partition table (original): Total disk sectors available: 71670953 + 16384 (reserved sectors) Part Tag Flag First Sector Size Last Sector 0 usr wm 34 34.18GB 71670953 1 unassigned wm 0 0 0 2 unassigned wm 0 0 0 3 unassigned wm 0 0 0 4 unassigned wm 0 0 0 5 unassigned wm 0 0 0 6 unassigned wm 0 0 0 7 unassigned wm 0 0 0 8 reserved wm 71670954 8.00MB 71687337
To use whole disks, the disks must be named using the standard Solaris
convention, such as /dev/dsk/cXtXdXsX
. Some third-party
drivers use a different naming convention or place disks in a location other
than the /dev/dsk
directory. To use these disks, you
must manually label the disk and provide a slice to ZFS.
ZFS applies an EFI label when you create a storage pool with whole disks. Disks can be labeled with a traditional Solaris VTOC label when you create a storage pool with a disk slice.
Slices should only be used under the following conditions:
The device name is nonstandard.
A single disk is shared between ZFS and another file system, such as UFS.
A disk is used as a swap or a dump device.
Disks can be specified by using either the full path, such as /dev/dsk/c1t0d0
, or a shorthand name that consists of the device name within the /dev/dsk
directory, such as c1t0d0
. For example,
the following are valid disk names:
c1t0d0
/dev/dsk/c1t0d0
c0t0d6s2
/dev/foo/disk
ZFS works best when given whole physical disks. Although constructing logical devices using a volume manager, such as Solaris Volume Manager (SVM), Veritas Volume Manager (VxVM), or a hardware volume manager (LUNs or hardware RAID) is possible, these configurations are not recommended. While ZFS functions properly on such devices, less-than-optimal performance might be the result.
Disks are identified both by their path and by their device ID, if available. This method allows devices to be reconfigured on a system without having to update any ZFS state. If a disk is switched between controller 1 and controller 2, ZFS uses the device ID to detect that the disk has moved and should now be accessed using controller 2. The device ID is unique to the drive's firmware. While unlikely, some firmware updates have been known to change device IDs. If this situation happens, ZFS can still access the device by path and update the stored device ID automatically. If you inadvertently change both the path and the ID of the device, then export and re-import the pool in order to use it.
ZFS also allows you to use UFS files as virtual devices in your storage pool. This feature is aimed primarily at testing and enabling simple experimentation, not for production use. The reason is that any use of files relies on the underlying file system for consistency. If you create a ZFS pool backed by files on a UFS file system, then you are implicitly relying on UFS to guarantee correctness and synchronous semantics.
However, files can be quite useful when you are first trying out ZFS or experimenting with more complicated layouts when not enough physical devices are present. All files must be specified as complete paths and must be at least 128 Mbytes in size. If a file is moved or renamed, the pool must be exported and re-imported in order to use it, as no device ID is associated with files by which they can be located.
Each storage pool is comprised of one or more virtual devices. A virtual device is an internal representation of the storage pool that describes the layout of physical storage and its fault characteristics. As such, a virtual device represents the disk devices or files that are used to create the storage pool.
Two top-level virtual devices provide data redundancy: mirror and RAID-Z virtual devices. These virtual devices consist of disks, disk slices, or files.
Disks, disk slices, or files that are used in pools outside of mirrors and RAID-Z virtual devices, function as top-level virtual devices themselves.
Storage pools typically contain multiple top-level virtual devices. ZFS dynamically stripes data among all of the top-level virtual devices in a pool.