連載
» 2011年02月03日 00時00分 公開

仮想PCで学ぶ「体当たり」Windowsシステム管理:第13回 Windowsのディスク管理をマスターする(下) (3/3)

[打越浩幸,デジタルアドバンテージ]
前のページへ 1|2|3       

RAID-5ボリュームを構成するディスク2台以上に障害が発生するとどうなる?

 上の例では、RAID-5を構成するディスクのうち、1台に障害が発生した場合の例を示した。では2台以上のディスクに障害が発生するとどうなるであろうか。Windows OSのRAID-5では、ディスクの冗長度は1台分しかないため、試すまでもなく失敗することは容易に想像できるが、一応やってみよう。

 先ほど修復したRAID-5ボリュームに対し(ディスクは3台ある)、2台目と3台目のディスクをdiskpartのcleanコマンドで消去したのが次の画面である。

ディスク2台に障害が発生した場合の例
Windows OSのRAID-5ボリュームでは、1台までの障害には耐えられるが、2台に障害が発生すると、ボリュームのデータが失われる。これは2台のディスクに障害が発生した場合の例。RAID-5ボリュームの状態が「失敗」になっているし、ドライブ名なども失われている。
 (1)正常なディスク。
 (2)このディスクを初期化した。
 (3)このディスクも初期化した。
 (4)ディスクが不足しているというエラー。
 (5)もう1台ディスクが不足しているというエラー。このように、エラーのインジケータも2台分表示される。

 「ディスク 2」と「ディスク 3」が消去されたディスクである。「初期化されていません」という状態になっている。「ディスク 1」は元のままだが、状態が「冗長の失敗」ではなく、単に「失敗」となっている。またドライブ名は消失し、ボリューム全体がアクセス不可能になっている。また一番下に表示されている仮想的なエラーを表すドライブ(「不足」「ダイナミック」)も2台分ある。

 この状態で可能な操作は、ポップアップ・メニューを見ると分かるように[ボリュームの再アクティブ化]か[ボリュームの削除]だけである。修復することはもはや不可能だ。

2台障害発生時に利用可能な選択
ディスク2台に障害が発生した場合は、ボリュームの修復メニューはもう利用できない。

 [ボリュームの再アクティブ化]は前回「ストライプ/スパン・ボリュームを構成するディスクに障害が発生するとどうなる?」で述べたように、一時的に外していたディスクを再接続するときに利用するメニューである。新規のディスクを接続して、ボリュームを初期化したり、再構成したりするときに使うものではない。実行しようとしても、次のような画面が表示され、元のディスクを接続するように促される。

再アクティブ化のエラー
再アクティブ化しか選択できないが、実行してもこのようなメッセージが表示されるだけである。分かりづらいが、もはや修復できないというエラーのようである。

 このような事態になる前に、ディスクの1台に障害が発生した時点で管理者は適切な対応(ディスクの交換など)をとる必要がある。

全ディスクに障害が発生したら?

 上の例では2台以上に障害が発生した場合を見てきたが、では全ディスクに障害が発生するとどうなるだろうか。仮想環境なら、こういうテストも簡単にできるので、試しておこう。

 RAID-5を構成する全ディスク(3台分)に対して、diskpartのcleanコマンドを実行したのが次の画面である。

全ディスクに障害が発生した場合の例
RAID-5ボリュームを構成する全ディスクに障害が発生したとすると、このようになる。もはや、元のRAID-5ボリュームの情報はどこにも表示されていない。そのようなボリュームがあったという情報まで失われているようである。
 (1)元のディスク1。
 (2)元のディスク2。
 (3)元のディスク3。

 先ほどの画面と比べると、RAID-5ボリューム(水色のバー)がまったく何も表示されていない点が異なる。エラーの表示もない。これは、RAID-5(やミラーやストライプ)などのボリューム情報は、各ディスクの先頭に分散して保存されているということを表している。Windows OSのシステム・パーティション内だけを保存しておいても、ボリュームの情報は保存されないので、注意する必要がある。仮想ディスクの場合なら、ボリュームを構成する仮想ディスク・ファイルはまとめて保存や移動をする必要があるだろう。

ディスクの署名が衝突するとどうなる?

 最後にディスクの署名データとその競合について触れておく。

 ディスクの先頭には「署名」データと呼ばれる、4bytesのユニークなIDデータが記録されている(フロッピー・ディスクやディスク・ボリュームの「ボリューム シリアル 番号」と同じようなもの)。Windows OSはこの署名データを見て、どのディスクがシステムに接続されているかを判別している。たとえ同じ型番のディスクや、同じ内容を保存したディスクを使っていても、この署名データによって別のディスクであることを認識している。もし署名データがなければ、同じ構成のハードディスクの内容を取り違えたり、間違ってアクセスしたりしてしまう可能性がある。

 ディスクの署名データは、ディスクの先頭セクタのオフセット+0x01B8に記述されており、例えばdiskpartのdetail disk/uniqueid diskコマンドや、TIPS「ディスクのパーティション・テーブルを調査する」に記した方法などで確認できる。

 仮想マシンを利用する場合、.VHDファイルをコピーして仮想ディスクを用意することがあるが、これは注意しなければならない。この方法だと、同じ署名データを持つ仮想ディスクがどんどん増えてしまうからだ。もしこうやって作成した仮想ディスクを同じ仮想マシンに接続すると、同じ署名データを持つディスクが競合することになる。Windows OSでは、同じ署名データを持つディスクを検出すると、2台目以降のディスクを無効(オフライン)にして、アクセスできないようにする。まずはこれを確認してみよう。

 以下の例は、1つの仮想ディスク・ファイルをコピーして計3つ作成し、1台のWindows Serverマシンに接続して起動したところだ。オリジナルのディスクには2つのパーティションがあるため、正しく動作していれば、全部で6つの追加ドライブが表示されるはずである。だが追加した3つのディスクのうち、後ろの2つ(ディスク2とディスク3)はオフラインになっていることが分かる。

