第2回 Hyper-Vと最新のストレージ・テクノロジの併用Windows Server 2012 R2時代のHyper-Vサーバ設計術(3/4 ページ)

» 2013年09月26日 17時37分 公開
[小川大地(Microsoft MVP for Virtual Machine)日本ヒューレット・パッカード]

 ストレージ機器を実際に選定する際には、SSDなどの半導体デバイスの活用やシン・プロビジョニングなどの新技術の対応も視野に入れるだろう。このようなストレージ側の先進技術とHyper-Vはうまく組み合わせられるだろうか?

半導体デバイスを活用するテクノロジ

 ストレージを簡単に高速化したいのであれば、SSDなどの半導体デバイスを導入すればよい。HDDは一切使わず、すべてフラッシュ・ストレージ(オール・フラッシュ)にしたいところであるが、容量や予算の面でなかなか難しいだろう。こういった要望に応えるように、半導体デバイスとHDDを混在させる技術が進んでいる。

●自動階層化

 自動階層化(Auto-Tiering)とは、1つのボリューム内にSSDなどの高速デバイスとHDDなどの低速デバイスを混在させ、アクセス頻度に応じて中のデータの配置場所を自動移行する技術だ。優先度のある自動ライブ・ストレージ・マイグレーションと考えれば理解しやすいだろう。当然ながら高速デバイスに配置される方が性能がよくなるため、一般的にはSSD側が優先され、入りきらなくなったデータをHDDに退避させるという方式になる。SSDからHDDへの移行処理はホストからのI/Oとは無関係なオーバーヘッドであり、急速な変化にも対応できないが、SSD側にあるデータは読み出しと書き込みの両方が高速になる。

●フラッシュ・キャッシュ

 フラッシュ・キャッシュは高速な半導体デバイスをデータ領域に利用せず、HDDに対する大容量キャッシュとして利用する技術である。HDDにアクセスした際のデータをこのキャッシュにも格納しておくことで、次回からのアクセスを高速化するという方式だ。読み出しのみを高速化するものがほとんどだが、自動階層化と比べて少ない投資でHDDデータの全体性能がバランスよく底上げされ、アクセス・パターンの変化にもオーバーヘッドなく、素早く対応できる。Hyper-Vのようなアプリケーション・ストレージには適している。

図5「自動階層化とフラッシュ・キャッシュ」 図5「自動階層化とフラッシュ・キャッシュ」
どちらも半導体デバイスを活用した高速化技術である。自動階層化は配置場所の移行にコピー処理が必要であり、アクセス・パターンの急速な変化に対応できないため、本来はファイル・サーバなどに向いている。フラッシュ・キャッシュは大半の製品が読み出しのみの対応であるが、アクセス・パターンの急速な変化に素早く対応できるため、Hyper-Vのようなアプリケーション・ストレージ向きだ。

ストレージの物理容量を削減するテクノロジ

 ホストに提供する容量はそのままに、ストレージ装置内で特殊な“まやかし(工夫)”を行うことで物理容量を削減する技術も昨今のトレンドの1つだ。

●重複排除

 「重複排除(De-dupe)」とは、同じデータが複数重複している場合に1つだけを残し、ほかはそのデータにリンクを張るだけにする、といった技術である(関連記事参照)。主にバックアップ装置で使われる技術であるが、重複分の容量削減を期待できるために最近では仮想マシンを配置する“Tier1ストレージ”への導入を検討するケースも増えてきた。ただしHyper-Vのディスクは読み書きが激しく、加えて重複処理後に残された領域には多重のI/O負荷が掛かることには注意しよう。

図6「重複排除」 図6「重複排除」
重複排除を利用すると、同じデータは1つだけを残し、ほかはそのデータへリンクを張ることで物理容量の削減を期待できるが、I/O負荷に関してはそのままであることに注意しよう。残された領域は重複排除された多重なI/Oを一手に引き受けることになる。

