ソフトウェアストライピング


最新最速のハードディスクの性能が欲しいけど予算がない?手持ちのハードディスクが複数台あればラッキーだ。ソフトウェアストライピングで最速性能を手にすることができる。動画のキャプチャリング、ハードディスクレコーディング、サイズの大きい画像を頻繁に扱うなどの用途には最適だ。ここではソフトウェアストライピングの仕組み、利用方法、性能に関して記述する。


ストライピングって何?

ストライピングとはハードディスクに対するI/Oを複数のハードディスクに対して分割して読み書きすることによりパフォーマンスを向上する手法である。例えば10MBのファイルを1台のハードディスクに対して書き込むのに2秒かかるとしよう。

このファイルを半分に分割し、2台のハードディスクに対して同時に書き込めば半分の1秒ですむであろう。

読み込みも同様の原理で高速になる(読み書きとも実際にはオーバーヘッドがあるので2倍にはならないが、どの程度の性能の向上になるかはこのページで記述する)。この原理からするとハードディスクの台数を増やすほどアクセスは高速になるが、ストライピングに使用するハードディスク群(ストライプセット)のうち1台でも故障するとすべてのデータが破壊されるためストライプセット内のディスクを増やせば増やすほど信頼性は低下する。重要な用途には使用できないが、画像編集や音声・動画のキャプチャリング用途のワークディスクとしては十分であろう。

ハードウェアストライピング

ストライピングにはハード的に行うものとソフトウェア的に行うものの2種類がある。ハード的に行うものはRAIDコントローラボード(ストライピングはRAIDの一種。RAIDには他の対障害機能を含んだディスクアクセス方法が数種類ある)と呼ばれるSCSIインターフェースとRAIDアクセスコントローラを合体させた特殊なハードウェアを使用し、このハードウェアのレベルでストライピングを実現する。データベースサーバーには必ず使用されているほどポピュラーであるが、個人レベルで使用するには高価であるし、また、RAIDコントローラはそのような市場をターゲットとしていない。RAIDコントローラにはRAIDを設定するユーティリティーが付属し、例えばストライピングを行う場合は何台をストイプセットとしてどの程度の容量を割り当てるかを決定できる。ストライプセット(またはRAIDセット)はOSから見ると完全に1台のディスクとして認識される。ハードウェアストライピングではOSがIO要求を発行した後、その後のファイル分割処理や書込みなど一切がRAIDコントローラ上で行われるためにパフォーマンスは高い。また、一般的にはOSから完全に独立しているのでOSのインストールされるシステムディス クをストライピングすることも可能である。

ソフトウェアストライピング

一方、特殊なハードウェアを使用せずにOSの組み込み機能やサードパーティー製の製品としてハードディスクのドライバレベルでストライピングが行われるのがソフトウェアストライピングである。特殊なハードウェアを使用しないかわりに、ストライピング処理はソフトウェアで行われるのでCPUへの付加は高くなる。また一般的にハードウェアRAIDよりも信頼性が低いと言われている。ハードウェアRAIDでは実質上SCSIハードディスクしか利用できないが、ソフトウェアストライピングの場合はIDEでも利用でき利点がある。OSが起動しないとストライピング機能がロードされないためにシステムディスクをストライピングすることはできない。


環境準備

ソフトウェアストライピングを組む場合、NTを使っている場合には話は簡単である。NTはWorkstation版でストライピングがOSの機能として装備されている。Workstation版ではストライピングのみのサポートであるが、Server版では更に他のRAIDレベルもサポートしている。95はOSの機能としてストライピングを持たないので、ストライピングを行う場合はAdaptecのEZ-SCSI Proなどを購入し、そのストライピング機能を使用しなければならない。いずれの方法も設定ユーティリティーがあるのでそれを使用してストライピングを組む。PC上で私の試したことのあるストライピングはNTのストライピングと、95+EZ-SCSI Proのストライピングの2種類である。ただし、EZ-SCSI Proに付属のストライピングはある理由で使用を断念しているので、あまり詳細は紹介できない。また、NTのストライピングもPC静音化計画のハードディスクの部分で触れているように、静音化のために現在使用ていないので詳しいデータを紹介できないが、1年ほど前にベンチマークを行っているのでその結果を掲載する。また将来的にストライピングセットを組むと思うのでその時に詳細なデータを取り直してみたい。なにしろこんな話をホームページに記載すると考えていなかったので申し訳ない。


構成の決め方

ハードディスクが2台あるからと言って単純にその2台でストライピングを組んで性能が発揮できるわけではない。問題はOSのインストールされたパーティションはストライピングできない点にある。例えば、下記のような構成にするとどうなるか。

Dドライブにアプリやデータを入れてディスクアクセスを行う際には、通常Cドライブに対してもI/Oが発行されるのである。WindowsのインストールされたディスクにはOSの使用するファイルや、アプリケーションのアクセスするDLLファイル、また通常スワップファイルが配置される。つまり、せっかくストライプセットにI/Oを分散しているにもかかわらず、Cドライブに対してランダムなアクセスが発生しストライピングの性能が発揮できない。性能を考えた場合、ストライピングをしない場合でも、Windowsのドライブとその他のドライブは物理的に分けるのは鉄則である。性能を最大限に発揮させるように構成するには下記のような構成をとれば良いであろう。

