VM の仮想 CD/DVD ドライブからメディアを切断するときに、
Linux ゲストでマウントしたままだと、質問メッセージがでて VM が停止してしまいます。
しかも、ゲスト OS でアンマウントしている場合でも、
なぜか同様に VM が停止してしまうことがあります。
そこで PowerCLI を利用して、VM を起動したままの状態で メディアを取り出してみます。
メディア切断時の VM の状態。
仮想 CD/DVD ドライブからメディアを取り出そうとすると、下記のような状態になります。
この状態では、下記のように質問に応答するまで VM が停止してしまいます。
この状態を回避するには、下記の KB のように対象 VM にパラメータを追加します。
マウントされた CDROM が切断された後、Linux 仮想マシンが応答しない (2144053)
https://kb.vmware.com/kb/2144053?lang=ja
PowerCLI でのパラメータ追加~メディア切断。
下記のような PowerCLI スクリプトを作成してみました。
- KB にあるパラメータを VM に追加。
- VM の 仮想 CD/DVD ドライブからメディア切断。
- パラメータを VM から削除。
$vm_name = $args[0]
Get-VM $vm_name | % {
$vm = $_
# Add AdvancedSetting
$vm | New-AdvancedSetting -Name cdrom.showIsoLockWarning -Value "FALSE" -Confirm:$false |
ft -AutoSize Entity,Name,Value
$vm | New-AdvancedSetting -Name msg.autoanswer -Value "TRUE" -Confirm:$false |
ft -AutoSize Entity,Name,Value
# Eject
$cd_drive = $vm | Get-CDDrive |
Set-CDDrive -NoMedia -Connected:$false -Confirm:$false
$cd_drive | Select-Object `
@{N="VM";E={$_.Parent.Name}},
@{N="StartConnected";E={$_.ConnectionState.StartConnected}},
@{N="Connected";E={$_.ConnectionState.Connected}},
IsoPath
# Remove AdvancedSetting
$vm | Get-AdvancedSetting -Name cdrom.showIsoLockWarning | Remove-AdvancedSetting -Confirm:$false
$vm | Get-AdvancedSetting -Name msg.autoanswer | Remove-AdvancedSetting -Confirm:$false
}
Connect-VIServerで vCenter に接続したうえで、
下記のようなコマンドラインで実行します。
PowerCLI> .\eject_cd_no-msg.ps1 <VM の名前>
下記のような感じで、仮想 CD/DVD ドライブからメディアを取り出すことができます。
メディアを取り出すことで、最後の IsoPath が空欄になっています。
PowerCLI> .\eject_cd_no-msg.ps1 lab-ldap02
Entity Name Value
------ ---- -----
lab-ldap02 cdrom.showIsoLockWarning FALSE
Entity Name Value
------ ---- -----
lab-ldap02 msg.autoanswer TRUE
VM StartConnected Connected IsoPath
-- -------------- --------- -------
lab-ldap02 False False
PowerCLI>
ちなみに今回の環境は vCenter 6.5 U1 / ESXi 6.5 U1 / PowerCLI 10.1 です。
以上、PowerCLI で 仮想 CD/DVD ドライブからメディア切断してみる話でした。