GPTの障害時の対応

前回、FreeBSDをGTPのミラー構成でインストールしました。インストール方法については以下の記事を参考にして下さい。

 


事前の準備

まず、仮想マシンが保存されているハードディスクが壊れた時に構成ファイルが飛んでしまい復旧がめんどうなので、もう片方のディスクにコピーをしておきます。データストアの参照して、以下のファイルをdatastore1からdatastore2にコピーにコピーしておきます。

  • FreeBSD9.1.nvram
  • FreeBSD9.1.vmx
  • FreeBSD9.1.vmsd
  • FreeBSD9.1.vmxf

上がdatastore1で、下がdatastore2で必要なファイルをコピーした状態です。

■datastore1の状態
gpte01.jpg

■datastore2の状態
gpte02.jpg

 


datastore1で障害発生

仮想マシンが稼動しているdatastore1のハードディスクが突然お亡くなりになった想定で、意図的に障害は発生させます。da0のハードディスクがdatastore1上に、da1のハードディスクがdatatore2上に存在しgptでミラーしている状態を確認します。


root@bsd2:/root # gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  da0 (ACTIVE)
                      da1 (ACTIVE)
 

gptのミラーが正しく動いていることを確認したら、OSを停止させずに仮想マシンの電源をいきなり停止させます。

gpte03.jpg

仮想マシンが停止したら、まず仮想マシンをインベントリから削除します。

gpte04.jpg

gpte05.jpg

後、今回datastore1が障害で使えなくなった想定なので、datastore1のFreeBSD9.1配下をごっそりと削除します。

gpte06.jpg

 


datastore2からの復旧作業

datastore1が使えなくなったので、datastore2から復旧をさせます。この時点ではまだdatastore1のハードディスクが復旧していない状態です。

datastore2を参照してFreeBSD9.1.vmxファイルからインベントリの追加を行います。

gpte07.jpg

gpte08.jpg

gpte09.jpg

gpte10.jpg

datastore2から先ほど削除したインベントリ(FreeBSD9.1)を作成しました。この状態でインベントリを起動しようとするとdatastore1上のハードディスク(vmdkファイル)が見つからないというエラーが発生します。そのため、仮想マシンの設定の編集でdatastore1上のハードディスクを一旦削除します。

 gpte12.jpg

gpte11.jpg

ハードディスク1を削除します。

gpte13.jpg

ハードディスク1を削除したら仮想マシンを起動します。仮想マシンのコピーを検出すると以下のメッセージが表示されます。既存のMACアドレスを使用するか、新規にMACアドレスを割り当てるかの違いなので、今回は「 I moved it 」を選びます。

gpte14.jpg

GPTのミラーが正常に行えていればOSが起動するはずです。起動したらGPTのステータスを確認してみます。datastore2上の仮想ハードディスクがda0で起動しているのが判ります。

 

root@bsd2:/root # gmirror status
      Name    Status  Components
mirror/gm0  DEGRADED  da0 (ACTIVE)

 


datastore1復旧後の対応

datastore1のハードディスクを物理的に交換した後の対応です。まずdatastore1上に仮想ハードディスクを作成します。

gpte15.jpg

gpte16.jpg

ハードディスクを追加します。

gpte17.jpg

gpte18.jpg

datastore1を指定して仮想ハードディスクを作成します。datastore2の仮想ハードディスクとディスク容量を合わせてください。

gpte19.jpg

gpte20.jpg

gpte21.jpg

ディスクを追加するとda1で認識しました。インストールした時とデバイスが逆になってしまってます。

 
root@bsd2:/root # dmesg
                    :
da1 at mpt0 bus 0 scbus2 target 0 lun 0
da1: <VMware Virtual disk 1.0> Fixed Direct Access SCSI-2 device
da1: 320.000MB/s transfers (160.000MHz, offset 127, 16bit)
da1: Command Queueing enabled
da1: 20480MB (41943040 512 byte sectors: 255H 63S/T 2610C)
 

gmirrorを使ってディスクを同期させます。そのままinsertで追加しようとすると怒られるので、一旦持っている情報をforgetで忘れさせてあげてから再度insertで追加してください。

 

root@bsd2:/root # gmirror insert gm0 da1
gmirror: Not all disks connected.
 
root@bsd2:/root # gmirror forget gm0
 
root@bsd2:/root # gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  da0 (ACTIVE)
 
root@bsd2:/root # gmirror insert gm0 da1
 
root@bsd2:/root # gmirror status
      Name    Status  Components
mirror/gm0  DEGRADED  da0 (ACTIVE)
                      da1 (SYNCHRONIZING, 25%)
 
root@bsd2:/root # gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  da0 (ACTIVE)
                      da1 (ACTIVE)
 

これで、無事復旧することが出来ました。必要に応じてdatastore1から起動するように各自変更してみてください。

今回は無事データが復旧しましたが、この手順を参考にしてくれた方のデータを保障する訳ではないので各自で良く検証してから運用してください。

関連記事

人気記事のランキング

トラックバックURL

このエントリーのトラックバックURL:
http://or2.to/mt/mt-tb-mt.cgi/127

コメントする