ZFS - zpool administration made easy Print E-mail
(4 votes, average: 3.50 out of 5)
Written by geekyS   
Tuesday, 23 December 2008 09:00

ZFS - zpool administration

 

Create 7 files using mkfile command to perform all zpool related activities. 

[root@geekyfacts]# mkdir /pool


[root@geekyfacts]# cd /pool


[root@geekyfacts]# ls


[root@geekyfacts]# mkfile 100m disk1 disk2 disk3 disk4 disk5 disk6


[root@geekyfacts]# mkfile 50m disk7


[root@geekyfacts]# ls -l
total 1332048
-rw------T   1 root     root     104857600 Dec 22 23:59 disk1
-rw------T   1 root     root     104857600 Dec 22 23:59 disk2
-rw------T   1 root     root     104857600 Dec 22 23:59 disk3
-rw------T   1 root     root     104857600 Dec 22 23:59 disk4
-rw------T   1 root     root     104857600 Dec 22 23:59 disk5
-rw------T   1 root     root     104857600 Dec 22 23:59 disk6
-rw------T   1 root     root     52428800 Dec 23 00:00 disk7
[root@geekyfacts]#

 

zpool create

zpool create - dry run without creating the pool

[root@geekyfacts]# zpool create -n testpool /pool/disk1 /pool/disk2
would create 'testpool' with the following layout:

        testpool
          /pool/disk1
          /pool/disk2
[root@geekyfacts]#

zpool create with two disks in the pool

[root@geekyfacts]# zpool create testpool /pool/disk1 /pool/disk2


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        testpool       ONLINE       0     0     0
          /pool/disk1  ONLINE       0     0     0
          /pool/disk2  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#


[root@geekyfacts]# zpool destroy testpool

zpool create with pool properties configured during creation


[root@geekyfacts]# zpool create -o autoreplace=on testpool /pool/disk1 /pool/disk2


[root@geekyfacts]# zpool get autoreplace  testpool
NAME      PROPERTY     VALUE     SOURCE
testpool  autoreplace  on        local
[root@geekyfacts]#


[root@geekyfacts]# zpool destroy testpool

zpool create with custom mount point configuration


[root@geekyfacts]# zpool create -m /poolmnt  testpool /pool/disk1 /pool/disk2


[root@geekyfacts]# zpool list
NAME       SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
testpool   191M   103K   191M     0%  ONLINE  -


[root@geekyfacts]# df /poolmnt
/poolmnt           (testpool          ):  325435 blocks   325435 files
[root@geekyfacts]#


[root@geekyfacts]# zpool destroy testpool

zpool create with mirror configuration

[root@geekyfacts]# zpool create testpool  mirror /pool/disk1 /pool/disk2


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#


[root@geekyfacts]# zpool destroy testpool

zpool create with mirror + striping configuration


[root@geekyfacts]# zpool create testpool  mirror /pool/disk1 /pool/disk2 mirror /pool/disk3 /pool/disk4


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0
            /pool/disk4  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#


[root@geekyfacts]# zpool destroy testpool

zpool create with raidz1 configuration  


[root@geekyfacts]# zpool create testpool raidz /pool/disk1 /pool/disk2 /pool/disk3


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          raidz1         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0

errors: No known data errors


[root@geekyfacts]# zpool destroy testpool

 

zpool create with raidz  + striping configuration  


[root@geekyfacts]# zpool create testpool raidz /pool/disk1 /pool/disk2 /pool/disk3 raidz  /pool/disk4 /pool/disk5 /pool/disk6


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          raidz1         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0
          raidz1         ONLINE       0     0     0
            /pool/disk4  ONLINE       0     0     0
            /pool/disk5  ONLINE       0     0     0
            /pool/disk6  ONLINE       0     0     0

errors: No known data errors


[root@geekyfacts]# zpool destroy testpool
[root@geekyfacts]#

 

zpool create with raidz2 configuration


[root@geekyfacts]# zpool create testpool raidz2 /pool/disk1 /pool/disk2 /pool/disk3


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          raidz2         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0

 

[root@geekyfacts]# zpool destroy testpool

zpool create with hot spare disks

[root@geekyfacts]# zpool create testpool /pool/disk1 /pool/disk2 spare /pool/disk3


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        testpool       ONLINE       0     0     0
          /pool/disk1  ONLINE       0     0     0
          /pool/disk2  ONLINE       0     0     0
        spares
          /pool/disk3  AVAIL

errors: No known data errors
 

[root@geekyfacts]# zpool destroy testpool

 

zpool create with mismatched replication levels( not recommended , use -f to force the creation)  


[root@geekyfacts]# zpool create testpool mirror /pool/disk1 /pool/disk2 raidz /pool/disk4 /pool/disk5 /pool/disk6
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: both mirror and raidz vdevs are present
[root@geekyfacts]#

zpool create with mirroring disks of different sizes( not recommended, use -f to force the creation) 


