実践!仮想化ソフトウェア 2009

第6回仮想化用ストレージについて考えてみよう

今回は連載の最後として、仮想化環境構築には欠かせないストレージについて解説します。

なぜ仮想化でストレージが重要か

仮想化技術を利用した環境構築を突き詰めていくと、ストレージの課題にぶつかります。仮想マシンを構成する要素は、CPUやメモリ、ネットワーク、そしてストレージに大別できます。動作している仮想マシンそのものは、極論すればCPUとメモリだけで構成されます。一方ストレージは、仮想マシン自体やデータを永続的に保持するための仕組みなので、システムのライフサイクルを考えると、ストレージこそが仮想化インフラを支える基盤と言えます。

CPUやメモリは性能や容量が見積もりやすいのに比べて、ストレージは見積もりが難しく、また見積もりを間違えたからといっておいそれと交換できないのが実情です。ですから、仮想化環境の構築に携わる人はストレージの知識もしっかりと身につけておかなくてはなりません。

ストレージの種類

仮想化で利用されるストレージにはいくつかの種類があります。

ローカルストレージ
仮想化ホストにローカルで接続されているハードディスクなど。DASとも呼ばれる。速度は接続されている方式によるが、概ね高速。共有が行えない。
NAS
要するにファイルサーバ。NFSが使われることが多い。ギガビットEthernetで接続されるのがほとんどなので、どんなにストレージ側で頑張ってもアクセス速度は1Gbpsに制限される。
iSCSI
TCP/IPにSCSIプロトコルを流す仕組み。あの太いSCSIケーブルがEthernetケーブルに変わったと思えば良い。こちらも多くの場合ギガビットEthernet接続なので、速度は1Gbpsに制限される。
FC(ファイバチャネル)
光ファイバケーブルで接続するストレージ。FC SANとも呼ばれる。FCは2Gbpsから4Gbps、高速なものだと8Gbpsで接続される。

仮想化環境では、だいたいこの4種類からストレージを選択して利用しています。では、選択の上でどのように考えればよいのでしょうか。

図1 仮想化とストレージ
仮想化する前はDASだったが、仮想化後は共有ストレージが基本。
図1 仮想化とストレージ<br>仮想化する前はDASだったが、仮想化後は共有ストレージが基本。
接続経路のマルチパス化や10G Ethernetの利用など性能を改善する仕組みは存在しますが、本記事ではとりあえず置いておきましょう。

ストレージの選択

ストレージに求められる最も技術的な要素は速度でしょう。仮想化環境の場合、複数の仮想マシンからの入出力がストレージに対して行われます。速度が遅ければそれだけ仮想マシンが待たされることになるので、ストレージはできるだけ速いものが求められます。

速度を求めるならFC

速度で考えるなら、接続速度が速いFCかローカルストレージになりますが、FCは高価であること、ローカルは共有ができないことが難点です。仮想化ホストを単独で動かすならばよいですが、複数ホストでクラスタを組んでHA構成にしたり、ライブマイグレーションを行いたいならば共有ストレージは必須です。FCは高価ではありますが、性能的には優位性がありますので、業務システムなどでは広く使われるようになってきています。

コストパフォーマンスでNFSかiSCSIか

共有ができて、性能とコストのバランスを考えるなら、NFSかiSCSIになります。どちらも、いわゆる「アプライアンス型」の製品が多数出ているので、管理ツールを使ったり、サポートがついているものが欲しいのであればアプライアンス製品を選択することになります。

もし、自分でストレージの構築や管理、保守が行えるのであれば、簡単にNFSサーバやiSCSIターゲットを作ることができます。一番手っ取り早いのはLinuxをインストールして、サービスを立ち上げることです。設定が楽なのはNFSでしょう。LinuxでiSCSIを使うには「iSCSI Enterprise Target」と呼ばれるソフトウェアが一般的によく使われています。設定をするにはややiSCSIの知識が必要となるでしょう。

図2 iSCSI Enterprise Target
iSCSI Enterprise Targetは、Linux上のファイルやLVMボリュームなどをiSCSIイニシエータに対して提供できる。
図2 iSCSI Enterprise Target<br>iSCSI Enterprise Targetは、Linux上のファイルやLVMボリュームなどをiSCSIイニシエータに対して提供できる。

