Windows Home Serverファーストインプレ

 先日導入したWindows Home Server(以下WHS)ですが、とりあえずXenでも普通に動いています。パフォーマンスとかは測ってないですが、XenはCPU効率は高いですが、ネットワーク周りがまだ弱いみたいなので、読み書き速度とかはあんまり期待できないかも知れないですね。

■物理ディスクを追加

 500GBのHDDも無事認識させられました。Domain0(ホストOS)上でパーティションを切って、DomainUの定義ファイルで、

disk = [‘file:/var/lib/xen/images/guest,hda,w’,‘phy:/dev/sdb2,hdb,r’]

としたら、Windowsから認識してくれました(/dev/sdb2の部分は環境にあわせて適宜修正してください)。fdiskでパーティション区切る時に念のためタイプをNTFSにしておきましたが意味があったかどうかは定かではありません。Domain0上ではフォーマットはしませんでした。

■集中管理、バックアップ

 どんな感じで動作するのか簡単に説明してみます。

 まずクライアント1台1台に、付属のHome Server Connectorというツールをインストールします(CD-ROMでついてますし、初期状態で共有フォルダにも置かれています)。そうするとクライアント側ではタスクトレイにアイコンが常駐し、またサーバーの管理画面にマシン名が現れます。これでWHS側でマシンの管理ができるようになります。例えば、ファイアウォールがオフになってたりウィルス検知ソフトが導入されていないマシンがあると警告が表示されます。これはクライアント側のタスクトレイアイコンにも通知されます(他のマシンに関する警告も全マシンのトレイアイコンで報知される模様)。

 フルバックアップはこのまま放置しておけば始まるようです。デフォルトでは0:00時開始。クライアントがスタンバイ/休止状態になっていても自動で起動するようです。これはWOLではなく、クライアント側のタスクスケジューラーと使ってるぽいです。一度に1台のバックアップしかとれないので、各マシンが起床するタイミングをどうやって制御しているのかは謎です。このまま何日か放置しておけば、各マシン間で適当にシフトが組まれるんでしょうかね?

 デフォルトでは日ごと、週ごと、月ごとのスナップショットを3パターンずつ保持してくれます。それらの中から特定のファイルを取り出すことのできるようです。また手動で開始した場合は名前をつけて別保存(上書きしない)することもできます。

 バックアップの除外設定はフォルダ単位のみです。.MPGを除外とかはできません。

 圧縮効率ですが、前にも書いたように、別システム間でも重複するシステムファイルなどは上手く排除して記録する仕組みのようで、1台分のバックアップがどれだけ占有しているかを知る術はありません。ただ印象としては思ったより縮むな、という感じ。逆に時間は結構かかります。初回はデスクトップ1台に半日かかりました。以後の差分はそんなにはかからないはずですが、ノートPCも初回だけは有線でつないでバックアップした方がよいでしょうね。

 集中管理画面(Windows Home Server Console)はタスクトレイやスタートメニューから呼び出せます。仕組み的にはリモートデスクトップ接続してるみたいですが、基本的にデスクトップ画面はみえず、簡単な管理インターフェイスシェル(往年のMacOSを知る人には、AtEaseとでも言えばわかるかw)が映ります。そこからバックアップの設定、開始、ユーザの追加、ディスク使用量のチェックなど簡単な設定ができます。

 このまま平穏無事に動けばという条件付きですが、バックアップソフトの存在感が希薄なのは良いです。タスクトレイとその吹き出しでしか意識することはありません。バックアップ先の外付けディスクをいちいちつないだりという手間もないですしね。逆にバックアップ中なのに気付かずに電源落としたりしないかなとも思いますが、基本的には夜中に勝手に起動してやっておいてくれるコンセプトなんでしょう。なので負荷が問題になる可能性も低いかな。寝室のマシンとかだと夜中に動き出してびっくりすることもあるかも知れません。ちなみにノートPCはACアダプタがつながっていないとバックアップは実行されませんので、朝持ってでかけようとしたら電池が切れてた、なんてことはないでしょう。逆にいえば、夜はちゃんと電源につないでおかないとバックアップされないので注意が必要です。

