ハイパーバイザ・ストレージ最新管理術


アプリケーションのパフォーマンスを改善するフラッシュ・キャッシングの最新の手法、利点、そのトレードオフ、ベンダーについて見ていこう。

 

著者:Chris Evans
Storage Magazine 2016年10月号より

 

サーバーの仮想化は今日(こんにち)、アプリケーションのデプロイ方法のデファクトスタンダードになっている。そして、効率的な仮想環境の実装に欠かせないのが、データストレージ・レイヤーが確実に要求された可用性およびパフォーマンスを提供できるようにすることだ。その結果ハイパーバイザ・ベンダーは、外部ストレージアプライアンス、外部ストレージアレイ、さらには最近になって出てきた内部ストレージ製品とのやり取りおよび管理を改善すべく、自社の製品をたえず進化させてきた。
例えば、個別仮想マシンごとの主要属性が、サービスおよびポリシーのレベルで適用されるようになった。これによって、個々のVMまたはアプリがどのようなリソースを必要とし、どのようなプライオリティを与えるべきかを述べたプロファイルを作ることができる。

最新のハイパーバイザによる仮想化において、ストレージとデータの管理がどのように行われるのかを詳細に見ていこう。従来の共有型外部ストレージ製品に取って代わるべく開発中の内部ストレージを調査しよう。さらに、コンテナ型の新しいアプリケーション仮想化を掘り下げ、ベンダーがこの業界コミュニティでどのようにストレージを扱っているかを見てみよう。

 

内部ストレージ

データストレージの仮想化が初めて登場したとき、内部ストレージは各ハイパーバイザ内の直付けストレージとして使われていた。しかし、この使い方では(内部RAIDコントローラー付でデプロイされない限り)あまり拡張性やレジリエンシーを提供することはできず、ベンダーが外部ストレージをする方向に向かった理由の一つにもなった。しかし、ここ数年の間に、主要なハイパーバイザ仮想化ベンダーはストレージをホストに取り戻すチャンスに飛びついている。ストレージメディアの信頼性とストレージネットワークをなくすることによるレイテンシ低減が、その理由である。

VMware Virtual SAN (vSAN)は、各物理vSphere/ ESXiホスト内の複数のハードディスクやフラッシュ・ストレージを組み合わせて、ストレージ容量、パフォーマンス、冗長性を提供する、スケールアウト分散型ストレージ・レイヤーである。VMwareは2014年に初めてリリースされたこのvSANを、仮想デスクトップ基盤、ティア2・ティア3アプリケーション、DR環境向けの製品として位置づけている。また、vSANはESXiカーネルに統合されているため、メジャー・プラットフォーム・リリースであっても計画されたアップデートであっても、ESXiのリリースにあわせてvSANもアップデートされる。vSANの機能リストは進化を遂げ、今では以下の機能が含まれている。拡張性の高いスナップショット、 VMwareが買収したVirstoのテクノロジーをベースにした新ファイルシステム、ハイブリッド半導体ストレージおよびオールフラッシュ構成、拡張クラスター、Virtual SAN Witness Appliance、不揮発性メモリエクスプレス(NVMe) のサポート、である。2016年最新のリリースでは、オールフラッシュ・アレイの重複排除および圧縮、RAID-5/6消失訂正符号、ディスク上のデータレイアウト変更(version 3.0)にともなうさらに新しいディスクフォーマット、ソフトウェア・チェックサム、IOPS制限、健全性とパフォーマンスの監視が追加された。
今やvSANは、特にハイパーコンバージド・インフラストラクチャーに対するVMware のvSphereプラットフォームの中核となっている。VMwareがvSANのライセンスを別売しているので、ハイパーコンバージド・デプロイメント市場の発展によって、vSANは将来の売上の中核にもなるだろう。

Microsoft Hyper-Vは、Windowsサーバー向けに開発した数々のストレージ拡張機能を利用している。内部ストレージに関しては、記憶域スペース、NTFS extension Resilient File System (ReFS)などの機能が用意されている。
記憶域スペースを使えば、VMのためにローカルの物理ディスクを回復力の高いストレージプールと組み合わせることができる。単一の大きなプールを作ることもできるし、容量別パフォーマンス別のプールを作ることもできる。
Windows Server 2012 R2でMicrosoftは、記憶域スペースに対して下記にあげる多数の機能拡張を発表した。

 

ストレージ・ティア:
自動ティアリング形式でHDDとSSDを使用し、アクセス頻度に応じてデータを二つのメディア間で動的に移動させる。

ライトバックキャッシング:
SSDをキャッシュとして使ってライト要求を高速化。アプリケーションへの通知はキャッシュ書き込み後直ちに行われる。この機能は、サイズの小さいランダムライトをターゲットにしている。

ストレージ自動リビルド:
ホットスペアを使わず、ストレージプールの空き領域からストレージプールをリビルドする。