iSCSIは普及しているか

よく「iSCSIは普及しているか? 今後普及するか?」と聞かれますが、これはなかなか難しい問題です。

まず、iSCSIは情報が少ないと感じることが多々あります。また、アプライアンス製品がFC製品に比べれば安価ですが、それでも総じて高価であることも、爆発的な普及を難しくしている点かもしれません。Windows Server 2008やWindows Vistaから標準的にiSCSIイニシエータがサポートされるようになり、利用環境自体は整ってきていますが、今のところNASに対する優位性が今ひとつ見えにくいように感じます。

今後、同じEthernetベースの技術としてFCをEthernet上で流す「FC over Ethernet」などの技術が出てくると、より差別化が必要となってくるでしょう。iSCSIももう一段上のレベルに達する必要があるかもしれません。

表1 ストレージの比較表
状況によって評価は異なるが、概ねこのような比較評価になる。
表1 ストレージの比較表<br>状況によって評価は異なるが、概ねこのような比較評価になる。

ストレージで考慮すべき点

ストレージの選択は、何も接続方式だけで決まるわけではありません。ストレージそのものでも考慮すべき点がいくつかあります。

ハードディスクの台数
ハードディスクの台数が多いほど、容量が増え、性能が向上します。
ディスクの種類
ハードディスクにも接続方式や回転数などに幅があります。また、最近ではSSDによる高速化も行われるようになってきています。
ディスクキャッシュ
キャッシュの容量が多いほど、性能が向上します。
データ保護
性能向上のための要因は、場合によってはデータ保護の観点と相反することがあります。ストレージ単体のデータ保護だけでなく、バックアップも重要です。

ハードディスクの台数

ハードディスクは、台数が多ければ多いほど性能的には有利になります。台数が増えれば読み書きを行うヘッド数が増えるので、読み書きで待たされる可能性が減るからです。また、通常ハードディスクはRAIDを構成します。容量を稼ごうとするとRAID 5やRAID 6で構成することになりますが、性能的には不利になります。性能重視であればRAID 1+0で構成することになり、この場合容量は総容量の半分になってしまいます。

仮想化環境でたくさんの仮想マシンを動作させるとき、ストレージにはそれなりの容量が必要になりますので、容量と台数のバランスを取ろうとするとコストが上がります。それでも性能重視か、あるいは容量確保か、判断が難しいところでしょう。

ハードディスクの種類

ハードディスクの台数を増やす理由のひとつに、ディスクの回転待ちがあります。ディスク上のデータが万遍なく散らばっている時、ランダムアクセスはディスクが平均して180度回ってくるのを待たないといけなくなります。この回転待ちの時間を短縮するには、ディスクの回転を速くするか、回転そのものを無くすしかありません。

回転速度を速くするならば、一般的に使用されているSATAディスク(最高7200RPM)ではなく、SASディスク(最高15000RPM)などを利用します。回転数がおよそ倍になるので、待ち時間も2分の1になります。しかしそれでも回転待ち時間は発生します。

回転待ちを無くすには、SSD(Solid State Drive)を利用します。SSDはフラッシュメモリを使用したストレージなので、通常のメモリ同様、高速なランダムアクセスが可能です。とくにランダム書き込みに高い性能を発揮します。複数の仮想マシンの同時アクセスが発生するようなシステムの場合には、SSDに優位性があります。ただし、SSDは書き込み回数の上限があったり、まだ製品としての普及が進んでいないため実地での検証が進んでいないなど不安な要素もあります。コストもハードディスクに比べると高くなるので、用途を見極めて利用する必要があるでしょう。

ディスクキャッシュ

ハードディスクの性能不足を補うために、ディスクキャッシュの活用を考慮する必要があります。一般的なRAIDコントローラなら256Mバイト程度、専用ストレージ装置であれば1Gバイトぐらい搭載しているものもあります。キャッシュ容量が多くなればそれだけ性能が向上しますが、書き込みキャッシュは電源が落ちた場合、ディスクに書き込まれるまでバッテリ等でバックアップされなければなりません。ハードウェアやストレージの電源多重化もセットにして、データの保護を行う必要があります。

