ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

虚拟机从入门到实战:创建配置、网络快照与高频排错指南

虚拟机从入门到实战:创建配置、网络快照与高频排错指南 1. 动手之前先把“为什么造”和“用什么造”想清楚接触到虚拟机多半是这几个场景开发同学想在一台机器上同时跑 Windows 和 Linux做联调、跑脚本、装中间件测试同学需要干净的隔离环境测完直接删掉不污染宿主机还有折腾党想装个老系统怀旧或者想试试不同发行版的体验又不想动自己正在用的电脑。虚拟机说白了就是用软件模拟出一台完整的计算机。你的物理机是“外面那台”虚拟机是跑在它上面的“里面那台”。这台虚拟机有自己的 CPU、内存、硬盘、网卡看起来是一台独立电脑实际上全靠宿主机的硬件资源养着。好处很明显环境彻底隔离搞坏了就删掉重来快照可以随时回滚一台物理机能同时开好几个系统互不干扰。我自己的主力场景有三个一是搭开发环境比如 Nginx 多站点、Redis、MySQL 全塞到虚拟机里宿主机只留 IDE二是做系统实验比如折腾新出的 Linux 发行版、测试内核参数三是帮别人排查环境问题用干净的虚拟机复现比在对方机器上乱改安全得多。1.1 选哪款虚拟机软件VMware Workstation 还是 VirtualBox这是新手接触到的第一道选择题。两个方案我都用了很多年分别说说我的真实感受。VMware Workstation Pro是商业软件2024年5月之后对个人用户免费了个人非商用条件下可以用 Pro 版本。它的优势在成熟稳定、性能优化做得好、生态完整。图形界面不花哨但该有的功能一个不少比如快照管理、虚拟机克隆、拖拽文件、共享剪贴板、Unity 模式Windows 里直接显示 Linux 应用窗口。很多教程默认用它遇到问题时搜资料也最容易找到答案。VirtualBox是 Oracle 出品的开源方案完全免费、跨平台Windows、Linux、macOS 都能装。胜在轻量和开源安装包很小宿主机的硬件要求也低。对新手的缺点是不太“省心”——增强功能Guest Additions偶尔会跟新版本内核编译不兼容USB 设备映射偶尔要手动折腾性能比起 VMware 也略逊一筹。如果你在 Mac 上现在主要是 VMware Fusion Pro也免费了和 UTM 两个选择VirtualBox 在 Apple Silicon 上一直没做好不太建议。我个人的倾向是追求省事、稳定直接上 VMware Workstation Pro如果你极度反感商业软件或者机器配置比较低就用 VirtualBox。下面的教程以 VMware 为主讲但大多数步骤在 VirtualBox 里也是同样的逻辑只是菜单叫法略不同。1.2 动手前先确认这几件事所谓的“无法启用虚拟机平台”、“CPU 虚拟化被禁用”、“VT 不可用”大部分都是没做下面这些检查。第一确认 CPU 虚拟化已在 BIOS 中开启。无论是 Intel 的 VT-x 还是 AMD 的 SVM默认很多主板是关闭的。进 BIOS 的方法因品牌而异通常是开机时按 Del 或 F2找 “Intel Virtualization Technology” 或 “SVM Mode”设为 Enabled 后保存重启。注意笔记本可能在 CPU 配置的高级菜单里多翻翻。第二确认宿主机内存和磁盘富余。虚拟机是实实在在吃资源的。装个 Ubuntu Server 至少要 2GB 内存Windows 10/11 至少要 4GB加上宿主机自己用8GB 内存的电脑跑一台重负载虚拟机已经非常吃力了。磁盘方面推荐预留 60GB 以上空间虽然创建时可以动态分配但装完系统加完软件后空间占用量会一路涨上去。第三Windows 宿主机的 Hyper-V 冲突问题。新版 Windows 自带的 Hyper-V、内存完整性内核隔离、WSL、Windows Sandbox 都会占用虚拟化层跟 VMware/VirtualBox 抢资源。热词里那句反复出现的“无法启用虚拟机平台”“请您确保您有权运行该程序”多半就是这类冲突引起的。如果你的 Windows 开了“基于虚拟化的安全”或 WSLVMware 可能直接打不开虚拟机或蓝屏。解决办法有两个方向要么关掉 Hyper-V 相关功能要么改用 Hyper-V 本身别混着用。注意我踩过最大的坑就是新装 Windows 默认开着内核隔离VMware 一启动虚拟机就报“VMware Workstation 无法连接到虚拟机”折腾半天才发现是这玩意儿在捣乱。具体排查在本文第 7 部分会展开。2. 创建虚拟机的正式流程一步一步来别被向导吓到用 VMware 新建虚拟机的流程其实就那么几个关键选择一旦理解每个选项在干嘛以后闭着眼都能建。2.1 新建向导里的几个关键选项打开 VMware Workstation选“文件 → 新建虚拟机”建议直接选“自定义高级”别选“典型”。典型模式虽然省事但很多细节比如固件类型、虚拟磁盘类型、CPU 数量它替你做了决定后面想改反而麻烦。向导会让你选兼容性版本保持默认即可除非你需要在旧的 VMware 版本上打开这台虚拟机才手动降低。接下来选择安装介质三个来源来源适用场景说明从 ISO 镜像安装最常用提前下载好系统镜像让虚拟机从光驱引导稍后安装操作系统想手动调整配置时先建空虚拟机再挂载 ISO 启动物理光盘或磁盘极少用现在几乎没有物理光驱了可以直接忽略我的习惯是选“稍后安装操作系统”因为可以先把虚拟机硬件配置调整好再启动装系统避免装到一半才发现磁盘不够这种尴尬局面。然后是客户机操作系统选择如果装 Ubuntu就选 Linux版本选 Ubuntu 64 位装 Windows就选 Microsoft Windows版本选对应系统。这一步别选错它其实在帮你预设一些参数比如磁盘控制器类型、CPU 的虚拟化特性是否透传、声卡网卡模型等选错了后面会出兼容性问题。2.2 CPU、内存、磁盘怎么分这里有我的判断逻辑这几个参数是新手纠结最多的地方其实没有唯一答案但可以参考我用了多年的分配思路。CPU工作站默认一个 CPU 一个核就够用编译大型项目时再加大。一般建议给 2-4 核。别贪多CPU 核数并不是越大越好虚拟机里跑单线程任务时核再多也没用反而导致宿主机卡顿。还要注意“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”这个勾选这是硬件加速的关键保持打勾。内存我的习惯公式是宿主机物理内存的一半以内拿来分给虚拟机且单台虚拟机不超过 8GB。比如 16GB 内存的电脑宿主机留 8GB虚拟机最多分 8GB。Ubuntu Server 其实 2GB 就转得动桌面版建议 4GBWindows 10/11 至少 4GB。内存分配还有个小技巧别把“立即分配所有内存”勾上。不勾的话虚拟机按需占用宿主机内存如果你同时开好几台空闲虚拟机不会一上来就把宿主机吃满。磁盘存储类型选“创建新虚拟磁盘”磁盘大小建议 60GB 起。比较关键的是“将虚拟磁盘拆分成多个文件”还是“存储为单个文件”——拆分成多个文件方便迁移和备份单个文件性能稍好、管理简单我习惯选单个文件因为可以随时再扩容。磁盘类型选择VMware 提供 IDE、SCSI、SATA 和 NVMe 几种。默认推荐 NVMe新系统完全支持性能也最好。老 Linux 内核里没有 NVMe 驱动的话选 SCSI 更稳它兼容性最广。2.3 固件类型UEFI 还是 BIOS这一项隐藏在“自定义”里很不起眼但它跟后面能不能正常启动强相关。新版系统Windows 11、Ubuntu 22.04、Debian 12推荐 UEFI 固件配合 GPT 分区表启动更快也支持 Secure Boot。老系统或镜像比较特殊的比如某些精简版的 Windows反而用传统 BIOS 兼容性更好。判断方法很简单你下载的 ISO 如果支持 UEFI 启动现在主流发行版基本都支持就选 UEFI不确定的话先选 BIOS反正现在绝大部分镜像还是带 BIOS 引导的。装到一半发现启动不了改固件类型要重装所以这一项值得提前确认。3. 挂载镜像与安装系统Ubuntu 和 Windows 各自的注意点3.1 用 ISO 启动虚拟机在虚拟机设置里找到“CD/DVD”选择“使用 ISO 镜像文件”浏览到下载好的系统 ISO。然后点击“开启此虚拟机”正常情况下会从 ISO 引导进入系统安装界面。如果发现它没有从 ISO 启动而是直接进了硬盘其实硬盘是空的可能直接黑屏或提示找不到系统需要进入虚拟机 BIOS 界面把 CD-ROM 或光驱启动顺序调到第一位。在 VMware 里开启虚拟机时快速按 F2 就能进虚拟机的 BIOS操作和真实电脑一样。3.2 Ubuntu 安装要点分区是最容易懵的一步Ubuntu 的安装图形界面很友好大部分是点选操作。但有两个位置要留心。语言和键盘布局按自己习惯选更新时建议选“正常安装”别勾“安装第三方软件”那个要联网下载费时间不说在虚拟机上也没必要。会提示你擦除磁盘这是对整块虚拟磁盘进行操作跟你物理机的真实磁盘没关系放心选。在虚拟机层面“擦除整个磁盘”只是清理那块虚拟出来的硬盘不会动宿主机的数据。分区的细节值得展开说。新手可以直接用“使用整个磁盘”让安装器自动分配系统用起来没问题。但如果你打算以后做开发、做服务器我建议手动分区。我的常用分区方案挂载点大小类型说明/20-30GBext4系统根分区程序文件、系统库都在这里/home剩余空间ext4个人数据和软件配置swap4GBswap交换分区内存不够时用来救急根分区单独分配是因为重装系统时可以保留 /home 的数据swap 给 4GB 就够了毕竟虚拟机内存是共用宿主机的/home 留大点以后装 Docker 镜像、源代码都放这。另外注意“安装启动引导器”要选在虚拟磁盘上默认就是 /dev/sda 或 nvme0n1p1千万别手贱把它指到物理机的磁盘中去虽然安装器一般不会让你选到宿主机磁盘但小心没坏处。3.3 Windows 安装要点Windows 安装相对傻瓜式关键是几个容易卡住的地方。输入产品密钥那一步可以直接点“我没有产品密钥”装完再激活也行。版本选择建议直接上专业版家庭版很多开发功能缺失。分区界面如果提示无法创建分区多半是磁盘类型不对——这就要回到前面说的固件设置和磁盘控制器了。装 Windows 11 有个坑默认会要求 TPM 芯片和 Secure Boot虚拟机里没有实体 TPMVMware 提供“虚拟 TPM”功能在虚拟机设置的“可信平台模块”里添加即可。如果你在创建时用的是 UEFI 固件这个选项就会出现。另外热词里有人提到的“win11虚拟机安装出现 boot”大概率就是 UEFI 引导文件问题解决办法是确认固件类型和启动盘都是 UEFI或者改用 BIOS 引导重装。装完 Windows 后千万别急着联网更新一堆驱动先在虚拟光驱里把 VMware Tools 装上。3.4 装完第一件事装虚拟机增强工具VMware ToolsVirtualBox 里叫增强功能是虚拟机里最重要的驱动和工具集合。它提供显卡驱动让虚拟机分辨率能跟窗口自适应缩放提供拖拽、剪贴板共享能让宿主机和虚拟机之间直接复制粘贴文本、拖文件还提供时间同步、内存回收等优化。对 Ubuntu 来说最简单的安装方式是在终端里执行sudo apt update sudo apt install open-vm-tools open-vm-tools-desktopWindows 系统则是从 VMware 窗口菜单的“虚拟机 → 安装 VMware Tools”里引导运行安装程序即可。个人经验Ubuntu 下 open-vm-tools-desktop 已经覆盖了剪贴板和拖拽功能不需要额外装 VM 自带那个 VMware Tools两边同时装了反而容易诡异。4. 虚拟机网络配置从能上网到多站点自定义域名4.1 三种网络的本质区别VMware 默认给虚拟机提供三种网络模式理解它们是一劳永逸的事因为以后所有网络问题基本都绕不开这里。NAT 模式默认虚拟机在虚拟机内部的一个专用子网里通过宿主机 NAT 转发上网。虚拟机能上网、能访问宿主机但局域网内其他机器访问不到虚拟机。适合只需上网、跟宿主机通信的开发环境。桥接模式虚拟机直接共享网卡在局域网里相当于一台独立设备有独立的局域网 IP可以被局域网其他设备直接访问。需要外部机器访问虚拟机的场景比如演示、联调就用这个。仅主机模式虚拟机只能跟宿主机通信不能上网也不能访问外部网络可以理解成一个完全封闭的私有环境适合做安全测试或纯隔离实验。选哪种不取决于“高级与否”而取决于你需不需要被外部访问。日常开发我几乎一直用 NAT然后通过端口映射让宿主机访问虚拟机的服务要模拟真实服务器节点时就切换到桥接模式。4.2 固定 IP 和宿主机互访用 NAT 模式时虚拟机的 IP 是 DHCP 动态分配的需要固定下来以便宿主机访问。我一般这样操作在 Ubuntu 里用 netplan 配置静态 IP。Ubuntu 的配置文件位于/etc/netplan/下文件名可能是01-network-manager-all.yaml或类似编辑方式network: version: 2 ethernets: ens33: dhcp4: false addresses: - 192.168.226.200/24 routes: - to: default via: 192.168.226.2 nameservers: addresses: [8.8.8.8, 223.5.5.5]这里的 IP 段要和 VMware NAT 网段一致在编辑 → 虚拟网络编辑器中查看 VMnet8 的网段和网关。修改后执行sudo netplan apply宿主机 ping 一下 192.168.226.200通了就说明配置正确。Windows 虚拟机固定 IP 就简单了网络适配器 → IPv4 → 属性里直接填。4.3 实战虚拟机里用 Nginx 搭建多站点开发环境这就是热词里“本地虚拟机 多端口nginx 开发环境多站点自定义域名配置”对应半场景。很多开发者喜欢在 Windows 上用 IDE 写代码但运行环境放在 Linux 虚拟机里因为生产服务器多半是 Linux。用 NAT 映射后浏览器里直接通过 localhost 访问虚拟机的服务体验上跟本机开发几乎没区别。先安装 Nginxsudo apt install nginx多站点配置的本质是给 Nginx 创建多个 Server 块每个 Server 监听不同端口或域名。假设要配两个站点# /etc/nginx/sites-available/demo1.conf server { listen 8081; server_name demo1.dev; root /var/www/demo1; index index.html index.php; }# /etc/nginx/sites-available/demo2.conf server { listen 8082; server_name demo2.dev; root /var/www/demo2; index index.html index.php; }创建符号链接并重载sudo ln -s /etc/nginx/sites-available/demo1.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/demo2.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx宿主机 Windows 侧的 hosts 文件C:\Windows\System32\drivers\etc\hosts里加上一行把域名解析到虚拟机的 IP192.168.226.200 demo1.dev 192.168.226.200 demo2.dev这样在宿主机的浏览器里输入http://demo1.dev:8081或http://demo2.dev:8082就能直接访问虚拟机里的两个站点了。这个方案我用了一年多非常稳。关键点是 NAT 模式下虚拟机 IP 要固定否则 hosts 配置的 IP 一变就全挂了。5. 快照、克隆与迁移这些“救命功能”一定要会用5.1 快照随时回滚的时间机器快照是虚拟机的核心价值之一。打个快照后可以随时恢复到当时的系统状态包括磁盘内容、系统配置、安装的软件。原理上它记录的是虚拟磁盘的变化块所以打快照很快占空间也小。我的习惯是装完干净系统、配好基础环境后打一个“基础快照”每次要大改系统前比如装内核、卸软件、改网络配置再打一个“改动前快照”。改出问题了一键回滚免去重装系统的痛苦。但有一点要记住快照不是备份。它依赖虚拟机磁盘文件本身如果那个大的 vmdk 文件损坏快照也救不回来。而且快照链越长性能影响越明显我一般保留最近两三个快照长期不用的就删掉。VirtualBox 里同样有快照功能只是命名叫“快照”操作逻辑一样。5.2 克隆和复制虚拟机复制物理机是不可能的但复制虚拟机非常简单。VMware 的“克隆”功能在虚拟机关闭状态下可用可以根据当前状态做链接克隆或完整克隆。完整克隆就是整机复制适合搭集群、开多个节点链接克隆依赖父虚拟机的磁盘文件不能脱离父镜像独立移动但创建快、省空间。还有一种方式是纯文件复制找到虚拟机目录默认在C:\Users\你的用户名\Documents\Virtual Machines\或你自定义的位置整个文件夹拷走拿到另一台电脑上用 VMware 打开.vmx后缀的配置文件就行。热词里有人提到“复制之后的 vbox 虚拟机无法打开”多半是 VirtualBox 的 UUID 冲突——每台虚拟机的UUID是唯一的直接复制整个目录到另一台机器VirtualBox 会拒绝打开需要在“管理 → 导出虚拟电脑”里导出再导入让 VirtualBox 自动生成新 UUID。VMware 对 UUID 冲突的处理要宽一些通常会提示选择“我已移动它”或“我已复制它”选“复制”即可。5.3 删除虚拟机的正确姿势删除虚拟机不是简单删文件夹。正确做法是先在 VMware 左侧栏选中虚拟机右键 → 管理 → 从磁盘中删除这样会同时移除虚拟机和所有相关磁盘文件。如果只是删了一部分文件剩余磁盘镜像残留会占用大量空间。还有个细节删除前记得看一下虚拟机磁盘文件的位置有些同学把虚拟机存在 D 盘但快照文件单独放在了 C 盘如果只删了 D 盘的目录C 盘残留的快照文件照样吃空间。6. 高频问题排查这些报错我基本都遇到过6.1 “无法启用虚拟机平台” / “VMware Workstation 无法连接到虚拟机”这个报错在 Windows 上的出现概率极高。前面提到的 Hyper-V 和内核隔离是两个首要怀疑对象。在 PowerShell管理员里执行systeminfo输出的最后几行如果有 “Hyper-V 要求: 已检测到虚拟机监控程序。将不启用 Hyper-V”说明 Hyper-V 或相关虚拟化功能被占用了。确认关闭后在“控制面板 → 程序和功能 → 启用或关闭 Windows 功能”里取消勾选 Hyper-V、虚拟机平台、Windows 虚拟机监控程序平台重启后再试。另一个原因是内核隔离的内存完整性在 Windows 安全中心 → 设备安全性 → 内核隔离里关掉。这个功能是 Windows 自带的安全机制和虚拟机软件的驱动冲突后虚拟机根本起不来。对开发环境来说关掉它对日常安全影响有限。6.2 “安装 Linux 时蓝屏”或“虚拟机启动蓝屏”热词里两条“vmware 驱动启动虚拟机蓝屏”“虚拟机安装linux蓝屏”都是同一类问题。多数原因是虚拟机的虚拟磁盘控制器和系统镜像里的驱动不匹配。举例较老版本的 Ubuntu 镜像里没有预装 NVMe 驱动你把虚拟磁盘类型设成 NVMe安装程序跑起来就蓝屏。解决办法是把磁盘类型改成 SATA兼容性最好或 SCSI再重新挂载镜像安装。还有可能是 CPU 虚拟化真的没开BIOS 里没把 Intel VT-x 打开虚拟机核心指令翻译慢到安装器加载驱动那个环节特容易蓝屏。去 BIOS 确认虚拟化开启后基本能解决。6.3 虚拟机里的鼠标变成一个小点或没反应热词里“vnc viewer 虚拟机鼠标变成一个点没反应”有两种情况一个是 VMware/VirtualBox 虚拟机内部的鼠标失效另一个是 VNC 远程连接时鼠标异常。前者一般是 VMware Tools 没安装好或者显卡驱动不匹配。装了增强工具后就会自动切换鼠标捕获模式正常显示指针。后者如果是 VNC 连接多半是用 SSH 隧道连的时候分辨率不匹配重新设置 VNC 会话的分辨率或者换用 x11vnc 这类软件鼠标问题就会消失。6.4 虚拟机关不了机、卡在启动界面虚拟机“关机”和物理机不完全一样。Windows 的“关机”在虚拟机里有时会变成唤醒。遇到这种情况在 VMware 菜单里选“虚拟机 → 关闭客户机”才是真正执行关机。开机卡在启动界面比如黑屏或停在某个 logo可以先试试“虚拟机 → 电源 → 重置”如果还是不行查看虚拟机的.log文件在虚拟磁盘目录下和.vmx配置是否异常。另一个容易忽略的是磁盘空间耗尽——虚拟磁盘动态增长时如果宿主机磁盘满了虚拟机会表现出启动严重卡顿甚至起不来这种情况在宿主机清理出空间后启动就正常了。6.5 这些问题也值得看一眼现象常见原因解决办法Ubuntu 虚拟机时间不准缺时间同步装 open-vm-toolsVMware 会自动同步虚拟机里无法全屏没装增强工具/显卡驱动安装 VMware Tools 或 open-vm-tools-desktop修改了虚拟 IP 但外网不通网关或 DNS 配错检查 NAT 网段网关是否一致创建虚拟机时主程序闪退版本冲突或配置损坏备份虚拟机目录后重置偏好设置虚拟机文件权限异常杀毒软件锁文件添加信任目录或临时关闭实时监控7. 背后的一些“为什么”想通之后就再也不会蒙圈7.1 为什么虚拟机会这么吃资源虚拟机本质是宿主机上面的一组进程。你给 Linux 分配 4GB 内存这些内存就是宿主机的内存。虚拟机里的 CPU 指令要经过虚拟化层翻译或硬件辅助加速转换有开销所以就算什么都不跑虚拟机也有基础折损。这不是软件不劳造成的而是虚拟化模型的固有成本所以合适地分配资源比硬件配置高更重要。7.2 为什么快照不是越多越好快照链是树状结构每个快照记录了相对父状态的差异。当快照层次特别深时磁盘 IO 每次需要回溯多层差异链性能下降非常明显。我见到有些同学每隔几分钟就打一个快照然后开着快照链做大量编译虚拟机的磁盘性能能慢上一倍。合理做法是用完就删保留少数关键点。7.3 为什么“复制虚拟机”比“重装系统”快那么多虚拟机可复制性来自它一切都是文件。重装系统要跑安装程序、写数据、装驱动动辄一小时复制文件只要文件系统层面拷贝几分钟就能完成。这也是我用虚拟机搭集群时最爽的一点三个节点就是三次复制配一下 IP 就完事。我的几个习惯供你参考如果这篇文章只留一段话我想说虚拟机不是“装一次用一次”的东西它是一个可持续维护的资产。我会给每台虚拟机命名规则定清楚比如ubuntu-dev-2204、win11-test-01快照也有统一命名习惯这样几个月后再翻出来一眼就知道它当初是干嘛的。我还会给每台虚拟机固定 IP因为网络配置是最容易忘的。现在轻量场景我甚至直接用vagrant管理虚拟机配置文件声明内存、CPU、端口映射、启动脚本要重建就直接vagrant destroy再vagrant up比手动点界面省心得多。VMware 和 VirtualBox 都支持 Vagrant如果你创建虚拟机的频率很高非常推荐了解下。最后一个小技巧虚拟机配置文件.vmx或.vbox是纯文本用记事本打开能改设备参数。比如想加个串口、加块硬盘不出大问题时直接改配置比走图形界面快。但改之前一定要先关闭虚拟机并且备份原文件——改坏了真的会打不开这点我试过。
返回列表