IAサーバーの仮想化メモ -12ページ目

ESXiの仮想マシンを手動バックアップするスクリプト②

前回のエントリーで、ESXiホストで稼働している仮想マシンのバックアップを取得するコマンド群を紹介しました。

ESXiの仮想マシンを手動バックアップするスクリプト①|IAサーバーの仮想化メモ

個人的には、このようなコマンドを利用したバックアップ運用を本番環境で行うのはお奨めできないと考えています。
理由として以下の点が挙げられます。

■ESXiにおいて、DCUIやリモートSSH接続はデフォルトで無効化されている

文字通りになりますが、これらの機能(Tech Support Mode)はデフォルトで無効化されています。
rootでログインすることで有効化することが可能ですが、これらの機能を有効化すると、vSphere Clientの管理画面にアラートが表示されるようになります。
これは結構煩わしいです。
また、DCUIやリモートSSH接続によって、いろいろと操作ができてしまいますので、セキュリティの観点で脆弱性が高まってしまいます。

そもそも、Tech Suppore Modeというのは、緊急時のトラブルシューティングを行う際に、一時的に有効化するものです。
バックアップ運用のように、恒常的に有効化することはお奨めできません。


■ESXi上に作成したファイルはリブートによって消失する

これはESXiの仕様です。
作成したスクリプトファイルやcron関連ファイルの設定変更は、ESXiのリブートによって消失してしまいます。
そのため、ESXiホスト上で作成したスクリプトファイルの実行をcronでスケジューリングする、という運用はできません。


上記の理由から、前回のエントリーで紹介した方法で仮想マシンのバックアップを取得する運用は、本番環境ではお奨めできません。
検証環境や開発環境等で、ちょっとバックアップを取っておきたい、というような場合には有用だと思います。
本番環境では、素直にVADPとの連携が可能なバックアップ製品やvDRを使用したほうがよいですね。

ESXiの仮想マシンを手動バックアップするスクリプト①

仮想マシンのバックアップといえば、vDR(VMware Data Recovery)やVADP(vStorage APIs for Data Protection)を使う方法が一般的です。
しかしながら、仮想マシンの数が少ないような環境では、お手製のスクリプトで簡単にバックアップを取得したい場合もあると思います。
そのような場合に使用可能なコマンドと、バックアップ/リストアの手順について紹介します。

※なお、この手順はVMware社のサポートや完全な動作を保証するものではありませんので、その点はご了承ください。

今回は、仮想マシンを稼働させた状態でバックアップを取得することを想定しています。
そのため、できるだけ仮想マシンの静止点を保つために、バックアップ前にスナップショットを取得しています。

また、全てのコマンドはESXiのDCUIもしくはリモートSSH接続で実行しています。
いずれもデフォルトでは無効にされているので、以下のKBにしたがって有効化しておく必要があります。

VMware KB: Using Tech Support Mode in ESXi 4.1 and ESXi 5.x


では、実際の手順です。

①バックアップを取得する仮想マシンのVMIDを確認します。

vim-cmd vmsvc/getallvms

上記のコマンドを実行すると、ESXiホスト上で動作している仮想マシンの一覧が表示されます。
その際に、「VMID」が表示されるので、バックアップ対象の仮想マシンのVMIDを見ます。
その他、仮想マシン名やゲストOSの種類、仮想マシンのHWバージョンも表示されます。

②構成ファイル群をバックアップします。

cp -p /vmfs/volumes/datastore/Win2k3/Win2k3.vmx /vmfs/volumes/datastore/test/Win2k3.vmx
cp -p /vmfs/volumes/datastore/Win2k3/Win2k3.vmsd /vmfs/volumes/datastore/test/Win2k3.vmsd
cp -p /vmfs/volumes/datastore/Win2k3/Win2k3.vmxf /vmfs/volumes/datastore/test/Win2k3.vmxf


「datastore」という名前のデータストアに保存されているvmx, vmsd, vmxfファイルを、別の場所にコピーしています。
(上記の例では、同一のデータストア内の別フォルダである「test」というフォルダにコピーしています。)

