ZFSの構成ディスクを交換

 320GBのディスク1台と、500GBのディスク2台で構成されているRAID-Zプールの320GBディスクを500GBのものに交換するテスト。
まずは状態を見る。

# zpool status -v
  pool: zhome
 state: ONLINE
 scrub: resilver completed with 0 errors on Thu Feb 19 23:33:55 2009
config:

        NAME        STATE     READ WRITE CKSUM
        zhome       ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0

errors: No known data errors
# zfs list
NAME    USED  AVAIL  REFER  MOUNTPOINT
zhome   306G   277G   306G  /zhome

ここで一度電源を切り、ディスクを交換。

# zpool status -v
  pool: zhome
 state: ONLINE
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-4J
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zhome       ONLINE       1     0     0
          raidz1    ONLINE       1     0     0
            sdb     UNAVAIL      0     0     0  corrupted data
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0

errors: No known data errors

sdbにエラーがあると言っているので、交換したことを教える。

# zpool replace zhome sdb

ガリガリガリという音とともに再構築が始まる。

# zpool status -v
  pool: zhome
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
 scrub: resilver in progress, 0.00% done, 478h8m to go
config:

        NAME           STATE     READ WRITE CKSUM
        zhome          DEGRADED     2     0    38
          raidz1       DEGRADED     2     0    38
            replacing  DEGRADED     0     0     0
              sdb/old  UNAVAIL      0     0     0  cannot open
              sdb      ONLINE       0     0     0
            sdc        ONLINE       0     0     0
            sdd        ONLINE       0     0     0

errors: No known data errors

再構築中のディスクのアクセス状況。

# zpool iostat -v
                  capacity     operations    bandwidth
pool            used  avail   read  write   read  write
-------------  -----  -----  -----  -----  -----  -----
zhome           459G   933G     26     19  1.18M  47.8K
  raidz1        459G   933G     26     19  1.18M  47.8K
    replacing      -      -     50     75  2.23M  1.17M
      sdb/old      -      -      0      0      0      0
      sdb          -      -     37     70  2.23M  1.18M
    sdc            -      -     39     14  1.76M  26.1K
    sdd            -      -     40     16  1.76M  27.3K
-------------  -----  -----  -----  -----  -----  -----

容量が増えていることにも注目。

 …と、うまくいったはずだったのだが実際は

status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
   see: http://www.sun.com/msg/ZFS-8000-8A

このようなエラーが出ていくつかのファイルが消失してしまった。う〜む、何がいけなかったのだろうか。もう少しZFSを研究しないと大事なデータは入れられないな。