デュアルパリティ・サポート:
別々の物理ディスクデバイス上のデータの複数ミラーを作ることにより、二重ディスク障害に対応。(ミラーやレプリカが多ければ多いほどハードウェア障害への耐性は高くなる。)

 

Microsoft ReFSは論理ファイル破損やハードウェア障害からの復旧方法を改善することで高度なレジリエンシーと拡張性を提供している。Windows Server 2016でHyper-Vを使う時は、ReFSがデフォルトの推奨ファイルシステムになる。強化された機能としては、大幅に高速化された固定サイズのVHDXファイル作成、Hyper-Vチェックポイント(スナップショット)の迅速なマージ、Hyper-V Replicaパフォーマンスの改善などがある。

Windows Server 2016もローカルストレージのサポート機能を追加している。その一つとして、記憶域スペースダイレクト(Storage Spaces Direct)があるが、これによってWindowsサーバーをスケーラブル・ストレージアプライアンスとして構築できるようになり、ハイパーコンバージド市場でMicrosoft Hyper-Vと同等の性能を持つようになった。さらに、Windows Server 2012以前のサーバーでは記憶域スペースの設定には、SASファブリックなどの共有ストレージへのアクセスが必要だったが、新バージョンではこの要件はSMB および SMB Direct (リモート・ダイレクト・メモリ・アクセス(RDMA))を使用したIPネットワーク経由でのサーバー接続機能に替わっている。

 

外部ストレージ

VMwareは常に外部ストレージとうまく連携してきた。ESXiハイパーバイザは、ファイバーチャネル、ファイバーチャネル・オーバー・イーサネット(FCoE)、iSCSI、NFSプロトコルをサポートしているが、SMBはサポートしていない。また、これまでの数々のリリースの中で、VMwareはLUNの数やサイズについての制限を緩和してきた。例えば、LUNは今では62TBまで拡張可能になっている。

 

その他のハイパーバイザとストレージ

VMware、Hyper-V以外の主要ハイパーバイザ、Citrix XenServer、KVM、Oracle VMなどでは、ストレージ処理方法についてトップ2社と同レベルの技術革新は見られない。XenServerは、稼働中の仮想マシンの移行機能をしっかり持っている(XenをベースにしているOracle VM,も同様。)KVMも、稼働中の仮想マシンの移行機能を提供しているが、ストレージの移行機能は持っていない。また、XenもKVMベースのシステムも、VMについてポリシーを適用するオブジェクトとしてとらえていないので、ハイパーバイザのストレージサポート、ストレージ管理両方においてVMware、Hyper-Vの後塵を拝している

 

I/Oのパフォーマンスと機能性改善のために、VMwareはAPIの形で多くの新機能を発表している。ESXi 4.1で追加されたVAAI (vStorage API for Array Integration)は、I/Oが集中するタスクを外部ストレージにオフロードする。VAAIは、広範囲の「空き領域」やバイナリー・ゼロデータをゼロアウトする機能も持っている。バルクデータのコピーは、今ではストレージアレイで行われるため、VMのクローン作製時間は短くなった。また、VAAIのAtomic Test and Set機能によって、VMオブジェクトのサブLUNロッキングも改善された。

VMware Virtual Volumes (VVOLs)はLUNベースのストレージ使用時の問題を解決する技術だ。単一のLUNは多数のVMを持てるが、個々のVMにおいて優先すべき項目が、パフォーマンス、レジリエンシー、可用性のいずれであっても、これまではVMに適用されるサービスレベルは同一であった。VVOLsによって、VMwareはサービスレベルを個々に適用できるVMオブジェクトという概念を確立した。そのため、一つのVMのVMDK、スナップショット、コンフィグファイル、スワップファイルなどの各コンポーネントのマッピングに依然としてLUNを使っていても、実装特性はVMware管理者には見えないようになっている。VASA (vSphere APIs for Storage Awareness)の一部として提供されるVVOLsによって、外部ストレージアレイはアウト・オブ・バンド(通常IPベース)接続経由でハイパーバイザに機能詳細をエクスポートすることもできる。

いくつか注目すべき例外があるものの(例えば、Hewlett Packard Enterpriseの3PAR)、
ベンダーのVVOLs対応は歩みが遅い。おそらく、対応作業に相当な困難が伴うからだろう。さらに、数万にものぼるLUNをサポートし、ハイパーバイザ仮想化でドライブストレージのアロケーションができるようにしなければならないとなると、きつい仕事の大半はストレージアレイ・ベンダー側で行われることになる。導入に際してもこの部分は問題になる。一般的にストレージのチームは、他のITチームにLUN作成を任せるのを嫌うからだ。

 

選択

ハイパーバイザ・ベンダーは内部・外部両方のストレージについての要求に対応する機能を提供してきた。そのためユーザーは、自分たちのスキルセット、拡張性、パフォーマンス要件に基づいて、ハイパーバイザ製品の構築をハイパーコンバージドの構成にするか、従来型の構成にするかを選択することになる。

 