③仮想マシンのスナップショットを作成します。

vim-cmd vmsvc/snapshot.create 125 snap1

vmidが「125」の仮想マシンに対して、「snap1」という名前のスナップショットを作成しています。

④vmdkファイルをバックアップします

仮想ディスクのバックアップを取得しています。
バックアップファイルの容量をできるだけ小さくするために、「-d monosparse」を指定しています。

vmkfstools -i /vmfs/volumes/datastore/Win2k3/Win2k3.vmdk -d monosparse /vmfs/volumes/datastore/test/Win2k3.vmdk

⑤スナップショッを削除します。

vim-cmd vmsvc/snapshot.removeall 125


以上で、バックアップは完了です。

monosparseで作成したバックアップは、そのままではリストアを行うことができません。
そのため、リストア時には一旦別の形式に変換した後に、リストアを行う必要があります。
リストアの手順は以下のとおりです。リストア用に「test2」というフォルダを作成しています。


①構成ファイル群をコピーし、vmdkファイルを別形式に変換します。(以下の例ではthin形式に変換しています。)

vmkfstools -i /vmfs/volumes/datastore/test/Win2k3.vmdk -d thin /vmfs/volumes/datastore/test2/Win2k3.vmdk
cp -p /vmfs/volumes/datastore/test/Win2k3.vmx /vmfs/volumes/datastore/test2/
cp -p /vmfs/volumes/datastore/test/Win2k3.vmsd /vmfs/volumes/datastore/test2/
cp -p /vmfs/volumes/datastore/test/Win2k3.vmxf /vmfs/volumes/datastore/test2/

②vSphere Client上でデータストアブラウザを開き、vmxファイルからインベントリに再登録します。


以上で、バックアップ/リストアは完了です。
基本的にこの手順によるバックアップは、検証環境等で使用し、本番環境で使用することはお奨めできません。
その理由については、次回のエントリーで述べたいと思います。

vCenterの仮想マシンインベントリをいじるPowerCLIコマンド

vCenterでインベントリに表示されている仮想マシンを削除したり、データストア上のvmxファイルから仮想マシンを特定のホストのインベントリに登録したりするコマンドです。

コマンドの実行前に、Connect-VIServerコマンドでvCenter Serverに接続しておきましょう。

・vCenter Serverから特定の仮想マシンをインベントリから削除する

  Remove-VM -VM "WinVM" -Confirm:$false

  上記の例では、「WinVM」という仮想マシンを強制的にインベントリから削除しています。
  インベントリから削除しているだけで、データストア上にファイルは残ります。


・データストア上のvmxファイルからvCenterのインベントリに登録する

  New-VM -VMFilePath "[datastore]WinVM/WinVM.vmx" -VMHost "172.16.10.250"
  
上記の例では、「datastore」という名前のデータストアにある「WinVM」フォルダに格納されている「WinVM.vmx」というvmxファイルから、「172.16.10.250」のIPアドレスを持つESXホストのインベントリに仮想マシンを登録しています。

なお、-VMFilePathの後に続く値は大文字と小文字を識別するので注意が必要です。

(おまけ)
ホストがvCenter Serverの管理下にある場合、仮想マシンの削除や登録はvCenter Server経由で行うことが推奨されています。
詳細は、以下のKBに記載されています。

VMware KB: Registering or adding a virtual machine to the inventory on vCenter Server or on an ESX/ESXi host

仮想環境におけるWindows Server Failover Clusteringのサポート②

前回のエントリーでは、Microsoft社のWSFCに対する基本的なサポートスタンスについて書きました。

仮想環境におけるWindows Server Failover Clusteringのサポート|IAサーバーの仮想化メモ

エントリーの中で、仮想化環境でWSFCを構成する場合は「仮想化製品がMicrosoft社の認定を得ていること」が必要である点について述べました。

では、仮想以下製品がMicrosoft社の認定を得ているかどうかはどこで確認すればいいのでしょうか。

この点については、以下のサイトで確認できるようになっています。

Windows Server Catalog

