[Windows 8プレビュー]

Windows 8 Consumer Preview
―― 再構築された次世代Windows ――

第7回 ディスクを仮想化するストレージ・プール機能

1.ディスクを仮想化するストレージ・プール

デジタルアドバンテージ 打越 浩幸
2012/04/12
Page1 Page2


本連載では、2012年中にリリースが予定されているWindows 8(開発コード名)について、その機能の概要を紹介します。本稿では2012年2月に配布が開始されたConsumer Preview版(ビルド8250)に基づいて執筆しているため、最終的な製品版とは内容が異なることがあることをあらかじめご了承ください。
【2012/08/23】Windows 8は2012年8月にRTM版(製品版)が完成し、すでに正式リリースされています。製品版をベースにした記事は新連載「Windows 8レボリューション」をご覧ください。ストレージ・プールについてはこちらで解説しています。

 今回は、Windows 8におけるストレージ関連の重要機能である「ストレージ・プール」について見ていく。複数台のディスクを組み合わせて仮想的なディスクに変換し、さらにディスク容量も仮想化することによって、物理ディスクのサイズや構成などに左右されない、柔軟なディスク管理を実現している。ミラーやパリティによる冗長性確保、自動的なディスク割り当て領域管理や障害からの復旧など、管理者の手間を大幅に軽減させる機能も持っている。

記憶域とストレージ・プール

 Windows OSでは、ディスク関連の機能や、ストレージ・デバイス上に確保されたデータ保存領域(C:やD:といったドライブのほか、シャドウ・コピーやページ・ファイルなども含む)のことをまとめて「記憶域(storage spaces)」と呼んでいる。これに対し、Windows 8では新しく「ストレージ・プール」や「シン・プロビジョニング」などの機能が追加され、その機能や使い勝手、性能、信頼性などが大幅に向上している。記憶域の新機能については以下のサイトも参照していただきたい。

 Windows 8における記憶域に関する新機能としては、次のようなものがある。

機能 概要
ストレージ・プール 複数の物理ディスクをまとめて1つの大きな仮想ディスクとして扱う機能。ディスクの実容量や組み合わせ方法、接続方法(SATA、USB、SAS、IDEなど)によらず、ユーザー側からは1つのディスクに見える。一度作成したプールに対して、後から動的に物理ディスクを追加したり、故障したディスクを取り外して交換することも可能
シン・プロビジョニング機能 シン・プロビジョニングとは、ドライブ・サイズを仮想化し、実際の容量よりも大きなサイズとして見せる技術。ディスク・システムに対する初期投資コストを抑えながらも、需要(実際に使用しているディスク・サイズ)に応じて物理ディスクを順次追加できる。ディスクを追加してもシステム構成の変更作業などは不要
耐障害性の向上 ストレージ・プールから仮想ディスクを作成する場合、2ウェイ・ミラーリング、3ウェイ・ミラーリング、パリティのいずれかの耐障害性/復元機能と組み合わせられる。バックグラウンドでのインテリジェントな障害からの復元やドライブのホット・スペアなどにより、サービスの可用性を維持できる。プールを構成するディスクの過半数が正常に動作していればプールは正常に機能し、耐障害性のある構成の仮想ディスクは適切に代替処理などが行われる
ストライピングによる性能向上 ストレージ・プールに複数の物理ディスクがある場合、それらのディスク全体に分散して記録する。2台だけでなく、3台以上組み合わせたストライピングも可能で、パフォーマンス向上が期待できる
PowerShellによる管理 ストレージ・プールに関する機能はすべてPowerShellから操作できる
Windows 8におけるディスク記憶域の機能強化点

 新機能は数多くあるが、簡単に言うと、「ストレージ・プール」と「シン・プロビジョニング」がコア機能といえる。以下、それぞれについて見ていく。

物理ディスクを仮想化する「ストレージ・プール」

