RAIDで高速デスクトップ

 コンピュータの進化の特徴は、高速化と大容量化が甚だしいということだ。ユーザが高度なアプリケーションをインストールしたり、創造的な活動のためにコンピュータを利用したりするにつれて、ストレージに対する要求はどんどん大きくなってきている。よく使われるOSSアプリケーションを実行している普通のLinuxデスクトップの場合でも、RAIDを使用すればディスク性能を向上させることができる。

 連続したブロックからデータを読み取る場合でも、普通のハードディスクはメモリの100倍ほど低速だ。データがディスク全体に散らばっている場合には、性能はさらに低くなる。それに加えてマルチタスクをさせた場合、普通のコンピュータであれば画面上のプログレスバーはほとんど進まなくなってしまう。しかし嬉しいことにLinuxデスクトップならば、コスト意識の高いユーザにもRAID(Redundant Arrays of Independent Disks)が手の届くところにある。

 今回、2台のまったく同じSerial ATAハードディスクを搭載した平均的なデスクトップマシン上で、RAIDがどの程度性能を向上させることができるのかを見るためのテストを行なった。使用したデスクトップの内容は次の通りだ。

システム
プロセッサ AMD BE-2400(デュアルコア、2.3 GHz)
マザーボード MSI K9MM-V(MicroATX、1.5 Gbps SATA 2チャンネル)
メモリ 1 GB×2枚(OCZデュアルチャネルDDR2 800)
ハードディスク 160 GB×2台(Hitachi Deskstar 7K250)
ソフトウェア
OS/デスクトップ環境 Kubuntu 7.10 32-bit、KDE 3.5.8
プロダクティビティアプリケーション/ブラウザ OpenOffice.org 2.3、Firefox 2.0.0.11
開発環境 KDevelop 3.5.0、GCC/G++ 4.1.3
マルチメディア Kino 1.1.0、Gwenview 1.4.1

 RAIDによる性能向上を把握しやすくするために、KDEベースのLinuxデスクトップ上で3種類の異なるディスク構成を使用して性能を調べてみた。

  1. ハードディスク1台
  2. ハードディスク2台でストライピング(RAID 0)
  3. ハードディスク2台でミラーリング(RAID 1)

 目的は、ハードディスク2台の構成(上記の2番目と3番目)の場合に、ハードディスク1台の構成(上記の1番目)と比較してどれほどの性能向上があるのかを明らかにすることだ。そのため3つの構成のそれぞれにおいてディスクを激しく使用するタスクを実行して、その実行時間を測定した。なおタスクは次のような3つのタイプのユーザを想定して、日常的に繰り返し行なう必要のある代表的な操作を選んだ。

  1. プロダクティビティアプリケーションとマルチタスク
    1. システムの起動(KDEセッション――ウェブブラウザ、IM、電子メール、音楽プレイヤ、ファイルマネージャ――の起動を含む)
    2. マルチタスク(軽度)――CDへの書き込みをしながらOpenOffice.org Writerを起動
    3. マルチタスク(重度)――ディスクの負荷が高い状態(バックグラウンドでslocateを実行して全ファイルのインデックスを作成)でFirefoxを起動
  2. ソフトウェア開発
    1. KStarsをコンパイル
    2. KDevelopを起動
    3. KDevelopを使ってKStarsのコードを変更/デバッグ
    4. KDE Education Projectのソースツリーからファイルを検索
  3. コンテンツ作成とエンターテイメント
    1. Kinoで生のDV形式の6分間のビデオクリップをエクスポート
    2. Kinoを使って6分間のビデオをエンコードし、DVD作成
    3. Gwenviewで1年分の写真を閲覧(1,300枚のデジタル写真を48×48の大きさのサムネイルとして表示)

プロダクティビティアプリケーションとマルチタスク

