虚拟系统命令是管理和操作虚拟化环境的核心工具,通过命令行界面(CLI)可以高效控制虚拟机(VM)、虚拟化平台及相关资源,不同虚拟化平台(如VMware、VirtualBox、KVM、Hyper-V等)的命令 syntax 和功能存在差异,但核心目标一致:实现虚拟机的生命周期管理、资源配置、网络配置及监控等操作,以下从常见虚拟化平台出发,详细解析典型命令及其应用场景。

在VMware ESXi环境中,esxcli是最常用的命令行工具,用于管理主机和虚拟机,通过esxcli vm process list
可列出所有运行中的虚拟机及其进程ID;esxcli storage nmp device list
则用于显示存储适配器及设备信息,对于虚拟机磁盘管理,vmkfstools -i /vmfs/volumes/datastore1/source.vmdk /vmfs/volumes/datastore2/target.vmdk -d thin
命令可将源磁盘精简置备克隆到目标位置,若需调整虚拟机硬件,如增加内存,可通过vim-cmd vmsvc/power.getstate VM_ID
确认虚拟机状态后,使用vim-cmd vmsvc/device.getdevices VM_ID
查看当前硬件配置,再通过vim-cmd vmsvc/device.setconfig VM_ID
修改配置文件(需谨慎操作,建议先克隆虚拟机)。
VirtualBox作为开源虚拟化工具,其命令行接口VBoxManage功能全面,创建虚拟机时,VBoxManage createvm --name "Ubuntu-VM" --ostype "Ubuntu_64" --register
可生成一个未安装系统的虚拟机配置文件;VBoxManage storagectl "Ubuntu-VM" --name "SATA Controller" --add sata --controller IntelAhci
则添加SATA存储控制器,挂载镜像文件常用命令为VBoxManage storageattach "Ubuntu-VM" --storagectl "SATA Controller" --port 0 --device 0 --type dvddrive --medium "/path/to/ubuntu.iso"
,网络配置方面,VBoxManage modifyvm "Ubuntu-VM" --nic1 bridged --bridgeadapter1 "en0"
可将虚拟网卡设置为桥接模式,通过物理网卡直接通信。
KVM作为Linux内核原生虚拟化方案,依赖libvirtd服务及virsh工具。virsh list --all
可查看所有虚拟机状态(running/shut off/paused);virsh start VM_NAME
启动虚拟机,virsh shutdown VM_NAME
正常关机,virsh destroy VM_NAME
强制关闭(可能导致数据丢失),虚拟机磁盘格式转换可通过qemu-img convert -f qcow2 -O raw source.qcow2 target.raw
实现,将qcow2格式转换为raw格式以提高性能,网络配置中,默认使用NAT模式,若需改为桥接模式,需修改虚拟机XML配置文件(virsh edit VM_NAME
),将<interface type='network'>
改为<interface type='bridge'>
并指定桥接设备(如br0)。
Hyper-V作为Windows平台内置虚拟化技术,其管理命令通过PowerShell执行。Get-VM
列出所有虚拟机;Start-VM -Name "Win10-VM"
启动虚拟机;Stop-VM -Name "Win10-VM"
-Force强制关闭,虚拟硬盘管理使用New-VHD -Path "C:\VMs\disk.vhdx" -SizeBytes 40GB -Dynamic
创建动态扩展虚拟硬盘;Add-VMHardDiskDrive -VMName "Win10-VM" -Path "C:\VMs\disk.vhdx"
为虚拟机添加硬盘,网络配置中,Get-VMNetworkAdapter -VMName "Win10-VM"
查看网卡信息,Set-VMNetworkAdapter -VMName "Win10-VM" -SwitchName "ExternalSwitch"
将虚拟机连接到外部虚拟交换机。

以下为部分虚拟化平台常用命令对比:
操作场景 | VMware ESXi | VirtualBox (VBoxManage) | KVM (virsh) | Hyper-V (PowerShell) |
---|---|---|---|---|
列出虚拟机 | vim-cmd vmsvc/getallvms |
VBoxManage list vms |
virsh list --all |
Get-VM |
启动虚拟机 | vim-cmd vmsvc/power.on VM_ID |
VBoxManage startvm "VM_NAME" --type headless |
virsh start VM_NAME |
Start-VM -Name "VM_NAME" |
关闭虚拟机 | vim-cmd vmsvc/power.shutdown VM_ID |
VBoxManage controlvm "VM_NAME" acpipowerbutton |
virsh shutdown VM_NAME |
Stop-VM -Name "VM_NAME" |
添加虚拟硬盘 | vim-cmd vmsvc/device.diskadd VM_ID /path/to/disk.vmdk |
VBoxManage storageattach "VM_NAME" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium /path/to/disk.vmdk |
virsh attach-disk VM_NAME /path/to/disk.vmdk vdb --persistent |
Add-VMHardDiskDrive -VMName "VM_NAME" -Path /path/to/disk.vhdx |
相关问答FAQs
Q1: 如何在虚拟机无法启动时通过命令行排查问题?
A: 首先检查虚拟机状态(如VMware的vim-cmd vmsvc/power.getstate VM_ID
),确认是否因资源不足或配置错误导致,其次查看日志文件(ESXi的/var/log/vmkernel.log
,VirtualBox的VBoxManage showvminfo "VM_NAME" --machinereadable | grep log
),定位错误信息(如磁盘损坏、网络冲突),若怀疑磁盘问题,可使用fsck
(Linux)或chkdsk
(Windows)命令修复,或通过qemu-img check /path/to/disk.qcow2
检查磁盘文件完整性。
Q2: 如何通过命令行实现虚拟机的快照管理?
A: VMware ESXi可通过vim-cmd vmsvc/snapshot.create VM_ID "快照名" "描述"
创建快照,vim-cmd vmsvc/snapshot.revert VM_ID 快照ID
恢复快照;VirtualBox使用VBoxManage snapshot "VM_NAME" take "快照名" --description "描述"
创建,VBoxManage snapshot "VM_NAME" restorecurrent
恢复到当前快照;KVM使用virsh snapshot-create-as VM_NAME "快照名" --description "描述"
创建,virsh snapshot-revert VM_NAME 快照名
恢复;Hyper-V则通过Checkpoint-VM -Name "VM_NAME" -SnapshotName "快照名"
创建,Restore-VMCheckpoint -VMName "VM_NAME" -CheckpointName "快照名"
恢复,注意:恢复快照前需关闭虚拟机或使用在线恢复功能(部分平台支持)。