■ファイル共有、公開

 LAN共有は特に苦労することもないでしょう。普通にマイネットワークにあらわれます。共有は1つだけで、少なくとも管理UIからは共有を追加したりはできなそうです。Photos、Videos、Music、Software、Publicといった公開フォルダと、Users下にプライベートなユーザ毎のフォルダがあります。市販のNASに比べてもかなりシンプルな作りです。ユーザもグループ定義とかはできなそうなので、もう少し凝ったことがやりたい人はNASの方が良いかも知れません。

 インターネット公開は上手くいってません。UPnPで自動設定してくれるはずですが、使用ポートが80、443など普通にWebアクセスに使うポートなので、ウチのように既に公開サーバーが立っている環境ではぶつかってしますのです。IISを自分でいじればいけるかも知れませんが、HTMLファイル内のリンクもいじらないとダメじゃないかなぁと思ったり。Apacheのmod_proxyでリバースproxyとかやってみたいんですが、どうもSSL(443)の方が上手く機能しませんでした。もうちょっと検証してみます。また、xxxxx.homeserver.comというダイナミックDNSによるホスト名も取得できますが、これも本当にただのダイナミックDNSで、ウチの場合、ウチのWebサイトが見えるだけです。

追記:普通に外からみたらポート変更だけで動いてました…

 普通に動的なIPアドレスで、サーバーなんて公開してないよ、という人には非常にお手軽で便利なソリューションだと予想されます。良いホスト名を取りたい人は急いで導入しましょうw。

■メディア共有

 うちは一人暮らしなので、別に写真や音楽を共有する必要がないし、既にDLNA環境は組んであるので、あんまり試す気がないです(^^;)。ただざっと見た感じでは、上記のパブリックなフォルダにおいて、XBox360などを経由してリビングで観ようってレベルで、別段メタデータで整理ができるとかまでは考えられていないようです。もしかしたらVistaのメディア管理機能と組み合わせればなにかできるのかな??

 投稿者別にアルバムとか作れて、おたがいに評価したりできると面白いんですけどね。そういうAdd-Inが出ないかなぁ。

■コストパフォーマンス

 完成品に関しては、現在手に入る某ショップのものは250GB1台で129,900円とちょっと高い印象です。Athlon X2とかRadeonとかサーバーにはちょっとオーバースペックな仕様も気になります。HPのアレはデザインもいいし、値段がどれくらいになるのか気になりますね。

 あまりCPUやメモリの要求スペックは高くないので、手頃なお古のマシンがあればHDDだけ買ってDSP版で導入してみる方が割安でしょうね。ただ、大容量HDDをつけてナンボなので、せめてSATA環境は用意した方が良い気がします。また24時間稼働なので静音、省スペース、省電力である点も優先したい。そんなケースやベアボーンが色々と出揃ってくると良いなぁと期待。

 普通のNASやバックアップソフトと比べてどうか、ってことですが、細かい除外設定やスケジューリングなどの面では専用ツールに劣りますが、リカバリDVDでブートして、サーバーからイメージコピーして復元できる、個別ファイルも取り出せるなどリストア面では充分な機能と使い勝手を備えているので、お手軽度はなかなかのものだと思います。システムファイルなどの重複を避けてくれる仕組みも、OSメーカーならではという気がします(少なくともσ(^^)はサードパーティ製では知らない)。ので、

  • 家庭にマシンが3台程度以上あって、既にLAN環境も組んである、という人
  • ついでにVPNルーターなどリモートアクセスソリューションも揃えたいと思っていた人
  • 家族のマシンもちゃんと安全に運用されてるか気にする人
  • 手頃なマシンが余っている人

なんかは、WHSの方がシアワセになれるかも知れない気がします。

XenでWindows Home Serverを動かしてみる

 現在新しいサーバー機を購入し環境を移行中なんですが、今回はXenを使ってサーバー機自体を仮想化する試みをしています。そのついでに、新サーバーの余力でWindowsサーバーも稼働させることを思いつきました。そこへ、Windows Home Serverなるシステムが発売になったので、500GBのHDDと一緒にDSP版を買ってきました。

■Windows Home Serverの特徴

・ディスクをつなげばどんどん保存領域が増える

 仮想ボリュームになっているので、物理的には別ドライブでも、みかけ上は単一の大きなフォルダに見える仕組み。しかもRAIDに似た仕組みでドライブ間相互バックアップをとってくれる模様。しかもしかも、そのドライブは他のマシンで普通にNTFSマウントできるとか。至れり尽くせりですな。

