虚拟机创建命令是现代云计算和数据中心管理中的核心操作,它通过命令行接口(CLI)实现了对虚拟机生命周期的精细化管理,相较于图形化界面,命令行操作具有更高的效率、更强的可重复性以及更好的自动化适配能力,尤其适用于大规模部署和运维场景,本文将围绕主流虚拟化平台(如 VMware vSphere、KVM、Hyper-V)的虚拟机创建命令展开详细说明,涵盖命令结构、参数解析、实例演示及最佳实践,帮助读者系统掌握这一关键技术。

VMware vSphere 平台的虚拟机创建命令
VMware vSphere 是企业级虚拟化的事实标准,其命令行工具 vSphere CLI(基于 ESXi Shell)或 PowerCLI(基于 PowerShell)提供了强大的虚拟机创建能力,以 PowerCLI 为例,New-VM 命令是创建虚拟机的核心指令,其语法结构灵活,支持丰富的参数配置。
基本命令结构
New-VM -Name <虚拟机名称> -VMHost <主机名> -Datastore <存储名称> -DiskGB <磁盘大小> -MemoryGB <内存大小> -GuestID <客户操作系统ID> -Version <虚拟硬件版本>
关键参数解析
- -Name:指定虚拟机的唯一标识名称,需符合 vCenter 的命名规范。
- -VMHost:指定目标 ESXi 主机,可通过
Get-VMHost命令获取主机列表。 - -Datastore:指定虚拟机存储位置,支持 NFS、SAN 等存储类型。
- -DiskGB:设置虚拟磁盘容量,单位为 GB,可多次使用创建多块磁盘。
- -GuestID:定义客户操作系统类型,如
windowsServer2019-64、ubuntu64Guest等。 - -Version:指定虚拟硬件版本,影响虚拟机可兼容的功能特性(如最高支持 vSphere 7.0 的版本为
vmx-19)。
实例演示
以下命令将创建一台名为 “Web-VM01” 的 Windows Server 2019 虚拟机,分配 4GB 内存、50GB 磁盘,并部署在 “esxi-01.host.com” 主机的 “datastore-01” 存储上:
New-VM -Name "Web-VM01" -VMHost "esxi-01.host.com" -Datastore "datastore-01" -DiskGB 50 -MemoryGB 4 -GuestID "windowsServer2019-64" -Version "vmx-17" -NetworkName "VM Network"
进阶配置
通过附加参数可实现更复杂的配置,如:
- -NumCPU:指定 CPU 核心数(如
-NumCPU 2)。 - -CD:添加虚拟光驱(如
-CD "path/to/iso.iso")。 - -Floppy:添加软驱设备。
- -ResourcePool:指定资源池,实现资源分配隔离。
KVM(Kernel-based Virtual Machine)平台的虚拟机创建命令
KVM 是 Linux 原生的虚拟化解决方案,通过 virt-install 命令可实现虚拟机的快速创建与部署,该命令支持文本和图形界面,兼容 libvirt 管理工具,适用于 CentOS、Ubuntu 等 Linux 发行版。
基本命令结构
virt-install --name <虚拟机名称> --ram <内存大小(MB)> --vcpus <CPU核心数> --disk <存储路径,size=磁盘大小> --os-variant <操作系统类型> --network <网络配置> --graphics <图形类型> --cdrom <镜像路径>
关键参数解析
- –name:虚拟机名称,需在 libvirt 中唯一。
- –ram:内存大小,单位为 MB(如
--ram 4096表示 4GB)。 - –vcpus:虚拟 CPU 核心数(如
--vcpus 2)。 - –disk:磁盘配置,支持
path=(路径)、size=(大小,GB)、format=(格式,如 qcow2、raw)。 - –os-variant:操作系统类型,如
ubuntu20.04、win10等,影响驱动优化。 - –network:网络配置,如
--network network=default使用默认网络。 - –graphics:图形界面类型,可选
spice、vnc或none(无界面)。 - –cdrom:安装镜像路径,如
--cdrom /path/to/ubuntu.iso。
实例演示
以下命令创建一台名为 “Ubuntu-VM” 的虚拟机,分配 2GB 内存、1 个 CPU、20GB qcow2 磁盘,并通过 VNC 图形安装:

