我有一个VMware ESXi 6主机,上面运行着多个guest虚拟机。 有一个ISO文件的数据存储正在被一个或多个这些客户使用。 我通过ssh从Linux访问ESXi主机,所以PowerCLI不是一个选项。
问题1:如何从VMware CLI中找出哪些guest虚拟机已装载此ISO文件?
问题2:一旦我知道,我怎么能从这些guest虚拟机中卸载这个ISO文件,也是从VMware CLI中卸载的?
我期望它是vim-cmd vmsvc子命令,但我一直无法find它们。
通过SSH快速粗略的解决scheme是编写一个连接几个动作的小脚本:
vim-cmd vmsvc/getallvms|awk '{print $1}'|grep -o -E '[0-9]+' (列出所有虚拟机,只显示awk的第一列,过滤掉IP和文本并用grep空行) ash没有像bash这样的数组),并检查每个数字/ ID,如果在每个虚拟机的设备列表中find一个您select的ISO名称的事件: vim-cmd vmsvc/device.getdevices yourVmId|grep -o -A 12 -E 'yourImageName.iso' | grep -c 'connected = true' vim-cmd vmsvc/device.getdevices yourVmId|grep -o -A 12 -E 'yourImageName.iso' | grep -c 'connected = true' (列出所有设备,获取ISO文件周围的区域,检查ISO是否当前挂载/活动) vim-cmd vmsvc/device.getdevices yourVmId|grep -o -B 4 -E 'yourImageName.iso'|grep -o -E 'key = [0-9]+'|grep -o -E '[0-9]+' (双grep是必要的,因为缺less组选项-P ) vim-cmd vmsvc/device.connection yourVmId yourDeviceId disconnect连接断开设备。 (编辑:这似乎不完全正确,它做了一些事情,但不是我所期望的,当我有时间进一步调查时,我会更新) 我遇到的唯一问题是在执行最后一步时,消息“guest虚拟机锁住的CD驱动器”可能出现在VSphere客户机中,但也许可以一般禁用。
使用PowerCLI …
或者只是手动执行“几个”虚拟机。
或者在安装之后通过卸载来避免这种情况。