NASを活用した自宅サーバー構築

このページの目的[2010-11-13]

ファイルサーバーとしてIOデータ製NAS(NetworkAttachedStorageだった?)HDL-GS500を使用し,家庭内LANのどこからでも共用データへアクセスできるっていう環境は以前より構築してあるが,ここ最近,以下の懸念事項が浮上してきた。

以上から,「なんだ,サーバーをひそかに立てればいいんじゃないか」となった訳だ。

機種選定[2010-11-13]

仕様はどうする?[2010-11-13]

「サーバーを立てる」とはいってもパソコン形状の大型なものは目立って危険だ。「できるだけ小さくて機能としては立派なものがいいな」という前提で以下の仕様を満足するものを探すことに。

項目内容
ハードウェアスペックできるだけ高いものに越したことはないが,予算と設置スペースとのバランスをよく考えて
ディスク容量マルチメディア系のデータが今後増殖していことを想定するとできるだけ大きく
必須機能1Webサーバー(外部には公開しないが,自作データベース系アプリがいろいろあるので)。できればApacheがいい。当然,PerlやPHPが使えてカスタマイズできること。
必須機能2データベースサーバー(MySQL)が動作すること(同上)
あればいいな機能マルチメディアデータ(動画や画像データ)のサーバー機能

機種決定[2010-11-13]

必須機能を満足させようとすると国内有名B社やI社製の家庭用LAN接続型は脱落だ。さらには,「少し変わった物を触ってみたい。きっと楽しいに違いない。」なんて,いつもの病気もちらほらと漂い,ネットを徘徊して探し出したのが,QNAPhttp://www.qnap.com/jp/)製の多機能NAS。これはそれらのNASとは違い最初からシステム領域にもアクセスできるようになっているLinux機なのでシステムとしての拡張性は絶大だ。

TS-239ProII

メーカーは決まったが機種の絞込みにはかなり悩みどころだ。安いものはCPUが遅いけど,高いものは予算を確実にオーバーするし...と,あれこれ2ケ月程悩んだあげく,