仮想PCで学ぶWindowsシステム管理 第11回「スパン・ボリュームとボリュームの最大サイズ」

  「ストレージ・プール(storage pool)」とは、複数の物理ディスクを組み合わせて、論理的な、大きなディスクとして取り扱う機能である。例えば1Tbytesのディスクと2Tbytesのディスク、3Tbytesのディスクの計3台ある場合、従来は3つの論理ドライブとして扱うしかなかった。3台合計すれば6Tbytesになるのだが、従来のWindows OSでは3つの異なる論理ドライブとしてしか利用できず、作成可能なボリュームの最大サイズもディスクのサイズによって制限されていた。この例では、3Tbytesのボリュームは作成できるが、4Tbytesや5Tbytes、6Tbytesのボリュームを作成することはできない。ディスクをダイナミック・ボリュームに変換しておけば、複数のディスクにまたがる「スパン・ボリューム」を作成することはできるが(関連記事参照)、あらかじめダイナミック・ディスクにしておく必要があるほか、運用開始後に物理ディスクの構成を変更できない(追加できない)、ディスクに障害が発生しても復旧できないなど、いくつか制約がある。

 これに対してWindows 8のストレージ・プールは、システムに接続された複数台(1台でもよいが)のディスクを大容量の仮想的なディスクとして扱う機能である。プールを構成するディスクは運用開始後に途中で追加してもよいし、故障したらそれをプールから削除して、代わりに別のディスクを追加してもよい。システムへの接続方法も、ATAPIやSATA、eSATA(SATAを外付けにしたもの)、SCSI、SAS(Serial Attached SCSI)、iSCSI、USBやIEEE 1394(FireWire)接続のディスクなど何でもよいし(意味はないだろうが、自分自身にマウントした.VHD/.VHDX仮想ディスク・ファイルでもよい)、プールを構成する各ディスクの容量や速度、接続方法を統一する必要もない(ただし性能のためには揃えるのが望ましい。ストレージ・プールでは各ディスクの速度差などは考慮しないため)。

Windows 7時代のワークグループ・ネットワーク「Windows Home Server 2011」

 複数のディスクをまとめてくれるので、小容量のディスクであっても何台か接続すれば、個々の物理ディスク・サイズを超える大きなボリュームが作成できるようになる。この点では、Windows Home Serverなどで利用できた「ドライブ・エクステンダ」の機能に近いが(関連記事参照)、それよりももっと柔軟性やスケーラビリティ、パフォーマンス、耐障害性機能に優れているのが特徴である。

 ストレージ・プールの機能を図にすると次のようになる。

ストレージ・プール
物理ディスクを複数台まとめて(1台でも可)、プールとする。そして作成した論理的な仮想ディスクに対して、256Mbytesずつ割り当てる。使用する領域にのみブロック(スラブ)を割り当てるので、論理ディスクのサイズは将来を見越してあらかじめ大きく割り当てておくと、以後の管理が楽である。このような管理方式を「シン・プロビジョニング」という。ただし物理ディスクの最大合計サイズを超えてデータを記録することはできないので、必要に応じて物理ディスクを追加する。

 この例では4台の物理ディスクをまとめて1つのストレージ・プールとして扱っている。そして、そのプールから3つの論理ディスク(E:、F:、G:)を作成しているが、ストレージ・プールがユニークなのは、その論理ドライブへのディスク領域の割り当て方にある。ストレージ・プールでは、各ドライブを256Mbytesずつのブロックに分割し、これを各論理ディスクに必要に応じて順番に割り当てている。Windows 8では各ブロックのことを「スラブ(slab)」と呼んでいるが、スラブ単位で割り当てることにより、物理ディスクの構成(台数)やサイズなどとは独立して論理ディスクを作成・管理できるようにしている。

シン・プロビジョニングで巨大な仮想ディスクを実現する

