2010年07月07日(Wed)

ZFSでmirror→RAID-Zに変更する手順の作業ログ

ZFSでミラーのプールをRAID-Zに変更する」の作業ログ。

初期状態

root@opensolaris.sonorilo.net:~# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror    ONLINE       0     0     0
            c8t2d0  ONLINE       0     0     0
            c8t3d0  ONLINE       0     0     0

errors: No known data errors
root@opensolaris.sonorilo.net:~# zfs list
NAME                       USED  AVAIL  REFER  MOUNTPOINT
rpool                     3.87G  3.95G    81K  /rpool
rpool/ROOT                3.11G  3.95G    19K  legacy
rpool/ROOT/opensolaris    8.09M  3.95G  2.90G  /
rpool/ROOT/opensolaris-1  3.10G  3.95G  2.92G  /
rpool/dump                 256M  3.95G   256M  -
rpool/export              10.0M  3.95G    21K  /export
rpool/export/home         10.0M  3.95G    21K  /export/home
rpool/export/home/shin    9.99M  3.95G  9.99M  /export/home/shin
rpool/swap                 512M  4.35G   101M  -
tank                       112K   976M    21K  /tank
tank/share                  20K   976M    20K  /tank/share

tankからc8t3d0を切り離す
root@opensolaris.sonorilo.net:~# zpool detach tank c8t3d0
root@opensolaris.sonorilo.net:~# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          c8t2d0    ONLINE       0     0     0

errors: No known data errors

ディスク代わりに使うsparse fileを作って、RAID-Zの"newtank"を作成。サイズが違うと怒られるので-fを使う。
root@opensolaris.sonorilo.net:~# mkfile -n 2g /tank/file
root@opensolaris.sonorilo.net:~# zpool create newtank raidz c8t3d0 c8t4d0 /tank/file
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: raidz contains both files and devices
root@opensolaris.sonorilo.net:~# zpool create -f newtank raidz c8t3d0 c8t4d0 /tank/file
root@opensolaris.sonorilo.net:~# zpool list
NAME      SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
newtank  2.95G   143K  2.95G     0%  ONLINE  -
rpool    7.94G  3.47G  4.47G    43%  ONLINE  -
tank     1008M  1.50M  1006M     0%  ONLINE  -
root@opensolaris.sonorilo.net:~# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          c8t2d0    ONLINE       0     0     0

errors: No known data errors
root@opensolaris.sonorilo.net:~# zpool status newtank
  pool: newtank
 state: ONLINE
 scrub: none requested
config:

        NAME            STATE     READ WRITE CKSUM
        newtank         ONLINE       0     0     0
          raidz1        ONLINE       0     0     0
            c8t3d0      ONLINE       0     0     0
            c8t4d0      ONLINE       0     0     0
            /tank/file  ONLINE       0     0     0

errors: No known data errors

すぐにディスク代わりのファイルはオフラインにする
root@opensolaris.sonorilo.net:~# zpool offline newtank /tank/file
root@opensolaris.sonorilo.net:~# zpool status newtank
  pool: newtank
 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
        newtank         DEGRADED     0     0     0
          raidz1        DEGRADED     0     0     0
            c8t3d0      ONLINE       0     0     0
            c8t4d0      ONLINE       0     0     0
            /tank/file  OFFLINE      0     0     0

errors: No known data errors

zfs sendのためのsnapshot作成
root@opensolaris.sonorilo.net:~# zfs snapshot -r tank@a

