2023年1月28日土曜日

【PowerCLI】仮想マシンハードウェアをバージョンアップする方法

ESXiをバージョンアップした際などに、仮想マシンのサマリ画面にて「この仮想マシンに設定されたゲストは、現在実行中のゲストと一致しません」といった警告メッセージが表示される場合がある。

これは、バージョンアップ前のESXiでは対応していなかったOS種別が、新しいESXiの仮想マシンハードウェアで対応したことの影響となる。

特に仮想マシンの動作に影響を及ぼすものではないが、警告メッセージを消したい場合は、ハードウェアバージョンアップを行ったのち、仮想マシンのゲストOS設定を修正する必要がある。ただし、仮想マシンのハードウェアバージョンアップはVMware Host Clientでは行うことはできない。

そこで本記事では、PowerCLIを用いて仮想マシンハードウェアをバージョンアップをする方法を記載する。

環境

本環境を実施した環境は以下の通り。vCenter Serverは構築していないため、ESXiに対してPowerCLIからコマンド実行を行う。

  • ESXi : 7.0 Update 3 (20328353)
  • PowerCLI : 12.7.0 build 20091289
  • 作業対象仮想マシン名 : vyos
    • 仮想マシンハードウェア(前) : vmx-14
    • 仮想マシンハードウェア(後) : vmx-19

仮想マシンハードウェアのバージョンアップ手順

1. 仮想マシンを停止

本作業の前提として仮想マシンの停止が必要となるため、あらかじめ作業対象の仮想マシンを停止しておく。

2. バージョンアップ前確認

バージョンアップ前に仮想マシンハードウェアのバージョン確認を行う。HardwareVersionが仮想マシンハードウェアを表しており、バージョンアップ前はvmx-14であることがわかる。これはESXi 6.7が対応しているバージョンとなる。

PS> Get-VM vyos| fl *

Name                    : vyos
PowerState              : PoweredOff

~(中略)~

Version                 : v14
HardwareVersion         : vmx-14 ★
PersistentId            : 528c62f8-48d4-4ccc-0a7d-a05c02f07afa
GuestId                 : debian10_64Guest

~(以下略)~

2. バージョンアップ前スナップショット取得

バージョンアップ前に念のため仮想マシンのスナップショットを取得しておく。

PS> Get-VM vyos| New-Snapshot -Name "Before hardware version upgrade"

Name                 Description                    PowerState
----                 -----------                    ----------
Before hardware v...                                PoweredOff

3. 仮想マシンハードウェアをバージョンアップ

バージョンアップは以下コマンドで実行する。今回はESXi 7.0 Update 2以降で対応しているvmx-19にバージョンアップを行った。コマンドを実行すれば処理はすぐに完了する。

PS> (Get-VM vyos).ExtensionData.UpgradeVM('vmx-19')

なお、以前のPowerCLIではSet-VMコマンドレットでバージョンアップできたようだが、PowerCLI 12.7では以下の通り実行に失敗するので注意。

PS> Get-VM vyos| Set-VM -Version "v19" -Confirm:$false
Set-VM : パラメーター 'Version' をバインドできません。値 "v19" を型 "VMware.VimAutomation.ViCore.Types.V1.VM.VMVersion"
 に変換できません。エラー: "識別子名 v19 は有効な列挙子名に一致しません。次のいずれかの列挙子名を指定して再試行してくだ
さい:
Unknown, v4, v7, v8, v9, v10, v11, v12, v13, v14"
発生場所 行:1 文字:36
+ Get-VM vyos| Set-VM -Version "v19" -Confirm:$false
+                                    ~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-VM]、ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,VMware.VimAutomation.ViCore.Cmdlets.Commands.SetVM

4. バージョンアップ後確認

バージョンアップ後の仮想マシンの状態確認を行う。HardwareVersionvmx-19になっていれば問題ない。

PS> Get-VM vyos| fl *


警告: The 'Version' property of VirtualMachine type is deprecated. Use the 'HardwareVersion' property instead.
Name                    : vyos
PowerState              : PoweredOff

~(中略)~

Version                 : Unknown
HardwareVersion         : vmx-19 ★
PersistentId            : 528c62f8-48d4-4ccc-0a7d-a05c02f07afa
GuestId                 : debian10_64Guest

~(以下略)~

5. ゲストOS設定変更&仮想マシン起動

VMware Host Clientにログインし、[対象の仮想マシン]→[設定の編集]→[仮想マシン オプション]→[一般オプション]→[ゲストOSのバージョン]から、警告メッセージに表示されていたOSを選択する。なお、仮想マシンハードウェアのバージョンをバージョンアップしていない場合は、そもそも選択肢に新しいOSは表示されないため注意しよう。

その後、仮想マシンを起動することで、警告メッセージが消えるはずだ。

6. バージョンアップ後スナップショット削除

その後の仮想マシンが問題なく起動したようであれば、作業前のバックアップを削除する。

PS> Get-VM vyos| Get-Snapshot -Name "Before hardware version upgrade" | Remove-Snapshot -Confirm:$false

以上で、PowerCLIを用いて仮想マシンハードウェアをバージョンアップをする方法の説明は終了となる。

参考

0 件のコメント:

コメントを投稿

人気の投稿