如何检查 RedHat Linux 7.2 中是否配置了 vMotion?

如何检查 RedHat Linux 7.2 中是否配置了 vMotion?

我们有几台 RedHat Linux 机器

我们不确定 vMotion 是否已配置。

是否可以从 RedHat 操作系统本身识别是否配置了 vmotion vMotion?

答案1

以下是众多选择中的 2 个:

通过脚本。

  1. 将上述脚本保存在将与虚拟机共享虚拟机管理程序主机名的所有 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
    
  2. 设置一个 cron 作业,以便脚本在每个 ESXi 主机上每分钟执行一次。

    0 * * * * /vmfs/volume/shared-storage/setGuestInfo.sh 
    
  3. 现在在虚拟机上,保存上述脚本以获取变量的值hypervisor.hostnamegetGuestInfo.sh)。

    vmtoolsd --cmd  "info-get guestinfo.hypervisor.hostname" 
    
  4. 设置一个 cron 作业,这样您每分钟都会获得主机信息。

    0 * * * * getGuestInfo.sh >> /tmp/vmotion.txt
    

    输出将会像这样:

    Based on `/tmp/vmotion.txt` 
    
    Esx1
    
    Esx2
    
    Esx2
    
    Esx1
    
    Esx1
    
    Esx1
    
    Esx3
    
  5. /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
    
  6. 将其设置为 cron 作业。

    0 * * * * checkVmotion.sh 
    

现在您可以随意使用输出。

通过 vCenter API

  1. 确保已安装 Python。
  2. 安装 ”帕金森病“SDK,因为它方便 API 调用。

    pip install --upgrade pyvmomi
    
  3. 获取您的 VM UUID。

    dmidecode -t system | grep UUID
    
  4. 获取您的 VM 主 IP。

  5. 用这个样本并对其进行自定义(删除参数,设置主机密码端口 uuid ip 的常量) - 您应该在 vCenter Red 上拥有管理员访问权限。

  6. 设置一个 cron 作业,这样您每分钟都会获得主机信息。

    0 * * * * python getGuestInfo.py >> /tmp/vmotion.txt
    
  7. 重复第一种方法中的5、6步骤。

希望它能有所帮助。

相关内容