●シン・プロビジョニングとSCSI UNMAP

 「シン・プロビジョニング」とは、ボリュームの設定容量にかかわらず、ストレージの物理領域は実際の使用量だけを確保し、使用量が増えるにつれて、その都度領域を追加確保していく技術だ。設定容量と実使用量のギャップの分だけ容量削減を期待できるうえ、実在しない容量をあらかじめ設定できるために、スモールスタートにも役立つ。

 Hyper-V側でも同様の「容量可変ディスク」がかねてより実装されているが、容量可変ディスクは性能にオーバーヘッドが生じる。読み出しや同一セクタの書き換えであれば容量固定ディスクと同等であるが、新しいセクタに書き込む場合、仮想ディスクのファイル・サイズ伸長のためにオーバーヘッドが発生するのだ。VMwareの有識者であれば「SCSI-2 Reservation」と聞けば理解しやすいだろう(関連記事参照)。なおHyper-VではSCSI-2 Reservationは利用しない。複数のホストからの同時マウントにあたっては別の仕組みで排他制御を行う。

 話がそれてしまったが、もしシン・プロビジョニングを使いたいのであればストレージ側の機能を利用するのが一般的だろう。RAIDを構成する際、OSのソフトウェアRAID機能は使わず、ハードウェアRAIDを選択するのが一般的であることを思い出すと納得がいくはずだ。

 マイクロソフトもこれを理解しているかのように、ストレージ装置側のシン・プロビジョニングを補完する機能を実装している。1つはWindows Server 2012でサポートされた「SCSI UNMAP」だ。通常、仮想マシンや仮想ディスクを削除しても、ストレージ側はそれによる空き領域の発生を検知できない。しかし、SCSI UNMAP命令に対応したストレージ装置であれば、空き領域の発生を検知でき、連動して実消費量が縮小される。

図7「シン・プロビジョニングとSCSI UNMAP」 図7「シン・プロビジョニングとSCSI UNMAP」
通常はOS上でファイルを削除しても、そこで発生する空き領域をストレージ側は検知することはできず、使い続けるにつれてシン・プロビジョニングの効果が薄れてきてしまう。だが「SCSI UNMAP」命令に対応したストレージであれば、ファイル削除を検知できるために、使い続けてもシン・プロビジョニングの効果は失われない。

 もう1つは、Windows Server 2012 R2のHyper-Vでサポートされる「容量固定ディスクの動的拡張」機能だ。仮想マシンをシャットダウンせずにいつでもオンラインでサイズ拡張できるため、不足しそうになったら増やせばよい。容量可変ディスクと比べて、ゲストOS上でのボリューム拡張操作を手動で行う必要があるが、この作業はあくまで容量不足の発生時のみだ。サーバ用途を考えると、オーバーヘッドによって日常的に性能低下するよりはマシと言えるだろう。

図8「容量固定ディスクの動的拡張機能」 図8「容量固定ディスクの動的拡張機能」
Windows Server 2012 R2では、容量固定ディスクの割り当てサイズの動的拡張(仮想マシンの実行中に仮想ディスク・サイズを拡大できる機能)がサポートされる。Hyper-Vマネージャから拡張処理を行った後、ゲストOS内でボリュームの拡張操作を実行すればよい。連載「Windows 8レボリューション」の「Windows 8.1 PreviewのHyper-V」の「仮想ディスクの動的リサイズ」の項も参照(Windows Server 2012 R2でもWindows 8.1でも同様に拡張可能)。

●ODX(Offloaded Data Transfer)

 ストレージ装置がWindows Server 2012から導入された「ODX(Offloaded Data Transfer)」命令に対応していると、通常はサーバを介して行われるファイル・コピー処理を、ストレージ内で完結することできる。VMwareの「VMware VAAI(vSphere Storage APIs for Array Integration)」と同じ原理であるが、ゲストOSがWindows Server 2012以降であれば、仮想マシン上のエクスプローラ操作といった、一般的なコピー作業でも恩恵を受けることのできる画期的な技術である。非常に汎用性が高く便利な機能であるため、できる限り利用しておきたい。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。