[root@geekyfacts]# zpool create testpool mirror /pool/disk1 /pool/disk7
invalid vdev specification
use '-f' to override the following errors:
mirror contains devices of different sizes
[root@geekyfacts]#

zpool add

[root@geekyfacts]# zpool create testpool /pool/disk1 /pool/disk2


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        testpool       ONLINE       0     0     0
          /pool/disk1  ONLINE       0     0     0
          /pool/disk2  ONLINE       0     0     0

errors: No known data errors


[root@geekyfacts]# zpool add testpool /pool/disk3


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        testpool       ONLINE       0     0     0
          /pool/disk1  ONLINE       0     0     0
          /pool/disk2  ONLINE       0     0     0
          /pool/disk3  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#


zpool remove

zpool remove can be used only to remove the hot spare devices.

[root@geekyfacts]# zpool create testpool /pool/disk1 /pool/disk2 spare /pool/disk3


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        testpool       ONLINE       0     0     0
          /pool/disk1  ONLINE       0     0     0
          /pool/disk2  ONLINE       0     0     0
        spares
          /pool/disk3  AVAIL

errors: No known data errors


[root@geekyfacts]# zpool remove testpool /pool/disk3


[root@geekyfacts]#  zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        testpool       ONLINE       0     0     0
          /pool/disk1  ONLINE       0     0     0
          /pool/disk2  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#

zpool list

 

[root@geekyfacts]# zpool create testpool /pool/disk1 /pool/disk2 /pool/disk3


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        testpool       ONLINE       0     0     0
          /pool/disk1  ONLINE       0     0     0
          /pool/disk2  ONLINE       0     0     0
          /pool/disk3  ONLINE       0     0     0

errors: No known data errors


[root@geekyfacts]# zpool list
NAME       SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
testpool   286M    97K   286M     0%  ONLINE  -

[root@geekyfacts]#


 

List zpool details in script mode

 

[root@geekyfacts]# zpool list -H
testpool        286M    97K     286M    0%      ONLINE  -

[root@geekyfacts]#


 

List only specified zpool parameters

 

[root@geekyfacts]# zpool list -o size,health
 SIZE  HEALTH
 286M  ONLINE
[root@geekyfacts]#

 

zpool destroy


[root@geekyfacts]# zpool create testpool /pool/disk1 /pool/disk2


[root@geekyfacts]# zpool destroy testpool

 

zpool iostat

[root@geekyfacts]# zpool  iostat
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
testpool     114K   286M      0      1  1.84K  26.3K
[root@geekyfacts]#

 

List iostat of each disks involved in the pool


[root@geekyfacts]# zpool iostat -v
                  capacity     operations    bandwidth
pool            used  avail   read  write   read  write
-------------  -----  -----  -----  -----  -----  -----
testpool        114K   286M      0      0    815  11.3K
  /pool/disk1    41K  95.5M      0      0    272  3.79K
  /pool/disk2    32K  95.5M      0      0    271  3.76K
  /pool/disk3    41K  95.5M      0      0    272  3.79K
-------------  -----  -----  -----  -----  -----  -----
[root@geekyfacts]#

 

List iostat of pool in specific intervals  

 

[root@geekyfacts]# zpool  iostat 1 5
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
testpool     114K   286M      0      0    867  12.1K
testpool     114K   286M      0      0      0      0
testpool     114K   286M      0      0      0      0
testpool     114K   286M      0      0      0      0
testpool     114K   286M      0      0      0      0
[root@geekyfacts]#

 

zpool status


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        testpool       ONLINE       0     0     0
          /pool/disk1  ONLINE       0     0     0
          /pool/disk2  ONLINE       0     0     0
          /pool/disk3  ONLINE       0     0     0

errors: No known data errors

[root@geekyfacts]#


 

Display status of pool which is not healthy

 

[root@geekyfacts]# zpool status  -x
all pools are healthy
[root@geekyfacts]#

zpool offline

[root@geekyfacts]# zpool create testpool mirror /pool/disk1 /pool/disk2 /pool/disk3

