差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

blog:2019:2019-07-15 [2019-07-15 19:06] (現在)
Decomo 作成
行 1: 行 1:
 +====== FreeBSDのZFSでミラープールにUSB接続のHDDを追加する ======
  
 +FreeBSD 12.0-RELEASEのZFSのミラープールにUSB接続のHDDをアタッチしてみた。USB接続だろうと何だろうと、いつもの手順でzpool attachすれば行けるはずだけど、実のところ今までやったことが無かった。/usr/homeを置いてるHDDが手狭になってきたため、交換ついでに試してみた記録。
 +
 +まずは対象のミラープール(zhome)の確認。
 +
 +<code>
 +$ zpool status zhome
 +  pool: zhome
 + state: ONLINE
 +status: Some supported features are not enabled on the pool. The pool can
 +        still be used, but some features are unavailable.
 +action: Enable all features using 'zpool upgrade'. Once this is done,
 +        the pool may no longer be accessible by software that does not support
 +        the features. See zpool-features(7) for details.
 +  scan: resilvered 0 in 0 days 00:12:00 with 0 errors on Thu Nov 22 00:25:49 2018
 +config:
 +
 +        NAME        STATE     READ WRITE CKSUM
 +        zhome       ONLINE               0
 +          mirror-0  ONLINE               0
 +            ada7p1  ONLINE               0
 +            ada8p1  ONLINE               0
 +        logs
 +          mirror-1  ONLINE               0
 +            ada5p4  ONLINE               0
 +            ada6p4  ONLINE               0
 +        cache
 +          ada5p8    ONLINE               0
 +</code>
 +
 +ada7p1とada8p1でミラー構成になっていることが分かる。
 +
 +お次にcamcontrolで対象のHDDを確認。
 +
 +<code>
 +# camcontrol devlist
 +<TOSHIBA MQ03ABB300 JP050U>        at scbus9 target 0 lun 0 (ada7,pass8)
 +<WD Elements 25A3 1021>            at scbus13 target 0 lun 0 (pass11,da0)
 +<WD Elements 25A3 1021>            at scbus14 target 0 lun 0 (pass12,da1)
 +</code>
 +
 +必要なHDDのみ抜粋したため番号が飛んでいるが、ada7がプールを構成する2.5インチHDDの1つで、da0/da1がプールに追加するUSB接続の8TB HDDである。
 +
 +da0/da1にパーティションを作る。自分はディスク全体ではなくパーティションでZFSを構成する派なのである。
 +
 +8TBのHDDを用意したので、gpartでてきとーにda0のパーティションを切り、da1にそのままコピーする。
 +
 +<code>
 +# gpart create -s gpt da0
 +# gpart add > gpart add -a 4k -t freebsd-zfs -s 15620000000 da0
 +da0p1 added
 +$ gpart show da0
 +=>         40  15627986864  da0  GPT  (7.3T)
 +           40  15620000000    1  freebsd-zfs  (7.3T)
 +  15620000040      7986864       - free -  (3.8G)
 +
 +# gpart backup da0 | gpart restore da1
 +$ gpart show da1
 +=>         40  15627986864  da1  GPT  (7.3T)
 +           40  15620000000    1  freebsd-zfs  (7.3T)
 +  15620000040      7986864       - free -  (3.8G)
 +</code>
 +
 +そして、いつも通りzpool attachする。コマンドが返ってくるまで結構時間が掛かって不安になるけど、強い心で待つ。
 +
 +<code>
 +# zpool attach zhome ada7p1 da0p1
 +# zpool attach zhome ada7p1 da1p1
 +</code>
 +
 +あとはプールのresilveringが終わるのを待つだけ、何だけれども、今回初めての現象に遭遇した。
 +
 +デバイスをアタッチ後、zpool iostatで読み書きの状況を見ていたら、どういうわけか2MB/s程度の速度しか出ていない。
 +
 +<code>
 +               capacity     operations    bandwidth
 +pool        alloc   free   read  write   read  write
 +----------  -----  -----  -----  -----  -----  -----
 +zhome       2.26T   474G    637      0  2.49M      0
 +  mirror    2.26T   474G    637      0  2.49M      0
 +    ada7p1      -      -    288      0  1.31M      0
 +    ada8p1      -      -    273      0  1.19M      0
 +    da0p1            -      0      0      0      0
 +    da1p1            -      0      0      0      0
 +logs            -      -      -      -      -      -
 +  mirror     388K  1.98G      0      0      0      0
 +    ada5p4      -      -      0      0      0      0
 +    ada6p4      -      -      0      0      0      0
 +cache                -      -      -      -      -
 +  ada5p8    10.6G   139G      0      0      0      0
 +----------  -----  -----  -----  -----  -----  -----
 +</code>
 +
 +ミラーの片割れを物理的に取り外し、新しいHDDを取り付けてzpool replaceするいつもの方法、すなわちワザとプールをデグレさせて新しいHDDでミラーを復旧させる良い子のみんなは真似しちゃダメな方法だと直ぐにresilveringが走っていたのだけど…。
 +
 +暫く観察してたところ、どうやらresilveringの前にプールの全走査?をしているっぽい?
 +
 +<code>
 +$ zpool status zhome
 +  pool: zhome
 + state: ONLINE
 +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 14 08:38:19 2019
 +        355G scanned at 1.08G/s, 1.25M issued at 3.89K/s, 2.26T total ★←ここ
 +        0 resilvered, 0.00% done, no estimated completion time
 +config:
 +
 +        NAME        STATE     READ WRITE CKSUM
 +        zhome       ONLINE               0
 +          mirror-0  ONLINE               0
 +            ada7p1  ONLINE               0
 +(略)
 +</code>
 +
 +上記ログを見て分かる通り、1.08G/sという2.5インチHDDにはありえない速さでスキャンが行われており、実際の読み込み速度と合わせて考えると何らかのメタデータを読んでる?
 +
 +とりあえず「355G scanned at 1.08G/s」の部分がプールの容量に達した後、データの同期が開始されるようだ。一度始まってしまえば順当に100MB/s超の速度が出るのでしばらく待つ。
 +
 +<code>
 +$ zpool status zhome
 +  pool: zhome
 + state: ONLINE
 +  scan: resilvered 4.51T in 0 days 07:07:33 with 0 errors on Sun Jul 14 15:45:52 2019
 +config:
 +
 +        NAME        STATE     READ WRITE CKSUM
 +        zhome       ONLINE               0
 +          mirror-0  ONLINE               0
 +            ada7p1  ONLINE               0
 +            ada8p1  ONLINE               0
 +            da0p1   ONLINE               0
 +            da1p1   ONLINE               0
 +        logs
 +          mirror-1  ONLINE               0
 +            ada5p4  ONLINE               0
 +            ada6p4  ONLINE               0
 +        cache
 +          ada5p8    ONLINE               0
 +
 +errors: No known data errors
 +</code>
 +
 +終わってみれば94MB/s程度でresilveringが行われた事になるので、いつも通りの速度だったと言える。
 +
 +というわけで、SATAとUSBのHDDを混在させても問題なくZFSミラー構成が取れるという事が分かった。まぁ、当然ですけど。
  • blog/2019/2019-07-15.txt
  • 最終更新: 2019-07-15 19:06
  • by Decomo