ストレージの基礎

検証から学ぶVDIストレージ選定 (第1回)

デスクトップ仮想化において適切なストレージの選定は非常に重要です。
デスクトップ仮想化におけるITインフラストラクチャーは、すべての処理がサーバー側で動作するためCPUやメモリ、ストレージアクセス処理能力などのキャパシティプランニングが非常に重要になります。

すべてのユーザーが、デスクトップ仮想化導入前と同じような使用感でサーバー環境を用意することが望ましいのは言うまでもありません。しかし、デスクトップ仮想化導入における失敗プロジェクトを観察すると、ストレージがボトルネックになっている事が良くあるのです。つまり、デスクトップ仮想化プロジェクトにおいて、ストレージの選定がとりわけ重要であるのです。

今回は、デスクトップ仮想化プロジェクトにおいてどのような観点でストレージを選定すれば良いのかを、実際に検証を行ない、そのパフォーマンス比較や考え方、運用管理などを4回に分けてご紹介する予定です。

第1回(本記事)では、検証に入る前にストレージの基礎をご理解いただきます。そして第2回では、検証内容の説明とデスクトップ仮想化で有効なストレージの機能に関してご紹介いたします。第3回、第4回では、実際に検証を行なった際の結果と考察をご紹介します。この検証では、ローカルストレージおよび外部ストレージ(NetApp)を利用した際のディスクI/O性能、パフォーマンス性能比較などをご紹介する予定です。

今回のデスクトップ仮想化検証におきまして、ストレージ環境をネットアップ様より、サーバー環境をデル様よりご提供いただきました。この場を借りて御礼申し上げます。

是非、最後までお付き合いいただき、デスクトップ仮想化環境におけるストレージ選定の一助となれば幸いです。

NetApp FAS2240
図1 検証で利用したストレージ NetApp FAS2240

 

Dell PowerEdge R815
図2 検証で利用したサーバー Dell PowerEdge R815

さて、実際のベンチマークの検証に入る前に、そもそもストレージとは何なのかを基礎から重要な項目について説明させていただきます。

◆ストレージとは何か

ストレージとは、コンピューターにデータの保存をするための装置のことです。PCで作成した文書や表計算データ、動画、音声データなどを保存する場合、普段ハードディスクやSSD、DVD-R/RW、USBメモリーなどを使っていると思います。これらのような記憶装置のことを総称して「ストレージ」と呼びます。

サーバーの世界でも上記で挙げたようなストレージを用いることはありますが、システムの規模が大きくなればなるほど、これらのストレージだけではストレージ容量の不足やストレージへのデータアクセスを捌き切れないといった問題が発生します。クライアントと違い、1台のサーバーに対して複数のユーザーがストレージ上のデータにアクセスし、データの読み書きや保存をするためです。したがってサーバーには同時読み書きがスムーズにでき、メンテナンス性に優れたストレージが必要不可欠であるといえます。

そこで使われるのがFC-SANやNASと呼ばれる外部ストレージです。特にNASストレージについては近年、ネットワーク機器のネットワークスピードが向上したのもあって、FC-SANのような専用のハードウェアを必要としないために安価で、かつネットワーク上に設置するだけで手軽に設置できることから注目されています。

 

◆DAS(Direct Attached Storage)とは何か

DASとはサーバーに直接接続されたストレージのことを指します。

・SATA(シリアルATA)
SATAはUrtraATAで採用されていたパラレル転送方式のものをシリアル転送方式に変更したものです。パラレル転送方式のATA仕様で最も高速であったUrtraATA133規格(133MB/秒)から大幅に高速化が図られています。最近のPCやサーバーではストレージなどの接続にこのSATAが使われています。SATA2規格の場合は約2倍の300MB/秒、最新のSATA3規格では約4倍の600MB/秒の転送速度を誇ります。通信方式は半二重でデータの送受信時に切り替えながら通信します。シングルユーザーによるアクセスには十分の性能を誇ります。

・SAS(Serial Attached SCSI)
SASは従来パラレル転送方式を採用していたSCSIをシリアル転送方式に切り替えたものを指します。シリアル転送方式に切り替えたことによって、多数のデバイスを接続するとパフォーマンスが落ちるといった問題を解決しています。SAS規格の転送速度は6Gリンクのもので最大600MB/秒です。通信方式は全二重を採用しておりデータの送受信を同時に実行することができるため、マルチユーザーや仮想化環境に有利です。SASコントローラはSASとSATAドライブを接続可能でかつ混在することも可能です。

DellのSASストレージ
図3 DellのSASストレージ。6Gb/s(実効データレート600MB/秒)の書き込み性能を誇る

 

