第8回 ディスクを仮想化する記憶域プール機能:Windows Server 2012クラウドジェネレーション(1/3 ページ)
Windows Server 2012の新機能である記憶域プールを使えば、複数のディスクを組み合わせて高速化したり、耐障害性を向上させるほか、ディスク・サイズを仮想化して大きなディスクに見せる、シン・プロビジョニングが行える。
※本記事は、Windows 8向けの同機能を解説した「ディスクを仮想化する記憶域プール機能」を、Windows Server 2012向けに改訂したものです。
今回は、Windows Server 2012におけるストレージ関連の重要機能である「記憶域プール」機能について見ていく。複数台のディスクを組み合わせて仮想的なディスクに変換し、さらにディスク容量も仮想化することによって、物理ディスクのサイズや構成などに左右されない、柔軟なディスク管理を実現する機能である。ミラーやパリティによる冗長性確保、自動的なディスク割り当て領域管理や障害からの復旧など、管理者の手間を大幅に軽減させる機能も持っている。
記憶域と記憶域プール
Windows OSでは、ディスク関連の機能や、ストレージ・デバイス上に確保されたデータ保存領域(C:やD:といったドライブのほか、シャドウ・コピーやページ・ファイルなども含む)のことをまとめて「記憶域(storage spaces)」と呼んでいる。これに対し、Windows Server 2012では新しく「記憶域プール」や「シン・プロビジョニング」などの機能が追加され、その機能や使い勝手、性能、信頼性などが大幅に向上している。記憶域の新機能については以下のサイトも参照していただきたい。
- Windows 8:記憶域スペース: よく寄せられる質問(マイクロソフト)
- ストレージを仮想化して、スケーラビリティ、復元性、効率性を高める(Building Windows 8ブログ)
- Storage Spaces Overview(TechNetサイト)
Windows Server 2012における記憶域に関する新機能としては、次のようなものがある。
機能 | 概要 |
---|---|
記憶域プール | 複数の物理ディスクをまとめて1つの大きな仮想ディスク・ストレージとして扱う機能。ディスクの実容量や組み合わせ方法、接続インターフェイス(SATA、USB、SAS、IDEなど)によらず、ユーザー側からは1つのディスクに見える。一度作成したプールに対して、後から動的に物理ディスクを追加したり、故障したディスクを取り外して交換することも可能 |
シン・プロビジョニング | シン・プロビジョニングとは、ドライブ・サイズを仮想化し、実際の容量よりも大きなサイズとして見せる技術。ディスク・システムに対する初期投資コストを抑えながらも、実際に使用しているディスク・サイズ需要に応じて物理ディスクを順次追加できるようになる。ディスクを追加してもシステム構成の変更作業などは不要。反対はシック・プロビジョニング |
耐障害性の向上 | 記憶域プールから仮想ディスクを作成する場合、「双方向(2ウェイ)ミラーリング」「3方向(3ウェイ)ミラーリング」「パリティ」のいずれかの冗長性/復元機能と組み合わせられる。バックグラウンドでのインテリジェントな障害からの復旧やドライブのホット・スペアなどにより、サービスの可用性を維持できる。プールを構成するディスクの過半数が正常に動作していればプールは正常に機能し、冗長構成の仮想ディスクは適切に代替処理などが行われる |
ストライピングによる性能向上 | 記憶域プールに複数の物理ディスクがある場合、それらのディスク全体に分散して記録する。2台だけでなく、3台以上組み合わせたストライピングも可能で、パフォーマンス向上が期待できる |
PowerShellによる管理 | 記憶域プールに関する機能はすべてPowerShellから操作できるほか、PowerShellでのみ可能な操作もいくつかある |
Windows 8/Windows Server 2012におけるディスク記憶域の機能強化点 Windows 8とWindows Server 2012は同じテクノロジに基づいているため、どちらのOSでもほぼ同様に利用可能である。ただしWindows 8の場合は、GUIインターフェイスでは設定できない機能があるので、場合によってはPowerShellで操作する必要がある。 |
新機能は数多くあるが、簡単に言うと、「記憶域プール」と「シン・プロビジョニング」が中核の機能である。
記憶域プールの基本的な原理
「記憶域プール(storage pool)」とは、複数の物理ディスクを組み合わせて、論理的な大きなディスクとして取り扱う機能である。例えば1Tbytesのディスクと2Tbytesのディスク、3Tbytesのディスクの計3台が搭載されている場合、従来は3つの論理ドライブとして扱うしかなかった。3台合計すれば6Tbytesになるのだが、従来のWindows OSでは3つの異なる論理ドライブとしてしか利用できず、作成可能なボリュームの最大サイズもディスクのサイズによって制限されていた(仮想PCで学ぶWindowsシステム管理 第11回「スパン・ボリュームとボリュームの最大サイズ」参照)。この記事の例では、3Tbytesのディスクに3Tbytesのボリュームは作成できるが、4Tbytesや5Tbytes、6Tbytesのボリュームを作成することはできない。ディスクをダイナミック・ボリュームに変換しておけば、複数のディスクにまたがる「スパン・ボリューム」を作成することはできるが、あらかじめダイナミック・ディスクにしておく必要があるほか、運用開始後に物理ディスクの構成を変更できない(追加できない)、ディスクに障害が発生しても復旧できないなど、いくつか制約がある。
これに対してWindows Server 2012の記憶域プールでは、システムに接続された複数台のディスクを大容量の1台の仮想的なディスクとして扱うことができる(1プールあたり、ディスクは最大160台まで)。プールを構成するディスクは運用開始後に途中で追加してもよいし、故障したらそれをプールから削除して、代わりに別のディスクを追加してもよい。あらかじめ「ホット・スペア」として登録しておき、ディスク故障時には自動的に代替ディスクとして利用させることもできる。システムとの接続インターフェイスも、ATAPIやSATA、eSATA(SATAを外付けにしたもの)、SCSI、SAS(Serial Attached SCSI)、iSCSI、USB、IEEE 1394(FireWire)接続のディスクなど何でもよい。プールを構成する各ディスクの容量や速度、接続方法を統一する必要もない(ただし性能維持・向上のためには揃えるのが望ましい。記憶域プールでは各ディスクの速度差などは特に考慮しないため)。
複数のディスクをまとめてくれるので、小容量のディスクであっても何台か接続すれば、個々の物理ディスク・サイズを超える大きなボリュームが作成できるようになる。この点では、Windows Home Serverなどで利用できた「ドライブ・エクステンダ」の機能に近いが(Windows 7時代のワークグループ・ネットワーク「Windows Home Server 2011」参照)、それよりももっと柔軟性やスケーラビリティ、パフォーマンス、冗長性機能に優れている。
記憶域プールの機能を図にすると次のようになる。
記憶域プールの概念
物理ディスクを複数台まとめて(1台でも可)、「プール」とする。そして作成した論理的な仮想ディスクに対して、プールを構成する物理ディスクから256Mbytesずつ割り当てる。使用する領域にのみブロック(スラブ)を割り当てるので、仮想ディスクのサイズは将来を見越してあらかじめ大きく割り当てておくと、以後の管理が楽である。このような管理方式を「シン・プロビジョニング」という。ただし物理ディスクの最大合計サイズを超えてデータを記録することはできないので、必要に応じて物理ディスクを追加する。
この図の例では4台の物理ディスクをまとめて1つの記憶域プールとして扱っている。そして、そのプールから3つの仮想ディスク(E:、F:、G:)を作成しているが(注:ここでいう仮想ディスクとは、記憶域プールで作成される論理的なディスクのことを指す。.vhd/.vhdxファイルのことではない)、記憶域プールがユニークなのは、そのディスク領域の割り当て方にある。記憶域プールでは、プール内の各ドライブを256Mbytesずつのブロック(「スラブ(slab)」という)に分割し、これを各仮想ディスクに必要に応じて順番に割り当てている。スラブ単位で割り当てることにより、物理ディスクの構成(台数)やサイズなどとは独立して仮想ディスクを作成・管理できるようにしている。
シン・プロビジョニングで巨大な仮想ディスクを実現する
企業において、ストレージにかかるコストを下げる方法として近年「シン・プロビジョニング(thin provisioning)」というテクノロジの導入が進んでいる(Server & Storageフォーラム「容量の無駄をなくす画期的技術とは」参照)。これは、ディスクの物理的な容量や構成などを仮想化して、実際に必要なだけ(使っている分だけ)のストレージをその都度用意し、増強するという技術である。例えば将来的には最大30Tbytes程度のストレージが必要になると予想されているが、当面は10Tbytesだけあればよい、といった状況を考える。シン・プロビジョニングでは、最初から例えば50Tbytesの仮想的なディスクを作成しておくが、実際に接続するのは3Tbytesのディスク2台だけで、後は必要に応じて物理ディスクを随時追加する、というふうに運用する。仮想サイズはずっと50Tbytesのままなので(もちろん途中で拡大することも可能)、仮想ディスクを利用する側では何の変更も必要ない。
これに対して従来のWindows OSのスパン・ボリュームでは、物理ディスクを追加するたびにシステムの設定を変更したり、システムを停止したりしなければならない。
Windows OSの記憶域プールでは256Mbytesというスラブ単位でディスクを利用しているが、これはシン・プロビジョニングを実現するためでもある。先の図では、仮想ディスクに対してスラブ単位でブロックを割り当てているが、実際には「使用中のブロックにのみスラブを割り当てる」という手法が取られている。つまり、実際に消費されるディスク領域は使用済み領域(データを書き込んだ領域)の分だけであり、未使用の領域に対してはまったく物理ディスクを消費していない。Windows Virtual PCやHyper-Vなどにおける「容量可変の仮想ディスク」と同じようなものと考えればよいだろう。これにより、例えば物理ディスクが1つしかない場合でも、10Tbytesや20Tbytesといった巨大な仮想ディスクを(複数)作成できる。ただしWindows Server 2012の制約により、作成可能なNTFSの最大ボリューム・サイズは256Tbytesに制限されている。また、一度確保された使用済み領域は、その上にあるファイルを削除しても解放されることはない。必要なら仮想ディスクを完全に削除して対応する。
なおストレージに対して最大限の性能を求めたり、動的な利用によるフラグメンテーションを避けるために、従来のような固定的な割り当て(シック・プロビジョニング)をしたい場合もあるだろう。その場合は、あらかじめディスクの全領域を確保するタイプの仮想ディスクを作成すればよい。この方法では、ディスク・サイズの仮想化は利用できないので、物理ディスク容量を超える仮想ディスクは作成できないが、それ以外の記憶域プールの機能はすべて利用できる。
冗長性機能と組み合わせられる記憶域プール
先の図ではスラブという、あるまとまった単位で物理ディスクから仮想ディスクへ割り当てているが、さらに「耐障害性機能(冗長性や回復性ともいう)」と組み合わせることで、物理ディスクに障害が発生しても、データを喪失しないシステムにもできる。記憶域プールで利用可能な冗長性機能としては、「双方向ミラー」「3方向ミラー」「パリティ」の3種類がある。記憶域プールでは物理ディスクの構成を意識せずにスラブを割り当てると前述したが、実際には、冗長性や性能などを考慮して、複数の物理ディスクに分散するように割り当てることになっている。
記憶域プールで利用できる冗長性機能
ディスクの障害からデータを守るには、あらかじめ余分にディスクを割り当てておき、ミラー・データやパリティ・データを保存しておく必要がある。記憶域プールでは、これらのいずれかの方法と組み合わせて仮想ディスクを作成できる。「シンプル(回復性なし)」は、冗長ディスクを用意しない方式(この呼び方はWindows OSにおける表記)。ディスクの利用効率は高いが、ディスクに障害が発生するとデータを失うことになる。ミラー方式は、データのコピーを1つもしくは2つ用意しておく方式。3方向ミラーだと最大2台までの障害に耐えられる。パリティはRAID 5で使われている方式。どれか1台が障害を起こしても、ほかのディスクからデータを再現できる。ミラーよりもディスクの利用効率は高い。なお、プール・ディスクとしてこの図では1台、もしくは2台、3台などのディスクが描いてあるが、これは最低限必要な台数である。これよりも多くのディスクがプール内に存在する場合、プール内の全ディスクに対してスラブが割り当てられるので、同時に読み書きできるディスク数が増加し、結果的にディスクの読み書き速度が向上する可能性がある。
以下、4種類の冗長性機能について解説する。なお見出しの名前は日本語版のWindows Server 2012の管理ツールにおける表記である。
■「シンプル(回復性なし)」仮想ディスク
これはデータのミラー・セットやパリティ・データを作らない、一番単純な方式である。記憶域プールを構成するディスクは最低1台でもよく(最大は、デフォルト設定では128台まで)、ディスク容量の仮想化(シン・プロビジョニング)のみを使う場合に利用する。プール内に複数のディスクがある場合は、複数のディスクをまたがってデータが割り当てられることになるので、アクセス速度の向上も期待できる。だが重複したデータやエラー訂正用のデータ(パリティ)などは付加されないので、プール中のディスクが1台でも障害を起こすと、その仮想ディスクへはアクセスできなくなる。
■「双方向ミラー(2 way mirror)」仮想ディスク
これはRAID 1のように、同じデータを2台のディスクに分散して書き込む方式である。双方向ミラーでは、オリジナルのデータと同じコピーをもう1つ作成し、オリジナルとは別の物理ディスクに配置する。書き込むデータの2倍のディスク領域が必要になるが、ディスクが1台障害を起こしてもデータは失われることなく、継続してアクセスできる。最低でもプール内に2台のディスクが必要になる。3台以上ある場合でも、1つのデータ・セット(スラブ)は2台のディスクに分散して記録されるが、どの2台に割り当てられるかは空き容量などに応じて動的に変わる。
■「3方向ミラー(3 way mirror)」仮想ディスク
これは双方向ミラーよりもさらにデータの安全性を重視する方式である。3方向ミラーでは、オリジナルのデータと同じコピーをもう2つ作成し、それぞれ別の物理ディスクに配置する。書き込むデータの3倍のディスク領域が必要になるが、ディスクが2台障害を起こしてもデータは失われることなく、継続してアクセスできる。
注意:この方式を利用するためには、プール内に最低でも「5台」のディスクが必要となる。後述の「クォーラム」の説明も参照のこと。
■「パリティ」仮想ディスク
これはRAID5のように、データを2台以上のディスクに分散して書き込み、データ修復用のパリティ・データをさらに別のディスクに書き込む方式である。例えば、プールを構成するディスクが6台あれば、データを5台に書き込み、もう1台にはパリティ・データを書き込む。パリティを書き込むディスクはデフォルトでは固定されておらず、適宜ローテートされる。この方式ではディスクが1台障害を起こしてもデータは失われることなく、継続してアクセスできる。ただしプール内には最低でも3台のディスクが必要になる(最大は、デフォルト設定では8台まで)。ディスクの利用効率は、双方向ミラーの50%、3方向ミラーの33%と比較すると、パリティ方式では余計に必要なのは1台分だけで済む。プール内のディスク台数が多くなるほど利用効率は高くなる。しかしパリティを計算して書き込むため、データ書き込み時のパフォーマンスはミラー方式より劣る。シーケンシャル・アクセスや更新の頻度が少ないデータの保存用途に向く。ランダム・アクセスが多いデータに対しては、ミラー方式の方が適している。
以上、4つのディスク割り当て方式(冗長性機能)があるが、同一プール上でこれらを混在させて複数の仮想ディスクを作成することも可能である。
記憶域プールに関する運用上の注意点
以下、いくつか注意すべき点があるので述べておく。
■3方向ミラーでは最低5台のディスクが必要
Windows 8やWindows Server 2012の製品版では、3方向ミラーを利用するためには、プール内に5台以上の物理ディスクが必要となっている。4台以下の物理ディスクしか含まれていないプールでは、3方向ミラーの記憶域は作成できない。ベータ版のWindows 8/Windows Server 2012ではプール内に3台以上のディスクがあれば利用できたが、製品版では5台以上に変更されているので注意していただきたい。
3方向ミラーでは、1つのデータを3カ所に分散して書き込むため、最低でもディスクが3台あれば利用できそうだが、次の「クォーラム」の概念が導入されて制約が厳しくなったようである。例えば3台で構成されたプール上で3方向ミラーを使った場合、2台の障害でも(つまり残りが1台でも)データはまだアクセスできるはずだが、クォーラムの制限により、記憶域プールの健常性が維持できなくなる。これでは(1台までの障害を許容する)双方向ミラーやパリティと同じであり、意味がない。だがプールに5台以上のディスクがあれば、2台の障害が発生しても残りは3台(過半数)なので、プールの健常性を維持しつつ、双方向ミラーとしても機能する。
■クォーラムの概念
記憶域プールでは、何台でも物理ディスクを組み合わせることができるが、プール内の物理ディスクのうち、半数もしくはそれ以上がアクティブであれば、プールの健全性、正常性は維持される(プールの状態は「Healthy」であると判断される)。もし半分以上のディスクに同時に障害が発生すればプールそのものが無効になり、その上の仮想ディスクも無効になる。この概念は「クォーラム(quorum)」と呼ばれる。
■ディスクの動的な追加
記憶域プールには動的にディスクを追加できる。故障したディスクをプールから削除して代わりに追加してもよいし、単にプール全体の容量を増加させるためにディスクを追加してもよい。大きな仮想ディスクを使っていても(仮想的にはいくら空きがあっても)、実ディスクの空き容量が不足してくると(70%を超えると)、Windows OSから警告メッセージが表示されるので、ディスクを追加すれば、実際の空き容量が増える。
■クライアント版Windows OSとの違い
記憶域プールの機能は、サーバ版OSであるWindows Server 2012と、クライアント版OSであるWindows 8はほぼ同じ機能を持っているが、Windows 8ではGUIによる操作がいくらか制限されており、必要ならPowerShellで操作する必要がある。Windows 8のGUI画面では操作/設定できない機能としては、次のようなものがある。なお小規模企業向けとして用意されているWindows Server 2012 EssentialsエディションでもWindows 8と同様に次のような制約がある。詳細については、Windows 8の記事を参照していただきたい。
- パリティ方式の仮想ディスクの作成では、3台セットのディスクしか使わない
- 固定割り当て方式が利用できない
- ホット・スペア・ディスクを用意できない
これ以外にもいくつかあるが、いずれもPowerShellで操作すればよい。PowerShellを使えば、例えばミラー+ストライプ(内部的には2 columnの双方向ミラーという)のような記憶域を作成したり、アクセス時のブロック・サイズ(デフォルトでは256Kbytes単位でアクセスする)を変更したりといったことが可能である。
Copyright© Digital Advantage Corp. All Rights Reserved.