TOP MAP UP

Windows8.1 pro x64でホームサーバーを作ろう!




ホームサーバーとしてはそれまでWindows home serverを使っていたが、事実上の系統のdiscontinueとなったため、今回Windows8 pro x64にて、ホームサーバーを立ててみた。



Storage pool

ホームサーバーとして、まず重要なのがストレージ機能だが、Windows8 proではストレージプールが使用できる。
ストレージプールの特徴は、いわゆるディスクアレイの構成が非常に柔軟で容量を揃える等の制限が無く、余っているドライブをどんどん繋げることが可能となっている。
プールした領域からドライブを作る際にリタンダンシーを数種類選べるが、おすすめはパリティ(RAID5相当)で、三つの実ドライブがあれば構成可能
作成したドライブから、実ドライブを抜くコマンドなどは現在のところ無い。であるので、リタンダンシーでないドライブは、全部の内容を何処かに移動しないと、ドライブ構成の解除は出来ない。リタンダンシーのあるドライブは(壊れている、いないに関わらず)接続を外せば構成から外す事が可能となっている。こういった仕様となっているので、運用方法や、要求用件等を熟慮してリタンダンシーのタイプを決定する必要がある。
単に容量を増やす場合、ディスクドライブを追加して、そのドライブをストレージプールに加えれば、実容量を増やすことが出来る。また作成したドライブは、シンプロビジョニングによって、実容量とは別に論理容量を制限無く設定できる。実容量が足りなくなった場合は、実容量を追加するまでドライブのアクセスにロックがかかる(読み出しも不可)ので注意
もしシステムディスクが壊れたとしても、Windows8 proのインストールされているハードウェアにこれらのストレージプール構成のディスクを接続すれば、自動的にドライブにアクセス可能なので、システムの再インストールなどが非常に簡単に済む。あるいはストレージの引越しが非常に敷居が低い。
接続可能なストレージはUSB接続なども含み制限が無い

Windows home serverと比較して、ドライブ速度や、ディスクアレイの扱いが非常に柔軟であり(AFTや容量の制限も無い!)WHSのDrive Extenderの乗り換えには十分な機能を備えている。



Hyper-V

Windows上で仮想マシンを動かすもの。VMware player等と同じような機能を持つ。
VMwareと比較して特殊なのが、実ネットワークカードのうちの一つを完全に占有して、それ全体をラップする論理ネットワークカードが作成される。この論理ネットワークカードを通して仮想マシンと実マシンの通信をコントロールする。
この時、実マシンと仮想マシンは論理ネットワークカードを通して、同一の実ネットワークカードを見ているのであるが、IP等はそれぞれ別のものが割り振られる(同じには出来ない)
このようにVMwareと違い、かなりハードウェアに近い部分でコントロールされるので、Hyper-Vを使うのであればそれ専用にネットワークカードを用意する方が、メンテナンス的に恐らく安心となるだろう(特にリモート主体の場合)
Hyper-VのパフォーマンスはVMwareと比較して特に遅い部分などは無い。VMwareはディスクアクセスがかなり速いと思うが、Hyper-Vも実ディスクドライブを占有できる使い方が可能なので、そういった部分でも不利な所はない(ディスクイメージを使う場合は、流石にイメージを作る場所によって速度がかなり違う)
もちろんマイクロソフトの製品であるので、ゲストOSがWindowsXP等を使う場合は(Windows-Windowsの場合は)互換性などは全く問題は無い。



Remote Desktop

サーバとして使う場合、とにかく遠隔操作が非常に多くなる。Windowsで遠隔操作はリモートデスクトップが非常に便利な訳だが、Windows8のリモートデスクトップはそれまでのリモートデスクトップに比べて速度がかなり速いような気がする。非常に優秀であり、Windows-Windows間のリモートはリモートデスクトップ以外(VNCであるとか)を選択する強い理由は無い。
実際の運用に関しては、ルータでNATをする際に、標準ポート以外のポートを使用するのと、アカウント全てに十分な強度のパスワードの設定を行っておく必要がある。



DLNAサーバ

DLNAサーバはPS3 medeia encoderが使いやすいと思われる。オススメ。



FTPサーバ

IIS等でも立てれるとは思うが、nekosogiftpが使いやすいだろうと思われる。オススメ。
実際の運用に関しては、ルータでNATをする際に、標準ポート以外のポートを使用するのはもちろん、それだけでは(全然関係ないポートであろうが)延々とアタックを食らうので、アタックを仕掛けたアドレスに対して、nekosogiftpでアクセス拒否の設定を行っておくことをオススメする。またアカウント全てに十分な強度のパスワードの設定を行っておく必要がある。



デスクトップとしてのWindows8

