結果を見ると設定した方が良いのかなという感じです。
さて、一通り試したいことは出来たので、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 件のコメント:
コメントを投稿