5分で絶対に分かるストレージ「容量の無駄をなくす画期的技術とは」(Server & Storageフォーラム)

 企業において、ストレージにかかるコストを下げる方法として近年「シン・プロビジョニング(thin provisioning)」というテクノロジの導入が進んでいる(関連記事参照)。これは、ディスクの容量(や構成)などを仮想化して、実際に必要なだけ(使っている分だけ)のストレージをその都度用意・増強するという技術である。例えば将来的には最大30Tbytes程度のストレージが必要になると予想されているが、当面は3Tbytesだけあればよい、といった状況を考える。シン・プロビジョニングでは、最初から例えば50Tbytesの仮想的なディスクを作成しておくが、実際に接続するのは3Tbytesのディスク1台だけで、後は必要に応じて物理ディスクを随時追加するだけである。仮想サイズはずっと50Tbytesのままなので、仮想ディスクを利用する側では何の変更も必要ない。

 これに対して従来のWindows OSのスパン・ボリュームでは、物理ディスクを追加するたびにシステムの設定を変更したり、システムを停止したりしなければならない。

 Windows 8のストレージ・プールでは256Mbytesというスラブ単位でディスクを利用しているが、これはシン・プロビジョニングを実現するためでもある。先の図では、論理ディスクに対してスラブ単位でブロックを割り当てているが、実際には「使用中のブロックにのみスラブを割り当てる」という手法が取られている。つまり、実際に消費されるディスク領域は使用済み領域(データを書き込んだ領域)の分だけであり、未使用の領域に対してはまったく物理ディスクを消費していない。Windows Virtual PCやHyper-Vなどにおける「容量可変の仮想ディスク」と同じようなものと考えればよいだろう。これにより、例えば物理ディスクが1つしかない場合でも、10Tbytesや20Tbytesといった巨大な論理ディスクを(複数)作成できる。ただし、Windows OSやNTFSなどの制約により、現在のWindows 8で作成可能な最大仮想ディスク・サイズは63Tbytesに制限されている。また、一度確保された使用済み領域は、その上にあるファイルを削除しても解放されることはない。必要なら論理ディスクを完全に削除して対応する。

 なおストレージに対して最大限の性能を求めたり、動的な利用によるフラグメンテーションを避けるために、従来のような固定的な割り当てをしたい場合もあるだろう。その場合は、あらかじめディスクの全領域を確保するタイプの論理ディスクを作成すればよい(Windows 8 CP版ではGUIは用意されておらず、PowerShellで操作する必要がある。サーバ版のWindows 8では、GUIのツールから作成可能)。この方法では、ディスク・サイズの仮想化は利用できないので、物理ディスク容量を超える論理ディスクは作成できないが、それ以外のストレージ・プールの機能はすべて利用できる。

耐障害性機能と組み合わせられるストレージ・プール

 先の図では、スラブ単位で物理ディスクから論理ディスクへ割り当てているが、いくつかの「耐障害性機能(resiliency)」と組み合わせることで、ディスクに障害が発生しても、データを喪失しないシステムにできる。具体的な耐障害性機能としては、「2ウェイ・ミラー」「3ウェイ・ミラー」「パリティ」の3種類がある。ストレージ・プールでは物理ディスクの構成を意識せずにスラブを割り当てると前述したが、実際には、耐障害性や性能などを考慮して、複数の物理ディスクに分散するように割り当てることになっている。

ストレージ・プールで利用できる耐障害性機能
ディスクの障害からデータを守るには、あらかじめ余分にディスクを割り当てておき、ミラー・データやパリティ・データを保存しておく必要がある。ストレージ・プールでは、これらのいずれかの方法と組み合わせて論理ディスクを作成できる。「冗長性なし」は、冗長ディスクを用意しない方式。速度は速いがディスクに障害が発生するとデータを失うことになる。ミラー方式は、データのコピーを1つもしくは2つ用意しておく方式。2ウェイだと最大2台までの障害に耐えられる。パリティは、RAID5で使われている方式。どれか1台が障害を起こしても、ほかのディスクからデータを再現できる。ミラーよりもディスクの利用効率は高い。なお、プール・ディスクとしてこの図では1台、もしくは2台、3台などと記述しているが、これは最低限必要な台数である。これよりも多くのディスクがプール内に存在する場合、プール内の全ディスクに対してスラブが割り当てられるので、同時に読み書きできるディスク数が増加し、結果的にディスクの読み書き速度がさらに向上する可能性がある。

■冗長性なし
 これはデータのミラー・セットやパリティ・データを作らない、一番単純な方式である。ストレージ・プールを構成するディスクは最低1台で構わないが、重複したデータやエラー訂正用のデータ(パリティ)などは付加されないので、プール中のディスクが1台でも障害を起こすと、その論理ディスクへはアクセスできなくなる。

■2ウェイ・ミラー
 これはRAID1のように、同じデータを2台のディスクに分散して書き込む方式である。2ウェイ・ミラーでは、オリジナルのデータと同じコピーをもう1つ作成し、オリジナルとは異なる物理ディスクに配置する。書き込むデータの2倍のディスク領域が必要になるが、ディスクが1台障害を起こしてもデータは失われることなく、継続してアクセスできる。最低でもプール内に2台のディスクが必要になる。

