vSphereでのiSCSIストレージの利用

著者Eric Siebert
Storage Magazine 2010年8月号より


vSphereをインストールして、そのメリットを最大限に引き出すには、ネットワークストレージが必要だ。その点において、iSCSIはvSphereに適している。ここで、その機能について説明しよう。

 

VMotion、フォルトトレランス、ハイアベイラビリティ、VMware Distributed Resource Schedulerなど、VMware vSphereの高度な機能を利用するには、すべてのホストに対してストレージを共有する必要がある。vSphereのプロプライエタリなVMFSファイルシステムは、特別なロック構造を採用しているため、複数のホストが同一の共有ストレージボリュームや共有ストレージボリューム上の仮想マシンにアクセスできる。従来は、高価なファイバチャネル・ストレージエリアネットワーク(FC-SAN)インフラストラクチャを実装する必要があったが、現在は、iSCSIやNFS対応のネットワークストレージが、より手頃な選択肢として利用できる。

 

ここではiSCSIに的を絞って、vSphereホスト向けの適切なセットアップと構成方法について説明し、vSphereでのiSCSIストレージ利用に役立つ情報とベストプラクティスを紹介する。また、iSCSIとvSphereの組み合わせで行った性能ベンチマークテストの結果と、さまざまな設定の性能比較にも触れることにする。

 

VMwareでiSCSIストレージを利用するための準備

VMware製品では、ESX 3.0で初めてiSCSIネットワークストレージがサポートされた。イニシエータと呼ばれるクライアントを利用して、リモートのストレージデバイス上にあるSCSI機器(ターゲット)にLANを通じてSCSIコマンドを送る。iSCSIは従来のネットワークコンポーネントとTCP/IPプロトコルを利用しているので、ファイバチャネルと違って特別なケーブルやスイッチは不要だ。

 

iSCSIイニシエータには、ソフトウェアベースのものとハードウェアベースのものがある。ソフトウェアイニシエータは、VMkernelに組み込まれたデバイスのドライバを利用し、Ethernetのネットワークアダプタとプロトコルを使ってリモートのiSCSIターゲットに書き込みを行う。ソフトウェアイニシエータには、以下の特徴がある。

 

・ Ethernetネットワークインタフェースカード(NIC)とネイティブのVMkernel iSCSIスタックを使用。

・ブレード・サーバや拡張スロットが限られたサーバに適している。

・ハードウェアイニシエータを利用するより低コスト。

・プロトコル処理のオーバーヘッドによりCPU負荷が高くなる可能性がある。

・ ESXサーバを起動できない。ESXiについては、iSCSI Boot Firmware Table(iBFT)を使用することにより起動可能。

 

ハードウェアイニシエータは、専用のiSCSIホストバスアダプタ(HBA)を使用する。これには、ネットワークアダプタ、TCP/IPオフロードエンジン(TOE)、SCSIアダプタが含まれ、ホストサーバの性能を向上する。ハードウェアイニシエータには、以下の特徴がある。

 

・I/O性能がソフトウェアイニシエータよりやや高い。

・ ソフトウェアイニシエータと比べて、ESXサーバホストのリソース、特にCPUの使用量が少ない。

・ESXサーバを起動できる。

 

他のストレージプロトコルと比較した場合のiSCSIストレージのメリットとデメリットについては、以下の「iSCSIのメリットとデメリット」を参照していただきたい。

 

iSCSIのメリットとデメリット

ここでは、仮想サーバにiSCSIストレージを使用する場合のメリットとデメリットを簡単に紹介する。

 

メリット

・ファイバチャネルストレージと比べて、通常、実装コストが低い。

・ 使いやすさとコストを重視するのであればソフトウェアイニシエータ、性能を最大限に引き出したいのであればハードウェアイニシエータ、という選択肢がある。

・ブロックレベルのストレージによりVMFSボリュームで使える。

・10ギガビットEthernetを利用すればスピードと性能が大幅に向上する。

・ 標準的なネットワークコンポーネント(NIC、スイッチ、ケーブル)を使用。

 

デメリット

・ 最も普及しているソフトウェアプロトコルなので、ハードウェアベースのストレージイニシエータと比べてCPUオーバーヘッドが高い。

