ZPool
Summary
ZFS filesystems are built on top of virtual storage pools called zpools. A zpool is constructed of virtual devices (vdevs), which are themselves constructed of block devices: files, hard drive partitions, or entire drives, with the last being the recommended usage.[6] Block devices within a vdev may be configured in different ways, depending on needs and space available: non-redundantly (similar to RAID 0), as a mirror (RAID 1) of two or more devices, as a RAID-Z group of three or more devices, or as a RAID-Z2 group of four or more devices.[7] Besides standard storage, devices can be designated as volatile read cache (ARC), nonvolatile write cache, or as a spare disk for use only in the case of a failure. Finally, when mirroring, block devices can be grouped according to physical chassis, so that the filesystem can continue in the face of the failure of an entire chassis.
ZPool Types
ZPool Stripe group:
zpool create vol0 /dev/sda /dev/sdb /dev/sdc
ZPool mirror group:
zpool create vol0 mirror /dev/sda /dev/sdb
ZPool raidz group: Similar to RAID5.
zpool create vol0 raidz /dev/sda /dev/sdb /dev/sdc
ZPool raidz2 set: Similar to RAID5 with dual parity.
zpool create vol0 raidz2 /dev/sdb /dev/sdc1 /dev/sdd /dev/sde
Status of the ZPool Storage
Checking the size and usage of zpools: zpool list
This will display something like:
root@ubuntu:~# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT vol0 29.8G 230K 29.7G 0% ONLINE -
Checking health status for ZPools: zpool status
This will display something like:
root@ubuntu:~# zpool status
pool: vol0
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
vol0 ONLINE 0 0 0
raidz2 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
spares
sde AVAIL
errors: No known data errorsChecking I/O statistics for ZPools: zpool iostat
This will display something like:
root@ubuntu:~# zpool iostat
capacity operations bandwidth
pool used avail read write read write
---------- ----- ----- ----- ----- ----- -----
vol0 230K 29.7G 0 0 10 431More detailed view can be seen by adding the -v to the end of the zpool iostat.
root@ubuntu:~# zpool iostat -v
capacity operations bandwidth
pool used avail read write read write
---------- ----- ----- ----- ----- ----- -----
vol0 230K 29.7G 0 0 12 518
raidz2 230K 29.7G 0 0 12 518
sdb - - 0 1 274 3.41K
sdc - - 0 1 174 3.41K
sdd - - 0 0 274 3.41K
---------- ----- ----- ----- ----- ----- -----
Adding Aditional Storage to a ZPool
Adding a spare:
zpool add vol0 spare /dev/sde
This will add a spare drive to be used as a hot spare in event that one of the drives in the zpool fails.
root@ubuntu:~# zpool status -v
pool: vol0
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
vol0 ONLINE 0 0 0
raidz2 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
spares
sde AVAIL Addtional storage to a MIRROR, RAIDZ or RAIDZ2 ZPool:
Adding additional storage to a mirror, raidz or raidz2 zpool must be done in like raid groups.
Example:
If I have a 3 drive raidz2 zpool....
root@ubuntu:~# zpool status
pool: vol0
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
vol0 ONLINE 0 0 0
raidz2 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
errors: No known data errors...additional storage must be added by introducing another 3 drive raidz2 raid group to the zpool.
zpool add vol0 raidz2 /dev/sde /dev/sdf /dev/sdg
So my vol0 zpool now looks like...
root@ubuntu:~# zpool status
pool: vol0
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
vol0 ONLINE 0 0 0
raidz2 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
raidz2 ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
errors: No known data errorsSame is true for zpool mirror and raidz sets.
Deleting a ZPool
Deleting a zpool and deleting all data within the zpool:zpool destroy
Usage is...
zpool destroy nameofzpool
example:
zpool destroy vol0
Removing a Zpool
If you have a zpool on eg a usb drive, this command will allow you to safely remove it:
zpool export nameofzpool
If you want to import the zpool again:
zpool import nameofzpool
Running zpool import with no arguments will list all available zpools.
Creating a Zpool on a disk image
Though not recommended for normal use, it is possible to create a zpool on top of a file.
dd if=/dev/zero of=filename.img bs=1M count=1000 zpool create nameofzpool /absolute/path/to/filename.img
will create an image of 1GB. It is also possible to create a sparse image, to create an image that can hold 100GB:
dd if=/dev/zero of=filename.img bs=1k count=1 seek=100M
ZFS/ZPool (last edited 2009-02-04 16:46:21 by 95-36-102-94)