せっかく複数ディスクが乗るQNAPを買ったのでRAIDを組んでみたくなった。
自宅NASをQNAP Turbo NAS TS-451にした | A-tak-dot-com
目次
RAID 5とは?
ディスクを3本以上挿すことで、一つディスクがぶっ壊れてもNAS自体は動き続けてくれるという機能です。専門用語で言うと「可用性」と言う。仕事で使っていると、NASが止まって仕事に使うファイルにアクセスできないと一大事だけど、ぶっちゃけ個人使用のNASで「動き続ける事」をそんなに重視する必要あるかというと微妙ではある(笑)。
もう一つ利点があるとすると、一日一回バックアップを取ってる場合、ディスクがぶっ壊れるとバックアップ取ってから壊れるまでにNASに置いたデータはローカルPCにも置いてない限りどこにも残らないけど、RAID 5なら一台ディスクがぶっ壊れても大丈夫というのはある。まぁ、これも自分の場合、作業自体はローカルのMacでやるからTimeMachineから復元するケースの方が多そうな気がする(笑)
なぜディスク一個壊れても大丈夫なのか
複数のディスクにデータを書き込み、内一つのディスクには「パリティ」という情報を書き込むので壊れても大丈夫…というのは知識では知っていたが、理屈がよく分かってなかったので調べてみた。
RAID5のパリティ生成アルゴリズム: sanonosa システム管理コラム集
凄くよくわかった。
「XORってなんじゃい!」って人向けにちょっとアバウトに説明すると、ディスクがぶっ壊れても方程式を解くようにデータを修復しつつ動く感じだと思えばいいみたい。
1 + x = 4 という方程式でxが3だというのは簡単に導き出せる。最初の1を一つ目のディスクのデータだとして、4がパリティだとする。で、二番目のディスクがぶっ壊れた!ということで、それがxだとすると、1と4から二番目のディスクの値は3であることが求められるというわけ(実際はこんな足し算ではなくてXOR使った式になる)。よく出来てるな。
RAID 5にすると容量はディスク一つ分少なくなる
RAID 5はディスク一本分の容量をパリティ用に使うので、ディスクの合計容量からディスク一本分少ない容量が実際に使える容量になります。
あと、それぞれのディスクの容量は普通は同じものを用意することになります。もし容量がばらばらの場合は、一番容量が少ないディスクが複数本使われているのと同じ扱いになります。
しかしRAIDにはトラウマが…
RAIDカードにやられる | A-tak.com
気をつけないといけないと思ったのは、RAIDといっても、その実現方法は様々でRAIDカードが違えば、ディスクの管理の仕組みが違ったりするので、カードが壊れたからといって、カードだけ別のメーカーのものに取り替えても復旧はできないということ。
RAIDを使っていない場合ならば、新しいディスクやマシンを買ってきて、元の古いディスクも接続して、ぼちぼち必要な時にデータを移行していけばよかったのですが、RAIDの場合はそうはいかないので、必ずすべて必要なデータをRAIDを使っていないディスクなどに完全にバックアップしてから、移行しないといけません。
RAIDを使うとデータの保存方法が独自形式になるので、何かトラブルが起きたときにディスクを引っこ抜いてMacに直接繋げてデータをサルベージなんて事は基本出来ません。これ結構、鬼門だったりします。
どういうときに困るかというと…
この程度だったらRAID5っていらなくない? | A-tak.com
ディスク障害よりファームウェア障害の方が確率が高くて、ちょくちょく前日のバックアップから戻すのならば、まるでRAID組む意味なんてないですよね。
上の記事のようにNAS本体が故障すると、ディスク読める機械がなくなるので、もの凄くめんどくさいことになります。普通の外付けハードディスクの基板が壊れたとしても、最悪の中のディスクを他のHDDケースとかに入れれば読めますからね。
上の記事にあるように過去使っていたバッファローのNASはファームがしょっちゅうエラーを起こしていて、それがバックアップ取る前だったから、本当に青ざめました。
なので、RAID 5で可用性を確保する事より、定期的なバックアップの仕組みを作ることの方が優先事項になります。
別に無理にディスク3本の容量は揃えなくていい
この考えは参考になった。
そこにしびれるあこがれる:台湾製の“最強NAS”「QNAP TS-409Pro」を試す(前編) (2/3) – ITmedia PC USER
もちろん、容量が異なるドライブでRAIDを組むと、最小容量のドライブで組んだときと同じ容量しか得られない。その状況に「もったいない」と感じる気持ちは当然だが、空き容量がある限りは使えない領域があろうがなかろうが関係はないのだ。
さっきも書いたように容量がバラバラのディスクをRAID5に使用すると、一番少ない容量のディスクが複数本繋がれたように認識されてしまう。ただ、別にそれでもいいんじゃないの?ということを言われている。この考えを参考にうちの場合以下のようにした。
ではどうしたか?その前に元々の構成はこうです
元々Thinkpad X41 TabletにUbuntu入れて組んだNASはこんな感じ。普通にUSBで三つのディスクを接続して、MainとMain2のディスクの中身を毎日、MainBackupにバックアップしていた。実際のデータ利用量は1TBもなくて、2TBも容量があれば、しばらくは使える状態だ。
とりあえずそのままQNAPに構成を移した状態
実は一旦、RAID組まずにQNAPに移行している。Main1とMain2をそのまま流用してQNAPの4本のスロットの二つに入れた。バックアップの外付けディスクもそのままQNAPヘUSBで接続。
とは言っても、元々のディスクはQNAPがそのまま認識してくれなかったので、実際は一度QNAP上でフォーマットしている。ファイルフォーマットはEXT4でQNAPでも扱える形式なのにおかしいなと思ったのだけど、どうもQNAPはいろいろ管理用情報を書き込んだりするためにパーティションを切ってるみたい。それらのパーティションがないと認識してくれない様子。
RAID5最終形
はい、こんな感じでRAID5のストレージプールを作った。Mainの1TBのディスクはそのまま流用。Main2の500GBのディスクはNASから外してnasne用に流用した。昔にTime Machine用で使っていた2TBのディスクがあまり活用されずに放置されていたので、それをQNAPに入れる事にした。
New HDDというのは、今回新たに購入したHDD。秋葉原で¥6,790。
しかし、1TBのディスクと一緒にRAID組んでいるので、2TBのディスクは実際は1TBしか使われない。じゃあ、1TBのディスクを買ってくれば良かったんじゃないの?とういうのもあるのだけど、そのうち容量か足りなくなったときに今の1TBを2TBにアップグレードするだけで、全部2TBで揃うことになるので、2TBを買うことにした。
1TBと2TBの値段差が¥1,000しか差が無かったというのもある。仮に2TBが次に買い換える時に今の1TBと同じ値段になっていたとして、¥5,800 * 2 = ¥11,600の出費になるか、¥5,800だけの出費になるか考えると、 今回¥1,000多めに払ったとしても2TB買った方が得かなと考えた。
ハードディスクは、ある容量を超えると極端に値段が上がるのだけど、それより下はあんまり差が無いので、容量が揃って無くて無駄な空き容量が残るけど、その時安い価格帯のディスクの中でも一番大きな容量のディスクを狙うのが良いかなと思った。
ちなみに、おそらく次に容量が足りなくなってきたときには2TBのディスクとかは、既に売っていないかもしれないので、安くなってきているであろう3TBを買って、バックアップに使っている3TBもQNAPに入れて3TBレディ状態にしようかと思います(その時はバックアップディスクは6TBぐらい必要になってるかもしれませんが)。
リビルド中は外付けHDDを認識しない?
だいぶ、ハマって焦ったこととしてQNAPが外付けのUSBハードディスクを認識してくれないというのがあった。SSHでQNAPに入ってみても、確かにマウントされていない。
HDDケースを別で買ってきても駄目で、USBメモリだと認識する場合もあったりするし、USB2.0ポートだと認識したりしなかったりなので、相性問題かと頭抱えてましたが、次の日、QNAP再起動してUSB挿すとあっさりUSB 3.0で認識してくれました。
その前までは再起動しても駄目だったので、違いと言えばRAID 5のリビルドが終わっているかどうか。どこかでチラリとRAID 5の再構築が終わらないと、何かがうまくいかない、といった書き込みを見た気もするので、たぶんリビルドのせいだと思っている。
ちなみにリビルドはめちゃ時間掛かる。一日で終わりそうにないぐらい。以下のサイトで解決法が書いてあって、おかげで朝には終わってた。
QNAPのRAIDリビルド時間を短縮する: インフラ担当者の備忘録
このページによると、RAID構築する速さの設定があるとのこと。
[~] # echo 100000 > /proc/sys/dev/raid/speedlimitmin
とすれば、構築が早くなるそうです。
いやー、感謝です!
次はメモリ増設の話でも書いてみようかと思います。
QNAP TS-451で仮想環境構築するためにメモリ増設してみた | A-tak-dot-com