・ (ゲストOSでiSCSIイニシエータを使用しない限り)Microsoft Cluster Server(MSCS)の共有LUN(論理ユニット番号)を保存できない。

・FC-SANと比べて性能が劣る場合が多い。

・ ネットワークのレイテンシーとiSCSI非対応のネットワークトラフィックにより性能が低下する場合がある。

 

iSCSIは通常、実装コストが比較的安く、性能が非常に良いため、ファイバチャネルストレージに代わる優れた選択肢だ。vSphereは現在、1ギガビットEthernetよりも性能がはるかに高い10ギガビットEthernetをサポートしている。iSCSI利用の最大のリスクは、ソフトウェアイニシエータのCPUオーバーヘッドと、ファイバチャネルに比べネットワークインフラストラクチャが脆弱かつ不安定なことだ。だが、CPUオーバーヘッドは、ハードウェアイニシエータを使用すれば軽減できるし、インフラストラクチャが脆弱で不安定な点については、iSCSIトラフィックを他のネットワークトラフィックから完全に隔離することで、問題をいくぶん解消できる。

 

VMwareは、vSphereのiSCSIソフトウェアイニシエータスタックを全面的に書き換えてCPUサイクルの利用効率をアップした。その結果、VMware Infrastructure 3と比べて効率とスループットは大幅に改善した。これは、VMkernelの効率を高めたことによる。双方向Challenge-Handshake Authentication Protocol(CHAP)のサポートも追加した。CHAPは、イニシエータとターゲットの両方に相互認証を求めるので、セキュリティが向上する。

 

iSCSI/vSphereの実装計画

vSphereでiSCSIストレージを利用しようとすると、いろいろ決めなければならないことがある。まず、iSCSIストレージデバイスについて考えよう。

 

ホストがネットワーク接続に利用するのは、標準的なネットワークアダプタとイニシエータ、プロトコルなので、vSphereではほぼどんなタイプのiSCSIストレージデバイスでも使用できる。だが、ここで2つのことに注意しなければならない。まず、vSphereは、(vSphere Hardware Compatibility Guideに記載されている)ベンダが提供する特定のモデルのiSCSIストレージデバイスしか公式にはサポートしていない。つまり、不具合があってVMwareに電話しても、ストレージデバイスに関する問題であれば、ストレージベンダのサポートセンターに電話するよう言われる可能性があるということだ。もう1つ注意しなければならないのが、ひと口にiSCSIデバイスと言っても、その性能には差があるということだ。一般的に言って、性能を追求するとコストが増える。したがってiSCSIデバイスは、それを使用する仮想マシン上のアプリケーションのディスクI/Oの要件に合うよう、慎重に選ばなければならない。

 

ネットワークについても考える必要がある。iSCSIのパフォーマンスを最適化するには、専用ネットワークを構築するのがいちばんだ。これで、他のトラフィックがiSCSIトラフィックを妨害することがなくなるし、トラフィックを安全に保護するのにも役立つ。iSCSIで100MbpsのNICを使用するべきではない。速度が非常に遅いので、仮想マシンでは使い物にならないからだ。最低でも1GbpsのNIC、予算的に可能なら10GbpsのNICを使用するのが望ましい。ホストサーバのリソースのオーバーヘッドが心配なら、ハードウェアイニシエータ(TOEアダプタ)の使用を検討するといい。TOEアダプタを選択する場合は、それがVMwareのHardware Compatibility Guideに記載されているか確認すること。サポートされていないTOEアダプタを使用すると、vSphereが標準のNICと認識し、TOEのメリットが失われる可能性が高い。最後に、信頼性を最大限に高めるには、マルチパスを利用しよう。ファイバチャネルストレージの構成を行う場合と同様に、異なる物理ネットワークスイッチに接続された(マルチポートブリッジではない)NICを、最低2枚は使用することを推奨する。

 

 

vSphereでのiSCSIの構成

iSCSI環境のセットアップができたら、次はvSphereのほうの構成だ。方法は、ソフトウェアイニシエータを利用するか、ハードウェアイニシエータを利用するかによって異なる。はじめに、ソフトウェアイニシエータでの構成方法を説明する。

 

