VMware Tools
一、简介
VMware Tools 是一组虚拟化实用程序,可增强 VMware 虚拟机的性能和用户体验。
VMware Tools 服务可执行以下任务:
将消息从主机传递到客户机操作系统。
为自定义作为 vCenter Server 及其他 VMware 产品的一部分的客户机操作系统提供支持。
为使用 VMware VIX API 创建的受客户机操作系统约束的调用提供支持,在 Mac OS X 客户机操作系统中除外。
运行脚本以帮助自动执行客户机操作系统操作。(如使用虚拟机自定义规范时,可调用Windows sysprep、配置操作系统网络等)当虚拟机的电源状况更改时,脚本将运行。
使客户机操作系统中的时间与主机上的时间同步。
在 Windows 客户机操作系统中,允许指针在客户机和 vSphere Web Client 之间自由移动。
在运行 Xorg 1.8 及更高版本的 Linux 客户机操作系统中,该功能作为一项标准功能。
在 Windows 和 Mac OS X 客户机操作系统中,如果以全屏模式运行,则将客户机的屏幕显示分辨率调整为与 vSphere Web Client 的屏幕分辨率相同。如果以窗口模式运行,则调整客户机的屏幕分辨率,使其适合客户端或主机上的窗口大小。
在 Windows 和 Linux 客户机操作系统中,帮助创建由某些备份应用程序使用的静默快照。
在 Windows、Linux、Solaris 和 FreeBSD 客户机操作系统中,在关机或重新启动客户机操作系统时运行虚拟机中的自定义启动脚本。
这是其中一个进程,向 VMware 产品发送检测信号,以指示客户机操作系统正在运行。当虚拟机在 ESXi 或 vCenter Server 下运行时,管理界面中将显示此检测信号的计量器。
为在 Windows 和 Linux 中使用 VMware VIX API 创建的
二、常用内置命令
1、vmware-toolbox-cmd
这是一个多功能命令,可以用于执行许多 VMware Tools 相关的任务。
获取版本信息:
vmware-toolbox-cmd -v
获取主机时间并同步:
vmware-toolbox-cmd timesync status vmware-toolbox-cmd timesync enable vmware-toolbox-cmd timesync disable
磁盘空间信息:
vmware-toolbox-cmd disk list vmware-toolbox-cmd disk shrink <path>
网络信息:
vmware-toolbox-cmd stat raw text sessionid
2、vmware-hgfsclient
用于列出共享文件夹。
vmware-hgfsclient
3、vmware-user
提供图形用户界面的集成功能,例如剪贴板共享、自动调整分辨率等。
bash
复制代码
vmware-user
4、vmware-config-tools.pl
这是一个配置脚本,用于在 Linux 系统上安装和配置 VMware Tools。
运行配置脚本:
sudo vmware-config-tools.pl
5、vmtoolsd
VMware Tools 守护进程,用于管理虚拟机的状态和功能。
启动 VMware Tools 守护进程:
sudo /etc/init.d/vmware-tools start
停止 VMware Tools 守护进程:
sudo /etc/init.d/vmware-tools stop
重启 VMware Tools 守护进程:
sudo /etc/init.d/vmware-tools restart
三、应用
1、ESXI VM传递变量到 kickstart的 post 脚本
使用 govc
创建虚拟机时
govc vm.create -m 2048 -c 2 -g "rhel7_64Guest" -disk 20G -net "VM Network" -iso "path/to/iso" your-vm-name
使用 govc vm.change
命令设置虚拟机的自定义属性。例如,设置 guestinfo.vmname
:
govc vm.change -vm your-vm-name -e "guestinfo.vmname=your-vm-name"
在 Kickstart 脚本中获取自定义属性
在虚拟机的 Kickstart 安装过程中,可以通过 vmtoolsd
命令获取 guestinfo.hostname
属性。
%post
# 获取 guestinfo.hostname 属性
VMNAME=$(vmtoolsd --cmd "info-get guestinfo.vmname")
echo "VM Name: $VMNAME"
%end