尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux 装进 VMware 虚拟机:从选型、安装到网络与开发环境实战

Linux 装进 VMware 虚拟机:从选型、安装到网络与开发环境实战 把 Linux 装进 VMware 虚拟机几乎是每个后端、运维、嵌入式方向的人绕不开的第一课。我从最早在宿舍笔记本上折腾双系统到后来习惯在 VMware Workstation 里开一台干净的 Linux 做实验前后换过七八种组合Ubuntu 桌面版、Debian 服务器版、CentOS Stream、Rocky、openEuler还有专门用来做网络与安全练习的 Kali。踩过的坑从装完没网到VMware Tools 报脚本未成功运行基本都经历过一遍。这篇就把 VMware 配置 Linux 系统的完整链路摊开讲——从选型、建机、装系统到换源、配网、装开发环境再到出问题怎么查。刚接触虚拟化的新手可以照着走一遍已经装过的可以重点看排查表和那些文档里不写的细节。1. 方案选型为什么把 Linux 装进 VMware 而不是裸机动手之前先想清楚为什么这么选比急着点下一步重要得多。很多人一上来就问装哪个发行版其实真正该先回答的是我到底需不需要一台完整的虚拟机。1.1 虚拟机、双系统、容器三条路的边界双系统是最硬的方案直接把硬盘划一块装 Linux开机时选引导。优点是性能无损适合跑对 CPU 和 IO 敏感的任务缺点是分区操作有风险一旦引导写坏宿主机也可能进不去而且每次切换系统要重启做实验的节奏会被打断。我早年用双系统学 Linux最大的痛苦不是难学而是想查个资料还得重启回 Windows。容器方案比如各类轻量级 Linux 运行环境胜在启动快、占资源少适合做纯应用层开发。但它默认和宿主机共享内核涉及内核模块加载、文件系统挂载、网络协议栈细节、systemd 服务管理的实验容器里做起来会打折扣。有些运行环境甚至默认不带完整的 init 系统你systemctl一敲就报错。VMware 虚拟机走的是中间路线一台完整的、有独立内核的计算机跑在宿主机的软件层里。它能做快照装崩了一键回滚能克隆一台配好当模板复制出十台出问题最多删掉重来宿主机毫发无损。代价是要多占一份内存和磁盘性能有 10% 到 20% 的损耗具体看负载类型。我的经验判断很简单只是想学 Linux 命令、跑跑服务、搭开发环境虚拟机是性价比最高的选择。要长期跑高负载编译、数据库压测考虑双系统或独立的物理机/服务器。只做应用层开发、不需要碰系统底层轻量级运行环境更省事。1.2 VMware Workstation 版本与授权这件小事网上搜vmware 下载跳出来的结果一半是官网一半是各种打包站。我的建议只有一句从官方渠道下载安装包。第三方打包的安装包有可能被塞进额外组件装完系统莫名其妙多出计划任务排查起来非常费劲。版本上Workstation Pro 17 是目前主流对 Windows 11 宿主机、NVMe 磁盘、虚拟化嵌套的支持都比较完善。至于密钥这件事我想说得直接一点网络上流传的各种来路不明的授权码既容易失效也可能带来合规风险。正规做法是用官方提供的试用期或者走官方渠道获取授权个人用户在部分地区还可以按官方政策申请免费使用许可。别为了省点事给后面的工作埋雷。1.3 宿主机硬件预算先把账算清楚再开机虚拟机的资源是从宿主机身上切出来的切多了两边都卡。给你一套我常用的估算方法。内存是最先要算的。宿主机 16GBWindows 或 macOS 系统自身吃 4 到 6GB浏览器再吃 3 到 4GB留给虚拟机的舒适区间是 4 到 6GB。想开两台虚拟机做集群实验比如一台装数据库、一台跑应用那宿主最好上 32GB。经验值给 Linux 虚拟机的内存不要低于 2GB桌面版最好 4GB 起纯命令行服务器版 1GB 也能跑但编译代码会很慢。CPU 看物理核心数。8 核 16 线程的机器给虚拟机分 2 核对应 2 个虚拟 CPU比较稳妥分太多反而会因为调度竞争变慢。有一个坑必须提前确认虚拟化需要 CPU 的硬件辅助虚拟化功能Intel 平台叫 VT-xAMD 平台叫 AMD-V需要在 BIOS 或 UEFI 里打开。Windows 上还经常被 Hyper-V 及其相关功能比如某些安全功能、WSL2、沙盒抢占装完发现 VMware 提示已禁用虚拟化就是这个原因关掉对应功能重启即可。磁盘方面40GB 是够用的下限做开发环境建议 60 到 80GB要装数据库加大量镜像就 100GB 起。VMware 默认的精简置备意味着它不会立刻吃掉全部空间而是用多少占多少所以给大一点不吃亏。2. 前期准备镜像、网络与参数的确定准备工作做扎实安装过程能省一半时间。这一步的核心是三件事镜像从哪来、网络怎么通、参数怎么定。2.1 Linux 发行版怎么选别被名字绕晕发行版之争是个老话题但对新手来说判断依据其实很朴素你要用它干什么。想学通用 Linux、生态最友好、遇到问题最好搜Ubuntu 桌面版是首选服务器场景用 Ubuntu Server。它的包管理和文档生态最厚新手出错时最容易找到答案。想要稳定、干净、不折腾Debian 的服务器版。软件版本偏保守但极其可靠。企业环境、跟工作对齐Rocky Linux、AlmaLinux 这类与 RHEL 生态兼容的发行版很多公司的服务器就是这批。想了解国内自研发行版openEuler、Anolis OS 这类可以试试包管理和操作习惯跟主流发行版接近学习成本不高。做网络与安全方向的练习Kali Linux 预装了大量工具适合放在隔离网络里做实验但不要把它当成日常开发机工具太多反而乱。下载镜像时记得校验完整性。Ubuntu 官方会提供 SHA256 校验值下载完执行一次比对# Linux / macOS sha256sum ubuntu-24.04.1-desktop-amd64.iso # Windows PowerShell Get-FileHash .\ubuntu-24.04.1-desktop-amd64.iso -Algorithm SHA256校验值不一致说明文件下坏了或者被替换过别硬装重新下。这一步只要十秒能帮你避开后面一堆莫名其妙的安装报错。另外提醒一句Ubuntu 的桌面版镜像大约 5GB服务器版不到 3GB。如果你只是练命令别下桌面版光图形界面就吃掉 1.5GB 内存2GB 内存的虚拟机装桌面版会卡到怀疑人生。2.2 三种网络模式选错了后面全是坑这是新手最容易糊涂的地方。VMware 提供三种主要网络模式本质区别在于虚拟机的网卡挂在哪个虚拟交换机上。模式虚拟机能否上网宿主机能否访问虚拟机局域网其他机器能否访问典型场景桥接Bridged能能能要把服务开放给同事访问模拟真实服务器NAT能能需要做端口转发只做开发、学习最省心仅主机Host-Only不能除非另配网卡能不能隔离实验、断网测试、安全练习我的默认选择是 NAT因为它在绝大多数网络环境包括公司内网、公共网络下都能用不需要额外申请 IP宿主机换个地方上网虚拟机也跟着走。缺点是外部设备访问虚拟机需要配置端口转发在编辑 - 虚拟网络编辑器里选中 NAT 模式对应的网段添加一条映射把宿主机某个端口转发到虚拟机的指定端口比如宿主 2222 映射到虚拟机 22外部就能通过 SSH 连进来。桥接模式看起来更真实但有个常见坑公司网络通常用 DHCP 分配地址如果做了 MAC 地址绑定或者地址池很小桥接的虚拟机可能拿不到 IP表现就是网络图标正常但 ping 不通任何东西。遇到这种情况别急着改系统配置先切回 NAT 试试大概率能通。只主机模式我一般这么用宿主机的虚拟网卡和虚拟机在同一个网段但虚拟机不能出外网。做隔离测试、观察程序在无网络环境下的行为、或者避免某些软件偷偷联网时非常合适。2.3 磁盘类型与文件组织方式的实际影响创建虚拟机时会问磁盘类型主要选项是 SCSI 和 NVMe。现在都建议选 NVMe配合 SSD 宿主随机 IO 表现明显更好老系统或者需要兼容旧内核的选 SCSI。还有一个选项是将虚拟磁盘存储为单个文件还是拆分成多个文件。单个文件性能略好、拷贝方便拆分文件在复制到 FAT32 移动硬盘时不会因为超过 4GB 而失败也便于分段管理。我的做法是本地 SSD 上用单个文件需要搬来搬去时用拆分。3. 虚拟机创建与系统安装实操准备工作做完真正的安装就二十来分钟。但这个阶段有几个默认选项必须手动改掉否则后面要返工。3.1 新建向导里那几个必须改的选项打开新建虚拟机会问你用典型还是自定义。选自定义。典型的默认值太粗糙尤其是它可能直接把 ISO 挂上并尝试简易安装。关键的一步是在客户机操作系统选择界面之后选稍后安装操作系统。原因是选了这个VMware 才把所有决定权交给你——分区方案、用户创建、软件包选择。如果你直接挂 ISO 让它自动装某些发行版会用预设的 LVM 布局和最小化软件集装完发现连中文输入法、网络工具都没有还得回头补。接下来逐项客户机操作系统类型选 Linux版本按实际选。选错了不会装不上只是默认参数内存、磁盘、显卡可能给得不合适。处理器按前面算的给比如 2 核。内存桌面版 4GB服务器版 2GB。网络先用 NAT。控制器NVMe。磁盘60GB 起精简置备。最后在自定义硬件里把 CD/DVD 指向你下载好的 ISO并确认启动时连接被打勾。虚拟机配置全部记录在.vmx文本文件里同目录下还有.vmdk磁盘文件、.nvram固件变量文件。以后遇到虚拟机起不来可以直接打开.vmx看参数比在图形界面里翻菜单快得多。3.2 安装界面里的分区与用户设置启动虚拟机进入安装程序。语言选中文或英文都行服务器环境我建议直接用英文避免中文文件名和日志编码带来的麻烦。分区是这一步的核心。Ubuntu 可以选择清除整个磁盘并安装对于虚拟机来说完全够用因为整块磁盘都是它的不用担心误删宿主机数据。但如果你想练手用手动分区EFI 引导分区512MB格式 EFI 系统分区。UEFI 启动必须有。交换分区 swap内存 2GB 给 2GB内存 8GB 以上给 4GB 就够。它的作用是内存不够时临时顶一下以及休眠时存放内存内容。根分区/剩下的全部格式 ext4。老式 BIOS 引导不需要 EFI 分区但建议单独分一个/boot给 1GB方便内核更新时不会因为根分区满而失败。这个坑我踩过根分区塞满到 100%新内核装不进去apt upgrade直接卡死报错。用户设置上有个细节。Ubuntu 安装时会让你创建一个普通用户同时可以选择是否给 root 设置密码。我的习惯是普通用户 sudo 提权不给 root 设密码。这样所有危险操作都会被 sudo 拦一下多一次思考少一次事故。安装过程中还会问要不要装第三方软件和更新桌面临时用可以勾上服务器环境建议不勾装完换源再统一更新速度快很多。3.3 装完第一件事打快照 装 VMware Tools系统装完、还没做任何配置时先打一个快照。这是我这十年里最省钱的一个习惯。快照名字写成01-系统初始安装完成后面每完成一个阶段再打一个。装崩了直接回滚比重新装一遍快十倍。快照占磁盘空间别打太多也不要在有大量写入的数据库运行状态下打。我的策略是保持三到四个关键节点快照定期清理旧的。快照文件是.vmsn和.vmsd存在虚拟机目录下删快照要在界面里删别手动删文件会破坏磁盘链。然后装 VMware Tools。这一步决定了你能不能全屏、能不能复制粘贴、能不能用共享文件夹。新版本发行版推荐用开源的 open-vm-toolssudo apt update sudo apt install -y open-vm-tools open-vm-tools-desktop sudo systemctl restart open-vm-tools桌面版要装open-vm-tools-desktop服务器版只装open-vm-tools就行。装完重启分辨率应该能自适应窗口剪贴板也能互通了。如果系统提示VMware Tools 继续运行脚本未能在虚拟机中成功运行先别慌。这个报错通常不是 Tools 坏了而是它挂载 ISO 后执行安装脚本时因为你已经有 open-vm-tools 而中断。检查一下# 看服务状态 systemctl status open-vm-tools # 看内核模块是否加载 lsmod | grep vmw模块在、服务是 running 状态功能正常报错可以忽略。如果功能真不正常先sudo apt remove open-vm-tools卸干净再重装或者临时手动挂载 Tools 的 ISO 走一遍安装。4. 系统初始化换源、网络、中文环境与远程连接装好的系统只是个毛坯房这一步是装修。我把这段时间分成四块每块都有几个必踩的坑。4.1 换源与系统更新的正确姿势默认软件源在国外更新速度可能慢到你想放弃。换成国内镜像站点是标配动作。以 Ubuntu 24.04 为例配置写在/etc/apt/sources.list.d/ubuntu.sources旧版本在/etc/apt/sources.list。动手前先备份sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak然后把地址替换成清华、中科大或者阿里云的镜像站点。注意要跟你的发行版代号严格对应Ubuntu 24.04 是 noble22.04 是 jammy写错了会报 404。# 查看系统代号 lsb_release -cs # 更新索引并升级 sudo apt update sudo apt upgrade -y关于网上流传的各种一键换源脚本和第三方源聚合配置工具我的态度是谨慎。它们确实省事但引入了你无法核实的源地址和签名密钥。软件源本质上是把系统安装软件的权限交给了对方一旦源被替换风险很大。能用官方镜像站解决的问题不要用来源不明的脚本。如果确实要加第三方源至少自己打开配置文件看一眼地址和签名密钥是否来自可信机构。另外提醒apt upgrade如果升级了内核需要重启才会生效。重启后如果出现新内核起不来在 GRUB 菜单里选旧内核进去把新内核包卸载掉再查原因。4.2 网络与 DNSping 通 IP 却打不开网页怎么办虚拟机的网络问题九成出在 DNS。判断方法很简单ping -c 3 223.5.5.5 # 通说明链路没问题 ping -c 3 www.baidu.com # 不通基本就是 DNS 的问题Ubuntu 桌面版用 NetworkManager服务器版从 18.04 起默认用 netplan 配置。netplan 的配置文件在/etc/netplan/下YAML 格式对缩进极其敏感必须用空格缩进绝不能用 Tab这是新手最容易犯的错。一个静态 IP 的配置示例network: version: 2 ethernets: ens33: dhcp4: false addresses: - 192.168.10.100/24 routes: - to: default via: 192.168.10.2 nameservers: addresses: [223.5.5.5, 119.29.29.29]写完执行sudo netplan try # 带 120 秒自动回滚的试运行强烈推荐 sudo netplan applynetplan try这个命令值得单独夸一句它应用配置后如果 120 秒内没确认会自动回滚。远程改网络配置时用它可以救命——配置写错导致断连它会自动改回来。如果改完/etc/resolv.conf里的 DNS重启又变回去了那是被systemd-resolved覆盖了。别直接改这个文件正确做法是在 netplan 或 NetworkManager 里配置 DNS。要临时调试可以resolvectl status resolvectl query www.example.com排查网络链路我习惯按这个顺序走ip a看网卡有没有地址ip r看默认路由在不在ping网关ping外部 IPdig域名。每步定位一层比瞎试快得多。4.3 中文显示、时区与解压乱码linux 解压文件乱码是个高频搜索词根源在于压缩包是用 GBK 编码打包的而 Linux 默认 UTF-8 解码。先用locale确认语言环境如果输出里有LANGC或POSIX说明没启用 UTF-8。生成并设置sudo locale-gen zh_CN.UTF-8 en_US.UTF-8 sudo update-locale LANGzh_CN.UTF-8重启后中文文件名就能正常显示了。服务器环境我建议同时保留en_US.UTF-8因为很多程序的英文日志比中文翻译更好搜。解压乱码的几种解法# unzip 指定编码部分版本支持 unzip -O CP936 archive.zip # 用 7z兼容性更好 7z x archive.zip # 用 unar自动探测编码 unar archive.zipunar是我最推荐的它会自动判断压缩包编码并转成 UTF-8省心。如果系统没有sudo apt install unar装上。ZIP 里的文件名其实有编码标记位只是很多打包工具不写。真要彻底避免打包时就用 UTF-8跨平台传文件尽量用 tar.gz。时区也要设对不然日志时间对不上timedatectl set-timezone Asia/Shanghai timedatectl status4.4 SSH 与终端体验优化服务器版系统默认可能没装 SSH 服务先装上sudo apt install -y openssh-server sudo systemctl enable --now ssh然后改/etc/ssh/sshd_configPermitRootLogin no禁止 root 直接登录攻击面小很多。PasswordAuthentication内网练习可以开着一旦要暴露到更大范围改成no并用密钥登录。Port改默认端口能减少自动化扫描的噪音但别指望它是安全手段。配置免密登录三行搞定ssh-keygen -t ed25519 -C vm-dev ssh-copy-id user192.168.10.100 ssh user192.168.10.100防火墙记得放行Ubuntu 用 ufwsudo ufw allow 22/tcp sudo ufw enable sudo ufw status终端体验上我建议至少装 tmux。远程连接断开时tmux 里的任务不会跟着死掉这个价值在跑长时间编译或部署时非常明显。想更舒服就换 zsh 加 oh-my-zsh但要记住换了 shell 之后原来的环境变量文件和脚本可能不生效排查问题时要意识到这一层。5. 开发环境落地JDK、Maven、Node、Git、MySQL、VS Code系统配好了接下来按实际项目需要装环境。这一节的顺序是按从底层到应用排的你可以按需跳着看。5.1 JDK 与 Maven环境变量那点事装 JDK 最省事的方式是用发行版仓库sudo apt install -y openjdk-17-jdk java -version如果要多个版本共存用 update-alternatives 管理sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 100 sudo update-alternatives --config java环境变量别直接写在~/.bashrc里尤其是需要给服务用的。写在/etc/profile.d/java.sh更规范export JAVA_HOME/usr/lib/jvm/java-17-openjdk-amd64 export PATH$JAVA_HOME/bin:$PATHJAVA_HOME配错的典型症状是 Maven 报找不到 javac或者 Tomcat 起不来。注意JAVA_HOME要指向 JDK 根目录不是bin目录这是最常见的错误。Maven 用压缩包安装比较灵活sudo tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /opt/ sudo ln -s /opt/apache-maven-3.9.9 /opt/maven然后配/opt/maven/conf/settings.xml主要是两件事本地仓库位置和镜像站点。国内网络环境下不加镜像拉依赖会等到天荒地老。localRepository/data/maven-repo/localRepository mirror idaliyun/id mirrorOfcentral/mirrorOf urlhttps://maven.aliyun.com/repository/public/url /mirror把localRepository放到数据盘是个好习惯虚拟机磁盘不够时可以直接扩数据盘不影响根分区。5.2 Node.js别用系统自带的老版本系统仓库里的 Node 版本往往很旧前端项目直接报错。推荐用 NodeSource 仓库装curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node -v npm -v或者用版本管理工具方便在多个版本间切换。npm 的镜像也要换否则装依赖同样慢npm config set registry https://registry.npmmirror.com npm config get registry一个高频坑是全局安装时权限不足。有些人直接sudo npm install -g长期下来会把~/.npm里的文件权限搞乱。正确做法是配置用户级的全局目录mkdir -p ~/.npm-global npm config set prefix ~/.npm-global echo export PATH~/.npm-global/bin:$PATH ~/.bashrc source ~/.bashrc5.3 Git装完必做的三项配置sudo apt install -y git git config --global user.name your-name git config --global user.email youexample.com git config --global core.autocrlf inputcore.autocrlf这个配置很容易被忽略。跨 Windows 和 Linux 协作时换行符不一致会让整个文件在 diff 里显示为全改。Linux 端设成input比较合适。如果提交要免密配 SSH 密钥ssh-keygen -t ed25519 -C youexample.com cat ~/.ssh/id_ed25519.pub把公钥内容加到代码托管平台的 SSH 设置里。验证一下连通性看到欢迎信息就说明成了ssh -T gitgithub.com凭证存储用git config --global credential.helper store可以让 HTTPS 方式记住一次输入但它是明文存在家目录的共享机器上别用。5.4 MySQL装完必须改的三处配置sudo apt install -y mysql-server sudo systemctl enable --now mysql sudo mysql_secure_installationmysql_secure_installation会引导你设置 root 密码策略、删除匿名用户、禁止 root 远程登录、删除测试库。这几步全都建议选是。然后改字符集默认的字符集处理中文和特殊符号容易出问题。在/etc/mysql/mysql.conf.d/mysqld.cnf里加[mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci bind-address 127.0.0.1utf8mb4而不是utf8因为 MySQL 里的utf8其实是不完整的实现存某些字符会失败。bind-address设成127.0.0.1表示只监听本机这是虚拟机里跑数据库的默认安全姿势。如果宿主机上的客户端要连改成虚拟机网卡的实际地址同时创建只允许特定来源 IP 访问的账号CREATE USER dev192.168.10.% IDENTIFIED BY strong-password; GRANT ALL PRIVILEGES ON dev_db.* TO dev192.168.10.%; FLUSH PRIVILEGES;千万别图省事用dev%加弱密码虚拟机一旦切到桥接模式整个局域网都能试你的密码。忘了 root 密码也不用重装停掉服务用--skip-grant-tables方式启动改完再正常重启即可。5.5 VS Code 与 C/C、Python 环境配置写代码不必在虚拟机里开图形界面。用 VS Code 的远程开发功能宿主机的编辑器直接连虚拟机的文件系统体验是本地级的。流程是装好 VS Code安装远程开发相关扩展配置 SSH 主机信息然后连上去。连接成功后扩展是装在远端虚拟机上的所以编译器、调试器也都要在虚拟机里装sudo apt install -y build-essential gdbC/C 的调试配置核心是两个文件tasks.json描述怎么编译launch.json描述怎么启动调试。最关键的是miDebuggerPath要指向正确的 gdb 路径程序路径program要和编译输出一致。报找不到调试器基本都是这里写错了。Python 环境我强烈建议用虚拟环境不要往系统 Python 里装包sudo apt install -y python3-venv python3-pip python3 -m venv ~/venv/myproject source ~/venv/myproject/bin/activate pip install -r requirements.txt系统 Python 被发行版用于自身工具链装乱了可能连apt都用不了这个坑不夸张真有人遇到过。6. 常见问题与排查速查表这一节是整篇最实用的部分全是实际操作中撞出来的。6.1 高频故障现象与处置方法现象常见原因处置方法VMware Tools 提示继续运行脚本未成功运行已装 open-vm-tools挂载 ISO 的安装脚本中断检查systemctl status open-vm-tools功能正常则忽略虚拟机无法全屏、分辨率固定未装桌面版 Tools 组件安装open-vm-tools-desktop并重启复制粘贴在宿主机与虚拟机间失效Tools 服务未运行重启 open-vm-tools 服务或重装桥接模式拿不到 IP公司网络做了 MAC 绑定或地址池不足切 NAT 模式或手动配静态 IP宿主机 ping 不通虚拟机防火墙拦截检查 ufw / firewalld 规则放行 ICMP 或对应端口ping 通 IP 但域名解析失败DNS 配置被覆盖或写错用resolvectl排查在 netplan 里配 DNSnetplan 应用后直接断网YAML 缩进用了 Tab 或字段写错用netplan try试运行让其自动回滚中文文件名显示为乱码系统 locale 不是 UTF-8生成并设置zh_CN.UTF-8解压 ZIP 后文件名乱码压缩包为 GBK 编码用7z或unar解压克隆后网络冲突MAC 地址、machine-id 重复重新生成 machine-id重置网卡 MAC磁盘空间不足日志、缓存、快照堆积清理日志删旧快照扩展虚拟磁盘虚拟机时间与宿主机不一致Tools 时间同步未生效安装 open-vm-tools开时间同步配 NTP6.2 克隆与快照的三个隐藏坑克隆虚拟机做集群实验很方便但有三个地方必须处理否则会出现两台机器互相打架。第一是 MAC 地址。VMware 克隆时可以选择重新生成 MAC一般建议重新生成。如果保留原 MAC同一网络里两台机器抢同一个地址网络会时通时断非常难查。第二是 machine-id。Linux 的/etc/machine-id是系统唯一标识克隆后会重复影响 DHCP 行为和某些服务。处理方式sudo rm /etc/machine-id sudo systemd-machine-id-setup sudo hostnamectl set-hostname node2第三是主机名。两台都叫同一个名字SSH 连上去自己都分不清连的是哪台。快照的坑则是空间。快照不是备份它是记录差异块虚拟机跑得越久快照文件越大。我见过有人开着快照跑了三个月磁盘涨了 80GB。建议快照只保留关键节点做完实验就删。6.3 磁盘扩容的完整流程根分区满了不想重装可以扩容。先在 VMware 界面里把磁盘从 60GB 扩到 100GB然后在系统里操作# 查看磁盘和分区 lsblk # 扩展分区假设根分区在 /dev/sda3 sudo growpart /dev/sda 3 # 如果是 LVM扩展逻辑卷 sudo pvresize /dev/sda3 sudo lvextend -l 100%FREE /dev/ubuntu-vg/ubuntu-lv # 扩展文件系统 sudo resize2fs /dev/ubuntu-vg/ubuntu-lv # 如果根分区不是 LVM 而是直接分区 sudo resize2fs /dev/sda3顺序很重要先扩物理分区再扩逻辑卷最后扩文件系统。跳步会报错。growpart命令可能需要装cloud-guest-utils才有。操作扩容前一定打快照分区表操作失误可能导致整个系统起不来。7. 一些长期使用后的经验判断虚拟机跑 Linux 这件事装一次是入门用顺手了才是本事。分享几条我自己总结的判断标准。关于快照策略我始终保持干净系统和环境配好两个基础快照中间阶段的实验随便造出问题回到基础点。这样既有回滚能力又不会让快照链长到影响性能。关于资源分配宁少勿多。给虚拟机分配过多内存宿主机一卡虚拟机也会跟着卡。CPU 核心同理分 2 个核的虚拟机通常比分 4 个核跑得更稳。关于共享文件夹它的性能一般不适合当工作目录。我一般只用它传文件代码还是放在虚拟机本地磁盘。如果发现共享目录看不见先确认 Tools 装的是桌面版再检查vmhgfs-fuse挂载状态。关于宿主机与虚拟机的网络连接方式日常用 NAT需要给同事演示服务时临时切桥接用完切回来。切换后 IP 会变记得更新 SSH 配置。关于内核与驱动更新内核后重新编译过的模块可能需要重装。open-vm-tools 走的是发行版仓库通常跟着内核一起更新不用手动处理这也是我推荐它而不是官方 ISO 的原因。最后一条我觉得最值钱虚拟机最大的价值不是能装 Linux而是能随便搞坏。我很多关于分区、引导、内核参数的经验都是在虚拟机里试出来的。别怕把它玩坏怕的是你不敢动手。如果你也在做类似的配置从最简单的 Ubuntu Server NAT 组合开始一路装到能跑项目大概两小时。之后每加一个组件就打一个快照这套流程滚一遍基本就形成肌肉记忆了。
返回列表