同じ署名データを持つディスクの使用例
ディスク1の仮想ディスク・ファイルをコピーしてディスク2とディスク3を作成し、その3台を同時に接続してWindows Server 2008 R2を起動してみた。しかし同じ署名データを持つディスクであるため、2台目以降は無効になり、アクセスできない。
 (1)オリジナルのディスク1。2つのパーティションを持つディスク。仮想マシンをオフにして、このファイルをコピーしてディスク2とディスク3を作成した。
 (2)パーティション1。
 (3)パーティション2。
 (4)コピーしたディスク、その1。署名データの競合により、無効(オフライン)になっている。
 (5)パーティション1。D:と同じ内容だが、オフラインなのでアクセスできない。
 (6)パーティション2。E:と同じ内容だが、オフラインなのでアクセスできない。
 (7)コピーしたディスク、その2。署名データの競合により、無効(オフライン)になっている。

 イベント・ビューアには「ディスク 2 のディスク署名は、ディスク 1 のディスク署名と同じです。」などと言った警告メッセージが記録されている。

 では実際の署名データを見てみよう。diskpartコマンドを起動し、「select disk 1」のようにしてディスクを選択後(ディスクは先頭から0、1、2、3、……と数える)、「detail disk」や「uniqueid disk」コマンドを実行すると確認できる。ただしuniqueidコマンドは古いWindows OSでは利用できないことがある。

C:\>diskpart ……コマンドの起動

Microsoft DiskPart バージョン 6.1.7600
Copyright (C) 1999-2008 Microsoft Corporation.
コンピューター: W2008R2STD0001

DISKPART> select disk 1 ……ディスク1の選択(C:はdisk 0)

ディスク 1 が選択されました。

DISKPART> detail disk ……ディスク・データの確認

Msft Virtual Disk SCSI Disk Device
ディスク ID: 95E1458D ……署名データ
種類       : SCSI
状態       : オンライン
パス       : 0
ターゲット : 0
LUN ID     : 0
場所のパス : UNAVAILABLE
現在の読み取り専用状態: いいえ
読み取り専用  : いいえ
ブート ディスク  : いいえ
ページ ファイル ディスク  : いいえ
休止状態ファイル ディスク  : いいえ
クラッシュ ダンプ ディスク  : いいえ
クラスター化ディスク  : いいえ

  Volume ### Ltr Label    Fs    Type      Size   Status Info
  ---------- --- -------  ----  --------- -----  ------ ----
  Volume 2   D   VOLUME1  NTFS  Partition 31 GB  正常
  Volume 3   E   VOLUME2  NTFS  Partition 32 GB  正常

DISKPART> select disk 2 ……ディスク2の選択

ディスク 2 が選択されました。

DISKPART> detail disk ……ディスク・データの確認

Msft Virtual Disk SCSI Disk Device
ディスク ID: 95E1458D ……署名データ。ディスク1と同じ
種類       : SCSI
状態       : オフライン (署名の競合) ……署名データの競合
パス       : 0
ターゲット : 0
LUN ID     : 1
場所のパス : UNAVAILABLE
現在の読み取り専用状態: いいえ
読み取り専用  : いいえ
……(以下省略)……

 追加したディスクの署名データは「95E1458D(16進数で8桁)」で、同じになっていることが分かる。仮想ディスクの内容を直接調査する場合は、.VHDファイルの内容を16進数でダンプ出力し、ディスクの先頭セクタのデータを調査すればよいだろう。

ディスクの先頭セクタのダンプ出力例
.VHDファイルを16進数でダンプ出力し、先頭セクタの内容を確認しているところ(jhdは16進ダンプするためのコマンド)。セクタのサイズは通常512bytesで、ブート・セクタは先頭が「33 C0 8E ……」で始まり、「…… 55 AA」で終了している。.VHDファイルをダンプすると、すぐ見つかるだろう(絶対的な場所は仮想ファイルのサイズに応じて変わるので、常に同じ場所ではない)。オフセット+0x01B8からの4bytesがディスクの署名データ。その直後にある16bytesのデータは、パーティション・データ。パーティションが2つあるので、2組続いている。
 (1)この部分が署名データ。バイト・データは逆順。

ディスクの署名データが衝突した場合の対処は?

 ディスクの署名データが衝突した場合は、まったく別の署名データに変更する必要がある。とはいえ、操作は簡単である。オフラインになっているディスクを右クリックし、ポップアップ・メニューから[オンライン]にするだけで、自動的にユニークになるような署名データに更新されるはずである。ただしOSによってはこの方法が使えないことがあるので、その場合は改めてディスクを作成し直すか、diskpartのcleanコマンドでディスクの情報を削除後、ディスクを初期化する(初期化では自動的にユニークな署名データが書き込まれる)。

オンラインにしてディスクの署名データを更新する
これはWindows Server 2008 R2での例。オンラインにするだけで、自動的にユニークなディスク署名データに更新してくれる。この操作が不可能なOSの場合は、手動で署名データを変更する。
 (1)オフライン状態のディスクを右クリックする。
 (2)これを選択して、署名データの更新とオンライン化を行う。

 コマンド・プロンプト上で作業する場合は、diskpartで「uniqueid disk id=12345678」のように実行することで、直接変更することもできる(古いWindows OSではこのコマンドはサポートされていない)。

「仮想PCで学ぶ『体当たり』Windowsシステム管理」のインデックス

仮想PCで学ぶ『体当たり』Windowsシステム管理

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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