と,2ドライブモデルに絞り込み,最終的には2ドライブモデル各機種の比較表(http://www.qnap.com/images/products/comparison/Comparison_2BayNAS.html)のCPUスペックおよびSMB/FTP速度の違い(そして何より予算)を決め手として,TS-239ProIIに決定だ。

型番の怪?[2010-11-20]

という訳でウチにやってきたTS-239ProII(箱画像参照)であるが,管理画面や設定用プログラム(QNAP Finder)で見ると,『TS-239PROII+』と表示されている。

TS-239ProIIと書かれてる外箱
TS-239ProII+って何だ?

「ん? プラスって何だよ,お茶目に表示が間違ってるよな。この程度は気を付けて欲しいよな。」と笑ったものの,どうもおかしい。TS-239ProII用のファームウェアが更新されていたので入れようとすると,『モデルが違うからupdateできないよ』みたいに受け付けてくれない。

で,まじめに調べてみると,どうやらこれは本当に『TS-239PROII+』という新モデルらしい。QNAP公式フォーラムによると,

一部のロットで『TS-239ProII+』を『TS-239ProII』として出荷しちゃったんだ。

だと。商品管理はきっちりやりましょうね。まぁ,こんなにネタとしておいしいものをつかめたことに感謝しておこう,「ネタの神様ありがとう」。

機種選定のまとめ[2010-11-20]

以上より,ウチにやってきたのは,『TS-239ProII』じゃなくて,正式発表前の『TS-239ProII+』だったということ。両者の違いはCPUだけだと思われる。

TS-239ProIIとTS-239ProII+のハードウェアスペック差
モデル名CPU
TS-239ProIIIntel Atom D410 1.66GHz 512Kcache SingleCore
TS-239ProII+Intel Atom D425 1.80GHz 512Kcache SingleCore

正式発表され正規流通が始まったときの価格がどうなるかは不明だが,かなり得した気分になるのが庶民らしいところだ。

ところで,モデル名の「II」はローマ数字の「Ⅱ」じゃなくて,アルファベット「ii」の大文字でこのサイトでは表記している。ちなみに,QNAPの公式サイトでも同様の表記になってるので,ひょっとすると正式なモデル名は「TS-239Pro2+(2はローマ数字のⅡで書く)」じゃなくて「TS-239Proii+」なのか? そんな訳ないよな。

ハードディスクはどうする?[2010-11-13]

この機械はハードディスクレスで売っているので,自分で買ってきて組み込まなければならない。こちらは自爆覚悟のWesternDigital製WD15EARSを購入だ。ただし「-00MVWB0」が後に続く667Gプラッタ版だ。今のところは発売直後の大騒ぎになった問題は出ていない様子。TS-239ProIIに組み込み後のネットワーク経由でのCrystalDiskMarkの結果を出しておこう。まぁ,結果はそれなりだ。

TS-239ProII+にWD15EARSを組み込んだとき時のCrystalDiskMark結果

ちなみに,TS-239ProII+には2台組み込んでRAID構築が可能だけど,今回組み込んだのは1台だけだ。同時に2台入れるとほぼ同時期に壊れそうなので,しばらく間をあけてから増設してRAID1を組もうかと...いや,単に予算をケチっただけなんだけど...

とまぁ,ファイルサーバーとしてはなんの問題もなくさくさくと使えるようになったので,ここからがお楽しみの時間だ。ぼちぼちとカスタムしていこう。

バックアップを自動でやりたい[2010-11-13]

退役寸前の前ファイルサーバーHDL-GS500ではあるが,「使える間はどんどん使っていこう」ってことで,データのバックアップ先として使うことにする。そこで,TS-239ProII+から自動で定期的にデータをバックアップする方法を考えてみよう。

まずは,TS-239ProII+から直接HDL-GS500にネットワーク接続だ。SSHでTS-239ProII+に入ったら,以下のコマンドでマウントしてみよう。

mount.cifs HDL-GS500のIPアドレス:共有フォルダ名 マウントするディレクトリ -o user=ユーザ名,pass=パスワード

この方法で接続できたので,次は,TS-239ProII+のデフォルト共有フォルダ(/share/Public)をバックアップ先HDL-GS500の共有フォルダ(Public)にバックアップするバッチファイル(ファイル名「/usr/local/bin/DataBackup.sh」とする)を作って実行してみる。

#!/bin/sh
mkdir /tmp/NetDrive   #マウントするディレクトリNetDriveをtmpの下に作成
mount.cifs HDL-GS500のIPアドレス:共有フォルダ名 /tmp/NetDrive -o user=ユーザ名,pass=パスワード
rsync -av --delete /share/Public/ /tmp/NetDrive/Public   #デフォルトの共有フォルダ
umount /tmp/NetDrive
rmdir /tmp/NetDrive

これが動作確認できたら,cronで定期的に実行できるように。/etc/config/crontab を,viエディタとかで開いて

0 1 * * * /usr/local/bin/DataBackup.sh

とでも設定(毎日AM1:00にバックアップ実施)して

crontab /etc/config/crontab

を実行しておけば,後は自動でバックアップをしてくれるはずだ。

開発環境を整える[2011-01-03]

いや,「開発」と言っても自分でソースから書き起こす訳じゃないので「コンパイル環境」ってのが正しいのかも。

ipkgのインストール[2011-01-03]

まずは管理画面の,『アプリケーション』-『QPKGプラグイン』から『Optware ipkg』をインストールしよう。インストールが完了すると,一覧に『Optware』アイコンが表示される。

Optware(ipkg)をインストール

インストールできたら,SSHで接続して,以下のコマンドを実行してみる。

ipkg list

すると,パッケージが用意されているプログラムのリストが表示される。それらの中から必要なものをインストールしていく。以下はその例だ。

ipkg install gcc

ipkg経由でインストールしたソフトのリスト[2011-01-03]

気づいたものだけだが。アプリによってはもっと他のものが必要になるかもしれない。

名称備考
coreutils 
diffutils 
gawk標準で入っているawkはbusyboxにリンクされているが,高機能なgawkを必要とするアプリもあるため
rm /bin/awk
ln -s /opt/bin/awk /bin/awk
gcc 
gettext 
grep標準で入っているgrepはbusyboxにリンクされているが,高機能なgrepを必要とするアプリもあるため
rm /bin/grep
ln -s /opt/bin/grep /bin/grep
libtools
mkdir -p /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/bin/
mkdir -p /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/i686-unknown-linux-gnu/
ln -s /opt/bin/ld /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ld
ln -s /opt/bin/as /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-as
ln -s /opt/lib/ /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/i686-unknown-linux-gnu/lib
make 
sed標準で入っているsedはbusyboxにリンクされているが,高機能なsedを必要とするアプリもあるため
rm /bin/sed
ln -s /opt/bin/sed /bin/sed
tar 

Apacheについて[2010-11-13]

まずは設定ファイル等のある場所を確認

項目場所備考
apachectl/mnt/ext/opt/apache/bin/Apacheの起動停止他
apache.conf/mnt/ext/opt/apache/conf/ ( /etc/config/apache/ へリンク)Apacheの動作設定ファイル

MySQLについて[2010-11-13]

まずは設定ファイル等のある場所を確認

項目場所備考
mysqld.sh/mnt/ext/opt/mysql/mysqld.shMySQLの起動停止他
my.cnf/etc/config/my.cnfMySQLの動作設定ファイル
データ/mnt/ext/opt/mysql/var ( /share/HDA_DATA/.@mysql へリンク)MySQLのデータ本体

PHPについて[2010-11-13[

まずは設定ファイル等のある場所を確認

項目場所備考
php.ini/etc/config/php.iniPHPの動作設定ファイル
extension_dir/usr/local/apache/modules ( /mnt/ext/opt/apache/modules へリンク) 
PEAR/opt/share/pear ( /share/HDA_DATA/.qpkg/Optware/share/pear へリンク)次項『PEARのインストール』が必要

mysqli.soのインストール[2011-01-03]

標準ではmysqli.soは入っていないので,上記『ipkg』からphp-mysqlをインストールする。

ipkg install php-mysql
cp /opt/lib/php/extensions/mysqli.so /usr/local/apache/modules

その後で,『php.ini』に下記を追加し,Apacheの再起動をおこなう。

extension = mysqli.so

PEARのインストール[2011-01-03]

標準ではPEARは入っていないので,上記『ipkg』からインストールする。

ipkg install php-pear

Perlについて[2011-01-03]

Perlのインストール[2011-01-03]

標準ではPerlは入っていないので,上記『ipkg』からインストールする。

ipkg install perl
項目場所備考
perl/opt/bin/perlPerl実行ファイル(Ver.5.10.0-6)