日記ブログ、または雑多なメモ

ファイルサーバ用のraidz2を2.5inch HDD5台で構築する




見栄子LINEスタンプ
広告

 一個2900円の中古250GBHDDx5が到着。 中のヒトは日立のHTS542525K9SA00だった。 検索してみても特に何という情報もなく、普通の2007年製日立ドライブのようである。 何やらときどき「カチン、カチン」という動作音がして今すぐにでも壊れそうな感じなのだが、これで普通の状態らしい。

 その他のパーツも届いて、気を取り直しマザーをZOTAC G43ITX-A-Eに入れ替える。 sataポート5個がとてもまぶしい。 そして、「PCI-e x1」でなく「Mini PCI-e」x1だということに今更気がついた。 無線LANが載っているわけだが、たぶん無線LANにしか使えない特殊ポートの可能性が高そう。 あと、このマザーではケースファンをPWMで制御できません。 ガッカリだ。 CPU温度はファン制御をquietの状態で40℃。 FOXCONNのマザーではsysctl dev.cpu.0.freq_levelsで電圧の確認もできていたのだが、このマザーでは-1表示になっている。
 BIOSの設定がなんだかかなりややこしかったのだが、とりあえずSATAはAHCIモードにしておいた。

 3.5インチベイに入れる2.5インチx4用ブラケットは、思った通りうまい具合にすっきりばっちり組み込め(ただしケース側に通常なら必要ない真ん中辺りのビス穴がなく、とりあえずは片方のみで固定)、全ての装置を組み込み完了。


 さっそくDVD-RWに焼いたamd64用のFreeBSD-8.0-STABLEから起動、sysinstallのconfigure->fixitから直接HDDをいじる。 せっかく5台とも250GBにしたので、まずは5台まとめてraidz2を組んでかつ、ブートドライブにする方法をとってみる。 基本は、http://wiki.freebsd.org/RootOnZFS/GPTZFSBoot のやり方を参考。 swapに関してはこちらを参考。 感謝。


全ての操作をずらっと書いたものはコチラ

最初に各ドライブを掃除。 /devの中を見てドライブの名前っぽいのを確認。 このマシンではad4、ad6、ad8、ad10、ad12。
# gpart show ad4
で、ドライブの中身を確認。 パーティションがあれば番号を指定して削除。
# gpart delete -i 1 ad4
パーティションがなくなったら本体を掃除。
# gpart destroy ad4
以上をそれぞれのドライブについて実行。

掃除が終わったら再びcreateしてから、ブート領域とzfs領域のパーティションを切ってブートコードを入れる。
# gpart add -s 64K -t freebsd-boot ad4
# gpart add -t freebsd-zfs -l disk0 ad4
# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad4

これもad4〜ad12まで各ドライブでやるのだが、disk0のラベル指定部分を0、1、2、3、4と数字を各ドライブで変えておく。 参考ページではここでswap領域も作っているが、今回は後でzpool上で作るので省略。

zfsのプールを作るところで、
# mkdir /boot/zfs
# zpool create zroot raidz2 /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2 /dev/gpt/disk3 /dev/gpt/disk4
# zpool set bootfs=zroot zroot

と、raidz2で統合。 壮観だ。 gptを経由せずに結合できないか試したが、operation not permittedだかでできない。 gptで起動するならこうするしかないのか。 もう少し調べて見た方がよさそうである。

この後はほぼ参考通りだが、
# zfs create -o compression=lzjb  -o exec=off     -o setuid=off   zroot/usr/src
の部分はexec=onにしておかないと/usr/src下でビルドできなかったりするので、exec=onにする。 自分の場合はあとで気がついたので、
# zfs set exec=on zroot/usr/src
とした。

でもって、swapも作る。
# zfs create -V 4gb zroot/swap
# zfs set org.freebsd:swap=on zroot/swap


自分用のタンク領域も作る。 透過圧縮をgzip-1にしておく。 入れるデータは圧縮系のデータばかりな気もするので透過圧縮していいものかどうか微妙なところ。
# zfs create -o compression=gzip-1  -o exec=on     -o setuid=off   zroot/tank
# zfs set mountpoint=/tank zroot/tank


>7. Install ZFS aware /boot/loader (Required for 8.0-RELEASE and 7.{0-2}-RELEASE)

のところは8.0-STABLEなので必要なし。 /etc/fstabの設定も必要なし。 zpool.cacheのコピーは忘れるとブート時にマウントできないので必ずすべし。
で、参考通りマウントポイントの修正をして再起動、ブート直後のプローブでえらい間待たされたあげく、普通に起動した。 おめでとう。

Duke# zpool status
  pool: zroot
 state: ONLINE
 scrub: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        zroot          ONLINE       0     0     0
          raidz2       ONLINE       0     0     0
            gpt/disk0  ONLINE       0     0     0
            gpt/disk1  ONLINE       0     0     0
            gpt/disk2  ONLINE       0     0     0
            gpt/disk3  ONLINE       0     0     0
            gpt/disk4  ONLINE       0     0     0