zfs send/recvで転送。tank/shareにはsharesmb=name=shareをつけていたがそれもちゃんと反映されている
root@opensolaris.sonorilo.net:~# zfs send -R tank@a | zfs recv -F -d newtank
root@opensolaris.sonorilo.net:~# zfs list
NAME                       USED  AVAIL  REFER  MOUNTPOINT
newtank                   1.53M  1.93G  1.41M  /newtank
newtank/share             25.3K  1.93G  25.3K  /newtank/share
rpool                     3.87G  3.95G    81K  /rpool
rpool/ROOT                3.11G  3.95G    19K  legacy
rpool/ROOT/opensolaris    8.09M  3.95G  2.90G  /
rpool/ROOT/opensolaris-1  3.10G  3.95G  2.92G  /
rpool/dump                 256M  3.95G   256M  -
rpool/export              10.0M  3.95G    21K  /export
rpool/export/home         10.0M  3.95G    21K  /export/home
rpool/export/home/shin    9.99M  3.95G  9.99M  /export/home/shin
rpool/swap                 512M  4.35G   101M  -
tank                      1.49M   975M  1.41M  /tank
tank/share                  20K   975M    20K  /tank/share
root@opensolaris.sonorilo.net:~# zfs get all newtank/share
NAME           PROPERTY              VALUE                    SOURCE
newtank/share  type                  filesystem               -
newtank/share  used                  25.3K                    -
newtank/share  available             1.93G                    -
newtank/share  referenced            25.3K                    -
newtank/share  compressratio         1.00x                    -
newtank/share  mounted               yes                      -
newtank/share  quota                 none                     default
newtank/share  reservation           none                     default
newtank/share  recordsize            128K                     default
newtank/share  mountpoint            /newtank/share           default
newtank/share  sharenfs              off                      default
newtank/share  checksum              on                       default
newtank/share  compression           off                      default
newtank/share  atime                 on                       default
newtank/share  devices               on                       default
newtank/share  exec                  on                       default
newtank/share  setuid                on                       default
newtank/share  readonly              off                      default
newtank/share  zoned                 off                      default
newtank/share  snapdir               hidden                   default
newtank/share  aclmode               groupmask                default
newtank/share  aclinherit            restricted               default
newtank/share  canmount              on                       default
newtank/share  shareiscsi            off                      default
newtank/share  xattr                 on                       default
newtank/share  copies                1                        default
newtank/share  version               3                        -
newtank/share  utf8only              off                      -
newtank/share  normalization         none                     -
newtank/share  casesensitivity       sensitive                -
newtank/share  vscan                 off                      default
newtank/share  nbmand                off                      default
newtank/share  sharesmb              name=share               local
newtank/share  refquota              none                     default
newtank/share  refreservation        none                     default
newtank/share  primarycache          all                      default
newtank/share  secondarycache        all                      default
newtank/share  usedbysnapshots       0                        -
newtank/share  usedbydataset         25.3K                    -
newtank/share  usedbychildren        0                        -
newtank/share  usedbyrefreservation  0                        -

tankを削除…しようとしたら固まった。smb/serverをとめてもう一回
root@opensolaris.sonorilo.net:~# zpool destroy tank

^C
root@opensolaris.sonorilo.net:~# svcadm disable smb/server
root@opensolaris.sonorilo.net:~# zfs destroy -r tank/share
root@opensolaris.sonorilo.net:~# zpool destroy tank

ミラーの片割れだったc8t2d0をnewtankに組み込み。データがいっぱいあったらリビルドに時間がかかるでしょう
root@opensolaris.sonorilo.net:~# zpool replace newtank /tank/file c8t2d0
root@opensolaris.sonorilo.net:~# zpool status
  pool: newtank
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Wed Jul  7 16:40:27 2010
config:

        NAME        STATE     READ WRITE CKSUM
        newtank     ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            c8t3d0  ONLINE       0     0     0
            c8t4d0  ONLINE       0     0     0
            c8t2d0  ONLINE       0     0     0  792K resilvered

errors: No known data errors

  pool: rpool
 state: ONLINE
 scrub: none requested
config:

        NAME          STATE     READ WRITE CKSUM
        rpool         ONLINE       0     0     0
          mirror      ONLINE       0     0     0
            c8t0d0s0  ONLINE       0     0     0
            c8t1d0s0  ONLINE       0     0     0

errors: No known data errors

newtank→tankに名前を変更。smb/serverをとめていたせいかエラーになった。
root@opensolaris.sonorilo.net:~# zpool export newtank
root@opensolaris.sonorilo.net:~# zpool import newtank tank
cannot share 'tank/share': smb add share failed
root@opensolaris.sonorilo.net:~# svcadm enable -r smb/server
svcadm: svc:/milestone/network depends on svc:/network/physical, which has multiple instances.
root@opensolaris.sonorilo.net:~# zfs list
NAME                       USED  AVAIL  REFER  MOUNTPOINT
rpool                     3.87G  3.95G    81K  /rpool
rpool/ROOT                3.11G  3.95G    19K  legacy
rpool/ROOT/opensolaris    8.09M  3.95G  2.90G  /
rpool/ROOT/opensolaris-1  3.10G  3.95G  2.92G  /
rpool/dump                 256M  3.95G   256M  -
rpool/export              10.0M  3.95G    21K  /export
rpool/export/home         10.0M  3.95G    21K  /export/home
rpool/export/home/shin    9.99M  3.95G  9.99M  /export/home/shin
rpool/swap                 512M  4.35G   101M  -
tank                      1.58M  1.93G  1.41M  /tank
tank/share                25.3K  1.93G  25.3K  /tank/share

おしまい。


タグ

www.flickr.com
This is a Flickr badge showing public items from suzukis tagged with japan. Make your own badge here.

最近の話題 RSS feed

最近のコメント

メール("no-spam."を削除してください)