この認定プログラムは、SVVPと呼ばれています。
「Windows Server 2008」と「Windows Server 2008 R2」について、認定されている仮想化製品がリスト化されています。
これを見ると、Windows Server 2008については、認定されている仮想化製品が非常に少ない点が気になります。
これに対して、Windows Server 2008 R2については、仮想化製品がかなり拡充されています。

ただし、FAQには以下の記載があり、Windows Server 2012でSVVPの認定を受けていれば、過去のWindowsバージョンについても同様に認定されたとみなされるようです。

Products that have passed the SVVP requirements for Windows Server 2012 are considered supported on Windows Server 2008 R2 Windows Server 2008 and Windows Server 2003 SP2 and later Service Packs, both x86 and x64.

おそらく、Windows Server 2012のリリースが間もなくなので、このような表記になっているのでしょうが、
とにかく最新のWindows Serverのバージョンで認定されていれば、過去のバージョンについても同様に認定されると考えてよさそうです。
そう考えると、Windows Server 2008とWindows Server 2008 R2で、掲載されている仮想化製品の数が大きく異なっている点は気にしなくてよいでしょう。

主要な仮想化製品についてはすでに認定を得られていますが、今後新しく出る(かもしれない)仮想化製品やWindows Server 2012の認定状況については、まめにチェックしておきたいところです。

仮想環境におけるWindows Server Failover Clusteringのサポート

Windows Server Failover Clustering(WSFC)は、2台以上のWindowsサーバーでクラスターを構成するためのソリューションです。
「MSCS」と書いた方が馴染みのある人が多いかもしれません。

最近では、VMwareやHyper-Vなどで動作している仮想マシン同士で、WSFCを構成できるようになっています。
しかしながら、どのような構成でもサポートされるわけではないという点に注意が必要です。

そこで、まずはMicrosoft社の公開情報をもとに、WSFCに対するMicrosoft社のサポートスタンスについて調べてみました。

まずは、以下のKBです。

Windows Server 2008 フェールオーバー クラスタに関するマイクロソフト サポート ポリシー

このKBには、以下のように記載されています。

Windows Server 2008 フェールオーバー クラスタ ソリューションが Microsoft Customer Support Services (CSS) によって正式にサポート対象ソリューションと見なされるためには、次の条件を満たしている必要があります。

■すべてのハードウェア コンポーネントおよびソフトウェア コンポーネントが認定を受け、“Certified for Windows Server 2008” ロゴを取得している。
■完全に構成されたソリューションが、フェールオーバー クラスタの管理スナップインの検証テストに合格している。


すなわち、WSFCを構成するサーバー製品やストレージ製品は、Windowsの稼働をサポートしていることが前提です。
この点については、それほど問題にならないでしょう。各ハードウェアベンダーのサポートスタンスに従えばよいと思います。
ハードウェアベンダーによっては、単にWindowsの稼働可否だけではなく、WSFCのサポート有無についても定義している場合があります。
特に、ストレージ製品について、このようなケースが多いようです。

また、WSFCを構成する際には、ハードウェア構成や設定が要件を満たしているかどうかを確認できる検証ウィザードを実行することができます。
WSFCの構成前に、このウィザードによって要件が満たされていることを確認する必要があります。
実際やってみると分かりますが、ディスクやネットワーク構成に至るまで、結構細かくチェックされます。

続いて、本題である「仮想化環境でWSFCを構成する場合」のサポートについてです。
この点については、以下に記述がありました。

Server Virtualization Validation Program FAQ

上記のFAQの「Does the SVVP cover all Windows Sever roles?」の項目には、以下のような文言が記載されています。

Windows Server 2008 and later Failover Clustering is supported by Microsoft on validated virtualization products, contingent on meeting the requirements specified in Microsoft KB article 943984 regarding Cluster support, see http://support.microsoft.com/kb/943984.


すなわち、以下を満たしていれば、基本的にサポートされることになります。

■仮想化製品がMicrosoft社の認定を得られていること
■KB943984の要件を満たしていること

KBについては、前述のとおりです。
「仮想化製品がMicrosoft社の認定を得られていること」という点については、次回以降のエントリーで各仮想化製品について述べたいと思います。