errors: No known data errors
Duke# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
zroot  1.13T  22.6G  1.11T     1%  ONLINE  -
Duke# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT
zroot                      17.5G   663G   509M  legacy
zroot/swap                    4G   667G  28.6K  -
zroot/tank                 10.8G   663G  10.8G  /tank
zroot/tmp                  44.7K   663G  44.7K  /tmp
zroot/usr                  2.07G   663G   518M  /usr
zroot/usr/home             45.6K   663G  45.6K  /usr/home
zroot/usr/ports             914M   663G   807M  /usr/ports
zroot/usr/ports/distfiles   107M   663G   107M  /usr/ports/distfiles
zroot/usr/ports/packages   32.2K   663G  32.2K  /usr/ports/packages
zroot/usr/src               693M   663G   693M  /usr/src
zroot/var                   105M   663G   164K  /var
zroot/var/crash            33.1K   663G  33.1K  /var/crash
zroot/var/db                104M   663G   103M  /var/db
zroot/var/db/pkg            828K   663G   828K  /var/db/pkg
zroot/var/empty            32.2K   663G  32.2K  /var/empty
zroot/var/log              96.5K   663G  96.5K  /var/log
zroot/var/mail             32.2K   663G  32.2K  /var/mail
zroot/var/run              92.0K   663G  92.0K  /var/run
zroot/var/tmp              34.0K   663G  34.0K  /var/tmp
 こんな感じ。

 というわけで、DHCPの設定、cpufreq、powerdの起動設定などして基本的な整備完了。 その他、/usr/share/examples/cvsup/stable-supfileを使ってcsupで/usr/srcをアップデート、portsnapでportsの更新後、portsからnanoやらipmitoolやらbonnie++などを試しにビルドインストール、kernel の再構築などなどを粛々と遂行。 何かをインストールした後はrehashを忘れずに。

 ちなみに、ビルド中に5台のHDDのうち一本の信号ケーブルを試しに引っこ抜いてみたが、当たり前にそのまま平気で動き続けた。 ただ、差し直してもホットスワップに対応してないのかremovedのままで、再起動しないと引っこ抜いたドライブは復帰しなかった。 sataのホットプラグの具合をよくわかってないので詳細不明。 何はともあれこりゃ強いサーバである。

気になる速度の方だが、一応bonnie++を取ってみた。

C2D E6300
FOXCONN G41S-K 1GB RAM
2.5inch 5400rpm HDD x1 UFS
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
mine             2G   401  99 38550  14 16470  10   723  99 39910  12 130.4  14
Latency               155ms     335ms     753ms   63733us   72525us    4593ms
Version  1.96       ------Sequential Create------ --------Random Create--------
mine                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 17995  71 +++++ +++ +++++ +++ 23435  53 +++++ +++ +++++ +++
Latency               114ms     421us      40us     128ms    1549us      27us
C2D E6300
ZOTAC G43ITX-A-E 2GB RAM
2.5inch 5400rpm HDD x5 RAID-Z2
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
Duke             4G    75  98 53775  22 31648  13   192  98 85423  20 132.8  14
Latency               388ms    2969ms    5088ms   92425us    1291ms    1901ms
Version  1.96       ------Sequential Create------ --------Random Create--------
Duke                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 14991  96 +++++ +++ 13583  97 14137  97 +++++ +++ 13517  98
Latency             22816us     138us     166us   45212us      46us     690us

 RAID-Z2(RAID-6相当)ではドライブが増えるほど読み込みが速くなり、書き込みが遅くなるというふれこみ通りの結果か。 ちなみに-n 256を付けてbonnie++ってみたらmalloc関係でkernel panicを起こしてフリーズした。 見なかったことにしよう。 お金持ちになったら、Q8200とかメモリ4GB二本とかを積むことにする。

 ところで、おそらくマザーのせいだと思うが、DVDドライブが不調気味。 作業途中で認識しなくなったりDVDブートしなかったり。 sata接続のドライブだけおかしくなるのかと思っていたが、USB外部接続でもダメなのか?インストールは済んだのでいいものの、かなりやっかいな症状だ。

 その他懸念事項として、RAIDそのものにシステムが入ってるけど、システムアップデートなんかに失敗した場合少々面倒なことになるかもではある。 とりあえずいくら新しもの好きとはいえ、CURRENTにすることだけはやめておこうと心に誓う。


 以上、おおよそ675GBのraidz2ファイルサーバ完成。 samba3サーバをおったててLANに参加させ、さっそく荷物を放り込み中。
- C'sGallery Blogっぽく見えるシステム3.2 -
小武 (管理人) eta2@tim.hi-ho.ne.jp