・フラッシュメモリードライブ
ハードディスクといった補助記憶装置は、メモリ(主記憶装置)とくらべてデータの読み書きの速度が遅く、複数のデバイスからのアクセスは厳しいものがありました。そこで最近注目されているのが「フラッシュメモリードライブ」です。SSDやPCIスロット接続のメモリストレージなどといえば一度でも聞いたことがある人が多いのではないでしょうか?これらのフラッシュメモリードライブはHDDと異なり、読み取り装置やモーターなどの可動装置部分がないため、高速に読み書きできてかつ省エネ性が高く、衝撃に強い点やパフォーマンス向上など期待される魅力的なストレージ装置です。
特にPCIスロット接続のメモリストレージ、例えばFusion-ioのioDriveについては、SSDストレージよりも長寿命で高いパフォーマンスを誇る製品が市場に出回ってきました。これらのストレージは特にWebサービス系のオンラインゲームを手がけるゲームベンダーやデータベースサーバーの処理性能向上を検討する企業などに人気のようです。

 

◆FC-SANとは何か

SANはストレージやサーバー同士を高速なストレージ用のネットワークであるFC(Fibre Channel)を使って接続し、大規模なストレージプールを提供する装置のことです。後述のNASはネットワークインターフェイスを通じてNASストレージと接続しますが、SANの場合はサーバー側にFCホストバスアダプタ(HBA)を組み込み、FCスイッチを通じてFCストレージと接続します。

 

◆FCoE(Fibre Channel over Ethernet)とは何か

FCoEとはファイバチャネルのプロトコルを拡張された10GbEイーサネット上で動作させるための規格です。イーサネットを使ってファイバチャネルのデータ(FCフレーム)を転送します。FCoEによりSANとLANのトラフィックを統合することができます。

 

◆NAS(Network Attached Storage)とは何か

NASとはネットワークに接続して利用する共有ストレージのことです。ネットワークプロトコルはTCP/IPを利用します。同一のネットワーク上に接続されたコンピューターからはファイルサーバーと同様に見えて、共有ディスクとして利用可能です。NASストレージに接続する場合には専用のハードウェアを必要としないため、コストパフォーマンスの面ではSANより勝りますが、SANと比べるとOSやファイルシステムを間に置くために転送速度が遅いのとネットワーク帯域や負荷状況により性能が劣化するという傾向があります。

 

・NFS(Network File System)
UNIXに実装されている古くからあるファイル共有用のプロトコルです。TCP/IPで動作します。外部ストレージとはイーサネットを使って接続して専用のインターフェイスを必要としないため、安価に拡張できるというメリットがあります。

・iSCSI
ホストとストレージ間の情報とデータのやりとりを行うSCSIプロトコルをTCP/IPを使って転送するための規格をiSCSIと呼びます。外部ストレージとはイーサネットを使って接続して専用のインターフェイスを必要としないため、安価に拡張できるというメリットがあります。iSCSIを使ったストレージとの接続には、ストレージ接続側に「iSCSIイニシエータ」を構成する必要があります。

 

◆RAIDとは何か

・RAIDの概要
RAIDとは複数のストレージを使ってデータを分散して記録し、データのアクセスの高速化や、ディスクの障害によるデータロストを予防し、信頼性を高めるための技術です。RAIDを利用するには専用のハードウェアを使う方法(ハードウェアRAID)と、ソフトウェアで実現する方法(ソフトウェアRAID)があります。

・RAIDの種類
RAIDはデータ読み書きの高速性やストレージの冗長性など、機能レベルにより様々な種類があります。ここではその中でもよく使われるものについて解説します。

1. RAID0(ストライピング)
2台以上のディスクで構成して、ディスクの読み書き時はそれぞれのディスクに分散して読み書きするため、データの読み書きの速度が高速化されます。使用できるディスク容量は全てのディスク容量の合計になります。この後のRAIDと違いRAID0は冗長化されていないため、1台でもディスクが故障するとすべてのデータが壊れるという欠点があります。

2. RAID1(ミラーリング)
2台以上のディスクで構成して、それぞれに同じデータを書き込みします。ディスク同士は全く同じデータが保存されているため、一方のディスクが壊れてもデータは失われません。使用できるディスク容量は全てのディスク容量の半分になります。

3. RAID5
ディスクを3 台以上用意し、パリティという特別な仕組みを一緒に書き込むことでディスクの冗長化を図っています。ディスクが1台故障してもデータは失われません。RAID5は1台あたりのディスク容量×(台数-1) の容量が使えます。RAID5の欠点は、データ書き込み時のパリティ計算の負荷が高いため書き込み性能が高くないことや、故障に耐えられるディスクが1台までなので、2台以上故障してしまうと復旧できなくなるという点です。

4. RAID6
パリティを2重に計算してディスクに書き込むことで、2台までであれば故障しても問題ないようにしたRAIDです。RAID5よりも障害に強いという利点があります。RAID6の欠点は、より高度なパリティ計算を高速に行うためにパリティ生成に時間がかかり、データの書き込み速度が低下してしまうことがあるという点です。