ソフトウェアイニシエータでの構成:iSCSI用のソフトウェアイニシエータは、ストレージアダプタとしてvSphereに組み込まれているが、使用するには、まず仮想スイッチ(vSwitch)の1つにVMkernelのポートグループを設定しなければならない。ソフトウェアベースのvSphere用iSCSIネットワークは、VMkernelのインタフェースを利用してiSCSIターゲットへの接続を行い、ホストとターゲット間のネットワークトラフィックは、VMkernelインタフェースが確立されているvSwitchに割り当てられたNIC上にすべて集約される。単一または複数のvSwitch上に1つ以上のVMkernelインタフェースが設定されていてもよい。VMkernelインタフェースは、VMotion、フォルトトレランスのログトラフィック、およびNFSストレージデバイスへの接続にも使用できる。1つのVMkernelインタフェースを複数の用途に使用することもできるが、iSCSIの接続では、vSwitchとVMkernelインタフェースをそれ専用にすることを強く推奨する。また、フェイルオーバーとマルチパスのために、2枚のNICをvSwitchに接続しておいたほうがよい。NICおよびVMkernelインタフェースが複数ある場合は、必ず、正しいNICにiSCSI VMkernelインタフェースが接続されていることを確認すること(詳しくはVMwareのiSCSI SAN 構成ガイドを参照)。

 

vSwitchとVMkernelインタフェースの設定が終わったら、ソフトウェアiSCSIアダプタの構成が行える。vSphere Clientの「構成」タブにある「ストレージアダプタ」を選択して、表示されたリストから「iSCSIソフトウェアアダプタ」を選択し、「プロパティ」をクリックする。「全般」タブで、アダプタを有効にしたり、(強く推奨されている)CHAP認証を設定したりできる。「動的検出」タブは、IPアドレスを追加して、iSCSIターゲットが自動検出されるようにするために利用する。あるいは、「静的検出」タブで、ターゲット名を手動入力することもできる。構成が終わったら、「ストレージアダプタ」画面に戻って「再スキャン」ボタンをクリックし、デバイスをスキャンしてiSCSIターゲットの存在を確認する。

 

ハードウェアイニシエータでの構成:ハードウェアイニシエータでの構成手順はソフトウェアイニシエータの場合とほぼ同様だが、VMkernelネットワークを使用しないので、VMkernelに関するステップが省略できる。TOEアダプタは厳密に言えばネットワークアダプタだが、「ストレージアダプタ」画面に表示される。アダプタを選択して「プロパティ」をクリック。ソフトウェアイニシエータの場合と同じように、「全般」「動的検出」「静的検出」の各タブに必要な情報を入力して、設定を行う。ただし、VMkernelネットワークを使用しないので、「全般」画面でTOEにIPアドレスを割り当てる必要がある。

 

イニシエータをセットアップして、iSCSIディスクターゲットが検出されたら、それをVMFSボリュームとしてホストに追加できる。ホストを選択し、「構成」タブをクリックして「ストレージ」を選ぶ。「ストレージの追加」をクリックすると、ウィザードが起動する。この場合、ストレージはディスクタイプとして認識されているので、ブロックベースのストレージデバイス向けである「ディスク/LUN」を選択する(「ネットワークファイルシステム」タイプは、ファイルベースのNFSディスクストレージデバイスを追加する際に利用する)。ディスクの一覧からiSCSIターゲットを選択し、データストア名を入力してから、ブロックサイズを指定する。設定が完了したら、新しいVMFSデータストアが作成され、使用できるようになる。

 

性能テスト:iSCSI+vSphere

iSCSIストレージデバイスのベンチマークテストを行って、作業負荷をいろいろ変えてスループットを確認したり、vSphere設定環境の違いによるパフォーマンスの差を調べたりするのは、良い考えだ。

 

