VMware里创建CentOS虚拟机,这个操作我这些年做了太多次了,从大学时装的CentOS 5到现在的CentOS Stream,中间踩过不少坑。今天就把整套流程完整捋一遍,从VMware Workstation的下载安装、CentOS镜像的选型,到虚拟机创建、系统安装、VMware Tools配置,再到后期扩容、备份、迁移和常见问题排查,让刚接触的人照着能装出一台正常使用的CentOS虚拟机,也让老手能查漏补缺。
1. 准备工作:VMware Workstation与CentOS镜像的选型
1.1 VMware Workstation Pro 17:下载安装与两个坑
先解决宿主机的阵地。VMware Workstation Pro 目前是17.x版本,个人使用已经免费,这是VMware归到Broadcom之后放开的政策,在Broadcom官方下载页面注册一个账号,选“Personal Use”个人使用授权,就能拿到Windows版安装包。网站前后换过几版,入口确实不算好找,但别去第三方站点下那种打包过的东西,容易带私货,账号密码、浏览器设置都可能被改,这点要切记。
安装本身没什么特殊选项,一路Next就行,安装包大概几百MB,下个几分钟。真正要花心思的是装完之后的环境检查,有两点必须在装之前或者刚装完时确认,不然新建虚拟机大概率要返工。
第一,Windows得开启硬件虚拟化。判断方法很简单:打开任务管理器,性能页,看“虚拟化”是不是“已启用”。如果显示未启用,进主板BIOS/UEFI里找Intel VT-x或AMD-V开关,不同主板牌子位置不一样,但一般都在CPU或高级设置下面。没开这个,VMware装64位的CentOS十有八九会出问题,而且报错让人摸不着头脑,最常见的就是“此主机支持Intel VT-x,但Intel VT-x处于禁用状态”。
第二,如果你电脑上开了Hyper-V、Windows虚拟机监控程序平台,或者Windows安全中心的“内核隔离/内存完整性”,VMware可能出现兼容性报错。两者其实可以共存,前提是开启Windows的“Hypervisor Platform”功能,但我个人的习惯是直接关掉Hyper-V,VMware跑起来最干净,也不需要额外的兼容层。这个取舍看实际需要,如果你平时还要用WSL2或者Docker Desktop,那保留Hyper-V就得走兼容路线。
装完打开VMware Workstation Pro,新建虚拟机之前,还有一个小建议:先把“编辑→首选项→更新→启动时检查更新”关掉,不然每次打开都弹更新提示,演示或上课的时候很尴尬,后台的更新检查也会时不时占一点CPU和网络资源。这个选项虽然无关紧要,但关掉之后整个软件用起来清爽不少。
1.2 CentOS版本怎么选:别盲目追新也别死守老版本
镜像选型是很多人会忽视的一步。CentOS家族目前常见的是CentOS 7.9(最后的7系列小版本2009)、CentOS Stream 8/9/10。CentOS 7已经结束维护,官方源也基本停止更新,如果你只是为了学习或临时搭建环境,建议直接CentOS Stream 9或10,属于滚动更新版,内核和软件包比老版本新不少,用来练手不会遇到装个软件都要找旧源的问题。
也有些场景确实必须用CentOS 7,比如公司老项目还在跑,或者某个软件只支持RHEL 7系。那就选7.9 2009,但注意:装完之后必须先处理yum源,因为7的官方源已经归档到vault,直接用原来的源会连不上,这个问题在后面换源部分我会专门说。
镜像类型上,主要用Minimal和DVD两种:
| 镜像类型 | 大小 | 适用场景 |
|---|---|---|
| Minimal | 1.6GB左右 | 服务器、无图形界面需求、喜欢自己装组件 |
| DVD | 3.8GB~9GB | 需要图形界面、离线安装包较多 |
| Everything | 8GB以上 | 全量离线仓库,一般用不上 |
新手如果怕命令行不熟,可以先选DVD装个带桌面的环境,把基础摸熟了再回头折腾Minimal。老手或者目标是跑服务的,Minimal起步最干净,后面缺什么装什么,也好排查依赖问题。
1.3 镜像下载与校验:别把校验跳过
下载ISO我有两个习惯:一是优先去国内高校或云厂商镜像站,速度比官方快得多,比如阿里云镜像和清华TUNA;二是下载完必校验哈希值。这个校验步骤很多教程会跳过去,但我在实际维护中遇到过ISO损坏导致安装到一半报错的案例,排查了大半天最后发现是镜像下载不完整,纯浪费时间。
Windows下校验SHA256很简单,在CMD里执行:
certutil -hashfile CentOS-Stream-9-latest-x86_64-dvd1.iso SHA256Linux下用:
sha256sum CentOS-Stream-9-latest-x86_64-dvd1.iso然后把输出的那串哈希值和镜像站提供的SHA256SUMS文件对比,一致再用。这一步十几秒的事,值得养成习惯。跳过校验的代价有时候会很惨,我有一次装CentOS 7在“软件包安装”阶段反复报错,重试了好几轮都没用,最后重新下载镜像一次解决,白白耗掉一个下午。
2. 创建虚拟机的完整流程与参数设计
2.1 新建虚拟机:这几步设置别乱选
打开VMware Workstation Pro,文件→新建虚拟机,选“自定义(高级)”比“典型”更实用,因为可以一步到位控制硬件和固件类型。到“安装程序光盘映像文件”那一步,先不急着选ISO,选“稍后安装操作系统”,这样虚拟机创建完成后还能随时换镜像,配置也更灵活。这个选择影响不算大,但灵活性差很多,后面想换版本就是几秒钟的事。
客户机操作系统这里一定要选Linux,版本选CentOS 7 64位或CentOS 8 64位,和下载镜像的大版本对应。版本选得不对,VMware虽然也能启动,但一些自动适配逻辑会走偏,比如默认固件和SCSI控制器类型,容易出现系统起不来或者磁盘认不到的情况。这种问题我在给别人排查时见过,新建虚拟机时改一个下拉框就能解决,属于典型的低级但隐蔽的错误。
名称和位置建议单独建一个目录,比如D:\VMs\CentOS-Stream-9,别放到系统盘用户目录下,虚拟机磁盘文件动辄几十GB,C盘塞满之后整个电脑都会变卡。这个目录名会显示在VMware的库面板里,起得规范一点,比如“CentOS-Stream-9-dev”,后面同时维护多台虚拟机的时候会非常省心。我自己的目录命名习惯是“系统名-版本-用途”,时间长了也不会看混。
2.2 CPU、内存、磁盘:参数怎么给才合理
虚拟硬件配置没有绝对标准,但有一个安全区间可以参考。处理器:2核是最低推荐,跑编译或者装桌面环境可以给4核,但别贪心,给到物理核心数的一半以上,反而会因为CPU调度开销导致整体变慢,更何况拖慢宿主机对谁都没好处。
内存:CentOS Minimal建议至少2GB,带GNOME桌面的至少4GB,开发机可以给到8GB。宿主机内存自己得留够,否则宿主机卡顿不说,虚拟机里的服务也会频繁触发swap,磁盘IO直接飙升。我见过有人把16G内存全塞给虚拟机,宿主机卡到鼠标都飘,虚拟机里的编译也没快多少。
磁盘:20GB是最小可用量,但装完系统加常用软件很容易就满了,我自己的习惯是Minimal给40GB、带桌面版给60GB。磁盘类型保持默认的SCSI或SATA就行,NVMe性能好一些,但老内核比如CentOS 7早期版本对NVMe支持不完善,装的时候可能找不到盘,没必要冒险。
注意:两个磁盘相关的选项要留心。“立即分配所有磁盘空间”别勾,虚拟磁盘本身是稀疏文件,用多少占多少,一旦预分配,几十GB空间瞬间没掉;“将虚拟磁盘存储为单个文件”保留,性能略好也便于迁移,拆成2GB小文件只有上传云盘时才需要。
2.3 系统安装全程:分区、软件选择与网络
启动虚拟机之后,如果没自动进入安装界面,手动挂载一下ISO:虚拟机→设置→CD/DVD→使用ISO映像文件。开机后,第一个界面通常有“Test this media & install”和“Install CentOS”两个选项,第一次装可以测一下介质,装过多次就直接选Install,没必要每次等完整校验,这一步能省两三分钟。
进入安装信息摘要页,有几个地方必须处理。日期时间选亚洲/上海,打开网络时间同步,不设时区的后果是日志时间全错,排查问题时各种对不上,非常痛苦。软件选择:Minimal镜像默认就是最小安装,如果你用DVD镜像是可以选带GNOME桌面的。我自己建议先用Minimal走一遍,因为后面用虚拟机练Linux的时候,少一个桌面环境就少一层干扰,等你真需要界面,去装也是几分钟的事。
安装目的地:新手直接点“自动配置分区”就好,CentOS安装器默认会按LVM来分,生成一个卷组,后续想扩容可以直接lvextend,不用推倒重来。自动分区有一个小问题是/boot和/的分配比例不一定最合理,但日常使用完全足够。网络和主机名:进入后把网卡开关打开,NAT模式下自动获取IP,主机名改成好认的,比如centos-dev,最后设置root密码并创建一个普通用户。
安装过程通常几分钟到十几分钟,取决于磁盘速度和镜像类型。装完重启前会提示移除安装介质,在虚拟机设置里把CD/DVD改为“使用物理驱动器”或直接断开,不然下次开机又会进入安装引导界面,白白浪费时间。
3. 系统安装后的必备设置与VMware Tools
3.1 换源、装基础工具、确认网络
CentOS 7刚装完,第一件事就是把yum源换掉,因为官方源已经归档,直接用会报连接超时或404。备份原有repo文件,然后用阿里云或清华的vault源替代。CentOS Stream 9则简单很多,原始源基本可用,想加速一样能换成国内镜像地址。
对CentOS 7的vault源,操作命令我贴在下面,注意不同小版本的repo文件名会略有差异,以实际目录为准:
# 先备份 cp -a /etc/yum.repos.d /etc/yum.repos.d.bak sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo sed -i 's|^#baseurl=http://mirror.centos.org/centos|baseurl=http://mirrors.aliyun.com/centos-vault|g' /etc/yum.repos.d/CentOS-Base.repo yum clean all && yum makecache执行完看到元数据缓存成功,源就没问题了。这里有个细节容易被忽略:CentOS 7的老repo在EOL之后很多镜像站只留vault目录,如果直接用原有地址解析到的都是空目录或者404,后续装任何包都可能卡在源解析上。
基础工具包我的固定清单是:vim、net-tools、wget、lrzsz、bash-completion、chrony。前几个不用解释,lrzsz提供rz/sz命令,终端里传文件非常方便;chrony做时间同步。装完bash-completion之后建议退出终端重进,否则补全不生效,你以为自己没装成功,其实只是没有重新加载shell配置。网络验证别只盯着ping,更稳的方法是同时测ping -c 3和DNS解析,一个测链路一个测解析,能快速把问题定位到具体层。
3.2 VMware Tools:决定复制粘贴和分辨率的关键
虚拟机装好系统后,有一个动作千万别跳过:安装VMware Tools。没有它,虚拟机的窗口分辨率不会自适应、鼠标进出不流畅、拖拽复制文件更是想都别想。现在的推荐做法是直接装open-vm-tools包,这是VMware官方维护的开源版本,不用挂VMware自带的安装CD,也不用走编译流程。
安装命令只有一条:
yum install -y open-vm-tools装完后确认服务在跑:
systemctl status vmtoolsd如果用的是旧方式,比如虚拟机菜单里的“安装VMware Tools”,挂载的虚拟光驱里有一个tar.gz,解压后执行vmware-install.pl,一路默认即可。但说实话,这种编译方式依赖内核头文件等一堆东西,CentOS新版本上还容易因为kernel-devel版本不匹配失败,非特殊情况我真不推荐,直接open-vm-tools省心太多。
VMware Tools就位并重启一次虚拟机后,分辨率会自动跟随窗口大小,拖拽复制一般也就恢复了。如果还是不行,检查虚拟机设置里“选项→客户机隔离”的两个勾是否打开。共享文件夹在“选项”页设置,启动后挂载:
mkdir -p /mnt/hgfs vmhgfs-fuse .host:/ /mnt/hgfs想开机自动挂载就把挂载行写进/etc/fstab。有两个容易踩的坑:共享路径里别带中文,Windows端目录名有中文时挂载会莫名失败;另外,共享文件夹默认挂载到/mnt/hgfs,如果目录不存在,记得mkdir先建好。
3.3 快照与克隆:装完基础环境后先拍一张
当我完成系统安装、换源、装好常用工具之后,一定会做的动作就是拍快照。VMware菜单里“虚拟机→快照→拍摄快照”,名称写“base”,备注里写一句“CentOS Stream 9 + open-vm-tools 已配置”。快照意味着后面无论你怎么折腾,坏了直接恢复快照,几十秒回到干净状态,这个能力是物理机给不了的。
克隆要单独说。右键虚拟机→管理→克隆,有两种模式:完整克隆和链接克隆。完整克隆会生成一个独立的新虚拟磁盘文件,可分发可移植;链接克隆依赖父磁盘,省空间但父磁盘不能删。我给团队成员分发的模板用完整克隆,自己本地快速开实验机用链接克隆。克隆出来的虚拟机默认带着原系统的hostname、SSH主机密钥和网卡信息,直接开机会冲突,重新设置hostname、清理 /etc/ssh/ssh_host_* 并重启sshd就能解决。
克隆还有一个技巧:先给原虚拟机拍快照,再基于快照做链接克隆,这样克隆出来的机器互不干扰,且不会因为原虚拟机继续写入导致父磁盘被锁定。我日常做实验经常一台父机挂几个克隆体,环境互不污染,用完一键删除,很爽快。
4. 常见问题与排查技巧实录
先给一个速查表,下面再挑几个展开讲:
| 现象 | 常见原因 | 解决方向 |
|---|---|---|
| 虚拟机开机蓝屏或卡住 | 宿主虚拟化未开启;镜像与固件不匹配 | 开启VT-x/AMD-V;检查BIOS/UEFI模式 |
| 复制粘贴失效 | VMware Tools未安装 | 安装open-vm-tools并重启 |
| 拖拽文件没反应 | 客户机隔离选项未开 | 勾选“启用拖拽和复制粘贴” |
| 虚拟机没网 | NAT服务被禁用 | 启动VMware NAT/DHCP服务 |
| 网卡起来但IP获取不到 | 网卡未激活或DHCP异常 | 用nmcli激活,dhclient手动获取 |
| 时间越来越不准 | 未启用时间同步 | 安装chrony,或勾选宿主机同步 |
| 磁盘空间不足 | 初始分配太小 | VMware设置扩容+分区逻辑卷扩展 |
4.1 开机蓝屏或无法引导的排查顺序
虚拟机蓝屏分两种情况,一种是一启动VMware界面就报错,另一种是虚拟机里引导时崩溃。前者多半是宿主机虚拟化没开或者Hyper-V抢占,打开任务管理器确认虚拟化状态,没有就去BIOS开;Windows功能里Hyper-V和虚拟机监控程序平台如果开着,要么关,要么用兼容路线。后者在装CentOS时较少见,但如果出现“Kernel panic”或卡死在某个模块,先查固件类型。
虚拟机设置→选项→高级→固件类型,CentOS 7 某些场景下对UEFI支持并不完美,改成BIOS引导通常能解决。还有一个隐蔽原因:客户机操作系统版本选错了,比如选了CentOS 7 64位但镜像是Stream 9,系统类型自动配置会偏离正常值,新建虚拟机时重新选对版本比瞎排查要快得多。
4.2 复制粘贴、拖拽失效的详细排查
定位顺序就三步:先确认open-vm-tools装没装、vmtoolsd服务在不在跑;再确认客户机隔离的两个勾是否勾上;最后重启虚拟机。三步做完九成能恢复。我自己遇到过一种邪门情况:open-vm-tools装了,服务也跑着,但拖拽就是没反应,最后发现是虚拟机设置里“客户机隔离”的“拖拽”没勾上,勾上重启就恢复了。
如果三步都试过还不行,有个土办法叫共享文件夹兜底。设一个共享目录,Windows和虚拟机各在自己侧访问,虽然没有拖拽直观,但文件至少能来回倒。还要提醒一句:拖拽复制大文件(比如好几个GB的压缩包)极容易卡住或中断,这种场景老老实实走共享文件夹或scp,别贪方便。
4.3 虚拟机无法联网:从宿主机服务到虚拟机内一一排查
NAT模式下,虚拟机通过宿主机上网,宿主机上负责转发的是Windows服务里的VMware NAT Service(vmnet8)。如果你装的是精简版VMware,或者某优化软件把启动服务关了,虚拟机里就怎么都上不了网。在services.msc里确认VMware NAT Service和VMware DHCP Service都处于运行状态,再回到虚拟机内查网卡。
CentOS 7里网卡默认是ens33,先激活再确认IP:
nmcli device status nmcli connection up ens33如果还是拿不到IP,手动触发一次DHCP:
dhclient ens33桥接模式单独说一句:虚拟机如果选桥接,宿主机用无线网卡,切Wi-Fi或换热点都会导致虚拟机掉线。桥接适合需要局域网其他设备直接访问虚拟机的场景,日常学习用NAT最省心。
4.4 时间漂移与虚拟机的性能小优化
时间漂移是虚拟机通病,尤其宿主机睡眠唤醒后,虚拟机里的系统时间可能差出几分钟甚至更多,直接影响cron任务和日志排查。解决思路是装chrony:
yum install -y chrony systemctl enable --now chronyd同时VMware里有一个设置,虚拟机设置→选项→高级→“每次唤醒时同步虚拟机时间”,建议勾上,双保险。如果你观察发现时间仍然不准,优先检查宿主机的电源计划,睡眠频率太高会让所有时间同步方案都打折扣。
性能方面两个点值得说。一是给虚拟机CPU勾上“虚拟化Intel VT-x/EPT或AMD-V/RVI”,在处理器的高级选项里,这个选项对嵌套虚拟化和编译性能都有帮助。二是虚拟磁盘尽量放在固态盘上,机械硬盘跑编译会让你怀疑人生。把整个虚拟机目录放到SSD之后,开机速度和包安装速度差距非常明显,这个提升是硬件层面马上能感知的。
5. 进阶操作:扩容、备份与迁移
5.1 磁盘扩容:从VMware设置到系统内分区扩展
虚拟磁盘空间不够了,扩容的步骤其实不难,但容易错。首先注意:如果虚拟机有快照,VMware不允许直接调整磁盘大小,先删掉旧快照或者恢复后再操作。然后在关机状态下,虚拟机设置→硬盘→磁盘工具→扩展,把容量调大,比如40GB扩到60GB。
开机进CentOS后先确认新空间有没有识别:
lsblk如果虚拟机是自动配置分区的LVM结构,典型流程是下面这样:
# 用fdisk删除物理卷所在分区sda2并重建(保留原起始扇区) fdisk /dev/sda # 输入 d 删除分区 2,再输入 n 重建分区 2,起始扇区保持默认或沿用原值,类型改成LVM(8e) partprobe /dev/sda pvresize /dev/sda2 lvextend -l +100%FREE /dev/mapper/cl-root xfs_growfs /这里最容易翻车的两个点:一是fdisk重建分区时起始扇区必须和原来一致,如果删了重建后起始位置偏移,数据就没了,第一次操作时建议把fdisk的p输出截图留底;二是根文件系统如果是xfs,只能用xfs_growfs,如果是ext4则用resize2fs,命令不能混用。动手之前先拍快照,一旦失手恢复成本非常高,这个不是危言耸听。
5.2 Clonezilla备份:比快照更可靠的系统保险
快照依赖VMware的虚拟磁盘文件,如果整个虚拟机目录被误删,或者想换到另一台电脑上,快照就不好使了。Clonezilla是另一套思路:它把分区或整个磁盘打成镜像文件,镜像可以拷到U盘、网盘、其他磁盘,随时恢复。简单理解,快照是给当前虚拟机留后路,Clonezilla是给系统做可携带的备份包。
在VMware里用的步骤不复杂:下载Clonezilla的ISO,虚拟机设置里挂载,开机进入固件菜单选择从CD启动。进入界面后选device-image模式,镜像仓库建议挂一块额外的虚拟磁盘,或者用共享文件夹映射到宿主机目录,不然源盘和目标写在同一个盘上会比较尴尬。备份CentOS时可选savedisk备份整个磁盘,也可以saveparts只备份根分区。实测下来,CentOS的备份和恢复基本半小时内搞定,相当于系统级的保险丝。
5.3 虚拟磁盘转U盘:DiskGenius的玩法与限制
有些场景要把虚拟机里的系统搬到真实设备上,比如做好了一个定制化CentOS环境,想做成U盘启动盘带走。VMware的虚拟磁盘文件vmdk无法直接被物理机识别,DiskGenius这类工具可以把vmdk打开,再克隆到U盘。操作思路:DiskGenius里打开虚拟磁盘文件,然后选择克隆磁盘功能,把虚拟磁盘内容克隆到U盘,注意U盘容量要大于虚拟磁盘的实际使用量。
说实话,这个玩法我试过几次,成功率并不高,主要卡在驱动上:虚拟机里用的是虚拟SCSI控制器,到了物理机上变成SATA或NVMe,内核没有对应驱动就蓝屏。如果只是想快速分发一个可复制的CentOS环境,完整克隆虚拟机或导出OVF模板要靠谱得多。想转U盘物理启动,得提前在内核里集成好目标机器的磁盘驱动,属于高阶定制,新手不建议一上来就折腾这个。
最后分享一点个人习惯:我在虚拟机里每完成一个阶段目标,都会拍一张快照再继续往下走,装软件、改配置、练命令都遵循这个节奏,坏了就回滚,不心疼,这才是虚拟机的正确打开方式。如果你刚接触Linux,建议就从一台CentOS虚拟机开始折腾,它给你充分的试错空间,试错恰恰是学Linux最快的方式。补充一个小技巧:虚拟机里卡死想强制返回宿主机时,按住Ctrl+Alt鼠标就会出来;想全屏显示,按Ctrl+Alt+Enter切换。希望这篇指南能让你少走一些弯路。