第8回 ディスクを仮想化する記憶域プール機能:Windows Server 2012クラウドジェネレーション(3/3 ページ)
Windows Server 2012の新機能である記憶域プールを使えば、複数のディスクを組み合わせて高速化したり、耐障害性を向上させるほか、ディスク・サイズを仮想化して大きなディスクに見せる、シン・プロビジョニングが行える。
記憶域作成後の状態
ここまでの手順で4つの記憶域を作成後、管理ツールで記憶域プールの状態を見ると次のようになっている。
記憶域作成後の管理ツール画面
4種類の記憶域を作成した後の状態。ユーザーから見えるボリューム・サイズはすべて3Tbytesだが、それぞれ冗長性の種類が異なる。
(1)作成した記憶域プール「pool1」とそのサイズなどの情報。すべてシン・プロビジョニングの仮想ディスクなので、ほとんどすべての領域が未使用状態になっている。実際にデータを書き込むと「割り当て済みの割合」が増えていく。
(2)仮想ディスク名。全部で4つの仮想ディスクを作成した。
(3)仮想ディスクの割り当て方式。
(4)「仮想」はシン・プロビジョニングを表す。シック・プロビジョニングなら「固定」と表示される。
(5)仮想ディスクの論理的なサイズ。
(6)実際に記憶域プール上で使用しているサイズ。
(7)ボリュームに割り当てられたドライブ文字。
(8)実際にプール内で使用されているディスク。
(9)障害発生時のホット・スペア用の予備ディスク。
記憶域は作成したが、まだ何も書き込んでいないので、プールの表示は、ほとんど未使用状態になっている。実際にデータが書き込まれるまで、プールのディスクは消費されない。例えばTIPS「巨大なサイズのファイルを簡単に作る方法」の「fsutil file createnew <ファイル名> <サイズ>」コマンドでボリュームいっぱいにファイルを作成しても、このコマンドで作成したファイルは実際にはデータをディスクに書き込むわけではないので、プールは消費されない。
将来、ボリュームのサイズが不足したら、物理ディスクをプールに追加したり、ボリューム・サイズを変更したりすればよい。記憶域は拡大のみが可能だが、拡大してもその中にあるボリューム(パーティション)のサイズは拡大されないので、必要なら手動でボリューム・サイズも拡大する。
作成したボリュームをエクスプローラで確認すると次のように表示される。
ディスクの管理ツールでは次のように表示される。システムに接続した物理ディスクは、記憶域プールに追加する前は単独のディスクとして認識されているが、記憶域プールに追加するとユーザーからは見えなくなる。そして記憶域を作成すると、それが仮想的なディスクとしてシステムにマウントされる。なおこれらのディスクはGPT形式でフォーマットされているので、2Tbytesを超えるようなサイズでも問題なく利用できる。
ディスクの管理ツールで見た記憶域
元のディスクは記憶域プールに追加した時点で、この画面からは削除される。仮想ディスクを作成すると、それが仮想的なディスクとしてシステムにマウントされる。
(1)これはWindows Server 2012がインストールされているシステム・ドライブ。
(2)これらは記憶域で実現されている仮想的なディスク。ユーザーやアプリケーションからは、単なるディスクと同じように見える。
(3)ディスク全体を1つのパーティションにしている。
ディスクに障害が発生すると?
ではディスクに障害が発生したことを想定し、1台のディスクをオフラインにしてみる(環境の都合上、以下の画面はWindows Server 2012のHyper-V上の仮想マシンで動作している。ディスクをオフラインにするには、仮想マシンの設定画面でディスクを1台削除するだけだが、実機でもディスクを取り外したり、USBケーブルを抜いたりすればよい)。
ディスクを1台削除して再起動すると、記憶域の画面は次のようになる。
ディスクに障害が発生した場合の例
物理ディスクを1台未接続状態にした場合の例。冗長性のない仮想ディスクはすぐにアクセスできなくなるが、そうでないディスクは読み書きのアクセスが可能だ。
(1)記憶域プールに問題がある場合はこのような記号が表示される。
(2)シンプル記憶域はアクセスできなくなってしまった。この仮想ディスク上のデータは失われてしまったので、復旧できない。それ以外の仮想ディスクは、ホット・スペアディスクに切り替わってデータが復旧され、正常にアクセスできるようになっている。
(3)アクセスできなくなった元の物理ディスク。
(4)ホット・スペア・ディスクは2台用意してあったが、1台は自動的に代替ディスクとして利用されている。
PowerShellによる操作
記憶域プールをPowerShellで操作すると、GUIの画面では設定できないようないくつかのパラメータも操作できる。例えば、デフォルトではプール内の全ディスクがストライプ化の対象となるが(例:ディスク6台のプールなら、常に6台セットでストライプ化される)、ディスク・インターフェイスのパフォーマンスなどを考えて、4台セットでストライプ化したいといった用途では、PowerShellを使えば手動で台数を設定/変更できる。以下、PowerShellによる操作をいくつか紹介しておく。
■記憶域プールのチェックと作成
記憶域プールを作成したり、内容を確認したりするには、New-StoragePoolやGet-StoragePoolコマンドレットを利用する。
※記憶域プールの一覧を見る
PS C:¥> Get-StoragePool
FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly
------------ ----------------- ------------ ------------ ----------
pool1 Degraded Warning False False
Primordial OK Healthy True False
■仮想ディスクのチェックと作成
仮想ディスクを作成したり、内容を確認したりするには、New-VirtualDiskやGet-VirtualDiskコマンドレットを利用する。
※仮想ディスクの一覧を見る
PS C:¥> Get-VirtualDisk
FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size
------------ --------------------- ----------------- ------------ -------------- ----
vdisk2-2way Mirror OK Healthy False 3 TB
vdisk3-3way Mirror OK Healthy False 3 TB
vdisk1-simple Simple Detached Unhealthy False 3 TB
vdisk4-parity Parity OK Healthy False 3 TB
※各仮想ディスクの詳細を調べる
PS C:¥> Get-VirtualDisk | fl
ObjectId : {12811c5f-a608-11e2-93ee-00155d02690b}
PassThroughClass :
PassThroughIds :
PassThroughNamespace :
PassThroughServer :
UniqueId : 5F1C811208A6E21193EE00155D02690B
Access : Read/Write
AllocatedSize : 3221225472
DetachedReason : None
…(以下省略)…
※割り当て方法を調査する
PS C:¥> Get-VirtualDisk | ft FriendlyName,ResiliencySettingName,NumberOfColumns,NumberOfDataCopies -AutoSize
FriendlyName ResiliencySettingName NumberOfColumns NumberOfDataCopies
------------ --------------------- --------------- ------------------
vdisk2-2way Mirror 3 2
vdisk3-3way Mirror 2 3
vdisk1-simple Simple 6 1
vdisk4-parity Parity 6 1
PS C:¥>
最後に示した「NumberOfColumns」「NumberOfDataCopies」に注目していただきたい。これは、各仮想ディスク内で物理ディスクがどのように割り当てられているかを示す値である。今回の例で示している記憶域プールには6台のディスクが含まれているが、仮想ディスクの形式(レイアウト)に応じて、3コラム×2セット、2コラム×3セット、6コラム×1セットという3つのパターンが使われている。各パラメータの意味は次の通りである。
項目 | 意味 |
---|---|
ResiliencySettingName | 割り当て方法。Simpleならシンプル記憶域、Mirrorなら双方向/3方向ミラー記憶域、Parityならパリティ記憶域 |
NumberOfColumns | 1つのストライプの中に含まれるディスクの台数。コラム数と呼ばれている。例えば「2」なら1つのデータを2台のディスクへ分散(インターリーブ)し、「6」なら6台のディスクへ分散させる。「1」ならインターリーブなし。台数が多いほど多くのディスクへ同時アクセスできるので、パフォーマンスが向上する可能性がある |
NumberOfDataCopies | 冗長性のために、同じデータをいくつ保存するかという値。「1」なら冗長性なし、「2」なら双方向ミラー、「3」なら3方向ミラー。パリティはデータのコピーを保存しているわけではないので、この値は「1」となる |
VirtualDiskに関するパラメータ |
図にすると、次のようになる。
デフォルトでは(GUIの記憶域プール作成画面では)、プール内に存在するすべてのディスクを使ってストライプを構成しようとするが、PowerShellのNew-VirtualDiskコマンドレットを使えば、例えば2台×2セットというミラー記憶域や、ディスク3台だけを使ったパリティ記憶域を作成することができる。
※例1:1コラム=ディスク3台のシンプル記憶域の作成
PS C:¥> New-VirtualDisk -StoragePoolFriendlyName pool1 -FriendlyName MyVdisk1 -ProvisioningType Thin -ResiliencySettingName Simple -NumberOfColumns 3 -Size 1TB
※例2:1コラム=ディスク2台の双方向ミラー記憶域の作成
PS C:¥> New-VirtualDisk -StoragePoolFriendlyName pool1 -FriendlyName MyVdisk1 -ProvisioningType Thin -ResiliencySettingName Mirror -NumberOfColumns 2 -NumberOfDataCopies 2 -Size 1TB
※例3:ディスク3台だけを使ったパリティ記憶域の作成
PS C:¥> New-VirtualDisk -StoragePoolFriendlyName pool1 -FriendlyName MyVdisk2 -ProvisioningType thin -NumberOfColumns 3 -ResiliencySettingName Parity -Size 1TB
今回はWindows Server 2012の記憶域プールについて解説した。記憶域プールを使えば、複数のディスクを組み合わせて仮想的な大きなディスクを作成したり、耐障害性に優れたストレージ・システムを簡単に構築できる。物理的なディスクの容量や構成方法などに左右されず、管理の手間もほとんど不要なこの機能は非常に期待できる。システムのブート・ドライブとしては使えないとか、作成した仮想ディスクのバックアップや復元、移行などの機能はない、物理ディスク構成を意識した細かい管理(割り当て)ができないなど、いくつか機能不足は否めないが、将来に期待したい。
Copyright© Digital Advantage Corp. All Rights Reserved.