・集中バックアップ

 各マシンに専用ソフトを入れておけば、決まった時間に勝手に差分バックアップしてくれます。差分なのに復旧時はディスクイメージリストアが可能というのが高ポイント。サードパーティでもありそうだけど、MS製だと信頼性高そうな印象。
 面白いのは、複数マシンのバックアップをとっていて、システム系ファイルなど重複は避けて保存する点。何台もOS丸ごとバックアップしても、割と容量は抑えられるらしい。DLLとか微妙にバージョン違いそうなのは、MD5とかで比較して管理したりするんですかね?

・リモートアクセスゲイトウェイ

 Windows LiveポータルからHome Serverマシンにアクセスし、さらにそれを介してLAN内の各マシンにリモートデスクトップ接続できるらしいです。


■しかも仮想環境で構築してみるっ!

 とはいえ、これ以上24時間稼働マシンを増やしたくないということで、新サーバーマシン上に、Xenの完全仮想化で入れてみました。
 もとから入っていた160GBに、ホストOS(CentOS5)とメインサーバーになるゲストOS(CentOS5)を入れて、余った93GBに導入。追々500GBは追加予定。

 CPUはAthlon x64/3500+と普通のWebサーバー、メールサーバーには余裕ありまくりなので、負荷的にもいけるんじゃないかと(WHSの要求CPUは1GHz以上)。メモリは注文したのが明日にでも届けば計2GBになるので、これも余裕かと。
 仮想化技術ってスゲーなぁ

 安定して使えるようなら、TeraStationや現在24時間稼働しているWindows機(エンコ、PacketiX、Orb、TVersityサーバー等)の役割を集約できれば、かなりの省エネになる予感。

・インストールで若干トラブル

 インストールはLVM上の論理パーティションに行い、CentOSの仮想マシンマネージャーからインストールしました。

 途中、再起動がかかった際、青画面で「Setup is starting Windows」となったまま進まなくなる現象がおきました。さすがにWindows Home ServerをXenで動かす情報はまだ見あたりませんでしたが、WHSはWindows Server 2003ベースなので、そちらでググってみると、RedHat Knowledgebaseに情報がありました。どうも、インストールの過程で再起動がかかった時に、仮想マシン側から光学ドライブが見えなくなるのが原因のようです。仮想マシンマネージャーが作った定義ファイルを編集して、光学ドライブを追加登録します。

 (Hogeという名前で仮想マシンを作製した場合)/etc/xen/Hogeをエディタで開き、下記を追加します。

disk = [‘file:/var/lib/xen/images/guest,hda,w’,‘phy:/dev/scd0,hdb:cdrom,r’]

boot = “d”

 disk行の前半は環境に応じて仮想マシンマネージャーが定義してくれているはずなので変更しなくて良いはずです。追加の赤字部分のうち、「/dev/scd0」部分はホストOS側での光学ドライブデバイスを適宜指定します。それを仮想マシン側で/dev/hdbに指定することで、Windows的にはDドライブに割り当たります。boot行は文字通りWindowsを光学ドライブからブートさせる指定です。Windowsの起動メディアは自動的に2回目以降はスルーしてHDDブートしてくれるのでこうしておくのが無難のようです。ただしインストールが終了したらboot行は削除します。

 とりあえずこれでインストールは完了でき、いまんところ普通に稼働しているようです。パフォーマンスなどはこれから追々検証してみます。

mod_securityでspamトラックバック対策

 σ(^^)が管理してるMovableTypeサーバー2台が、ときどきハングアップしたように無反応になることが時々ありまして、topによるとmt-tb.cgiが原因ぽい。つまり、トラックバック処理でリソースが食いつぶされているということですね。

 spamトラックバックのフィルタリング自体はMT内蔵機能でほぼ解決できるんですが、この処理自体が重すぎて、山のようにトラックバックが来た場合にDoS状態になってしまう訳です。

 そこでApacheレベルで特定のリクエストを排除できるmod_securityを導入してみました。1.8/1.9系の設定例はたくさん見つかるんですが、設定文法がまるっと変更された2.x系の情報は見つからず苦労しました。なにも考えずに最新版を導入してしまった…

 とりあえず設定してみたって段階ですが、覚え書きしておきます。

