[1日目] 高価な市販NASを買わずに、HDDがクラッシュしても大丈夫な運用しやすい社内のファイル共有サーバを構築する方法

mat2uken mat2uken

唐突ですが、アドベントカレンダーというのを皆さんご存じでしょうか。
アドベントカレンダーとは……本来の意味のほうではなく、ネット上で数年前から行われている企画で、12月1日から24日まで連続して行われるリレーブログのことです。特に技術系アドベントカレンダーということで、プログラミングに関する内容などで行われていることが多いですが、今回、Cerevoでもテックブログでやってみることにしました。テックブログではありますが、基本、書く内容は完全自由に、それぞれのメンバーが書きたいことを書くことにしました。きっと多彩な内容が展開されるとおもいますので、乞うご期待!

というわけで、トップバッターを務めます、アドベントカレンダーできるくらいに人数が増えていることにまだ慣れない、まつけんです。最初の話題から全くハードウェア開発は特に関係なく、社内で使うNASをどうしていくかという通常進行の内容です。

弊社も気がつけば70名を超え、以前とは比べものにならない人数になってきました。そうなってくると、様々なポイントでいままでふんわり適当にやってた部分に問題が出てきます。その一つが社内のファイル共有用NASです。

とりあえず、昨年の10名程度の時点までは、NASといえば、Centuryのエンクロージャに過去に使って余っていたHDDを詰めてただ動かしていたくらいです。とはいえ、巨大なデータの受け渡し用&大容量データの一時的な置き場といった感じで、クラッシュしてもデータは諦めてね、バックアップは各自でよろしくね、くらいノリでものすごいテキトーな運用です。

実際、これとは別にチャットワークに適宜ファイルをアップロードしたり、GoogleDriveにファイルを置いたりで大抵賄えてしまうので、そんなに活用されていないというのが実情でした。大事なデータ(ソースコードなど)はGitかMercurialのリポジトリがAWS上で運用されていて、そちらは日々のバックアップも取られているので、そちらに置きましょうという運用です。(こちらは最近Bitbucketに移行しつつあります。)

これが70名程度になると、そもそも扱われるファイル数も一気に増え、チャットワーク、GoogleDrive、リポジトリにファイルを分散させると容易に目的のファイルを見つけられないし、アップロード先によっては欲しい人がアクセスできるわけでもないという状況に陥ります。そうすると気軽にアクセスできる本格的に社内向けにNASが欲しいということになってきますが、NASを入れるにしても、この状況では容量、アクセス速度、同時アクセスする人数もかなり増えますし、HDDクラッシュしたのでデータ消えました、てへ、なんてノリもそろそろ許されないよなぁという壁にぶち当たります。とはいえ、Cerevoには未だ社内システムをちゃんと担当するような人なんていません(私が片手間でできる範囲で、という域をいまだに超えていません)

そこで、いくつかNASについてどうするか、案をざっと出します。

  • Drobo, QNAPくらいの小規模オフィス向けNASの導入
  • AWSのStorage Gatewayを導入
  • 余っている社内の自作PC的サーバでファイルサーバを作る

これらの案は、基本、コストが初期費用が十数万円くらいで、月額も数万円単位くらいは考えた方が良いレベルか、コストは低いけど、自分でファイルサーバ運用は単に手間の問題でそんなことやってる暇があったら……と、たぶん私が怒られるというところでどれもちょっとさくっと導入というわけにはいかなそうです。

ということで、どうしたもんかなーということでふと思いついたのが、NASとか買わずにPCにHDD1つだけ接続して、履歴付きでDropBoxと同期するだけでいいんじゃね?って案です。HDDはクラッシュしたら諦めて換装して再同期、PCでファイル共有ならパフォーマンスに問題は出にくい(Core-i5とかメモリも多めのハードウェアを選べるし、アプライアンスに比べれば価格対性能比は良くなる)っていうところで。

結果としては以下のような構成にしました。

  • ちょうどMac miniを余らせていた同僚さんがいたのでそちらを中古で買い取り、内蔵のSSD + 2.5″ HDD 250GBのものをHDDだけ2TBのものに換装(PCじゃなく、Macになりました。)
  • DropBoxで履歴付きProを契約して、HDD上のフォルダを指定して同期
  • OS X Serverを入れてファイル共有を有効にする

これだけやってしまえば、とりあえず1TB分はDropBoxで履歴付きで同期して保存してくれるので、特にデータが消えるリスクにおびえなくてよくなります。別にMac miniでなくても良いのですが、Core i5でメモリも4GBとか載っているのでNASとしては充分に高速です。HDDがクラッシュしてしまった場合は換装して同期し直せば復旧できるお手軽さです(そうしたときに、同期が終わるまで使えないのが玉に瑕ではありますが、まあ滅多に起こることではないので今回は諦めます。)

あと、デメリット的なところでは、回線によっては初期の同期にものすごい時間かかります。途中までLimitがデフォルトでかかっていることに気づかず、このままいくと同期に20日くらいかかるのではって危惧したのですが、Limitを外したところ、10MB/s前後出るようになり、2日ほどで同期できました。

同時に、気をつけたほうが良いのが、制限の少ない法人向け回線などを使っていればよいのですが、スタートアップにありがちなフレッツ+個人向けISPみたいな組み合わせだと、アップロードの総量規制にひっかかって同期できないという悲しいオチが起こるかもしれないという部分です。実際、初期同期は今回は500GBくらいを2日でアップロードしたので、1日あたり250GBアップロードしていて、大体の個人向けISPでは確実に規制対象です。今回はそういった制限のない回線(So-net NURO BizをCerevoでは契約しています)を使っているので特に問題は出ていませんが、制限のある回線環境ではヤバそうです。ゆっくりのんびりアップロードするとか、制限のないところで同期だけ先にやっちゃうなどの対策が必要かもしれません。

ついでにこれをやると、副作用として、外からアクセスしたいときにVPNでつないだりしなくてもDropBoxで共有してしまえば割と簡単にファイルにアクセスできます(セキュリティ上、これは問題があると言われるとなかなかツライところなので、あくまで緊急用という運用に留めていますが)

これに加えて、1TBを超えたらどうするのよって話もあるので、最近、Amazon Cloud Driveへのバックアップも追加しました。ここは最終的にどうしていくかをさらに良い手をこれから考えたいところですが、今のところ、rdiff-backupを走らせた結果の30日分のバックアップを単純にAmazon Cloud Driveにアップロードしています。こういったバックアップとかもOSX上でスクリプト(acd_cliは便利でした)を書いたり、バックアップソフトをOSX用があれば簡単に動かせてしまうというのも、この構成の考えてはいなかった意外なメリットかなと思います。rdiff-backupじゃなく、1日ごとの世代の完全バックアップのほうが後から楽かなーというところを今はちょっと迷っています。

この運用であれば、クラッシュ時のHDD換装以外は特に手間をかけることなく、そこそこ高速なNASと最低限のデータ保護が実現できます。AmazonCloudDriveのバックアップだけにするか、DropBoxのビジネス向けプランにしてしまえば容量制限はなくなるので、ローカルのHDDを換装して8TBか、もうすこし経てば10TBくらいまでは割と現実的な価格で運用ができそうです。

NASって言われると最低でもTeraStationとかQNAPとか買ってしまいそうになりますが、コスト優先、手間もかけたくないスタートアップ的な運用という意味では、PC+DropBoxのほうが何かと楽で低コストになりそうなのでは、というお話でした。