このページの本文へ移動

PowerShell活用法! ~Hyper-Vのリソース管理~

~Hyper-V 移行・導入の実践~

かゆいところに手が届くPowerShell

Windows Server 2008には仮想化技術であるHyper-Vが実装され、一般的にOS標準のHyper-Vマネージャを利用して仮想マシンを管理します。

検証過程で、Hyper-Vマネージャが提供する情報だけでは解決できなかったトラブルにおいて、PowerShellの活用によって解決した事例を紹介します。

注 PowerShellとはWindows Server 2008に標準で実装されているオブジェクト指向のスクリプト言語です。Cmdlet(以降コマンドレット)と呼ばれるコマンド群が用意されており、直感的でわかりやすいスクリプト作成ができます。

Hyper-Vを利用した検証環境でのトラブル

仮想環境のディスクであるVHDファイルは、性能の観点から容量固定として利用することを推奨しています。一方、VHDファイルを容量可変として作成した場合、以下の利点があります。

  • 物理サーバのリソースを有効に活用し、仮想マシンが作成できる
  • 容量固定の場合にくらべて短時間で仮想マシンが作成できる

検証環境では上記の利点から、仮想マシンのVHDファイルを容量可変とし、図1のように複数の作業者がディスク容量を意識することなく仮想マシンを作成できようにしました。

しかし、検証を終えた仮想マシンの削除管理が不十分だったため、残ったVHDファイルがディスク容量を圧迫し、ディスクの空き容量が枯渇してしまいました。

その結果、容量の拡張を試みた仮想マシンが一時停止し、その後に拡張しようとした仮想マシンが連鎖的に一時停止してしまう問題が発生しました。


図1 仮想マシン作成イメージ


この問題を回避するには、ディスクの空き容量を確保する必要があります。その1つの手段として利用されていない仮想マシンを整理、削除することを考えました。では、削除すべき仮想マシンをどう判断するか?

今回は各仮想マシンの最終利用日時をベースに削除候補を挙げることにしました。

トラブル解決へのアプローチ

管理ツールHyper-Vマネージャの利用

主に管理者はHyper-Vマネージャを利用して仮想マシンを管理します。(図2.参照)

Hyper-Vマネージャでは中央ペインにある仮想マシンの一覧で仮想マシンの状態(実行中・一時停止・オフ・保存完了)を確認できますが、仮想マシンの最終利用日時を知ることはできません。


図2 Hyper-Vマネージャ

PowerShellの利用

一方、PowerShellでは、Hyper-Vマネージャで取得できなかった仮想マシンの各種情報を、コマンドレットにより引き出せることが調査の結果わかりました。


図3 スクリプト実行時のイメージ

PowerShellを利用し、最終利用日時の他、作成者情報も取得するスクリプトを作成しました。

スクリプト例は以下の機能を持っています。

  • 物理サーバのディスクの空き容量が指定値以下になったら管理者にメール送信する
  • 物理サーバのディスク状況と各仮想マシンの作成者、最終利用日時をメール本文に表示する

このスクリプトを定期的に実行(タスクスケジューラに登録)することで物理サーバのディスクの異常をメールで受信できます。

そして、このメールを受信すれば、長期間利用されていない仮想マシンを削除候補とし、管理者は削除可否を判断することができます。

まとめ

Hyper-Vマネージャではできない作業をPowerShellで簡単に補完、実現できます。今回作成したスクリプトでは、ファイル情報の取得やソートといった一連の処理をGet-Itemproperty、Sort-Objectというコマンドレット1行で簡単に実装できました。また他のスクリプト言語と同様、PowerShellも変数の型が柔軟に変更されるので、型を意識せず直感的に利用することもできました。

今回は記述していませんが、マイクロソフトのSystem Center Virtual Machine Manager 2008(以降、SCVMM2008)を利用して、SCVMM2008の専用のコマンドレットを組み合わせることにより幅広いニーズにあった仮想マシン関連のPowerShellスクリプト作成が期待できます。

PCサーバ PRIMERGYに関する資料請求・お見積もり・ご相談

Webでのお問い合わせ

入力フォーム

当社はセキュリティ保護の観点からSSL技術を使用しております。

お電話でのお問い合わせ

0120-933-200 富士通コンタクトライン(総合窓口)

受付時間 9時~17時30分
(土曜・日曜・祝日・当社指定の休業日を除く)