データの保護

キャッシュ上のデータ保護もそうですが、総じてデータは「壊れるもの」と考えて臨む必要があります。RAID 5よりもRAID 6の方が耐障害性は高いですが、RAIDセット全体が同時に壊れるような障害には耐えられません。また、利用者が間違えて削除してしまったデータはRAIDでは守れません。ストレージを多重化することで耐障害性を高めることはできますが、さらにデータ保護を考えるのであればバックアップは欠かせないでしょう。

仮想化環境でのバックアップは、基本的には仮想マシン上でバックアップソフトウェアを動作させてバックアップを行います。この方法は、これまでの物理サーバでのバックアップと変わるところはありませんが、OSの種類や動作しているアプリケーションに応じて、きめ細やかにバックアップが行えます。

VMwareのような製品では、VMware Data RecoveryやVMware Consolidated Backupのようなバックアップの仕組みを用意していますが、きめ細やかさの点では個別バックアップが優れているので、一律・一括のバックアップが必要かどうか、ネットワーク帯域を使用しない「LANフリーバックアップ」が必要かどうか、などで考えるべきでしょう。その他、スナップショット機能を併用したバックアップなど、いくつかの方法が考えられますが、どの方法がベストかはシステムによって異なります。特に「止められない」システムほどバックアップが難しくなるので、よく検討する必要があります。

また、バックアップは取りっぱなしにせず、必ずリカバリで元に戻せることも確認しておきましょう。

NFSで始めてみる手作り共有ストレージ

ストレージで考慮すべき点をいろいろと述べてきましたが、まずはやってみるのが理解への近道でしょう。手っ取り早く共有ストレージを用意したいのであれば、NFSサーバが一番です。NFSはHyper-V以外の仮想化環境でサポートされています。

適当なマシンにLinuxをインストールして、NFSサーバを実行します。たとえば/home/nfsディレクトリを共有させるのであれば、/etc/exportsに以下のように記述します。

/home/nfs    (no_root_squash,sync,rw)

オプションの意味は以下の通りです。

  • no_root_squash:ユーザrootでの接続をnobodyに置き換えず、rootとして処理する。
  • sync:同期書き込みモードで動作する
  • rw:読み書き可能で動作する

no_root_squashオプションはあまり見慣れないオプションですが、重要です。ただし、NFSは基本的にユーザ認証が無いので、この設定をしていると誰でもroot特権でアクセスできることになってしまいます。実際の運用の際には、公開先の限定や、物理的にもNFSのネットワークに他のマシンが接続できなくするなどの対応が必要です。より厳密なセキュリティが必要となる場合には、CHAP認証などが利用できるiSCSIか、物理的に接続方式が異なるFCストレージの利用も検討すべきでしょう。

NFSサーバの用意ができれば、あとは仮想化ホストから接続するだけです。接続ができれば、ストレージとして仮想マシンなどを配置することができるようになります。適切に設定すれば、ライブマイグレーションやフェイルオーバークラスタなども利用可能となります。

図3 VMware ESXiからのNFSサーバへの接続
図3 VMware ESXiからのNFSサーバへの接続
図4 接続したNFSサーバはその他のストレージと同じように扱える
図4 接続したNFSサーバはその他のストレージと同じように扱える

まとめ

ストレージは、仮想化以前では個別最適化が図られていたため、せいぜい容量やRAIDによる冗長化が行われる程度で、性能などはあまり深く考慮されていなかった部分です。また、共有ストレージもファイルサーバというレベルでは利用されていましたが、よりホストにダイレクト接続されたストレージとしては利用したことのあるエンジニアも少ないところでしょう。

しかし今後、仮想化による集約が行われるようになると、FCやiSCSIなどでの接続や、ストレージの性能や耐障害性など考慮すべき点が多くなってきます。仮想化環境構築の技術をしっかりと身につけるのであれば、ストレージにもじっくりととりかかってみてください。

おすすめ記事

記事・ニュース一覧