zfs raidz on FreeBSD8.2 with Rocket Raid 2720

先週(?)IYHしたRocketRaid2720を使ってFreeBSD8.2上でzfs raidzの構築とベンチなメモ

最初にひっかかった問題とバグ

rr2720_bios_v10
> sata600対応ドライブ(WD20EARX)でもsata300表示される(実際は600で動いてる
> jbodをディスクごとに作ってもCHECKSUM ERRORが起きる
> raid arrayを組んでもFreeBSD8.2の/devに<del>生えてこない</del>
>>追記:
gの人「生えてきます。hptraidconfでステータスが見れないのでデグレに気づかないと終わり」
gの人「そもそもhptraidconfのバージョンが古い」
> non-rayd biosを使ってもFreeBSD8.2の/devに生えてこない
> S.M.A.R.Tとれなくね?
> Initializedかnewにしかならない
>> newの状態でRAIDBIOS(Ctrl+H)からInitializeすればInitializedのstatusになる
rr2720_bios_v12
> jbodがディスク1本で作れない
> raid0,raid1もディスク2本ずつで作れたのが認識してるドライブ全体を
使わないと作れない
> Initializedかnewにしかならない
(ry

対策方法

MBRもしくはGPTで初期化を必ず行う
zfsをディスク先頭から使うのを諦める(MBR|GPT->zfsでディスク先頭から始まる)

以降手順をつらつらと書きマッスル

手順その1下準備編

まず最初にディスク(WD20EARX)をFreeBSD8.2で認識させないことには何も始まらないので
legacyとしてrr2720に認識させる必要がある。

  1. まず全裸になります。
  2. 次にrr2720からHDDのケーブルをはずします。
  3. M/BのSATAポート(なければクロシコSATAカードなど)に繋ぎます。
  4. 徐に以下のコマンドを実行します。

ケーブルはずすのまんどくせな人用
説明しよう(CV:誰か)

MBR/GPTで初期化したディスクはRAID BIOSでもlegacyとして認識できるが
RR2720に繋いだ状態でMBR/GPT初期化したくても、new/initializedで認識されていれば
arrayを組まないと生えてこない。
なので別の環境/カードで初期化する必要があるため。

# gpart create -s gpt /dev/XXX
# XXX created
#  gpart add -b 40 -t freebsd-zfs /dev/XXX
gな人「(-b 40はAFTなディスクに対するおまじない。512B/sectorの場合は-b 34にする)」
※ XXXはデバイス名

WD15EARSでのベンチ結果

# dd if=/dev/zero of=dev/ad5p1 bs=1m count=1024
1048+0 records in
1048+0 records out
1098907648 bytes transferred in 11.128260 secs (96487846 bytes/sec)

# dd if=/dev/urandom of=dev/ad5p1 bs=1m count=1024
1048+0 records in
1048+0 records out
1098907648 bytes transferred in 22.273503 secs (48207137 bytes/sec)
手順その2(ドライバの導入)

某所ログからの甜菜

glxxxxxx > $ cd /tmp && fetch http://www.highpoint-tech.cn/BIOS_Driver/rr272x_1x/FreeBSD/rr272x_1x-bsd-8.0-v1.0.10.0108.tgz
glxxxxxx > $ mkdir /tmp/rr2720
glxxxxxx > $ cd /tmp && mv rr272x* rr2720/ && cd rr2720
glxxxxxx > $ tar zxf rr272x_1x-bsd-8.0-v1.0.10.0108.tgz
glxxxxxx > アーキテクチャにあわせてドライバーをコピーする
glxxxxxx > $ cp rr272x_1x-8.0-amd64.ko /boot/kernel/rr272x_1x.ko
glxxxxxx > 起動時にドライバーがロードされるようにloader.confを弄る
glxxxxxx > $ echo rr272x_1x_load=\"yes\" >> loader.conf
glxxxxxx > ドライバーを入れたら一度シャットダウンして、RR2720とさっきフォーマットしたHDDを繋いで起動する
glxxxxxx > 起動時のRAID BIOSの画面で、各HDDがlegacyとして認識されていればOK
glxxxxxx > 起動後、/devの下に da[0-9]* と da[0-9]p1 が生えているか確認する
glxxxxxx > 生えていれば正常に認識されている
glxxxxxx > da[0-9]*とda[0-9]p1が認識されていればzfsのプールを作成する
glxxxxxx > da[0-3]p1を使いtankという名前でRAID-Zを組む場合
glxxxxxx > $ zpool create tank raidz da0p1 da1p1 da2p1 da3p1
glxxxxxx > mount もしくは df で /tank が認識されていれば成功
番外S.M.R.Tの情報が知りたいですしおすし

某所ログからの甜(

glxxxxxx > SMARTを読む
glxxxxxx > smartmontoolsを入れる
glxxxxxx > $ pkg_add -r smartmontools
glxxxxxx > パスが通っているとこのコマンド名のキャッシュをリフレッシュ
glxxxxxx > $ rehash
glxxxxxx > SMARTを読む
glxxxxxx > RR2720のデバイス名が /dev/rr272x_1x で ポート1のSMARTを読む場合
glxxxxxx > # smartctl -a -d hpt,1/1 /dev/rr272x_1x
glxxxxxx > (1/1の部分はL/Mとして、LはコントローラーID、Mはチャンネル番号)
glxxxxxx > ディスクが複数の場合はMの部分を変えていけば順次取れる
glxxxxxx > SMART値のみ取りたい場合は -a の代わりに -A を使う

わっち的補足っぽいもの

  • よいこのみんなはsmartctlをsuで行うこと
  • L/Mな順番はRocketRAID BIOS Setting画面のChannelに対応?(2枚持ってないので要確認
番外編の番外編(計測ツールのいんすこ)

パフォーマンス計測のためいくつかツールを導入しまっする。

ネットワークのリアルタイムトラフィックを取得する(sambaによるwrite速度計測など)

glxxxxxx > vnstatを入れる
glxxxxxx > $ pkg_add -r vnstat
glxxxxxx > $ rehash
glxxxxxx > $ vnstat -l -i [if_name]
glxxxxxx > -l はリアルタイム表示
glxxxxxx > -i はインターフェース指定
glxxxxxx > if_nameにifconfigで取れるインターフェース名を入れる
interfacenaemeはifconfigあたりでとってくだしあ


zpoolのio状況確認

glxxxxxx > $ zpool iostat
glxxxxxx > iostat の後ろに数字をつけるとその秒間で自動更新がかかる
glxxxxxx > 1秒毎なら
glxxxxxx > $ zpool iostat 1
glxxxxxx > システムにぶら下がってるディスクのio状況を見る
glxxxxxx > $ systat -iostat
glxxxxxx > -iostat の後ろに数字をつけるとその秒間で自動更新がかかる
glxxxxxx > 1秒毎なら
glxxxxxx > $ systat -iostat 1
glxxxxxx > ステータス表示中に :number と入力するとグリッドっぽい感じになる
glxxxxxx > 詳しくはman systatのiostat参照
glxxxxxx > システムのアレやナニを見る
glxxxxxx > $ systat -vmstat
glxxxxxx > -vmstat の後ろに(ry
glxxxxxx > (ry


$ zpool iostat

               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
tank        1.34G  7.25T      0      0      8     39

$ systat -vmstat

    2 users    Load  0.00  0.00  0.00                  Jul 10 03:56

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
        Tot   Share      Tot    Share    Free           in   out     in   out
Act   18640    6064   236696     7016 7930100  count
All  120440    6536 1074060k    10188          pages
Proc:                                                            Interrupts
  r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        cow    4000 total
             19       354    5   46    2  137    4      4 zfod        uhci3+ 16
                                                          ozfod     1 uhci0 ehci
 0.0%Sys   0.0%Intr  0.0%User  0.0%Nice  100%Idle        %ozfod  1999 cpu0: time
|    |    |    |    |    |    |    |    |    |    |       daefr     1 ale0 256
                                                          prcfr  1999 cpu1: time
                                         4 dtbuf          totfr
Namei     Name-cache   Dir-cache    206501 desvn          react
   Calls    hits   %    hits   %       583 numvn          pdwak
      10      10 100                    35 frevn          pdpgs
                                                          intrn
Disks   da0   da1   da2   da3   ad4 pass0 pass1    152668 wire
KB/t   0.00  0.00  0.00  0.00 16.00  0.00  0.00     10448 act
tps       0     0     0     0     0     0     0      9396 inact
MB/s   0.00  0.00  0.00  0.00  0.01  0.00  0.00        36 cache
%busy     0     0     0     0     0     0     0   7930064 free
                                                    14288 buf

$ zpool iostat -v

               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
tank        1.34G  7.25T      0      0      5     28
  raidz1    1.34G  7.25T      0      0      5     28
    da0p1       -      -      0      0    221     22
    da1p1       -      -      0      0    281     19
    da2p1       -      -      0      0    281     23
    da3p1       -      -      0      0    280     21
----------  -----  -----  -----  -----  -----  -----

続くんじゃよ