■インストール

 ウチの環境だと、mod_unique_idは導入済みでした。libxml2はlibxml2-develパッケージまで入れておく必要があるみたいです。

 で、後はアーカイブを展開し、Makefile内のtop_dir = 行に、httpd.confのServer rootで指定してあるパスを記入し、make、make installします。

 Apache側の設定として、httpd.confの然るべき場所に、

LoadFile /usr/lib/libxml2.so

LoadModule unique_id_module modules/mod_unique_id.so
LoadModule security2_module modules/mod_security2.so

 を記入します。

■日本語を含まないトラックバックを弾く

 公式サイトには、USER-AGENTやIPアドレスなどのブラックリストを定義した設定ファイルが色々置かれていますが、この手は最新版を入れ続けないと効果が薄そうだし、ルックアップの負荷も大きそうなので、とりあえず日本の皆さんがやられている「日本語(2バイト文字)を含まないものを弾く」というアプローチを採ってみます。

 具体的な設定は、同じくhttpd.confで、

<Files “mt-tb.cgi”>
    SecRuleEngine On
    SecRequestBodyAccess On
    SecDefaultAction deny,log,status:406,phase:2,t:urldecode
    SecRule REQUEST_BODY “^[\x00-\x7F]+$”
    SecAuditEngine On
    SecAuditLog /var/log/httpd/mod_security.log
</Files>

としてみました。Filesディレクティブでトラックバック用スクリプトにだけ働くように指定しています。1.x系から変更になったコマンド名だけを書き換えるだけでは上手くいかず試行錯誤したんですが、どうやらSecDefaultActionにt:urlencodeを追加したら上手くいったっぽいです。

 動作試験しようにも、ウチのブログはブログ名が日本語なので、 一時的に

SecRule ARGS:excerpt “^[\x00-\x7F]+$”

 のように、POSTデータの内、excerpt(トラックバックで送られる概要)のみを検査対象にし、本文に日本語を含むエントリと含まないエントリからトラックバックしてみたところ、一応後者のみが弾かれました。

 これでしばらく様子を見てみたいと思います。

 が、しかし本ブログに関してはそもそもトラックバックが正しく受信できない問題が発覚しました。別途原因究明しないと…

 ともあれ、このmod_securityはかなり柔軟にレシピが書けるので、Webアプリケーションのセキュリティ対策に色々と活用できそうです。

VPNで実家でもDLNA

 寝室のテレビをDLNA対応のBRAVIAにしたことで、ルームリンクVGP-MR200が退役したので、 実家に設置してみました。

 当然、直接自宅のDLNAサーバー群を参照することはできないので、VPN(PacketiX)を使ってややトリッキーなことをしています。

 Zebedeeやstoneなどで単純にパケットが通ってもMPEG2では帯域が不安なのと、DLNAはuPnPを使ってるのでフォワードも難しそう、ということで、やや美しくないですが、DLNAサーバー(TVersity)は実家のマシンで稼働させました。で、そのマシンがPacketiXで自宅のファイルサーバーにあるDivXファイル群を参照しています(直接DLNAをVPN経由させてると期待した方、申し訳ありません)。

 こうすることで、VPNを通るのはDivXストリームなので割と帯域的には余裕みたいです。ただ欠点として、

  • 実家側でもPCを立ち上げておかないとならない
  • しかも結構パワーがいる

ということがあります。とりあえず少し前にやはり自宅で退役したAthronXP/2500+マシンでもそれなりにトランスコードできているようです。

 ルームリンクではなく、LinkTheaterなど直接DivXを再生できるメディアプレーヤーなら、もう少し別の方法があったでしょうが、とりあえず追加投資するほどでもないので、これで使ってみようかと。

twitterアカウント作ってみました

 話題になってるので一応試してみようということで、twitterにアカウント作りました。

http://twitter.com/do_gugan/

 ハイフンが使えなかったので、アンダースコアにしてみたところ、リンクの下線とカブって見づらいことが発覚orz。

 とりあえず、Web更新はマンドクセーので、Opera用のウィジェットであるTwipperaと、PHP実装のケータイ用ゲートウェイtwitterMobileを設置。出先では911Tから更新できる体制にしてみました。

 受信、というか読む方はGoogle Talkと連携したりもできるようですが、GoolgleTalkは普段立ち上げていないのでとりあえずなにも無し。コメントいただいても気づくのは遅めかと思われます。