10万円以内で作る18TB raid-z2(ダブルパリティ)高信頼ファイルサーバ


RAIDを構成する物理HDDのうち2台まで故障してもデータが損なわれる事の無いraid-z2で採用したファイルサーバをサーバ本体を含めて10万円以内で構築したのでその備忘録です。コンセプトは下記の通りで市販品でHDD故障時のHDD保守部品が色々プレミアがついて想定される同スペックのHDDの5倍~の金額になるところをHDDの標準保証のみで済ませ、実質的に修理に出すための送料だけで済ませる事を目的としています。

  • FreeNASを利用
  • 低消費電力
  • 使用していない場合には自動的にシャットダウンし、年間消費電力を削減すること
  • 通信速度は1Gbps。実行速度で80Mbyte/sec以上出ること
  • WOL(Wake On LAN)を用いて、必要な時にリモートから電源を入れ、不要な時には電源を落す運用とする
  • コストパフォーマンスが抜群に良いこと
  • 保守部品の調達時に足元を見られないこと
  • HDDは6台構成でraid-z2
  • HDDのうち2台が死んでもデータロストに至らないこと
  • HDDは一般用途向けではなく安く入手できる防犯カメラ用の高品質HDDを用いる
  • HDDの保証はHDDに標準でついている保証を使い、HDD故障時の交換で足元を見られないようにする
  • HDD故障時に保証対応で同一HDDが1週間程度で手元に届くようにする。その間はダブルパリティのうち片方が死んでいるが、他のバックアップ方針と合わせて許容する。
  • HDD故障時に交換するHDDを見分ける方法はFreeNAS上から認識されているHDDのシリアルナンバーを元に実ディスク(HDD上のシールに書いてある)との対応を確認し交換する。HDD毎にREDを点灯させることはしない。
  • DLNA対応

本投稿で設定する内容

  1. ハードウェアの準備(5inchベイを3.5inchベイに変換する)
  2. FreeNASの基本設定
  3. FreeNASの追加設定(リモート起動/リモート停止)
  4. 旧ファイルサーバからのファイル転送

今回構築したハードウェアは下記の通り

型番 円/1台 購入台数 総額
格安サーバ(N54L) 1万5千~2万8千円 1台 2万円
WD30PURX WD60PURX 1万3千 6台 7万8千円
HDDマウンタ(5inch>3.5inch変換) 350円 2台 700円
総額 9万8千700円

保存するデータは無くなると非常にまずいデータが主なので、raid-z(シングルパリティ)ではなくraid-z2(ダブルパリティ)としています。少し設計思想は異なりますが、各々raid5、raid6とほぼ同じようなものと考えてください。raid-z2はHDD2台の容量をパリティ用の容量に充てる事で、HDD2台までは壊れてもデータの読み書きが可能にする構成です(余程運悪く3本目のHDDが壊れた場合にはデータロストします)。HDD自体も3年保証品を使っているため、保証に出して交換品が来るまでに1週間程度を見積もっていますが、その間の退縮運転中でも、HDD1本までは壊れても大丈夫と言う設計思想になります。

また、HDDを6台搭載する為に3.5inchベイが6個以上ある高品質なケースはサイズが大きかったり値段が高かったりで一長一短です。妥協して一定の品質を期待出来るメーカー製格安サーバを使うとなると、そのほとんどは3.5inchベイは4つまでとなっており、1万円台~2万円台で購入可能なCPU、メモリ、ケース、電源、MB、HDD全部入りの格安サーバ(N54L)HP ProLiant MicroServer N54Lも3.5inchベイは4つしかありません。よって、市販されている金具を用いて5inchベイを流用して3.5inchベイにします。具体的な構成は下記の通り。