[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0

errors: No known data errors

[root@geekyfacts]# zpool offline testpool /pool/disk3

[root@geekyfacts]# zpool status
  pool: testpool
 state: DEGRADED
status: One or more devices has been taken offline by the administrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using 'zpool online' or replace the device with
        'zpool replace'.
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         DEGRADED     0     0     0
          mirror         DEGRADED     0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  OFFLINE      0     0     0

errors: No known data errors
[root@geekyfacts]#

 

Make disks offline temporarily


[root@geekyfacts]# zpool offline -t testpool /pool/disk3


zpool online

 

[root@geekyfacts]# zpool online testpool /pool/disk3


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Dec 23 00:42:39 2008
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#

 

zpool clear

 It clears the device errors in the pool

 

[root@geekyfacts]# zpool clear testpool

 

zpool attach


[root@geekyfacts]# zpool create testpool mirror /pool/disk1 /pool/disk2 /pool/disk3


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0

errors: No known data errors


[root@geekyfacts]# zpool attach testpool /pool/disk3 /pool/disk4


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Dec 23 00:46:48 2008
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0
            /pool/disk4  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#

 

zpool detach

[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Dec 23 00:46:48 2008
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0
            /pool/disk4  ONLINE       0     0     0

errors: No known data errors


[root@geekyfacts]# zpool detach testpool /pool/disk4


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Dec 23 00:46:48 2008
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#

 

zpool replace

[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Dec 23 00:46:48 2008
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk3  ONLINE       0     0     0

errors: No known data errors


[root@geekyfacts]# zpool replace testpool /pool/disk3 /pool/disk4


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Dec 23 00:49:38 2008
config:

        NAME               STATE     READ WRITE CKSUM
        testpool           ONLINE       0     0     0
          mirror           ONLINE       0     0     0
            /pool/disk1    ONLINE       0     0     0
            /pool/disk2    ONLINE       0     0     0
            replacing      ONLINE       0     0     0
              /pool/disk3  ONLINE       0     0     0
              /pool/disk4  ONLINE       0     0     0

errors: No known data errors


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Dec 23 00:49:38 2008
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk4  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#

 

zpool scrub


[root@geekyfacts]# zpool scrub testpool


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: scrub completed after 0h0m with 0 errors on Tue Dec 23 00:50:57 2008
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk4  ONLINE       0     0     0
[root@geekyfacts]#

 

Stop the running scrub operation

 

[root@geekyfacts]# zpool scrub -s testpool

 

zpool export


[root@geekyfacts]# zpool export testpool


[root@geekyfacts]# zpool status
no pools available


[root@geekyfacts]#

 

zpool import

Displays the list of pools which can be imported


[root@geekyfacts]# zpool import -d /pool
  pool: testpool
    id: 3250275846513037638
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

        testpool         ONLINE
          mirror         ONLINE
            /pool/disk1  ONLINE
            /pool/disk2  ONLINE
            /pool/disk4  ONLINE
[root@geekyfacts]#  

 

Import pool based on the ID


[root@geekyfacts]# zpool import -d /pool 3250275846513037638


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk4  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#

 

Display the list of pools destryed  

 

[root@geekyfacts]# zpool import -D -d /pool
  pool: testpool
    id: 3250275846513037638
 state: ONLINE (DESTROYED)
action: The pool can be imported using its name or numeric identifier.
config:

        testpool         ONLINE
          mirror         ONLINE
            /pool/disk1  ONLINE
            /pool/disk2  ONLINE
            /pool/disk4  ONLINE
[root@geekyfacts]#

 

Import destroyed pool based on the ID

 

[root@geekyfacts]# zpool import -D -d /pool 3250275846513037638


[root@geekyfacts]# zpool status
  pool: testpool
 state: ONLINE
 scrub: none requested
config:

        NAME             STATE     READ WRITE CKSUM
        testpool         ONLINE       0     0     0
          mirror         ONLINE       0     0     0
            /pool/disk1  ONLINE       0     0     0
            /pool/disk2  ONLINE       0     0     0
            /pool/disk4  ONLINE       0     0     0

errors: No known data errors
[root@geekyfacts]#

 

zpool upgrade

Display the pool formatted version


[root@geekyfacts]# zpool upgrade
This system is currently running ZFS pool version 10.

All pools are formatted using this version.

[root@geekyfacts]#


 

Display the supported pool version

 

[root@geekyfacts]# zpool upgrade  -v
This system is currently running ZFS pool version 10.

The following versions are supported:

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
 3   Hot spares and double parity RAID-Z
 4   zpool history
 5   Compression using the gzip algorithm
 6   bootfs pool property
 7   Separate intent log devices
 8   Delegated administration
 9   refquota and refreservation properties
 10  Cache devices
For more information on a particular version, including supported releases, see:

http://www.opensolaris.org/os/community/zfs/version/N

Where 'N' is the version number.
[root@geekyfacts]#

 

zpool get

Display all parameter values set for the pool


[root@geekyfacts]# zpool get all testpool
NAME      PROPERTY     VALUE       SOURCE
testpool  size         95.5M       -
testpool  used         114K        -
testpool  available    95.4M       -
testpool  capacity     0%          -
testpool  altroot      -           default
testpool  health       ONLINE      -
testpool  guid         3250275846513037638  -
testpool  version      10          default
testpool  bootfs       -           default
testpool  delegation   on          default
testpool  autoreplace  off         default
testpool  cachefile    -           default
testpool  failmode     wait        default
[root@geekyfacts]# zpool get delegation testpool
NAME      PROPERTY    VALUE       SOURCE
testpool  delegation  on          default
[root@geekyfacts]#

zfs set


[root@geekyfacts]# zpool set autoreplace=on testpool


[root@geekyfacts]# zpool get autoreplace testpool
NAME      PROPERTY     VALUE     SOURCE
testpool  autoreplace  on        local
[root@geekyfacts]#


 

Last Updated on Tuesday, 23 December 2008 15:44