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