4. 虚拟化技术基础:从零搭建你的第一台虚拟机

说到虚拟化,我脑子里第一个蹦出来的画面,是十年前在机房折腾服务器。那时候物理机坏了,整个项目组都得等着。现在呢?一台物理机跑十几个虚拟机,挂了直接迁移,爽得很。

虚拟化说白了,就是在一台物理机上,通过软件模拟出多台独立的“电脑”。每台虚拟机都有自己的CPU、内存、硬盘、网卡。你想想看,这多适合我们做测试?

4.1 两大主流虚拟机:VMware vs VirtualBox

我个人习惯用VMware Workstation做主力。为什么?稳定。我在项目中遇到过好几次,VirtualBox跑了一周的自动化测试,突然网络桥接模式崩了。但VMware收费,个人学习用VirtualBox完全够。

特性 VMware Workstation VirtualBox
性能 优秀,3D加速好 良好,轻量级
快照管理 支持树形快照 支持线性快照
网络类型 NAT/桥接/仅主机/Host-Only NAT/桥接/仅主机/内部网络
价格 商业付费 开源免费
适合场景 企业级、生产环境 个人学习、轻量测试
我的建议:如果你只是学Linux基础、搭个测试环境,VirtualBox足够了。但如果你要做性能测试、跑Docker集群,建议上VMware。

4.2 安装与配置:别踩这些坑

安装过程我就不啰嗦了,下一步下一步就行。但有几个关键配置,我吃过亏,得跟你说说。

4.2.1 硬件虚拟化必须开启

很多新手装完虚拟机,发现系统特别卡,或者直接报错“VT-x is disabled”。为什么?因为BIOS里没开虚拟化。

# 检查是否开启虚拟化(Windows)
systeminfo | find "虚拟化"

# Linux下检查
grep -E "vmx|svm" /proc/cpuinfo
注意:不同品牌主板进BIOS的按键不同。F2、Del、F10都有可能。进去后找“Intel Virtualization Technology”或“SVM Mode”,设为Enabled。

4.2.2 内存分配有讲究

我曾经给一台虚拟机分配了8GB内存,结果宿主机自己卡死了。你想想看,物理机总共16GB,你分一半出去,剩下的还要跑IDE、浏览器、数据库,不卡才怪。

经验法则:

  • 宿主机至少留4GB给自己
  • Linux桌面版给2-4GB
  • Windows虚拟机至少4GB
  • 服务器版(无GUI)1-2GB就够了

4.3 创建第一台虚拟机:手把手教学

嗯,这里我以VirtualBox为例,因为免费嘛。VMware操作逻辑差不多。

  1. 点击“新建”,输入名称,比如“CentOS-7-Test”
  2. 选择类型和版本:Linux -> Red Hat (64-bit)
  3. 分配内存:2048MB(先给这么多,后面可以调)
  4. 创建虚拟硬盘:选VDI格式,动态分配,大小20GB
  5. 挂载ISO镜像:在“存储”里添加CentOS的ISO文件
  6. 启动安装:按提示操作,分区选自动就行

关键点:安装时记得勾选“开发工具”和“网络工具”。我刚开始装系统总忘记选,后面装gcc、git还得手动yum安装,麻烦得很。

4.4 快照与克隆:测试人员的后悔药

快照这东西,说白了就是“存档”。你玩游戏知道存档吧?快照就是虚拟机的存档。

4.4.1 快照的使用场景

  • 做实验前打快照:比如你要测试一个危险的脚本,先拍个快照。搞坏了直接恢复,5秒钟的事。
  • 系统更新前打快照:我遇到过更新内核后系统起不来的情况。有快照?直接回滚,不慌。
  • 搭建复杂环境时:每完成一步拍个快照,方便回溯。

4.4.2 克隆:批量部署的利器

克隆分两种:

  • 链接克隆:基于原始虚拟机,占用空间小,但原始虚拟机不能删
  • 完整克隆:完全独立的副本,占用空间大,但互不影响

我在项目中经常用链接克隆。比如要测试5个不同版本的软件,先装好一个基础系统,然后链接克隆5份,每份装不同版本。省时省力。

小技巧:克隆前记得修改主机名和IP地址。不然5台虚拟机都叫localhost,网络配置全乱套。

4.5 虚拟网络类型详解

网络配置是虚拟化里最容易出问题的环节。我见过太多人卡在这一步。来,我给你捋清楚。

4.5.1 NAT模式(网络地址转换)

这是默认模式。虚拟机通过宿主机上网,外部网络看不到虚拟机。就像你家路由器,所有设备共用一个公网IP。

特点:

  • 虚拟机可以访问外网
  • 外网不能主动访问虚拟机
  • 适合只需要上网下载软件的场景

4.5.2 桥接模式

虚拟机直接连接到物理网络,就像一台独立的物理机。它有自己的IP地址,和宿主机平级。

特点:

  • 虚拟机可以被其他设备访问
  • 需要占用一个局域网IP
  • 适合搭建服务器、做网络测试
我曾经踩过的坑:在公司网络里用桥接模式,结果虚拟机IP和别人的电脑冲突了。后来我学乖了,要么用NAT,要么手动设置静态IP。

4.5.3 仅主机模式(Host-Only)

虚拟机只能和宿主机通信,不能访问外网。就像一个封闭的局域网。

特点:

  • 完全隔离,安全性高
  • 适合做恶意软件分析、安全测试
  • 宿主机和虚拟机之间可以传文件

4.5.4 内部网络

虚拟机之间可以互相通信,但宿主机也访问不了它们。这是VirtualBox特有的模式。

特点:

  • 完全隔离,宿主机都管不着
  • 适合模拟内网环境
  • 需要手动配置IP地址
网络模式 虚拟机→外网 外网→虚拟机 宿主机↔虚拟机 虚拟机之间
NAT
桥接
仅主机
内部网络

4.6 实战:搭建一个三节点的测试集群

光说不练假把式。我带你搭一个三节点的测试集群,用NAT模式。

  1. 创建三台CentOS虚拟机,每台2GB内存,20GB硬盘
  2. 网络全部设为NAT模式
  3. 安装时设置主机名:node1、node2、node3
  4. 安装完成后,查看IP地址:ip addr
  5. 用SSH从宿主机连接:ssh root@192.168.xxx.xxx
  6. 测试三台机器之间能否ping通(NAT模式下默认不通,需要配置端口转发)

重点:NAT模式下虚拟机之间不能直接通信。如果你需要它们互相访问,要么用桥接模式,要么在VirtualBox里设置“端口转发”。

端口转发配置示例:

# 在VirtualBox设置中
# 名称: SSH-node1
# 协议: TCP
# 主机IP: 127.0.0.1
# 主机端口: 2222
# 子系统IP: 10.0.2.15
# 子系统端口: 22

# 然后就可以用这个命令连接
ssh -p 2222 root@127.0.0.1

好了,虚拟化基础就这些。你先把第一台虚拟机跑起来,打个快照,再试试克隆。等你把这些操作练熟了,后面搭建测试平台就顺手多了。