Iometerは優れたテストツールで、さまざまな作業負荷でのテストが行え、仮想マシン内でIometerをインストールして起動できる利点がある。効率よくテストを行うには、VM上に2つの仮想ディスクを作成するのがポイントで、1つはOS用としてローカルのデータストア上に、もう1つはテスト専用としてiSCSIデータストア上に仮想ディスクを作成する。テスト中は、ホスト上の他のVMのアクティビティやデータストアへのアクセスを制限しよう。〈http://www.mez.co.uk/OpenPerformanceTest.icf〉には、Iometerにロードして最大スループットと実際の作業負荷の両方を検証できる、4種類のテストがあらかじめ作成されている。

 

われわれは、Hewlett-PackardのProLiant ML110 G6サーバとCisco SystemsのSLM2008 Gigabit Smart Switch、Iomegaのix4-200d iSCSIアレイというミッドレンジの構成でIometerのテストを行った。

 

以下のテスト結果は、仮想マシン内の標準的なLSI(旧社名LSI Logic)製SCSIコントローラと、それよりも高性能のParavirtual製SCSIコントローラの使用結果を比較したものだ。テストは、2ギガバイトのRAMとvSphere 4.0 Update 1ホストにvCPUを1基搭載したWindows Server 2008仮想マシンで、3分間行った。テスト結果を見ると、Paravirtual製コントローラのほうがLSI製コントローラよりも性能が良い。もっとハイエンドのハードウェアを使用すると、もっと大きな差が出る可能性がある。

 

iSCSI性能テストの結果

 

LSI SASコントローラ

Paravirtual SCSI コントローラ

IOPS

MBps

IOPS

MBps

最大スループット:100% read/0% write、100%シーケンシャル (32K)

1,829

57

1,908

60

最大スループット:100% read/0% write、100%シーケンシャル (8K)

6,656

52

6,812

53

最大スループット:50% read/50% write、100%シーケンシャル (32K)

1,616

50

1,630

51

最大スループット:50% read/50% write、100%シーケンシャル (8K)

5,602

44

5,708

45

実際の運用:65% read/35% write、40%シーケンシャル/60%ランダム (32K)

73

2.27

75

2.36

実際の運用:65% read/35% write、 40%シーケンシャル/60%ランダム (8K)

120

.94

123

.96

ランダム:70% read/30% write、0%シーケンシャル/100%ランダム (32K)

53

1.65

55

1.72

ランダム:70% read/30% write、0%シーケンシャル/100%ランダム (8K)

88

.69

89

.70

 

 

vSphereでiSCSIストレージを利用する場合のベストプラクティス

iSCSIディスクの構成が完了したら、いよいよ仮想マシンで使用できる。以下に挙げたベストプラクティスは、iSCSIデータストアから最大限の性能と信頼性を引き出すのに役立つはずだ。

 

・ iSCSIストレージの性能は、ネットワークの健康状態と利用状況に大きく左右される。性能を最大限に引き出すために、iSCSIトラフィックは必ず、専用ネットワークに隔離すること。

・ ESX Serverホストでは1つのソフトウェアイニシエータしか設定できない。iSCSI接続を提供するvSwitchの設定を行うときは、複数の物理NICを使用して冗長化しよう。vSwitch のNICにVMkernelインタフェースをバインドして、マルチパスの設定を正しく行うこと。

・ iSCSI vSwitchに使用するNICは、すべて異なるネットワークスイッチに接続して、単一障害点(SPOF)をなくすこと。

・ vSphereは、ストレージプロトコルでのジャンボフレーム使用をサポートしているが、ジャンボフレームが役に立つのは、I/Oサイズが非常に大きい特殊な作業負荷の場合だけである。また、バックエンドストレージは、RAIDグループのスピンドル数を多め(15以上)にして、スループットの増大分を処理できなければならない。そうでなければ、まったくメリットがない。I/Oサイズが小さく、ストレージのスピンドル数が固定されている場合は、ジャンボフレームを使用しても、性能はほとんど、あるいはまったく向上しない。逆に、ジャンボフレームによって性能が低下する場合もあるので、ジャンボフレームを有効にする場合は、その前後にベンチマークテストを行い、効果を確認するほうがいい。また、物理NIC、ネットワークスイッチ、vSwitch、VMkernelポート、iSCSIターゲットなど、エンドツーエンドのコンポーネントがすべて、ジャンボフレームをサポートし、それ用に設定されている必要がある。どれか1つでもジャンボフレーム対応の設定が行われていないコンポーネントがあれば、ジャンボフレームは機能しない。