5. RAID1+0
RAID1+0はミラーリング(RAID 1) したディスクをストライピング(RAID 0)する構成です。ストライピングはディスクが1 台でも壊れるとすべてのデータが失われると説明しましたが、RAID1+0 ではミラーリングが行われているので、ディスクが1台壊れてもデータは失われません。RAID1+0の欠点は、ミラーリングされた両方のディスクが壊れてしまうとデータが失われてしまう点や、ディスクが最低でも4 台必要であること、ミラーリングされているため容量が半分になってしまうことという点です。

SASディスクを4本RAID構成
図4 73GBのSASディスクを4本RAID構成にした場合に利用可能なストレージサイズ比較

 

◆VDIにおけるストレージ選び

仮想化環境において、ストレージの選定は非常に重要です。選んだストレージによってハイパーバイザーやVDIの性能が左右されるといっても過言ではありません。

規模が非常に小さい仮想化環境であればSASストレージを選択するのはいいでしょう。SASストレージはIDEやSATAストレージなどと比べて仮想化に適したストレージだからです。

ところがVDI環境ではそうもいっていられません。サーバー上では多数のOSやVDI環境に関連するサーバーが稼働しますし、一斉にストレージに対して多数のユーザーからアクセスがあるためです。従ってVDIにおけるストレージは同時接続性とパフォーマンスが優れたものを選定する必要があるというわけです。

以前弊社でVDI環境を想定した検証を行ったことがあります。検証内容はWindows Server 2012上にHyper-V 2012環境を構築して差分ディスクを用いた仮想マシンを100VM配備し、VDI用途を想定したシミュレーションを複数の仮想マシン上で行い、ベンチマーク結果を比較するというものでした。CPUは32コアで256GBのメモリ、合計3.5TBのハードディスクというマシンでテストを行いました。

当初は100VMの同時起動くらいであればローカルストレージ上で充分だろうと考えていました。しかし、仮想マシンを一斉に100VM起動しようとしたところ、20VM程度仮想マシンがパワーオンしたあたりで挙動が怪しくなり、そののちいっこうに仮想マシンが起動しなくなるという問題が発生しました。ホストの状態をWindows Serverのパフォーマンスモニターで確認したところ、CPUやメモリについてはまだまだ充分なスペックが残っていたものの、ディスク関連のパラメータを確認したところ、アクセスのパフォーマンスグラフが100%張り付いていました。このような状態では新しいVMを起動できるはずがありません。

HP D2200sb ストレージブレード
図5 HP D2200sb ストレージブレード

 

そこでHP D2200sbというストレージブレードを購入し、12台のSSDをRAID1+0で構成したストレージ上に仮想マシンを移して同じテストを実施しました。さすがハードディスクより読み書きのパフォーマンスが良いSSDです。ベンチマークの結果、無事100VMの同時起動を達成することができました。ここまでの内容で確認ができたことは、規模や用途に応じたストレージを選択しないとディスクへのアクセス過多状態に陥ってしまい、VDIを利用するユーザーが増えた場合にパフォーマンスが出ないばかりか最悪システムがまともに動かなくなるということです。

例で挙げたテストを行ったときはシステムの冗長化は想定していなかったためDASを使ってテストを行いましたが、中規模以上のVDI環境構築では仮想化基盤の耐障害性を高めるために冗長構成を組むのが一般的です。冗長構成を利用する場合はハイパーバイザーによりますが、iSCSIやNFSやFCストレージなどの外部共有ストレージを利用する必要があります。

ハイパーバイザーにおける冗長構成
図6 一般的なハイパーバイザーにおける冗長構成(ストレージ編)

 

その他外部共有ストレージを利用する場合に以下の様なメリットがあります。

・ホストのメンテナンスを容易に実行可能
・メンテナンス時や障害発生時に仮想マシンを別のホストに移行可能
・ホストを停止することなくストレージの構成を変更可能
・ホストのパフォーマンスに影響を与えることなく仮想マシンのバックアップを実行可能

仮想化環境においてストレージの選定が如何に重要であるかがお分かりいただけたでしょうか?
今回はストレージの基礎として、ストレージの種類やRAIDについて、VDIにおけるストレージ選びについて説明いたしました。次回は検証内容に関する説明と、今回の検証で利用したストレージのNetAppについて解説いたします。次回もお楽しみに!
•本書に記載されている事柄は、予告なく変更されることがありますので、予めご了承ください。
•本書は「無保証」で提供され、市場性、特定の目的に対する適合性、または第三者の権利を侵害しないことを含むいかなる明示または暗示保証は一切付与されません。Citrix Systems, Inc. (以下「Citrix」といいます) は、本書に含まれる技術的または編集上の誤りと欠落について、また、本書の内容の実行および使用に起因する直接的、付随的、二次的、およびその他のあらゆる損害について、Citrixがそのような損害の可能性について事前に知らされていた場合でも、一切責任を負いません。

この記事を読んでいる人はこんな記事も読んでいます