「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
おしまい。
最近のコメント