正冰 ( http://blog.is36.com/ ) :
近日我所管理的一台vmware esx 4.0服务器出了点状况,一开始是服务器的物理硬盘无响应引发黄色警告,我多次用VC连接esx服务器均已失败告终。我把esx的SSH服务打开,准备在shell下将esx的服务重新启动,但是担心出现esx上的所有VM都挂了,那么正在运行的业务将影响很大,因为没有做虚拟机对等HA,所以只能等夜里没有业务量的时候再停机维护。而等到了晚上当我再次登陆ssh发现系统在我输入root用户回车之后就停止了响应。因为VM都活着,为了不让esx强制重启导致VM出问题,我便登陆到所有的VM中进行关机操作,然后对esx进行强制关机并重启,最后逐个启动VM。
本次案例中VM不死的原因是VM的存储都是在EMC存储中的……
下面介绍一下如果可以登录到esx服务器中,在shell下可以对VM进行的操作。vmware提供了一个vmware-cmd的工具,位于/usr/bin/下,在任意目录直接执行即可。vmware-cmd是VMWARE管理虚拟机的工具,包括启动、停止、注册、快照、配置等。我们可以在VMware vSphere Client或其他第三方管理软件无法使用的时候管理我们的ESX或ESXi主机上的虚拟机设备。
[root@pcs zjsrueducn-web]# vmware-cmd
Invalid operation specified.
usage: vmware-cmd [options]
options:
-h, –help show this help message and exit
-v Verbose.
-q Quiet. Minimal output.
Connection Options:
-H <host> specifies an alternative host (if set, -U and -P must
also be set)
-O <port> specifies an alternative port
-U <username> specifies a user
-P <password> specifies a password
Server Operations:
/usr/bin/vmware-cmd -l
/usr/bin/vmware-cmd -s listvms
/usr/bin/vmware-cmd -s register <config_file_path>
/usr/bin/vmware-cmd -s unregister <config_file_path>
VM Operations:
/usr/bin/vmware-cmd <cfg> getstate
/usr/bin/vmware-cmd <cfg> start <powerOpMode=’soft’>
/usr/bin/vmware-cmd <cfg> stop <powerOpMode=’soft’>
/usr/bin/vmware-cmd <cfg> reset <powerOpMode=’soft’>
/usr/bin/vmware-cmd <cfg> suspend <powerOpMode=’soft’>
/usr/bin/vmware-cmd <cfg> getconfig <variable>
/usr/bin/vmware-cmd <cfg> setguestinfo <variable> <value>
/usr/bin/vmware-cmd <cfg> getguestinfo <variable>
/usr/bin/vmware-cmd <cfg> getproductinfo <product_info>
/usr/bin/vmware-cmd <cfg> connectdevice <device_name>
/usr/bin/vmware-cmd <cfg> disconnectdevice <device_name>
/usr/bin/vmware-cmd <cfg> getid
/usr/bin/vmware-cmd <cfg> getconfigfile
/usr/bin/vmware-cmd <cfg> getheartbeat
/usr/bin/vmware-cmd <cfg> getuptime
/usr/bin/vmware-cmd <cfg> gettoolslastactive
/usr/bin/vmware-cmd <cfg> hassnapshot
/usr/bin/vmware-cmd <cfg> createsnapshot <name> <description> <quiesce> <memory>
/usr/bin/vmware-cmd <cfg> revertsnapshot
/usr/bin/vmware-cmd <cfg> removesnapshots
/usr/bin/vmware-cmd <cfg> answer
Invalid operation specified.
下面介绍下主要的几个参数,其他自行测试。
vmware下的存储卷都是放在/vmfs/volumes/下,换言之,所有的虚拟机都是在这下面的。本例中约定一台red hat 5的虚拟机存储目录为/vmfs/volumes/cx4-240/rhel5-server/,rhel5-server.vmx是虚拟机的“配置文件”,配置信息都在里面,可以用编辑器打开。而我们对虚拟机的操作其实就是对配置文件的操作,配置文件如同一个“入口”。
约定:下方的xx代表rhel5-server.vmx
- vmware-cmd -l 显示注册的计算机
- vmware-cmd xx getstate 获得虚拟机的状态
- vmware-cmd xx start 启动或从暂停状态恢复
- vmware-cmd xx suspend 暂停虚拟机
- vmware-cmd xx reset trysoft 重置虚拟机
- vmware-cmd xx stop trysoft 关闭虚拟机
- vmware-cmd xx hassnapshot 查询虚拟机快照
- vmware-cmd xx creatsnapshot 创建虚拟机快照
- vmware-cmd xx revertsnapshot 恢复快照
- vmware-cmd -s register xx 注册虚拟机(添加到清单)
- vmware-cmd -s unregister xx 反注册虚拟机 (从清单中移除)
- vmware-cmd xx answer 回答提示
注意:在进行reset以及stop操作时候可选trysoft、soft以及hard方式,个人建议选择trysoft,这个可以先软性操作,如果不成功才会使用“暴力”操作,对保护VM是有好处的。
以上操作必须是在VM所在的ESX上进行,不然是无法成功执行的(除了将VM注册到当前ESX中)。因为执行权永远是在VM跑的宿主主机上的。
转载请注明:爱开源 » ESX命令提示符:vmware-cmd