結果を見ると設定した方が良いのかなという感じです。
さて、一通り試したいことは出来たので、2台のmirrorから4台のraidzに移行しようと思います。
環境は、こんな感じです。
- HP ProLiant MicroServer
- Seagete ST3000DM001 x4台
- CentOS 6.2
- ZFS on Linux (0.6.0 RC8)
まず、mirrorで使用していたHDD1台と、性能比較で使用したHDD3台(poolはdestroy済み)を接続します。
$ cd /dev/disk/by-id $ ls scsi*ST3000*part1 scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1 scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1次のようにしてmirrorプールをimportします。
dtpoolとして使用していたものをopoolでインポートしています。
# zpool import -d /dev/disk/by-id/ dtpool opool
pool: opool
id: 3916950419245301417
state: DEGRADED
status: One or more devices contains corrupted data.
action: The pool can be imported despite missing or damaged devices. The
fault tolerance of the pool may be compromised if imported.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
config:
opool DEGRADED
mirror-0 DEGRADED
ata-ST3000DM001-9YN166_Z1F0AAAA-part1 ONLINE
sdb1 FAULTED corrupted data
なんか、sta-*でimportされました。次に、移行先のraidzを作るためのダミーデバイスを作ります。
$ dd if=/dev/zefo of=/var/tmp/dummy bs=1024K count=1 seek=3000000raidzのデバイスの1つに穴開きファイルを使って、データ移行後に入れ換える作戦です。
次のようにraidzのプールを作ります。
# zpool create -o ashift=12 -f dtpool raidz \
/var/tmp/dummy \
scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 \
scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 \
scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1
# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
dtpool 10.9T 912K 10.9T 0% 1.00x ONLINE -
opool 2.72T 2.32T 412G 85% 1.00x DEGRADED -
#
ashift=12で、4Kセクタ用の設定を指定しています。ダミーデバイス(ファイル)は、オフラインにしないとデータ移行時に書き込まれてしまうのでオフラインにします。/varに3TBなんてありません。
情報をみるとこんな感じになります。
# zpool offline dtpool /var/tmp/dummy
# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
dtpool 10.9T 912K 10.9T 0% 1.00x DEGRADED -
opool 2.72T 2.32T 412G 85% 1.00x DEGRADED -
# zpool status
pool: dtpool
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'.
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dtpool DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
/var/tmp/dummy OFFLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1 ONLINE 0 0 0
errors: No known data errors
pool: opool
state: DEGRADED
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://zfsonlinux.org/msg/ZFS-8000-4J
scan: resilvered 39K in 0h0m with 0 errors on Fri Jun 29 22:41:17 2012
config:
NAME STATE READ WRITE CKSUM
opool DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
ata-ST3000DM001-9YN166_Z1F0AAAA-part1 ONLINE 0 0 0
9459549258261188968 UNAVAIL 0 0 0 was /dev/sdb1
errors: No known data errors
次のようにして移行元のマウントを変更します。# zfs set mountpoint=/old/ts opool/ts # zfs set mountpoint=/old/backup opool/backup # zfs mount -a # df -h Filesystem Size Used Avail Use% Mounted on : /dev/sde3 20G 1.2G 18G 7% /var dtpool 7.8T 256K 7.8T 1% /dtpool opool 369G 128K 369G 1% /opool opool/ts 2.7T 2.4T 369G 87% /old/ts opool/backup 372G 2.7G 369G 1% /old/backup #移行先の領域をつくります。
# zfs create dtpool/ts # zfs create dtpool/backup # zfs set mountpoint=/data/ts dtpool/ts # zfs set mountpoint=/data/backup dtpool/backup # zfs mount -a # df -h Filesystem Size Used Avail Use% Mounted on : dtpool 7.8T 128K 7.8T 1% /dtpool opool 369G 128K 369G 1% /opool opool/ts 2.7T 2.4T 369G 87% /old/ts opool/backup 372G 2.7G 369G 1% /old/backup dtpool/ts 7.8T 128K 7.8T 1% /data/ts dtpool/backup 7.8T 128K 7.8T 1% /data/backup #領域が出来たのでデータ移行します。
zfsのsend,receiveでも良かったんですが、今回は進捗を見たかったのでrsyncを使いました。
TSデータ以外は、バックアップして整理したら意外と少なくなりました。
データ移行が完了したら、mirrorプールを削除して、raidzプールのダミーデバイスをリプレースします。
# zpool destroy opool
# zpool list
AME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
dtpool 10.9T 3.27T 7.61T 30% 1.00x DEGRADED -
# zpool status
pool: dtpool
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'.
scan: none requested
config:
NAME STATE READ WRITE CKSUM
dtpool DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
/var/tmp/dummy OFFLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1 ONLINE 0 0 0
errors: No known data errors
# zpool replace dtpool /var/tmp/dummy scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1
リプレース中は、次のような状態になります。リプレース開始から暫くすると転送レートが安定して、それなりの終了時間がわかるようになります。
# zpool status
pool: dtpool
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.
scan: resilver in progress since Sun Jul 1 19:01:13 2012
35.4G scanned out of 3.27T at 232M/s, 4h3m to go
8.84G resilvered, 1.06% done
config:
NAME STATE READ WRITE CKSUM
dtpool DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
replacing-0 OFFLINE 0 0 0
/var/tmp/dummy OFFLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1 ONLINE 0 0 0 (resilvering)
scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1 ONLINE 0 0 0
errors: No known data errors
で、大体4時間後に完了しました。
# zpool status
pool: dtpool
state: ONLINE
scan: resilvered 836G in 3h51m with 0 errors on Sun Jul 1 22:53:02 2012
config:
NAME STATE READ WRITE CKSUM
dtpool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0AAAA-part1 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0BBBB-part1 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0CCCC-part1 ONLINE 0 0 0
scsi-SATA_ST3000DM001-9YN_Z1F0DDDD-part1 ONLINE 0 0 0
errors: No known data errors
# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
dtpool 10.9T 3.28T 7.60T 30% 1.00x ONLINE -
時間はかかりましたが、特に問題なく移行完了できました。
0 件のコメント:
コメントを投稿