virt-install --name "Ubuntu-VM" --ram 2048 --vcpus 1 --disk path=/var/lib/libvirt/images/ubuntu.qcow2,size=20,format=qcow2 --os-variant ubuntu20.04 --network network=default --graphics vnc,port=5901 --cdrom /home/user/ubuntu-20.04.3-live-server-amd64.iso
进阶配置
- –import:通过此参数可导入已存在的虚拟机磁盘,无需安装镜像。
- –cpu:配置 CPU 模式,如
--cpu host-model使用主机 CPU 模型以提升性能。 - –autostart:设置虚拟机开机自启(如
--autostart yes)。
Hyper-V 平台的虚拟机创建命令
Hyper-V 是 Windows Server 自带的虚拟化平台,通过 PowerShell 的 New-VM 命令可实现虚拟机的创建与管理,其命令结构与 VMware PowerCLI 类似,但参数和功能略有差异。
基本命令结构
New-VM -Name <虚拟机名称> -MemoryStartupBytes <内存大小> -BootDevice <启动设备> -SwitchName <虚拟交换机名称> -Generation <版本> -Path <虚拟机路径> -VHDPath <磁盘路径> -VHDSizeBytes <磁盘大小>
关键参数解析
- -Name:虚拟机名称,需在 Hyper-V 管理器中唯一。
- -MemoryStartupBytes:启动内存大小,单位为字节(如
4GB写为4GB)。 - -BootDevice:启动设备,可选
VHD、CD、Network。 - -SwitchName:虚拟交换机名称,需提前通过
New-VMSwitch创建。 - -Generation:虚拟机版本,
Generation 1(传统 BIOS)或Generation 2(UEFI)。 - -Path:虚拟机配置文件存储路径。
- -VHDPath:虚拟磁盘路径,支持 VHDX 或 VHD 格式。
- -VHDSizeBytes:虚拟磁盘大小,单位为字节(如
50GB写为50GB)。
实例演示
以下命令创建一台 Generation 2 的 Windows Server 2019 虚拟机,分配 4GB 内存、50GB VHDX 磁盘,并连接到 “External-Switch” 虚拟交换机:
New-VM -Name "Win2019-VM" -MemoryStartupBytes 4GB -BootDevice VHD -SwitchName "External-Switch" -Generation 2 -Path "C:\VM\Win2019-VM" -VHDPath "C:\VM\Win2019-VM\Win2019-VM.vhdx" -VHDSizeBytes 50GB
进阶配置
- -ProcessorCount:指定 CPU 核心数(如
-ProcessorCount 2)。 - -CheckpointType:设置检查点类型,如
Disabled(禁用)、Standard(标准)。 - -StartAction:启动行为,如
Nothing(不自动启动)、StartIfRunning(如果运行则启动)。
虚拟机创建命令的最佳实践
-
参数标准化:通过变量或配置文件管理常用参数(如主机名、存储路径),提升命令可读性和复用性。
# KVM 示例:使用变量 VM_NAME="CentOS-VM" RAM=4096 DISK_SIZE=30 virt-install --name "$VM_NAME" --ram "$RAM" --disk size="$DISK_SIZE" ...
-
自动化脚本集成:将创建命令嵌入 Ansible、Terraform 等自动化工具,实现批量部署,Ansible 的
community.vmware.vmware_guest模块可直接调用 vSphere API 创建虚拟机。 -
错误处理与日志记录:通过命令的
-ErrorAction(PowerShell)或2>&1(Linux)捕获错误输出,并将日志保存至文件,便于排查问题。
-
资源限制与优化:根据业务需求合理分配 CPU、内存资源,避免资源争抢,在 VMware 中可使用
-Shares参数设置资源优先级。 -
安全配置:禁用不必要的虚拟设备(如软驱),设置强密码,并定期更新虚拟机补丁。
主流虚拟机创建命令参数对比表
| 参数 | VMware PowerCLI | KVM virt-install | Hyper-V PowerShell |
|---|---|---|---|
| 名称 | -Name | –name | -Name |
| 内存 | -MemoryGB | –ram | -MemoryStartupBytes |
| CPU 核心数 | -NumCPU | –vcpus | -ProcessorCount |
| 磁盘路径 | -Datastore | –disk path= | -VHDPath |
| 磁盘大小 | -DiskGB | –disk size= | -VHDSizeBytes |
| 网络配置 | -NetworkName | –network | -SwitchName |
| 安装镜像 | -CD | –cdrom | -BootDevice CD |
| 客户操作系统 | -GuestID | –os-variant | -Generation |
| 图形界面 | 无(需单独配置) | –graphics | 无(需通过 Hyper-V 管理器配置) |
可以看出,不同虚拟化平台的虚拟机创建命令虽存在语法差异,但核心逻辑高度一致,均围绕资源分配、系统配置和部署方式展开,掌握这些命令不仅能提升运维效率,更是构建自动化运维体系的基础技能,在实际应用中,需结合具体业务场景选择合适的平台和参数配置,以实现虚拟资源的高效管理与灵活扩展。

















