概要
現在の構成
基本の考え方
ドライブ構成
構成の経緯
機能ごとに切り分けている理由
複数台の HDD を RAID で使うか、機能で分けるか
ページファイル、分離、複数単体ディスクとFAT
テンポラリエリア分離のメリット
システムとアプリケーションプログラムは分離しないのか
インテリジェント RAID カードによる RAID の損得
ソフトウエア RAID でなく Host RAID?
RAID BOX によるハードウエア RAID の損得
考察と雑感
Windows NT 系カーネルの OS は、1996年からの付き合いになります。その頃から、個人で使い心地の良いドライブ構成を求めてきました。現在、本当にこれが最良かは分かりませんが、現行メインパソコンはかなり納得できる状況です。これについて説明したいと思います。
個人で使うパソコンの場合、スループット重視よりはレスポンス重視の方が使いやすくなります。しかし、動画などを編集すると有る程度のスループットも必要です。これらのトレードオフにうまく折り合いを付けたいと考えてきました。
構成に当たって考えた方針は以下の通り。主題は「適切な分離と用途にあったRAID構成」です。
「ソフトウエア RAID にせず Host RAID する」は同じじゃないかと言うご意見もあろうかと思います。この辺も以下で説明します。
基本方針に従って現在の構成は以下の通りになっています。
今回の構成場合、System(C:) と Data(D:) を合わせれば、4台の HDD が有り、RAID 5 や、RAID 1+0 が組めます。また、Temp(C:) やページファイル用の2台も合わせれば8台の HDD となり、RAID5 でも十分な効率で速度が出せる台数になります。RAID 1+0 の場合でも、組み合わせによる効率低下を補った上で一つのディスクシステムとしては十分な速度増加が得られます。
旧メインクライアントは6台のHDDからなるインテリジェント SCSI(U160) RAID カード(Adaptec SCSI RAID 2005S) による RAID 1+0 を運用していました。6台の SCSI ディスクという贅沢な構成の RAID に System(C:) と Data(D:) を納めて運用していたのですが、あまり使いごごちを向上することが出来ませんでした。
ベンチマークはそこそこになり、特にランダムアクセスの速度低下が少ないのに使い心地があまり向上しなのです。これは、2つの理由のようでした。
キャッシュが256MByte以上ある様な高級なインテリジェント RAID カードや RAID BOX であれば、このような問題はキャッシュが解決してくれそうです。しかし、大きなキャッシュを持つ高級なインテリジェント RAID カードは、構成などを変更させて、環境が変わって不安定にしてしまいやすい個人のクライアント用としてはリスクが大きく(インテリジェント RAID カードによる RAID の損得で解説)、高価なこともあり、導入に踏み切れませんでした。さらに、無理に買ったとしても、個人の場合、運用方法の情報を得ることも難しい状態でした。
また、十分なキャッシュを持つような RAID BOX は、値段もさることながら消費電力の問題で断念しまた。
結局、その当時(2002年頃)入手しやすい48MByte程のキャッシュしか持たない小型の RAID カードでは、個人用のクライアントとしては、割に合う使い心地にしにくいという結論に達しました。少し月日が経った今回(2006年中頃)の構成検討でもキャッシュにサイズなどの進展は有ろうとは思いながらも、その大まかな関係に変化はないであろうと言うことで、今回の構成では機能分離を優先することにしました。
Windows の他に、じっくり様子を眺めたことのある他の OS は FreeBSD 位しか無いので、比較対象は FreeBSD 位しかないのですが、Windows NT系のシステムは、ページファイルの出し入れが多い様に思います。少し使われないエリアがあるとどんどんページファイルに掃き出してキャッシュを確保していきます。
この頃は少なくなりましたが、Windows NT の出始めの頃には、テンポラリ領域やシステム領域を分離する方がよいとの記述があちらこちらで見受けられました。これは、出し入れの多いページファイルと他の入出力が競合しないようにしたいとの表れだと考えます。
機能で分けるときに、ページファイルの必要量が現在の HDD の容量に比して小さいこともあり、データディスクや、テンポラリディスクと兼用で分離してきました。他のところでも多く見かけるような気がします。この方法でもレスポンスの向上も得ることが出来ました。
この方法には、以下の欠点があります。
これを解決したいと考えました。そこで、ディスクの最初の方にページファイル専用の領域用意してを FAT32 でフォーマットしました。
また、ページファイルは、仮想化メモリの一部を構成しているので、そのページ単位である 4Kbyte の単位でランダムアクセスされると考えます。Host RAID や小型のインテリジェントカードなどで RAID 0 を構成しても、この手のアクセスはあまり向上しません。RAID を構成する際の効率低下が目立ってしまいます。むしろ、元々 OS の方がばらけてアクセスしてくれるので、複数の単体の HDD を用意しすれば、その分だけ増えた HDD の分だけ、シーク量が減少しアクセスが高速化されるはずです。
ここまで配慮しても、単独のソフトウエア自身のレスポンス改善にはさほど効きません。例えば、オーサリングソフトの様に大きなメモリ領域を要求し、解放、別用途に再獲得を行うようなソフトの場合、ページファイルを分離して複数のHDDで高速化している効果の恩恵も強く受そうなのですが、さほどの効果はないのです。
メモリ消費量の問題であれば、まずメモリそのものの搭載量を増やすのが一番効果があります。ページファイルの改善をここまで考えるようなときは、まずは、メモリをOSの限界まで搭載します。メモリをOSの限界まで搭載していると、其のOS上で動くアプリケーションは、単独ではそれを超えた使い方をしないので、効果が薄くなります。
ところが複数のアプリケーションを動作させると事情が変わります。例えば、編集・確認の済んだ動画をオーサリングソフトで整えて焼き込みながら、動画プレーヤで編集済み動画を横目で確認しながら、動画編集ソフトで次の動画を編集するなどと言う流れ作業をやっていると、大きく効果が出ます。対策をしていない状態ではレスポンス云々の前に、焼き込み不良が怖くて、なかなかこんなまねは出来ません。
以上により、今回は、2台の HDD を用意し、各 HDD の最初の方に専用のパーティションをFAT32で切り、使うことにしました。これにより、画像編集ソフトや動画編集ソフト、DVD のオーサリングソフトを走らせたときの立ち上がりや、画像投入時の反応、終了したときの復帰が速くなったように思います。また、複数の大型アプリケーションを立ち上げている時の反応が良くなっているように思います。
ページファイル専用領域の残りの部分は、HDD 2つ分の大きなエリアがあります。この部分がもったいないので普段利用しないで、バックアップ領域として使っています。バックアップを HDD 化したことにより、バックアップの自動化は格段にやり安くなっています。しかし、これだけでは、あまりに通常稼働のシステムとあまりに近しい関係になっていますので、同時に使えなくなる可能性もあり、別途バックアップも行っています。(別記事として公開予定)
テンポラリファイルは、その名の通り一時ファイルなので System(C:) や Data(D:) 等に比べればデータの安全性の確保をかなり甘くできます。このため、テンポラリ専用で分離してしまえば、この領域は、ソフトウエア RAID や Host RAID で純粋なRAID 0 を組んでもさほど不安にはなりません。
テンポラリを高速にしておけば、フォトショップなどのテンポラリを大きく取るソフトウエアも高速に動作します。
また、この領域は、データを読み込んでいるときに書き出されたり、プログラムがローディングされるときに領域確保されたりと、他のエリアと並列に動作することが多く発生するようにも思います。
例えば動画編集ソフトの場合、テンポラリを分離しておけば、読み出しと書き込みが下記の様に分離されるので、読み書きのたびに大きなシークが発生するようなことが無くなり、シーケンシャルアクセスに近くなり HDD 本来の速度が出ます。
DVD オーサリングソフトになると、タイトルを集めた後、何段にも渡ってテンポラリ上のファイルを処理するので分離の効果と高速化の効果の恩恵を強く受けます。
これらの利点のため、テンポラリエリア分離を行っています。
ここまで分けることにこだわるのならば、システムとアプリケーションプログラムは分離してしまわないのか? という疑問も生まれると思います。
大型のアプリケーションの場合、立ち上がり時に多くの DLL を読み出すので、アプリケーションを展開するディスクと分けておけば、ヘッドのシーク量が減りレスポンスが向上するという期待が生まれます。2世代ほど前の機械では、これを実践して、アプリケーションディスクと、システムディスクを分離して見たことがあります。この時は、単体ディスクを6台で構成し機能で分けていました。しかし、あまりレスポンスを向上させることは出来ませんでした。
立ち上がりの様子を見てると、システム側のディスクを筆頭に他のディスクが忙しく動作し、これが律速となっていたようでした。
しかし、SSD を使えばこれは変化する物と思われます。SSD を前提にすれば、読み込み時のシーク時間は0と見なせるので、ここに DLL の多いシステムディスクを納めれば、システムとアプリケーション立ち上がり時間に大きく貢献する物と考えます。しかし、まだまだ HDD に比べて購入できる品種の容量が小さいので、その少ない容量に最も効果がありそうなシステムディスクに割り当て、大きな容量が必要なアプリケーションディスクと分離するという選択枝がある物と考えます。
Windows NT 系カーネルは、高速化のために、ディスプレイの描画処理をコアに近いところに取り込んできます。この変更は、Windows NT 3.5 の時の行われたように思います。このため、ディスプレイの描画処理で障害を起こすとファイル関係の処理も巻き込まれて停止する可能性が高い様です。サーバ用途の場合、描画処理に負荷のかかるようなアプリケーションも少なくこれによる問題は緩和されますが、クライアント用パソコンでは、無視しにくい問題になります。
また、クライアントパソコンの場合、させる仕事に応じて構成を変更させることも多く、USBやIEEE1394によるホットプラグイン・アウトも多く発生します。これによる不安定化もサーバ用途の物より顕著に表れます。
ブルーバック画面での停止が発生した場合、Host RAID ではほとんどディスクの一貫性チェックが必要になり、次の立ち上げでそれが走ります。Windows 系のソフトウエア RAID の運用経験は乏しいのですがこの辺の事情は同じだと思います。インテリジェント RAID カードによる RAIDや、RAID BOX によるハードウエア RAID であれば一貫性に問題が出るようなことは少なく、その後の立ち上げでディスクそのものに一貫性チェックが走ることはまずありません。
旧メインクライアントは6台のHDDからなるインテリジェント SCSI(U160) RAID カード(Adaptec SCSI RAID 2005S) による RAID1+0 を運用していましが、2002年頭〜2007年頭までの5年ほどの運用で一貫性チェックが行われたのは、HDDの故障の時のみでした。また 結局 RAID 上に構成したファイルシステムで不整合が出たことも有りませんでした。
このため、クライアント用途では、ソフトウエア RAID や Host RAID では十数台以上の HDD が大規模な RAID を組むことに躊躇してしまいます。また、RAID のレベルもほとんどの場合が1でせいぜい 1+0 まで、RAID 5 等の一貫性チェックに手間のかかるレベルを組みたくありません。
このように、ディスク内のデータの保全性については、インテリジェント RAID カードによる RAID が圧勝しますが、ことレスポンスと言うことになると、分が悪くなります。これは、インテリジェント RAID カード上の CPU(MPU) の処理能力がボトルネックになる場合がまま見受けらるからです。
シングルコアの時代には、RAID カード上の CPU(MPU) が独自に処理を行えば、メインのCPUより処理能力が劣っても、その分別途処理をしてくれる分だけ全体の能力が引き上げられました。専用のCPU(MPU)の場合、ハードウエアの支援を受けられるので、かなりの有利となりました。
ところが現行のマルチコアのシステムで、クライアントパソコンを組んだような場合、負荷のかかっていない状態のコアが出やすくなります。このコアが、RAID の処理を行えば、メインの処理に RAID の処理の影響を与えにくくなります。RAID カード上の CPU(MPU) に比べれば圧倒的の高性能なことが多いので、インテリジェント RAID カードによる RAID が不利になります。
この不利を覆すような、キャッシュメモリが大きく、処理能力の高い CPU(MPU) を搭載した RAID カードが手に入れば解決しそうなのですが、そうはうまくいきません。RAID カード上のキャッシュの書き込み遅延時間が時間が長くなり、様々なリスクを生みやすい事が分かってきました。
特に個人運用の場合、故障したときの問題は重くなります。高価で入手性の悪い物を無理に使ってしまうと、次に入手できない可能性が高く、他の手段でのバックアップにより神経質にならざるを得ません。この点、Intel 系のチップセットを使った HostRAID は入手性が良く、Intel の他のチップセットでもアレイをマウントできることが多いのでこの問題は緩和されます。
個人でも入手性が良くメンテナンスを可能な上記の問題の緩和された、キャッシュメモリが大きく処理能力の高い CPU(MPU) を搭載した RAID カードを見つけられませんでした。現行メインクライアントパソコンは、レスポンスを重視し、小型 RAIDカードを採用することなく、Host RAID による RAID としています。
ソフトウエア RAID でも Host RAID でもプログラムでその機能を構成して実現するところは同じですが、その階層が異なります。Windows NT系のカーネルの場合、ソフトウエア RAID はOSの機能としてファイルシステムが実現します。このため、下回りのインターフェイスや HDD のそのものの影響を受けにくくなっています。
Host RAID は、インターフェイスの BIOS や Driver の機能で RAID を実現するものです。インターフェイス依存があり制約が増える代わりに、インターフェイスの持つハードウエアの支援を受けることができます。Windows 2000 以降では、ソフトウエア RAID でも RAID 1であれば、起動ディスクに出来るようですが、Host RAID で有れば、RAID5 等でも、起動ディスクにすることができるというメリットもあります。
起動メリットは、Windows 用途で今回のようなRAID1 用途ではソフトウエア RAID も起動できるのでメリットは薄れますが、レスポンスに関してはハードウエアの支援がある Host RAID が有利なようなので、このごろは Host RAID が使われることが増えているように思います。
さて、インテリジェント RAID カードによる RAID の損得で書いたように、クライアント用途ではパソコンを不安定にしやすいので、システムクラッシュに備えて、バックアップなどの保全が RAID とは別途必要です。この面でも個人のクライアント用とでは Host RAID が有利なようです。
ソフトウエア RAID のばあい、ファイルシステム上のバックアップ以外の方法が選択しにくくなります。HDD のイメージコピーツールや、リストア時に起動ディスクを作ってくれるバックアップソフトは、ソフトウエア RAID に対応していないことが多いようです。このようなソフトでも、Host RAID で構成された RAID あれば、ひとつの HDD とみなして対応できるものが多いようです。
RAID BOX によるハードウエア RAID は、性能的にみても、其の汎用性からも、ほとんどの問題が無くなります。電源投入、切断シーケンスには気を遣いますが、完全に本体と分離しているので、UPSを使って本体との間に遅延を設定し、UPSの電源スイッチから電源入り切りの制御をするようにすれば、解決します。結局のところ、それ以外の部分がネックになります。
これがネックになり、断念しています。特に電力の制限は大きく、ディスプレイなどを含めてシステム全体で 100V 15A に近づくと普通の家庭の部屋に設置することが難しくなってしまいます。専用ブレーカーとコンセントを用意するところまで踏ん切りが付ければ導入したかも知れませんが、なかなか種々の情勢がそれを許しません。
このシステムにはバックアップ専用のHDD群が外付けの HDD BOX で別途存在しています。これについては、別のところで書きたいと思います。
ここまでやってしまうと、個人持ちの機械としては大げさすぎるようになってきていると感じるときがあります。特に消費電力と発生する熱は、電気代を初め様々な問題を引き起こしてくれます。騒音もなれたとはいえもう少し小さくなって欲しいところです。なんとかもう少し小規模のシステムで同じくらいの能力を出す方法がないかなと思います。