Microsoftの外部ストレージサポートは、WindowsサーバーのFC、FCoE、iSCSI、SMBプロトコルとの互換性が土台になっている。WindowsサーバーはNFSをサポートしているものの、Hyper-VのVMはNFS共有ができない。

Hyper-V用外部ストレージプロトコルであるSMBによって、管理者はWindowsサーバーを共有ストレージ用スケールアウト・ファイルサーバーとして使える。この方法は、サードパーティー製品にも拡張できる。ただし今のところ、これが使える会社はWindows Flash Arrayを販売しているViolin Memoryだけだ。WindowsサーバーはODX (offloaded data transfers)と呼ばれる機能を使って、外部アレイのオフロードを実装している。ODXはネットワーク・トラフィックを減らし、可能なときはレプリケーション機能をアレイに肩代わりさせる。Microsoftは詳しいODXのサポート状況を出していないが、Nimble Storage とNetAppの両社はODXをサポートしているようだ。

 

データ管理

VMwareもMicrosoftも仮想化環境およびハイパーバイザ仮想化における様々なストレージ管理機能を提供している。

VMwareは、内部および外部ストレージ容量にデータ管理基準を適用するのに、Storage Policy-Based Management (SPBM)によってポリシーベースのアプローチをとっている。Storage DRSのような機能を使い、管理者はストレージのパフォーマンスと容量のバランスをとるために、基盤内でVMをあちこちに移動できる。Storage vMotionは、管理者または直接DRSによって起動され、データムーバーとして稼働する。VADP (vStorage APIs for Data Protection)を使えば、VMは動作中でもハイパーバイザ仮想化から直接データを取り込むことにより、保護およびバックアップが可能だ。

 

データサービス

データサービスは仮想サーバー製品の主要部分である。処理が集中するタスクのオフロードやデータ保護の実装などが行えるように、データサービスはVMがデータ配置と最適化を行う上で必要な機能を提供している。VMwareもMicrosoftもこれらの機能を仮想プラットフォームで実現できるよう、この分野に注力してきた。これらの機能の中には、VMがオンラインで稼働中でもバックアップを可能にするための、ブロックレベル・バックアップも含まれている。また、圧縮や重複などのデータ最適化サービスもある。さらに、データ配置は、VMのサービスポリシーが定義された時、それに合ったストレージプール上にVMを生成する機能を提供している。

 

Windows Hyper-Vは、ストレージQoS(Quality of Service)のように仮想ハードディスクのレベルでI/Oスループットが管理できる機能を使ってストレージポリシーの実装を行う。ストレージQoSはWindows Server 2016で機能拡張され、管理者はポリシーをスケールアウト・ファイルサーバーに設定し、Hyper-Vの仮想ディスクにそれらのポリシーを適用できるようになった。実際この機能によってユーザーは、ストレージレベルのポリシー設定を個々のHyper-Vインスタンスごとに行うのではなく、中央で一元化できるようになった。Microsoftのライブ・マイグレーションは、使用中のVMをストレージプラットフォーム間で動的に移行する機能を提供する。

Windows Server 2016はまた、ボリューム・シャドウ・コピー・サービスに替わるものとして、Native Changed Block APIを提供する予定だ。また、データ重複排除も機能強化され、Hyper-V内部ストレージ上で稼働するVMのパフォーマンスは改善されるはずだ。

 

ストレージコンテナ

コンテナは(特にDockerによって知名度が高まったが)、現在のVMの使い方を補完するアプリケーション仮想化の新しい方法だ。VMが仮想オブジェクトを物理ディスク(VMDKやVHD)に相当するものとして使用するのに対し、コンテナはホストマシン上で一連のプロセスとして実際に存在する。Dockerの場合、ストレージの供給には二つの方法がある。一つは、ホストファイル・システムをマウントポイントとしてコンテナ自身にエクスポートする方法。もう一つは、ボリューム・プラグインを使う方法だ。

Dockerはバージョン1.8.0でボリューム・プラグインを試験的にリリースし、以降機能を拡張してきた。このおかげで、外部ストレージベンダーはDockerコンテナに対してLUNやファイルシステムの生成やマッピングを自動化するプラグインコードを書けるようになった。プラグインAPIは、外部ストレージがコンテナに見えるための基本的な機能、生成、削除、マウント、アンマウント、などを提供している。

コンテナストレージの実装は、まだ開発の初期段階にある。接続性はコンテナが稼働しているホストに依存しており、Flockerを出しているClusterHQのような会社がこの問題の解決に取り組んでいるものの、データ可搬性の問題が残っている。それでもなお、数多くの新興企業がコンテナに対応する、または組み込むストレージを提供すべく市場へと参入している。これらの製品群には、QoSなどのポリシーをコンテナレベルで適用するハードウェアやソフトウェアが含まれている。

 

著者略歴:Chris EvansLangton Blueをベースに活動する独立系コンサルタント。