■3ウェイ・ミラー
 これは2ウェイ・ミラーよりもさらにデータの安全性を重視する方式である。3ウェイ・ミラーでは、オリジナルのデータと同じコピーをもう2つ作成し、それぞれ別の物理ディスクに配置する。書き込むデータの3倍のディスク領域が必要になるが、ディスクが2台障害を起こしてもデータは失われることなく、継続してアクセスできる(ただし実際にはいくらか制約がある。以下のクォーラムの説明参照)。これを利用するためには、プール内に最低でも3台のディスクが必要になる。

■パリティ
 これはRAID5のように、データを2台以上のディスクに分散し、さらにデータ修復用のパリティ・データをもう1台の別のディスクに書き込む方式である。ディスクが1台障害を起こしてもデータは失われることなく、継続してアクセスできるが、プール内に最低でも3台のディスクが必要になる。2ウェイ・ミラーよりもディスクの利用効率は高いが(2ウェイ・ミラーでは50%だが、パリティ方式では余計に必要なのは1台分だけである。プール内のディスク台数が多くなると利用効率は上がる)、パリティを計算して書き込むため、データ書き込み時のパフォーマンスはやや劣る。更新の頻度が少ないデータの保存用途に向く。

 以上、4つの割り当て方式があるが、同一プール上でこれらを混在させて複数の論理ドライブを作成することも可能である。

ストレージ・プールで複数のディスクを運用する際の注意点

■クォーラムの概念
  Windows 8のストレージ・プールでは、何台でもディスクを組み合わせることができるが、プール内のディスクのうち、半数もしくはそれ以上がアクティブであれば、プールの健全性、正常性は維持される。もし半分以上のディスクに同時に障害が発生すればプールそのものが無効になり、その上の論理ディスクも無効になる。この概念は「クォーラム(quorum)」と呼ばれる。

 例えば6台のディスクでプールを構成している場合、3ウェイ・ミラーなら2台の障害までならデータを喪失することはない(2ウェイ・ミラーやパリティ方式では、2台障害が発生した時点でアクセスできなくなる)。だが3台でプールを構成している場合は、3ウェイ・ミラーでも2台の障害でアクセスできなくなる。

■ディスクの動的な追加
 ストレージ・プールには動的にディスクを追加できる。故障したディスクをプールから削除して代わりに追加してもよいし、単にプール全体の容量を増加させるためにディスクを追加してもよい。大きな仮想ディスクを使っていても(仮想的にはいくら空きがあっても)、実ディスクの空き容量が不足してくると、Windows OSから警告メッセージが表示されるので、ディスクを追加すれば、実際の空き容量が増える。新しく追加されたディスクがどのように利用されるかは完全にシステムまかせであり、ユーザーが細かく制御することはできない。


 INDEX
  [Windows 8プレビュー]Windows 8 Developer Preview
  第7回 ディスクを仮想化するストレージ・プール機能
  1.ディスクを仮想化するストレージ・プール
    2.ストレージ・プールを使ってみる

 「製品レビュー」

@IT Special

- PR -

TechTargetジャパン

Windows Server Insider フォーラム 新着記事
  • 第538話 がんばれエーアイくん5 (2017/2/21)
     エーアイくんの画像認識装置は、見た目で物体の体積や重さも判別可能。切手の額面も料理の温め時間もバッチリ。他にも……
  • 第537話 おすすめ商品 (2017/2/14)
     ショッピングサイトのおすすめ商品、最近は気になるものばっかり出るのよね〜。なんだか気味が悪いわ……
  • Thunderbirdで証明書がエラーになる場合の対策方法 (2017/2/9)
     Thunderbirdは、独立して証明書を保存・格納している。そのため、証明書に起因するエラーが発生することがある。正しく証明書を扱えるようにする方法を紹介する
  • AzureのWeb AppでPHPのエラーログを記録・保存する (2017/2/8)
     AzureのWeb AppでPHPのエラーログを記録・保存する方法を紹介する。PHPで何らかのエラーや警告が生じると、php_errors.logファイルに記録されるようになる
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間
ソリューションFLASH