格安サーバ(N54L)
項目 スペック コメント
CPU Pentium G620(2.6Ghz×2コア) 普通に自作して、BayTrail等を使っても問題なし。
memory 4G 8G以上が理想。最低でも2G以上であること
NIC オンボード intel製 Gigabit×2 realtekの1Gbps等でも問題なし。速度はあまり変わらない。CPU負荷の面でintel製にメリット有
3.5inchベイ 4 足りない分は5inchベイを流用
5inchベイ 2 変換金具で3.5inchのHDDを使えるようにする。中途半端な値段で売られているホットスワップケースは使わない。HDDとMB間はケーブル一本で直結した方が余計な部品のせいでRAIDからHDDが脱落する危険性が無くなる。どうしても前面から交換可能なHDDケースを使いたい場合には、各種データセンターで実績のあるsupermicro製か、HPやNEC、IBMと言った最初からホットスワップ対応のサーバを使うべきだが、コストパフォーマンス上の理由(RAIDカードと対応ケースだけで15万以上)から、ホットスワップを諦める。これは、HDDが1台壊れた時に、FreeNASを稼働させたままHDDをホットスワップで交換するかと自問自答し、その必要は無いと言う結論に至った事によります。

ここまでで、ハードウェアの物理的な構成と設計思想の紹介は終わりです。次からは購入したハードウェアの紹介と組み立てです。

raid-z2用に購入したHDD6台
WD30PURX WD60PURX WD30PURX (4)

 

ここまでで、ハードウェアの物理的な構成と設計思想の紹介は終わりです。次からは購入したハードウェアの紹介と組み立てです。

HDD固定用に購入した金具。
HDDマウンタ(5inch>3.5inch変換) 5inch_to_3.5inch

 

ここまでで、ハードウェアの物理的な構成と設計思想の紹介は終わりです。次からは購入したハードウェアの紹介と組み立てです。

サーバ本体
下記の何れでも良いと思います。TX100 S3は値段が上がってきているようなので・・・・HDDが5台までしか搭載できないものの、MicroServerが本命になるかと。HP ProLiant MicroServer N54L
格安サーバ(N54L)
freenas92__

5inchベイへのHDDの固定は下記のように実施。

HDD_kotei

本来はネジを使わずに固定するケースですが、HDD取付用金具をHDDにくっ付けたうえで、ねじ止めしてしまっています。多少強引ですが動かなければOKです。ケースによっては反対側からねじ止めできなかったりするので、その場合にはタイラップなりなんなりで強引に固定してしまいます。

HDD_kotei_02

HDDの両脇にくっ付いているのが350円程度で購入したHDD固定用金具です。金属製の方が多少の放熱効果を見込めます。この後前面のパネルは元々くっ付いていたパネルを付けて完了です。

FreeNASのインストールは『FreeNAS 9.2.1.5 によるメディアファイルサーバ構築(PT3連携)』で事細かに紹介しているので、その投稿の設定は終わっているものとして、追加設定を取り上げていきます。

freenas_zfs10

 

HDDの個別設定。

HDDスタンバイまでの時間:5分

smart:有効

freenas_zfs11

FreeNASを使わない時に、SSHコマンド経由でシャットダウンできるようにwheelグループに所属して、sudoが出来るpoweroffユーザーを作成する。

このユーザーに関しては追加でホームディレクトリを有効にし、ssh-keygenでSSH公開鍵を作成し、LinuxやWindows、Macからパスワード無しの公開鍵認証でログインできるようにする。

freenas15

まずは、コンソールから9番のshellを選び、次のようにpoweroffユーザーにスイッチした後にssh-keygenで鍵を作成し、公開鍵をauthorized_keysに、秘密鍵をダウンロードし削除する。

# コンソールからfreenasファイルサーバにrootユーザーでログインしてから、
# poweroffユーザーにスイッチする。
su - poweroff
# poweroffユーザーで鍵を作る
ssh-keygen -t rsa
mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

# 秘密鍵を表示して、ログインしたいマシンにコピペした後に削除する。
cat ~/.ssh/id_rsa
rm ~/.ssh/id_rsa

# 注意:上記でcatで表示した秘密鍵id_rsaは、freenasにSSHでログインしたいユーザーが使えるようにします。
# Linux/Macの場合:~/.ssh/freenasにコピペして~/.ssh/configを設定
# windowsの場合:puttyに設定する。

