我们有几台 RedHat Linux 机器
我们不确定 vMotion 是否已配置。
是否可以从 RedHat 操作系统本身识别是否配置了 vmotion vMotion?
答案1
以下是众多选择中的 2 个:
通过脚本。
将上述脚本保存在将与虚拟机共享虚拟机管理程序主机名的所有 ESXi 主机上(
setGuestInfo.sh
)。#!/bin/bash IFS=$'\n' for VM in $(vmware-cmd -l); do VM_STATE=$(vmware-cmd "${VM}" getstate | awk -F "= " '{print $2}') if [ "${VM_STATE}" == "on" ]; then echo "Setting info for ${VM}" vmware-cmd "${VM}" setguestinfo hypervisor.hostname "$(hostname)" fi done unset IFS
设置一个 cron 作业,以便脚本在每个 ESXi 主机上每分钟执行一次。
0 * * * * /vmfs/volume/shared-storage/setGuestInfo.sh
现在在虚拟机上,保存上述脚本以获取变量的值
hypervisor.hostname
(getGuestInfo.sh
)。vmtoolsd --cmd "info-get guestinfo.hypervisor.hostname"
设置一个 cron 作业,这样您每分钟都会获得主机信息。
0 * * * * getGuestInfo.sh >> /tmp/vmotion.txt
输出将会像这样:
Based on `/tmp/vmotion.txt` Esx1 Esx2 Esx2 Esx1 Esx1 Esx1 Esx3
/tmp/vmotion.txt
设置另一个脚本,该脚本将在先前的值发生改变时检测 vMotion (checkVmotion.sh
)#!/bin/bash last="$( tail -n 1 /tmp/vmotion.txt )" previous="$( tail -n 2 /tmp/vmotion.txt | head -1 )" if [ "$last" != "$previous" ] ; then echo Vmotion fi
将其设置为 cron 作业。
0 * * * * checkVmotion.sh
现在您可以随意使用输出。
通过 vCenter API
- 确保已安装 Python。
安装 ”帕金森病“SDK,因为它方便 API 调用。
pip install --upgrade pyvmomi
获取您的 VM UUID。
dmidecode -t system | grep UUID
获取您的 VM 主 IP。
用这个样本并对其进行自定义(删除参数,设置主机密码端口 uuid ip 的常量) - 您应该在 vCenter Red 上拥有管理员访问权限。
设置一个 cron 作业,这样您每分钟都会获得主机信息。
0 * * * * python getGuestInfo.py >> /tmp/vmotion.txt
重复第一种方法中的5、6步骤。
希望它能有所帮助。