虚拟机创建命令并没有统一的万能版本,关键在于你使用的虚拟化平台,但常用参数都围绕CPU、内存、磁盘、网络这四大核心资源展开,具体操作步骤则因工具而异。
如果你在Linux服务器上工作,大概率会碰到virt-install;如果你用的是Windows Server,那么PowerShell里的New-VM才是主角;至于开发测试场景,Vagrant这类命令则更轻量,下面我按场景拆开讲,每一步都给你能直接复制的命令。
虚拟机创建命令有哪些常用参数:以Linux平台KVM创建虚拟机命令virt-install为例
KVM是Linux内核自带的虚拟化模块,行业共识认为它目前是云服务器底层用得最广的技术之一,在命令行创建KVM虚拟机,最常用的工具就是virt-install,它的参数虽然多,但核心就几类,掌握了这些,虚拟机创建命令的常用参数你就懂了大半。
CPU与内存参数:决定这台虚拟机的基础算力
--vcpus:直接指定虚拟机的CPU核心数,比如--vcpus 4就是分配4个vCPU,你可以写成--vcpus 4,maxvcpus=8,这样虚拟机运行中能热添加CPU。--memory:单位是KiB(千字节),日常用--memory 4096表示4GB内存,需要热插拔内存时,可以写成--memory 4096,maxmemory=8192。
磁盘与存储参数:决定系统装在哪里
--disk path=/data/vms/centos7.qcow2,size=50:path是磁盘文件的完整路径,size单位是GB,表示创建一块50GB的qcow2格式虚拟磁盘,qcow2是KVM默认格式,支持写时复制和快照。- 更进阶一点的写法是
--disk path=/data/vms/centos7-1.qcow2,size=50,format=qcow2,bus=virtio,其中bus=virtio是磁盘总线类型,半虚拟化性能好,如果不加,默认走IDE,速度差距挺明显。
网络参数:决定虚拟机怎么联网
--network network=default:这是最常用的,连接libvirt默认的NAT网络,虚拟机可以访问外网,但外部无法主动访问虚拟机。--network bridge=br0:桥接模式,虚拟机直接暴露在物理局域网中,有自己的独立IP,生产环境对外提供服务一般用这个。--network network=default,model=virtio:model指定网卡类型,virtio是半虚拟化网卡,性能远超默认的e1000。
其他必带参数:名字、内存、操作系统
--name是必填项,给虚拟机起个唯一的名字;--os-variant用来告诉virt-install你装的是什么系统,比如--os-variant centos7.0,这样它会自动优化CPU和驱动模型,不知道怎么写的,用osinfo-query os命令查询支持列表,还有安装源--cdrom或者--location,一个是本地ISO镜像路径,一个是网络安装源地址。
KVM创建虚拟机命令的完整操作步骤
理论说了一堆,直接看命令,下面我用一个实际例子演示完整流程,从检查环境到虚拟机开机。
- 检查CPU是否支持虚拟化,输入
lscpu查看,如果输出里有vmx(Intel)或svm(AMD)标识,说明硬件支持。 - 确认KVM相关软件包装齐了,需要
qemu-kvm、libvirt-daemon、virt-install,用yum install -y qemu-kvm libvirt-daemon virt-install安装(Ubuntu下是apt)。 - 启动libvirt服务并设置开机自启,执行
systemctl start libvirtd和systemctl enable libvirtd。 - 准备一个存放磁盘镜像的目录,比如
mkdir -p /data/vms,这个路径最好有足够磁盘空间,用df -h提前看一下。 - 执行核心的虚拟机创建命令,下面是装一台CentOS 7.9虚拟机的完整命令:
virt-install --name centos7-test --memory 4096 --vcpus 4 --disk path=/data/vms/centos7-test.qcow2,size=50,format=qcow2,bus=virtio --network network=default,model=virtio --os-variant centos7.0 --cdrom /data/iso/CentOS-7-x86_64-Minimal-2009.iso --graphics vnc,listen=0.0.0.0 --noautoconsole
这条命令的含义是:创建一台叫centos7-test的虚拟机,4GB内存,4核CPU,50GB的virtio磁盘,NAT网络,从本地ISO镜像安装,VNC远程图形界面,不自动打开控制台。
- 查看虚拟机是否创建成功,执行
virsh list --all,能看到centos7-test处于关闭状态就对了。 - 启动虚拟机并连接控制台,执行
virsh start centos7-test,然后用virsh vncdisplay centos7-test查看VNC端口,用VNC客户端连接过去手动完成系统安装。
虚拟机创建命令有哪些常用参数:Windows平台Hyper-V新建虚拟机命令
如果你手头是Windows Server或者Win10/11专业版,走Hyper-V这条路更顺畅,Hyper-V用PowerShell命令操作,核心就是New-VM,网上搜“Hyper-V新建虚拟机命令”,搜出来基本都是它。
Hyper-V新建虚拟机命令的PowerShell参数清单
-Name:虚拟机名称,这是必填的。-MemoryStartupBytes:启动内存大小,单位是字节,比如-MemoryStartupBytes 4GB,PowerShell里可以直接用GB单位。-BootDevice:启动设备,可以是VHD(虚拟硬盘)或CD(光驱)。-VHDPath:指定虚拟硬盘文件路径,配合-NewVHDPath和-NewVHDSizeBytes使用,可以自动创建新硬盘。-SwitchName:指定虚拟交换机名称,先在Hyper-V管理器里创建好虚拟交换机,然后用这个参数绑定,如果不指定,虚拟机就没有网络。-Generation:指定第几代虚拟机。-Generation 2表示第二代,支持UEFI启动和安全启动,装新系统强烈建议用2代。
Hyper-V创建虚拟机的实际操作路径
- 以管理员身份打开PowerShell。
- 先确认Hyper-V功能已启用,执行
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All查看状态,如果未启用,用Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All启用并重启。 - 查看可用的虚拟交换机,执行
Get-VMSwitch,记下你要用的交换机名称。 - 执行Hyper-V新建虚拟机命令,比如创建一个名为“WinServer2026”的虚拟机,4GB内存,绑定外部网络交换机:
New-VM -Name "WinServer2026" ` -MemoryStartupBytes 4GB ` -BootDevice VHD ` -NewVHDPath "D:Hyper-VWinServer2026.vhdx" ` -NewVHDSizeBytes 60GB ` -SwitchName "ExternalSwitch" ` -Generation 2
- 设置虚拟机从ISO镜像启动,把安装镜像挂载到虚拟光驱,执行
Set-VMDvdDrive -VMName "WinServer2026" -Path "D:ISOWindowsServer2026.iso"。 - 调整启动顺序,让光驱优先于硬盘,执行
Set-VMFirmware -VMName "WinServer2026" -BootOrder $(Get-VMFirmware -VMName "WinServer2026").BootOrder,或者直接在Hyper-V管理器的固件设置里手动拖拽。 - 启动虚拟机,执行
Start-VM -Name "WinServer2026",然后在Hyper-V管理器里双击连接窗口完成系统安装。
电脑创建虚拟机选哪个命令:开发测试场景下的轻量方案与其他选择
很多人在自己电脑上折腾虚拟机,问“电脑创建虚拟机选哪个命令”,如果不求完整的企业级功能,只求快速起一个环境,那Vagrant值得优先考虑,它有一套独立于底层虚拟化平台的命令体系。
Vagrant快速创建虚拟机的命令变化
vagrant init:初始化当前目录,生成Vagrantfile配置文件,比如vagrant init centos/7,意思是使用CentOS 7的官方镜像模板。vagrant up:根据Vagrantfile配置创建并启动虚拟机。vagrant ssh:直接SSH登录到虚拟机里。vagrant halt:关闭虚拟机。vagrant destroy:销毁虚拟机,不留痕迹。
Vagrant的好处是配置可以版本管理,团队协作时大家拉下来跑vagrant up,能得到完全一致的环境,它底层调用的还是VirtualBox或Hyper-V,这些虚拟机创建命令本身对你不可见,相当于多了一层自动化封装。
各平台虚拟机创建命令对比一览
| 场景 | 核心命令 | 配置文件格式 | 适合人群 | 上手难度 |
|---|---|---|---|---|
| Linux服务器KVM | virt-install | 命令行参数 | 运维、云平台管理员 | 中等 |
| Windows Hyper-V | New-VM | PowerShell命令 | Windows管理员 | 中等 |
| 开发测试环境 | vagrant up | Vagrantfile | 开发、测试工程师 | 低 |
| 桌面快速体验 | VBoxManage createvm | VirtualBox命令 | 个人用户 | 低 |
虚拟机创建命令记不住怎么办:用模板脚本固化常用参数
我见过不少人问“虚拟机创建命令参数太多记不住怎么办”,参数列表确实长,但不用硬背,行业内的常见做法是把虚拟机创建命令写成脚本或模板。
比如在Linux下,把常用配置写进一个Shell脚本,每次改个名字和IP就能复用:
#!/bin/bash
# 定义通用变量
VM_NAME=$1
VM_MEMORY=4096
VM_VCPUS=2
VM_DISK_PATH="/data/vms/${VM_NAME}.qcow2"
VM_ISO="/data/iso/CentOS-7-x86_64-Minimal-2009.iso"
virt-install
--name ${VM_NAME}
--memory ${VM_MEMORY}
--vcpus ${VM_VCPUS}
--disk path=${VM_DISK_PATH},size=50,format=qcow2,bus=virtio
--network network=default,model=virtio
--os-variant centos7.0
--cdrom ${VM_ISO}
--graphics vnc,listen=0.0.0.0
--noautoconsole
保存为create-vm.sh,每次执行bash create-vm.sh centos7-node1就能快速拉起一台新虚拟机,PowerShell那边同理,把New-VM的参数封成函数放$PROFILE文件里,用的时候一行搞定。
虚拟机创建命令的常见疑问解答
虚拟机创建命令linux上与Windows上差异大吗?
差异很大,Linux主流是virt-install和qemu-img等命令组合,参数风格类似GNU命令行工具,短横线加小写字母,Windows上主要用PowerShell的New-VM,参数叫-Name、-MemoryStartupBytes,有鲜明的PowerShell风格,两者的底层原理虽然都是CPU虚拟化和内存隔离,但操作方式完全不同,需要花一点时间分别熟悉。
创建虚拟机时内存和CPU参数设置多大合适?
没有固定答案,主要看宿主机资源和虚拟机内业务需求,一个小规格的Linux测试机配2GB内存和2核CPU足够日常练习;跑Windows Server或者数据库系统,建议至少4GB起步,vCPU数量不宜超过宿主机逻辑核心总数的一半,否则多台虚拟机之间容易争抢资源,内存方面,行业内常用的做法是预留20%左右的宿主机内存不分配出去,避免物理内存耗尽触发SWAP导致整机卡顿。
virt-install和qemu-img什么关系?
两者是配合关系,qemu-img只负责创建和管理磁盘镜像文件,比如qemu-img create -f qcow2 disk.qcow2 50G,相当于先把硬盘生产出来,virt-install则是负责把CPU、内存、磁盘、网络组装起来并开始装系统,实际使用中,可以在virt-install的--disk参数里指定一个已存在的qcow2文件,也可以让它自动调用qemu-img创建,virt-install创建的磁盘默认在/var/lib/libvirt/images/目录下,建议生产环境自定义路径,方便管理。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/624637.html