raid1.jpg
図1:プロダクティビティアプリケーションとマルチタスクのテスト結果

 理論的に言えば、ハードディスク2台でミラーリングしたディスクアレイを使った場合には、連続的な読み取りを2倍行なうことができるはずだ。またハードディスク2台でストライピングしたディスクアレイを使った場合には、連続的な書き込みも2倍の速度で行なうことができるはずだ。しかし現実にはほとんどの場合において、実測値としての性能の向上はずっと小さい。例えば、プロダクティビティアプリケーションについての結果(図1)のグラフからも分かるように、ハードディスク2台の構成の両方でシステムの起動時間は12秒短縮しただけだ。これは朝仕事に出かける直前に急いで地元の天気予報を確認する場合を考えると嬉しい結果かもしれないが。

 ただし、ディスクを激しく使用する操作を同時に複数実行した場合には、もっと顕著な向上が見られた。この場合の性能向上は驚異的で、別プログラムが激しくデータを検索しているときにブラウザを起動しても、1分近くも待たされることはなく、たった8秒で起動した。

 ミラーリングしたディスクアレイは、複数の読み取りを行なう際に明らかに優れていた。これは理論通りだ。2台の各ハードディスクの上に同じデータがあるため、システムは読み取り操作を同時に並行して行なうことができるので、全体としての性能を著しく向上させることができる。

ソフトウェア開発

raid2.jpg
図2:ソフトウェア開発のテスト結果

 ソフトウェアが巨大な一つのファイルから構成されていることは滅多になく、通常はソースコードを読みやすくするために複数の小さなファイルに分けられている。そのため連続的な読み取りにおいて効力を発揮するストライピング構成から性能の向上を得ることはほとんど期待できない。一方ミラーリングでは、複数の操作を並列して実行するような開発タスクについて性能が向上する可能性がある。

 今回実行した開発タスクは、コンパイルを除いてはマルチスレッド化されていなかったので、結果的に小さな性能向上しか見ることができなかった(図2)。とは言えコンパイルに関しても、(コンパイルは主にCPUを使用する処理なので)テストの間のディスクへのアクセスはあまり多くは発生しないので大きな向上は見られなかった。

 大規模なプロジェクトをコンパイルするのと同時に大量のファイルを読み込むといったような、もっと多くのタスクを同時に実行した場合には、テスト結果は異なるものになったかもしれない。またクアッドコアのCPUを使用すれば、ハードディスク2台を使用したディスクアレイの利点をコンパイルの際にもっと活かすことができる可能性もあるだろう。

コンテンツ作成とエンターテイメント

raid3.jpg
図3:コンテンツ作成とエンターテイメントのテスト結果

 ホームビデオの編集はやりがいのある趣味だが、圧縮しない状態のビデオには大量のディスク空間が必要となるため、快適な作業をするためにはストレージシステムの性能が非常に重要だ。ディスクのスループットが不十分である場合、ビデオの読み込みや保存に長い時間がかかり編集作業に集中する妨げになる。

 コンテンツ作成のような作業では、RAID 0ストライピング・アレイが明らかに適している。マルチメディア関連についての結果(図3)から分かるように、ビデオは半分の時間で保存することができて、1年分のデジタル写真集もすぐに閲覧することができた。グラフではDVD作成についてのRAID 0の優位性が小さいが、これはDVDの作成が主にCPUを使用する作業であるためだ。しかし満足できる映像を手早く完成させてしまうことができれば、KinoがDVDをエンコード/書き込みしてる間は一服する余裕ができるだろう。

まとめ

 今回のテストでは、ハードディスク2台を搭載したLinuxデスクトップの性能について大きな向上が見られた。性能の向上はビデオ編集などの一部の分野では特に顕著だった。そのため、頻繁に大量のデータの保存/読み込みを行なう必要がある場合には、あと少しだけハードウェアに追加の投資をしてRAIDを構成することにはメリットがあると言えるだろう。ただしその場合、アレイにはまったく同じハードディスクを使用することを強くお勧めする――次回のアップグレードや新しいデスクトップコンピュータの購入の際には、ハードディスクを1台ではなく2台注文しよう。

 構成を決める際には、いくつかの点を考慮する必要がある。例えばデータが貴重なものである場合には、ストライピングにするのを考え直した方が良いかもしれない。RAID 0では、ディスクがどちらか1台でも故障すればデータが失われるので、ハードディスク1台を使用した場合よりも信頼性が低い。そのためストライピングを利用したいという場合には頻繁なバックアップを必ずするようにしよう。とは言え、ストライピングとミラーリングを混ぜ合わせることも可能なので、例えばオペレーティングシステムとユーザディレクトリのほとんどはミラーリングにしておいて、速度を重視する一時的な作業用のフォルダをストライピングにすることなどができるだろう。

Simon Kaczorはバージニア州ロアノーク在住のソフトウェア開発者。バージョン0.99以来の熱烈なLinuxファン。

Linux.com 原文