とりあえずClassic Shellを入れよう。Classic ShellはWindows8以前から存在する、クラシックスタイルを再現するソフトで、使い勝手は全く問題ない(細かくカスタマイズも可能)これをインストールすれば、従来のWindowsとほぼ同じ感覚で操作可能になるので、modern UIがどうのこうのという心配は全く無くなる。安定性も問題ない。(以下はこの状態を前提とする)
Windows8は割と評価の高かったWindows7よりも、OSとしての素性はかなり向上している。基本的な動作のレスポンスや速度がかなり速くなっているように感じる。もちろんこれは単にユーザーインターフェースに関するプライオリティが上がってるとか、そういった部分の話ではなく、いろんな部分の速度が「速くなったな」と思わせる何かがある(色々計測したら、それなりに違ってくるのではなかろうか)
特に便利になったと感じるのが、タスクマネージャに出てくる情報が非常に細かくなっており、今までだとプログラマとしては、わざわざ別のソフトをインストールして、それらの細かい情報を取得していたが、Windows8のタスクマネージャはそういった用途にもかなり応えてくれる(もちろんスレッドハンドルだとか、そんな所までは見えないが・・・)またそういった計測系のレスポンスが非常に良くなったような気がする。
ファイルの転送のダイアログなども情報が細かく出るようになった。特に転送速度の履歴が出るが、今までと同じように「残り何分」とかの予測は出ており、あれが当てにならないのは変わらないのだが、転送速度と、その履歴から自分で「大体このくらいかな?」と判断する材料が増えたのは地味に嬉しい。
そういったあたりから、デスクトップ用途としても、Windows8は当初の評判よりも、かなりのポテンシャルを秘めているように思える。

難点としてはAeroの廃止と、デスクトップガジェットの廃止だろうか。恐らくパフォーマンス優先の判断なのだろうが、それでも何をどう選択するかはユーザーに委ねて欲しいと思うが、そんな事をちゃんと考えている企業ならば、そもそもClassic Shellは必要なかっただろう。



140323 追記

ファイルサーバーとしてのWindows8.1 pro

Windows8.1になって特に重要なのが、ReFSの採用と言える。ReFSはNTFSよりも更に耐障害性を確保しており、storage poolとの組み合わせは「もうこれサーバその物が物理的に吹っ飛ばないとデータロストしないんじゃないか」というレベルに到達しているような気がする。
このファイルシステムの組み合わせだが、現時点での主な組み合わせと用途と注釈を紹介すると・・・

パリティ+NTFS(16TB容量)
パリティはコマンドラインで指定しない限りは、通常三つのディスクをセットでパリティが保存される。なのでディスクの効率は(3-1)/3となる。つまり3TBのディスクは2TB使える事になる。
ちなみにコマンドで指定すれば最大8をセットとでき、ディスクの効率は(8-1)/8となる。多分実ドライブがセット数を下回る場合は作成できないか、セット数が減ると思われる。多分。3TBのディスクは2.625TB使える事になる。多分。
で、ここで確保する容量が16TB以下だと、Windowsによるファイル圧縮を行う事が出来る(これは確かクラスタサイズが一定以下の場合有効になる)。冗長性を求めつつ、可能な限り容量を稼ぐとすれば、このような設定が最適となる。

3way+ReFS
一定の冗長性を持たせつつも容量を優先させたのがパリティ+NTFSだが、逆に家族の写真など「飛んだらマジやばいっすわ」(二度と取れないし、ネットに存在しているものでもないので、取り返しがつかない)みたいなものは、とにかく冗長性を確保したいだろう。
その場合は3way+ReFSで常にデータは3重に保持される(一応2wayでも作れるが、無くしたくないのならば念には念を入れるべきだろう)
ちなみにReFSはパリティでは作れず、2way or 3wayのみで作成可能(ReFSそのものが多重にデータを保持する、というアーキテクチャを前提にしているため)
同様な制限としてNTFSであったWindowsによるファイル圧縮もAPI的に対応されていない。
しかしReFSはこういった制限と引き換えに「書き込んだ後のデータ不良」に対しても対処が可能となっている(通常は書き込むときにのみ、ちゃんとデータが書き込めたかを検証する。なので書き込んだ後にディスククラッシュでデータが不良になった場合に、CRC等で「データが不良」なのは判ったとしても、何が正しいデータだったのかは判らないのだが、ReFSは複数に書き込むことが前提のファイルシステムなので、これを容易にリカバリができる)

Undelete
以上、一般的なストレージサーバとしては十分すぎる実力を持つWindows8.1proなんだが、一つだけ足りない物がある。それはユーザーの誤操作によるファイル消去に対応できないという事だ。
従来までのshadow copyも実は健在なのだが「もともとのデータがあって、それの差分表現を累々と行い、世代バックアップを構築、必要無くなった時に全てを消去」というような動作ではなく「とりあえずバックアップしたい全データを別の場所に保存」というような方法になっていた(はず。確か)これでは容量効率的に2wayと変わらないので、ストレージをフルに使うという観点では躊躇してしまう。消したファイルだけ(ネットワーク越しであったとしても)ごみ箱に入ればそれで十分なのだが・・・。
という要望を実現するのがUndeleteというソフト(http://file-fukugen.com/)これを使えば、例えネットワーク越しのファイル削除でも復元箱の中にユーザーの設定した条件で保存され、条件より外れると自動的に削除される、という大変便利なもの(というか、なんでこれがWindows標準で付いてないのかがわからん、というくらい便利)
この条件と言うのが「特定のドライブを対象/非対象にする」と言った当り前なものから、「削除されたファイルは特定のドライブに移動する」というような容量効率を上げる物とか(転送先ドライブを冗長性が無いドライブとかにしておけば、実質容量の圧迫がやわらぐ)、「経過時間/ドライブの空き容量」等をトリガに削除動作に移れる。
このソフトそのものは、かなり昔からサーバ向けに販売されているものなので、動作の信頼性も十分にあると思うので大変にお勧め。





TOP MAP UP