vCenter创建虚拟机:从模板准备到PowerCLI批量交付全流程
简介面向VMware vCenter管理员与虚拟化运维入门者这份docx文档系统讲解在vCenter中创建CentOS 7虚拟机的完整过程解决从ISO镜像准备到虚拟机配置落地的常见问题。文档以分步骤说明形式呈现便于按步骤对照操作压缩包大小为2.05MB内仅1个docx文件。目前已有349人学习下载。内容从新建内容库、选择与ESXi主机相同的存储开始到克隆ISO镜像并指定目标内容库再到新建虚拟机、匹配客户机操作系统、自定义CPU/内存/网络等硬件最后通过CD/DVD设备挂载已克隆的ISO镜像均给出明确操作路径。同时强调兼容性设置、硬件自定义等细节并说明存储一致性对性能与数据管理的影响能帮助运维人员快速掌握vCenter图形化部署虚拟机的标准流程避免因参数遗漏或存储不匹配导致的重复操作尤其适合需要规范化虚拟化环境、降低手动配置出错率的团队参考。1. vCenter 创建虚拟机先搞清楚它在解决什么问题一提到创建虚拟机很多人第一反应是登录 ESXi 主机直接操作。单台 ESXi 环境确实可以这么干但当你接手的是一个由多台主机组成的小集群直接在每台 ESXi 上各自为政会遇到两个麻烦虚拟机文件散落在不同主机资源利用率被钉死没有统一入口做权限、配额和迁移调度。vCenter 解决的就是集中创建、统一调度这件事。标题里的 .docx 我见过不少大多是运维内部流转的步骤文档这类文档通常只写打开向导→下一步→完成却很少写创建前的存储、网络和模板判断。这篇我们按一线习惯把 vCenter 创建虚拟机从点按钮扩展到做准备、选参数、批量执行、排错的完整链路。适合刚接手 vCenter 的运维也适合测试环境需要批量交付的开发者。2. 创建虚拟机前的三项准备模板、存储、网络2.1 为什么不能直接点新建先看模板和版本兼容在 vCenter 的 HTML5 客户端里新建虚拟机按钮确实非常显眼。但点击之前我会先做三件小事确定这台机器的样板从哪来、数据存放在哪、网口接在哪个端口组。这三项没定下来即使创建成功后续开通网络和加域也会花掉比创建更多的时间。先说模板。vCenter 里的虚拟机模板可以来自内容库的模板、也可以来自克隆成模板的虚拟机。在创建向导中如果你选从模板部署本质上是把模板作为蓝图复制一份。这里最容易踩的坑是模板的虚拟机硬件版本与新集群的 ESXi 版本不兼容。比如旧模板的硬件版本比较旧而目标 ESXi 版本较新vCenter 通常能自动兼容但有时候会提示虚拟机兼容性为不支持的版本。所以创建之前我会先检查硬件版本在模板详情里查看虚拟机兼容性确认它低于或等于目标主机的最大支持版本。如果版本过高连开机都有可能报错。用 PowerCLI 检查会更直接。下面这段脚本能在一分钟内列出当前环境里所有模板的硬件版本以及主机的 ESXi 版本帮助你判断模板能不能用。# 列出所有模板的硬件版本 Get-Template | ForEach-Object { $tplView Get-View $_.Id Write-Host $($_.Name) - hardware v$($tplView.Config.Version) } # 列出所有 ESXi 主机的版本用于对比兼容范围 Get-VMHost | Select-Object Name, Version, ConnectionState这个脚本的思路是先拿模板视图里的Config.Version再拿主机版本。数值不是越高越好而是要与目标主机支持的硬件版本上下兼容。如果你看到某模板的硬件版本明显老了建议先用模板重建或更新硬件版本而不是直接拿旧模板去创建一堆新虚拟机。2.2 存储与网络选型把参数记在纸上再动手存储的选型直接决定虚拟机的性能和回滚成本。vCenter 允许你在虚拟机创建时选择数据存储和磁盘置备格式精简置备用多少占多少适合测试环境厚置备惰性清零是立即分配空间但不预存储厚置备快速清零则是生产环境更常见的选择。我一般在 vCenter 创建虚拟机时默认选精简只有在做数据库虚机时才改厚置备因为厚置备减少存储预分配带来的运行期 I/O 损耗但创建耗时和空间占用高。这个选择不写在向导里很容易忽略。网络侧要先确认目标虚拟机接哪个分布式端口组。务必记住端口组不是名称看着对就行同一个名字在集群的不同主机上可能连接不同 VLAN。建议用 vCenter 客户端里的分布式虚拟交换机页面核对 VLAN ID 和绑定策略。用 PowerCLI 也可以快速确认端口组归属# 查看指定名称的端口组属于哪些主机以及 VLAN ID Get-VirtualPortGroup -Name VLAN100 | Select-Object Name, VLanId, VMHost这里VLanId对应端口组绑定的 VLAN 号VMHost显示该端口组在哪些主机上可见。如果返回多个主机且 VLAN ID 不一致那就要小心了。因为虚拟机在集群中迁移时端口组的映射必须一致否则迁移后网络会掉线。这些参数在点击向导之前最好落在纸上。下面这个表格是我每次创建前要填的清单你可以直接抄走用。参数项示例值说明虚拟机名称web01建议带业务前缀避免后期改名目标集群/资源池clusterA决定 HA 和 DRS 行为数据存储datastore1剩余空间需大于磁盘总量端口组VLAN100提前核对 VLAN ID客户机操作系统Linux影响虚拟硬件和驱动CPU / 内存2核 / 4GB按负载峰值设定ISO 路径iso/ubuntu.iso确认已存在于内容库磁盘置备Thin测试环境默认生产按需选择没有这张表每台虚拟机都会长出各自的命名和 IP 习惯后面维护时就会变成玄学。尤其虚拟机数量超过 20 台以后命名不规范和端口组接错的排查成本会直线上升。2.3 准备最小可用命令PowerCLI 连接 vCenter 的验证脚本无论你是用向导还是脚本第一件事都是把 PowerCLI 会话建立起来。很多人直接打开 PowerShell 敲Get-VM结果报未连接到 vCenter Server就是因为从来没执行过连接命令。我先给一个最小可用的连接脚本并把连接后的验证也放进来确保环境是通的。# 连接 vCenter。Get-Credential 会弹出账号密码输入框避免在脚本里硬编码。 Connect-VIServer -Server vc.example.local -Protocol https -Credential (Get-Credential) # 检查数据存储空间和主机版本确认环境满足创建条件 Get-DataStore | Select-Object Name, FreeSpaceGB | Sort-Object Name Get-VMHost | Select-Object Name, Version, ConnectionStateConnect-VIServer后面跟的-Server是 vCenter 的地址-Protocol https表示走 HTTPS。如果换成-Credential中的明文密码虽然能跑但我个人不建议在共享脚本里这么做。Get-DataStore返回的是所有数据存储的名称和剩余空间Get-VMHost则返回各主机版本。这两条结果能告诉你创建虚拟机前存储够不够、主机版本是否一致。如果你连不上 vCenter别急着怀疑账号密码先用工作站在同一个局域网内测一下 TCP 443 端口通不通。# 在 Windows 上测试到 vCenter 的 HTTPS 端口是否可通 Test-NetConnection vc.example.local -Port 443看返回结果里的TcpTestSucceeded如果是False说明网络不通后面所有 PowerCLI 命令都连不上先解决网络问题再谈创建。这一步虽然简单但真的能省下不少连不上的排查时间。3. 用 vCenter 向导创建一台虚拟机从 ISO 到系统安装3.1 新建虚拟机向导的关键页名称、计算资源、存储登录 vCenter 的 HTML5 客户端后右键主机或集群选择新建虚拟机。创建类型建议选创建新虚拟机下一个页面会让你填名称、选择位置。名称不是随意取的。尤其在全托管环境里虚拟机名称经常作为主机名和 DNS 记录来源所以在名称里带上业务和应用信息比纯 IP 编号更好排查。位置选择建议放到集群下的资源池而不是直接放到某台 ESXi 主机。放到集群后DRS 可以在主机之间做负载均衡直接放到单台主机即使该主机资源耗尽DRS 也不会主动迁移除非你设置了迁移规则。选择计算资源后进入存储选择页vCenter 会过滤出兼容的数据存储并显示剩余空间。这一步如果发现空间不足不要继续往下点。换另一个数据存储或者清理旧快照都是更好的选择。有些团队会用一个专门的 ISO 存储 和一个 虚拟机存储创建时把 ISO 放在共享内容库把虚拟机文件放在性能更高的存储这样能避免安装系统时大量读 ISO 影响其他生产虚拟机。然后进入兼容性和客户机操作系统页。客户机操作系统不能随便选它决定虚拟硬件默认类型。选错的话安装 Guest OS 时可能出现磁盘控制器驱动不识别的问题。比如你实际要装某个 Linux 发行版但在向导里选成了 WindowsvCenter 配置的磁盘控制器类型可能不匹配安装时就会卡在找不到硬盘。所以请按客户机实际系统来选择即便版本号不够精确选到一个相近的也比选错类型好。3.2 配置 CPU/内存/磁盘参数设多少才不翻车自定义硬件页是所有新手最容易焦虑的地方。其实大多数参数保持默认只改四个关键项CPU、内存、磁盘、网络。CPU 设置中每个 CPU 的核数和CPU 数量都影响 License 和性能。不要看到物理机是 16 核 2 路就把虚拟机配成 16 核 2 插槽。大多数系统会按照逻辑处理器数量来统计插槽数影响的是部分应用按插槽收费的逻辑。建议以总核数为准例如需要 4 核就配置 4 插槽 × 1 核兼容性最好。需要说明的是单插槽多核在 Windows 和 Linux 下通常没有明显性能差异而多插槽在某些数据库软件的授权上会产生额外费用。内存配置中预留Reservation、限制Limit、份额Shares是三个不同的资源控制维度。生产环境一般不需要设置预留和限制给默认份额即可。如果虚拟机在创建后可能启用大页内存注意预留不能设置过大否则会影响同一台主机上其他虚拟机的调度。内存热添加是个好功能但它要求客户机操作系统支持而且很多系统在启用内存热添加后应用程序会检测到内存容量变化不一定稳定。所以我通常不在创建时打开而是等真需要再加。磁盘配置主要看大小、置备模式和 SCSI 控制器。vCenter 向导允许在创建时修改磁盘大小但后续扩容不影响原有数据。SCSI 控制器默认的 LSI 或 VMware Paravirtual 都行Linux 一般用 PVSCSI 性能更好但需要系统自带驱动。网络适配器选择如果可能优先选 VMXNET3它有更好的性能和高级特性。E1000 只在使用较老系统时才需要。配置项测试环境常用值生产环境建议CPU2 核2×1按实际负载插槽数少于核数内存4 GB预留关闭份额默认磁盘40 GB精简置备按容量厚置备快速清零网络VMXNET3VMXNET3CD/DVD启动时连接 ISO启动时连接 ISO这张表是起点不是标准答案。数据库和编译类负载要单独调大内存和磁盘Web 集群往往 CPU 核数更重要。关键是把预设参数记下来方便以后批量复制时保持一致。3.3 挂载 ISO 并完成系统安装让虚拟机真正跑起来在自定义硬件页底部找到CD/DVD 驱动器选择内容库 ISO 文件并勾选打开电源时连接。这里如果不勾选开机后虚拟机光驱是空的控制台无法引导安装。建议第一次创建时顺便把引导类型设为 BIOS 或 EFI并进入虚拟机 BIOS 把 CD-ROM 启动顺序调到硬盘之前。这步不做开机瞬间容易直接进入无系统硬盘报错。点击完成后在虚拟机列表右键打开电源再打开远程控制台。控制台里会显示 BIOS 画面或系统安装界面。如果是 Windows ISO在安装过程中按正常流程选择磁盘如果是 Linux推荐使用 cloud-init 的 ISO 自动应答可以减少人工点击尤其批量部署时能显著节省时间。等待安装完成后重启虚拟机移除或断开 CD-ROM 的 ISO防止下一次开机又回到安装界面。然后从 vCenter 虚拟机的客户机操作系统信息中查看 IP 地址用 ping 做连通性验证# 用普通工作站在内网验证客户机 IP 是否可达 ping -c 4 10.10.30.20如果 ping 不通不要急着改网卡优先回到 vCenter 控制台确认系统防火墙和网络配置文件。到这里一台通过向导创建的虚拟机才真正完成。很多人把创建完成当成交付完成实际到了验证这一步才发现客户机没有拿到 IP或者防火墙挡了端口反而要多花时间。4. 用 PowerCLI 批量创建虚拟机参数化脚本与自定义规格4.1 从单台到批量New-VM 与克隆模板的差别当需要交付的不只是一台虚拟机而是一批同样的系统时创建向导就显得啰嗦。常见做法是两条路线一是用 New-VM 从 ISO 或模板复制二是先建好一台模板虚拟机再用模板部署。PowerCLI 中的 New-VM 命令两者都能做区别在于你给它传 -Template 还是 -CD。从 ISO 安装适合系统版本频繁变化或者需要每台机器定制安装的场景缺点是每次都要走完整引导过程。从模板克隆适合一堆相同环境的交付克隆完成后只需要通过自定义规格修改主机名和 IP。我的习惯是测试环境用 New-VM ISO交付环境用 Template New-VM。理由很简单ISO 路线慢但可以应对非标准磁盘分区模板路线快但必须保证模板干净且规范。另外要提醒的是克隆模板时虚拟机不应该处于开机状态否则文件可能不一致。用模板前也建议给模板拍一个快照作为备份点。从模板创建出来的虚拟机是完整副本不是链接克隆所以不依赖模板继续存活。这点和某些容器镜像不一样虚拟机模板更像一张母盘用一次复制一次模板坏了不影响已经复制出去的虚拟机。4.2 用 New-VM 创建虚拟机的完整参数化脚本下面这个脚本是我常用的批量创建模板参数放在头部一次可以创建多台名称以逗号分隔的虚拟机。脚本里面没用花哨功能就是为了能直接在生产环境跑。# 批量创建虚拟机脚本示例每台 VM 以逗号分隔传入 param( [string]$VMName web01, [int]$CPU 1, [int]$MemoryGB 2, [int]$DiskGB 30 ) $vcServer vc.example.local $datastore datastore1 $portGroup VLAN100 $isoPath iso/ubuntu-22.04-server.iso Connect-VIServer -Server $vcServer -Credential (Get-Credential) $VMName.Split(,) | ForEach-Object { $vmName $_ New-VM -Name $vmName -Datastore $datastore -MemoryGB $MemoryGB -NumCPU $CPU -DiskGB $DiskGB -CD $isoPath -NetworkName $portGroup | Out-Null Write-Host Created $vmName }-CD参数只要指定 ISO 路径就会自动创建一个 CD 驱动并连接省去手工勾选。-NetworkName需要端口组在目标主机上存在否则命令会报错提示端口组找不到。-DiskGB默认创建精简置备磁盘如果需要厚置备要加-DiskStorageFormat Thick或EagerZeroedThick不过测试环境默认 Thin 就够了。运行这段脚本前先确认你已经安装了 PowerCLI 模块。可以用Get-Module -ListAvailable VMware.PowerCLI检查。没装的话常见的做法是# 安装 PowerCLI 模块需要管理员权限或当前用户允许安装模块 Install-Module -Name VMware.PowerCLI -Scope CurrentUser安装完成后如果 Connect-VIServer 报跳过证书校验可以在脚本前面加一行Set-PowerCLIConfiguration -InvalidCertificateAction Ignore忽略自签名证书但只在可信环境使用。这样做的好处是避免脚本卡在证书确认环节坏处是存在中间人风险所以只建议在受控内网环境里用。4.3 使用 Customization Spec 让每台机器都有独立身份批量创建的最大问题不是创建本身而是创建后的主机名和 IP 重复。一台一台去改既慢又容易漏。vCenter 的客户机操作系统自定义规格Customization Spec就是为这件事设计的它能在克隆或从模板部署完成后自动把主机名、网络配置、DNS 等改好。先查看已经有哪些自定义规格# 查看当前环境中所有的自定义规格 Get-OSCustomizationSpec | Select-Object Name如果没有任何可用规格可以打开 vCenter 客户端在策略和配置文件里新建一个。类型选择Linux 或 Windows 对应的客户机操作系统然后设置主机名、IP 来源、DNS。Windows 规格里会有运行一次 Sysprep和重新生成 SID的选项这个一定要勾选否则从同一模板克隆出来的机器 SID 会相同会引发域内识别异常。有了规格之后创建脚本就可以直接调用# 从模板创建虚拟机并应用自定义规格 $template Get-Template -Name centos-8-template $vm New-VM -Name app01 -Template $template -Datastore datastore1 -OSCustomizationSpec linux-spec -ResourcePool clusterA # 启动并等待 VMware Tools 返回 IP Start-VM -VM $vm Wait-Tools -VM $vm -TimeoutSeconds 60这段脚本里-Template指定模板-OSCustomizationSpec指定要应用的自定义规格。启动后Wait-Tools会等待 VMware Tools 在客户机内启动这样后面的Get-VMGuest才能拿到 IP。如果模板里没装 VMware Tools自定义规格会卡住表现为虚拟机一直处于正在准备客户机操作系统状态所以模板准备至关重要。另一个思路是使用 cloud-init 的user-data把网络和主机名写在模板的 seed 盘里。这种方式与 vCenter 的自定义规格互不影响但更依赖模板设计。如果团队里已经用 cloud-init我一般优先让 cloud-init 负责vCenter 只负责交付。这样后续不管是 vCenter 还是其他平台都能复用同一套配置逻辑。5. vCenter 创建虚拟机的避坑指南5 个高频翻车点与排查思路5.1 从模板克隆后无法开机磁盘签名冲突现象从 Windows 模板克隆出虚拟机启动后蓝屏或者反复进入正在修复。检查控制台能看到引导阶段报错但系统进不去。原因Windows 克隆后磁盘签名和分区信息与模板完全一致。如果模板里没有做过 Sysprep克隆出来的所有机器都带着同一个系统标识启动时系统会认为磁盘被篡改。解决先打开 vCenter 的自定义规格确认 Windows 规格里勾选了重新生成 SID和运行一次 Sysprep。如果已经克隆出来才意识到就只能进入恢复模式手动改磁盘签名过程麻烦。我的建议是模板创建后先做一个 Sysprep再封装成模板这样后续再也不会踩这个坑。5.2 虚拟机 IP 一直不通端口组明明选对了现象虚拟机开机后能通过控制台看到系统启动完成但始终 ping 不通网络图标也显示未连接或者显示已连接但局域网访问失败。原因端口组的 VLAN ID 与实际网络不匹配或者客户机网卡型号选择不对导致驱动不加载。尤其是从模板克隆出来的虚拟机如果模板网络配置里绑定的是旧网卡的 MAC克隆后会因为网卡识别不一致拿不到 IP。解决先在 vCenter 的网络视图核对端口组属于哪个 VLAN然后用控制台登录客户机运行ip addr或ipconfig查看网卡状态。如果虚拟网卡是 E1000 但系统没有对应驱动换成 VMXNET3或者先安装 open-vm-tools 再切换。对于已克隆的机器还可以在 vCenter 里把虚拟机的网卡断开再连接强制客户机重新 DHCP。5.3 挂载 ISO 后控制台看不到安装引导现象光驱已经挂上了 ISO点击打开电源后控制台要么黑屏要么直接进入硬盘里的旧系统完全没有安装界面出现。原因CD/DVD 驱动器没有勾选打开电源时连接或者 BIOS 启动顺序把 CD-ROM 放在硬盘之后。第二个原因在 UEFI 引导的虚拟机上更常见因为 UEFI 默认从第一个磁盘启动。解决编辑虚拟机勾选 CD/DVD 驱动的连接和打开电源时连接。然后开机时进入固件设置把 CD-ROM 调整为第一启动项。如果用的是 UEFI 引导要确认 ISO 支持 UEFI 启动部分老 ISO 只支持 BIOS 引导二者不匹配也会造成无法引导。5.4 批量创建后所有虚拟机主机名一模一样现象用 New-VM 从 ISO 或模板创建多个 VM全部启动后发现主机名相同甚至 IP 也相同网络里全是冲突。原因没有做客户机自定义。创建脚本只创建了虚拟机硬件没有传自定义规格也没有在客户机安装时指定独立主机名。对于 ISO 安装如果用同一个应答文件也会导致主机名一致。解决从模板创建时指定-OSCustomizationSpec或者在第一次启动时用 cloud-init/应答文件设置 hostname。对于已经创建好的机器只能一台台登录去改再把 IP 换掉。这个问题的代价通常很高所以我现在每次批量创建前都会先确认自定义规格已经绑定到脚本里而不是等机器跑起来再去对名称。5.5 创建时不报错启动时集群却说资源不足现象一次性创建了五台虚拟机创建过程中 vCenter 没有任何报错但在启动时只有两台能开机其余提示没有足够的资源来启动虚拟机。原因CPU 或内存预留设置过高集群总资源不够。创建时如果勾选了预留所有客户机内存或填写了比较高的 CPU 预留vCenter 会把你未启动的虚拟机也计入资源占用导致同一集群内的其他虚拟机无法启动。解决检查集群资源池的预留和限额取消创建时过高的 CPU/内存预留。另外确认 DRS 是否设置为手动以及是否有主机处于维护模式。如果只是临时演示环境可以关掉 HA 的准入控制但这是一种绕行方案生产环境不推荐。6. 验证创建结果与后续优化从成功创建到可交付创建动作完成不等于交付完成。我每次都会跑一遍验证循环确认虚拟机真的能拿到 IP、能和外界通信然后才会把它交给使用方。$vm Get-VM -Name app01 Wait-Tools -VM $vm -TimeoutSeconds 120 $ip (Get-VMGuest -VM $vm).IpAddress if ($ip) { Write-Host VM $($vm.Name) ready, IP: $ip } else { Write-Host No guest IP returned, check console for setup. }这段脚本的关键是Wait-Tools它确保 VMware Tools 已在客户机内运行。没有 Tools 时vCenter 拿不到客户机 IP很多自动任务都会卡住。拿到 IP 之后再从工作区 ping 一次才算真正可用。接下来的优化我会做三步拍一个初始状态快照方便系统配置出问题后快速回滚用自定义属性或标签标注业务归属把虚拟机加到正确的资源池并设置 CPU/内存份额避免一台吃满集群资源。快照会在后续日常运维中产生存储占用所以只保留这个初始快照不要留在里面做长期备份。踩过一次的教训是批量交付虚拟机之前一定要在模板里装好 Tools 并且做一次冷启动验证。模板不干净后面所有克隆出来的机器都要返工。现在我每建一批虚拟机都会把当天用到的参数表、脚本和避坑信息存在一份 docx 里和团队的操作手册放在一起。哪怕过了三个月回来看这份文档也能立刻知道当时为什么这么设。希望帮到你。本文还有配套的精品资源点击获取