・ 仮想マシンのディスクコントローラには、Paravirtualの新しいSCSIアダプタPVSCSIを使用するといい。これは、LSIやBusLogicの標準アダプタに比べて、スループットや性能を最大限に引き出せる可能性が高い。I/O負荷がかなり低い場合は、LSIのアダプタが最適だ。

・ ベストパフォーマンスを引き出すために高性能マルチパスを設定する場合は、iSCSIストレージボリュームで「プロパティ」を選択し、「パスの管理」をクリックする。可能であれば、ネイティブのVMwareマルチパス処理かサードパーティのマルチパス処理プラグインを使用して、「パス選択ポリシー」を設定してもよい。ソフトウェアイニシエータを使用する場合は、単一のvSwitch上に2つのVMkernelインタフェースを作成し、一方の物理NICを「有効」にし、もう一方を「未使用」にする。esxcliコマンドを用いて、一方のVMkernelポートを有効なNICにバインドし、もう一方のVMkernelポートを未使用のNICにバインドする。通常、「固定」や「MRU」(最近使用したもの)ではなく「ラウンドロビン」を利用したほうが性能は良くなる。ただし、仮想マシン上でMicrosoft Cluster Serverが稼働している場合は、「ラウンドロビン」の使用は避けたほうがいい。

 

VMFSボリュームのブロックサイズ

初期設定では、VMFSのボリュームは、1メガバイトのブロックサイズで構成されており、最大256ギガバイトの仮想ディスク(vmdk)が1つ作成できる。VMFSボリュームのブロックサイズは、一度設定すると変更できない。すべての仮想マシンを移動させてからそのボリュームを削除し、新たなブロックサイズでVMFSボリュームを構成しなくてはならなくなる。したがって、現状のニーズだけでなく、将来まで見越して、ブロックサイズは慎重に決定する必要がある。 以下に、ブロックサイズと最大仮想ディスクサイズの関係を示した表を掲載する。

 

ブロックサイズと仮想ディスクサイズ

ブロックサイズ

最大仮想ディスクファイルサイズ

1 MB

256 GB(デフォルト)

2 MB

512 GB

4 MB

1,024 GB

8 MB

2,048 GB

 

大きめのブロックサイズを選んでも、ディスクの性能には影響しない。VMFSボリューム上でファイルが占める最小のディスク容量に影響するだけだ。ブロックサイズとは、ディスクに占める単一のデータブロックのサイズを指す。ファイルが占めるディスク容量は、ブロックサイズによって異なる。だが、VMFSはサブブロックアロケータを使用するので、サイズの小さなファイルがブロック全体を占めることはない。サブブロックは、選択したブロックサイズに関係なく、常に64キロバイトだ。無駄なディスクスペースがあるが、VMFSボリュームはそれほど多くのファイルを保存するわけではないので、その無駄は無視できる程度だ。また、大半のファイルはサイズがかなり大きく、ブロックサイズを大きくしてもそれほど影響はない。将来ボリュームを拡大する必要が生じる可能性もあるので、たとえ、現在使用しているボリュームのサイズが小さくても、たいていは、8メガバイトのブロックサイズでVMFSボリュームを作成するのが最適だと思われる。

 

iSCSIガイド

VMwareは、vSphere に向けたiSCSIストレージ実装の詳細なガイドを提供している。「iSCSI SAN iSCSI SAN 構成ガイド」と「iSCSI Design Considerations and Deployment Guide」は、VMwareで入手できる便利なガイドだ。

 

 

著者略歴:Eric Siebertは、25年以上の経験を持つIT業界のベテランで、現在は特に、サーバ管理と仮想化に取り組んでいる。「VMware VI3 Implementation and Administration」(Prentice Hall、2009年)の著者でもある。

 

All Rights Reserved. Copyright 2000 - 2010, TechTarget.

*この翻訳記事の翻訳著作権はJDSFが所有しています。 このページに掲載されている記事・写真・図表などの無断転載を禁じます。

 


February 2010