設定およびベンチマーク

上記で触れたようにホームページに紹介することを考えていなかったので、詳細なベンチマーク結果を残していないが1年ほど前に実験した記録が残っているのでそのレポートをそのまま記載する。このレポート以外にも95+EZ-SCSI ProのSCSIディスク2台によるストライピングと、NT4.0のIDEディスク2台によるストライピングの使用実績がある。 レポートから抜粋はじめ


Windows NT 3.51 WorkstationにてNTのOSとしての機能であるソフトウェアRAIDを試してみました。Workstation版で試したのでRAID0(ストライピング)しか試せませんでした。ソフトウェアRAIDは危険だと一般に言われていますが、実際にそれを試して発言している人が皆無であるのでとても気になっていたのと、どの程度のパフォーマンスが期待できるのか興味があったのです

設定手順

  1. フォマーットしてよいディスクを数台用意する(2〜32台がサポートされています)。
  2. ディスクアドミニストレーターを起動する。
  3. 対象のディスクにフィルシステム・パーティションが残っているようであれば削除してしまう。
  4. ストライプセットにするディスク複数台を選択する(CTRLキーを押しながらクリック)。
  5. メニューからストライプセットの作成を選択し、サイズ、ファイルシステム(NTFS,FAT)を選択する。サイズは指定容量がそれぞれのディスクに均等に割振られる。

環境

ASUSTek ASUSTeK P/I-P55TP4XE, Pentium 133MHz、PIO SCSI-2ボード(ASUS SC-200)、HDD:IBM製(DPES)、平均 seek10.5mSec, 5400rpm

ベンチマーク結果

簡単なプログラムを記述しベンチマークを行った。指定されたブロックサイズで READ/WRITEのI/Oを行い、1回のベンチマークで合計70MB程度のREAD/WRITEを行うものである。I/Oの後にはFLUSHを行う。また、ブロックサイズはパラメータで指定できるようにした。このベンチマークを単体のディスクと、ストライプセットを組んだディスクに対して行いその結果を比較した。

結果としては2台のディスクでストライピングを行った場合、READで平均69%、 WRITEで平均79%のパフォーマンス向上が確認できた。また、ブロックサイズ大きい方がパフォーマンスが良好になる傾向にあった。書き込み時の転送レートでは単体のディスク2.9MB/secに対して、ストライピング時には5.2MB/sec程度であった。リードでストライピングを行った場合は6MB/secを超えていた。CPUの占有率としては、PIOアクセスのSCSIであるために元が25%程度と高いが、ストライピングを行った場合には30%程度となった。


レポートから抜粋おわり

雑考

ランダムアクセスについて

上記レポートのようにストライピングの効果はかなり絶大である。私が最近まで行っていたIBM DAQA(IDE)2台によるストライピングでも、Canopusのディスクベンチ(Canopusのキャプチャーボードでどの程度までこま落ちなしにキャプチャーできるか測定できる目的のもの)では、Readで7MB/sec、Writeで10MB/secの性能を測定できた。つまり一昔前のハードディスクを2台でストライピングすれば最新のハードディスク並みの性能を実現できるのである。しかし、気をつけなければならないのは性能が向上するのは連続データ転送についてであるということだ。小さなたくさんのファイルにランダムにアクセスしたり、シークの頻繁なアクセスでは性能は向上しない。つまり、大きな画像の編集、ビデオ・音声キャプチャーの用途では力を発揮するが、ビジネスソフトの用途ではほとんどメリットがない。

ストライプセットはマルチブートを行っている場合は当然他のOSから参照できない欠点もある。例えば95でストライプセットを組んだ場合は、DOSからそのディスクは参照できない。


95でのクラスタサイズについて

FATの限界ではあるが95でストライプセットを組んだ場合にはストライプセットのサイズが大きくなるほどクラスタサイズが大きくなるのでディスクの使用効率が低下する。クラスタサイズはディスク上の管理単位で、パーティションが大きくなるほどFATファイルシステムでは大きくなる。例えば、2KBしかデータを書き込まなくてもディスク上は32KBの領域を確保されてしまったりするのである。しかし、これはあまり問題ではないであろう。ストライピングはサイズの大きなファイルの連続転送に優れるので、この用途に従う限りはデータのほとんど格納されないスカスカのクラスタが大量に発生することはないであろう。


Adaptec EZ-SCSI Proについて

AdaptecのEZ-SCSI Proのソフトウェアストライピングの使用を断念した理由は、ハードディスクのブートブロックを書き換えてまい、OSのマルチブートしているSystem Commanderが上書きされてしまったからである。このようなブートマネージャーを使用していなければ問題ないであろう。性能的には上記レポートのような性能が得られるので問題はない。


ホーム