Windowsの場合には『ssh-keygenで作った鍵をputtyとWinSCPで使えるようにする』を参照。

Linuxの場合には、FreeNASサーバにログインしたいユーザーの~/.ssh/configを下記のように設定する。

Host freenas
        HostName        freenas
        Port            22
        IdentityFile    ~/.ssh/freenas
        User            poweroff
        protocol        2

続いて、freenasのホスト名を解決できないといけないので、/etc/hostsファイルに下記のエントリを追加

# IPアドレス、ホスト名は環境に合わせて適宜修正してください。
192.168.40.245    freenas

上記まででLinux/Macからsshでfreenasサーバにログインできるようになったはずです。しかし、freenasでシャットダウンコマンドを叩くためにはsudoする必要があり、かつssh freenas “shutdown -p now”する為には/sbin/shutdownコマンドのみsudo時にパスワードを聞かれないようにする必要があります。

しかし、freenasの場合、sudo visudoでsudoersファイルを編集しても、次回リブート時に元に戻されてしまう為、再起動時に読み込んでくる元のファイルを編集します。

# poweroffユーザーでログインしてからsu - コマンドでrootになるか、
# FreeNASのコンソールから9番のshellを選んでの操作でもどちらでもOKです。

# /を書き込み可能にしてマウントし直す
mount -wu /

# sudoersの元ファイルにNOPASSWDでshutdown出来るpoweroffユーザーを設定
echo "poweroff ALL=(ALL) NOPASSWD: /sbin/shutdown" >> /conf/base/etc/local/sudoers

# 再度読み込みのみにする。
mount -ru /

取りあえず、再起動してパスワードなしでsudo出来る事を確認しておきます。なお、この設定は、freenasをバージョンアップした場合に再設定しなくてはいけない可能性があります。

リモートからSSHでfreenasをシャットダウンするにはLinux/Macから次のように実行します。もちろん、ウェブ画面からシャットダウンしてもOKです。

# sshコマンドの引数にコマンドを続けるとSSH経由でそのコマンドがリモート実行される
ssh freenas "shutdown -p now"

これで何が嬉しいかと言うと、epgrec等で録画したtsファイルを毎週末にcronでfreenasサーバにアップロードした後に、にfreenasサーバの電源を落すことが出来る様になります。使用する際にはWOL(wakeonlan)でfreenasサーバを起動させます。

Ubuntuマシンからwakeonlanパケットを飛ばす方法は次の通り(freenasの構築ではないので読み飛ばしてOK。該当の投稿はこちら

sudo apt-get install wakeonlan

使い方も簡単で

wakeonlan 10:eb:69:ac:5d:b1

等として、wakeonlanの後に続けて起動させたいサーバのMACアドレスを指定するのみ。

もしも、起動しなかった場合は、起動させたいサーバのBIOSの設定でWakeOnLANが無効になっていると思われるので、BIOSの設定を見直してください。それと、無線LANしか無いPCはWakeOnLAN出来ません。

freenas_zfs12

次にサービスからsambaサーバの設定を詰めます。

freenas_zfs13

上記の図のように、赤枠の箇所を設定し、余計な処理が発生する箇所をつぶし、ローカルマスタにもならないようにします(windowsマシン間の名前解決が必要なら、ローカルマスタはONにしてください。私はドメインを構築しているので不要だからOFFにしました。)。

freenas_zfs14

ntpサーバはデフォルトで幾つか設定されていましたが、国内で問題なくつながるntpサーバを指定します。

ここから下は単純にレポート画面のグラフでのスクリーンショットで、特に設定はしていません。流し読みで。

freenas_zfs15

500mb程度のmp4ファイルを大量転送している所。大体700Mbps程度出ている模様。raid-z2で90Mbyte/sec弱なら及第点だと思います。

freenas_zfs16

raid-z2かつ圧縮有でCPU使用率は40%程度。この程度の使用率ならatom等のCPUでも大丈夫そうです。

freenas_zfs17

smartチェックを定期的に実行するようにします。設定した情報はsmartd.confに反映されます。確認方法は下記の通り。

cat /usr/local/etc/smartd.conf

smartd.confを表示させてみたところ。

################################################
# smartd.conf generated by /etc/rc.d/ix-smartd
################################################
/dev/ada0 -a -n standby -W 0,0,0 -m lasas@domain -s L/(01|02|03|04|05|06|07|08|09|10|11|12)/../(5)/(21)
/dev/ada1 -a -n standby -W 0,0,0 -m lasas@domain -s L/(01|02|03|04|05|06|07|08|09|10|11|12)/../(5)/(21)
/dev/ada2 -a -n standby -W 0,0,0 -m lasas@domain -s L/(01|02|03|04|05|06|07|08|09|10|11|12)/../(5)/(21)
/dev/ada3 -a -n standby -W 0,0,0 -m lasas@domain -s L/(01|02|03|04|05|06|07|08|09|10|11|12)/../(5)/(21)
/dev/ada4 -a -n standby -W 0,0,0 -m lasas@domain -s L/(01|02|03|04|05|06|07|08|09|10|11|12)/../(5)/(21)
/dev/ada5 -a -n standby -W 0,0,0 -m lasas@domain -s L/(01|02|03|04|05|06|07|08|09|10|11|12)/../(5)/(21)

旧ファイルサーバから新ファイルサーバへファイル転送する。

sambaを使っており、かつ異なるOS(例えばwindows<>FreeBSD、linux<>FreeBSD)間でファイル転送する場合には、OS毎のsambaの設定によって、nfs等でダイレクトに転送するよりも、windowsクライアントにRealSyncをインストールした上で、サーバ間のファイル転送を行った方が簡単です。1000Base-txを使っている環境であれば、上り下りは別々になるので、転送速度が半分にならずにほぼワイヤスピードで転送可能です。

freenas_zfs18

Realsyncを起動すると上記のような画面になります(転送中なので、ログが出ていた部分は白塗りしました)

freenas_zfs19

更新>追加で、更新元、更新先を選びます。

freenas_zfs20

更新元には昔のファイルサーバ、更新先には新しいfreenasファイルサーバを指定します。赤枠内の右側にあるフォルダのアイコンをクリックした中にファイルサーバが表示されていない場合には、『\\172.20.1.200\fileserver』等として、共有までの絶対パスを指定すればOKです。

freenas_zfs21

『今すぐ更新』を押せばファイル転送が始まります。ファイル転送中に機種依存文字や『?、&』等の文字列が含まれるファイルは転送に失敗する事がありますので、それらは昔のファイルサーバ上で、ファイル名を修正してから再度『今すぐ更新』を押せばOKです。

Realsyncでファイル同期が終わった後に、何度か『今すぐ更新』を押し直して、ファイル名の問題によるファイル同期のエラーが出なくなったら同期完了です。

まとめ

以上でfreenasを使って保守費用がほぼ無料の高信頼NASが完成しました。この構築例は『HDDを購入するときにはその保障を含めて対価を払っている為、HDDが壊れたらその保障をフル活用させてもらう』と言う最近のHDDの壊れやすさをシステムと運用でカバーする方針です。構築から2年も経ってしまうと、既に同型のHDDが市場には無い場合もあり、raidを組んでいる場合にはHDD1本が入手できない為にリスクを取ってほぼ同等品でHDD交換するか、それともNAS自体を再構築するかを迫られる事があります。そのようなケースでメーカー保証で同型品のHDDが届くことはHDD購入時に多少高くついても、3年間の維持費用を考えれば、消費電力を含めかなり安くあがるかと思います。

最後に、各社のNAS向けHDDを保証期間、消費電力面からまとめました。NAS用に利用する場合には1Gbps(≒120Mbyte/sec) < HDD1台当りの転送速度(150Mbyte/sec)なので、回転数については気にする必要はないと考えます。
デスクトップ向けのHDDより2~3割高いものの、その分信頼性・MTBF・保証期間が向上し、適切なテストの後に出荷されるNASに最適なHDDをまとめたので、その表を公開します。

保証期間が3年以上あるNASに最適なHDD一覧(消費電力は1TB~4TBの表記で記載)。コンシューマ向けのHDDよりも2~3割程高い。
メーカー Western Digital 日立(HGST/hitachi) Seagate 東芝
シリーズ WD Red WD Purple Deskstar NAS Deskstar Seagate Surveillance HDD Seagate NAS HDD Ma series(TV録画用)
保証期間 3年 3年 3年 3年(リテール) 3年 3年 Ma series
用途 NAS 監視カメラ(24h/365日) NAS Desktop 監視カメラ(24h/365日) NAS AV
1TB WD10EFRX WD10PURX ST1000VX000 DT01ABA100V(BOX)※リンクは非box品
2TB WD20EFRX WD20PURX ST2000VX000 ST2000VN000 DT01ABA200V(BOX)
3TB WD30EFRX WD30PURX 0S03663 ST3000VX002
ST3000VX000
ST3000VN000 DT01ABA300V(BOX)
4TB WD40EFRX WD40PURX 0S03667 0S03361 ST4000VX000 ST4000VN000
5TB WD50EFRX
6TB WD60EFRX
回転数 IntelliPower(5400rpm?) IntelliSeek(5400rpm?) 7200rpm 5900rpm 5700~5940rpm
消費電力(アイドル) 4.5w 2.9~4.5w 6.9w 3~3.95w 5.7~4.2w
消費電力(書き込み時) 3.3~4.5w 3.3~5.1w 5.9~8w 4.3~4.8w 3~5.4w
平均故障間隔(MTBF) 100万時間 100万時間 100万時間 100万時間 100万時間
コメント 数件のPCショップの店員さんに売れているNAS向けHDDを聞いたら、WD Redと答えられました。消費電力面からも確かに魅力的な商品です。redとpurpleの違いは、IntelliPowerかIntelliSeekかと言うあたりのようです。DOS/V powerreportの記事に良い解説ページがありました。 この投稿で構築したファイルサーバでは、WD RedではなくWD Purpleを採用。実使用者の感想としては静かで発熱の少ないドライブなので、組み込みやすくて便利です。 信頼と実績の日立製!それ以外のコメントは不要かと。 3年近く前の製品なのであまり売っていません。 Seagateの5900rpmの製品では今までハズレを引いたことが無い。2台目のNASはこれを選択したいです。 回転数不明ながらやけに低消費電力。 容量によってスペックがまちまち。アイドル時の消費電力は低容量モデルの方が高い。なぜ??MARSHAL株式会社の会社概要に古物商許可番号があるのが非常に気になる。以前、marshalはリフレッシュ品と言う記事があったが、古物商があると、それを信じたくなる。安ければ試しに一台だけ買ってみたいですが、RAIDには組み込みたくはありません。

実は上記の表は『10万円以内で作る18TB raid-z2(ダブルパリティ)高信頼ファイルサーバ』の一番下に記載していたのですが、結構手間暇かけて作ったので別の記事に抜き出してみました。

タグ付けされた , , . ブックマークする へのパーマリンク.

2 Responses to 10万円以内で作る18TB raid-z2(ダブルパリティ)高信頼ファイルサーバ

  1. takami 曰く:

    はじめまして。
    気になっていることがありまして、HDDの故障は交換で復旧できますが、
    ブート用のUSBメモリが故障した場合の復旧ってどういう手段を想定していますか?

    • lasas 曰く:

      ご質問ありがとうございます。
      ブート用のUSBメモリはDDでコピーを取ってありますので、USBメモリが壊れても復旧可能なようにしています。
      USBメモリのバックアップが無い場合には、新しいUSBメモリにFreeNASを再度インストールして、対象領域を読み直すことで復旧すればいいかと考えています。

コメントを残す

メールアドレスが公開されることはありません。