4. 虚拟化技术基础:从零搭建你的第一台虚拟机
说到虚拟化,我脑子里第一个蹦出来的画面,是十年前在机房折腾服务器。那时候物理机坏了,整个项目组都得等着。现在呢?一台物理机跑十几个虚拟机,挂了直接迁移,爽得很。
虚拟化说白了,就是在一台物理机上,通过软件模拟出多台独立的“电脑”。每台虚拟机都有自己的CPU、内存、硬盘、网卡。你想想看,这多适合我们做测试?
4.1 两大主流虚拟机:VMware vs VirtualBox
我个人习惯用VMware Workstation做主力。为什么?稳定。我在项目中遇到过好几次,VirtualBox跑了一周的自动化测试,突然网络桥接模式崩了。但VMware收费,个人学习用VirtualBox完全够。
| 特性 | VMware Workstation | VirtualBox |
|---|---|---|
| 性能 | 优秀,3D加速好 | 良好,轻量级 |
| 快照管理 | 支持树形快照 | 支持线性快照 |
| 网络类型 | NAT/桥接/仅主机/Host-Only | NAT/桥接/仅主机/内部网络 |
| 价格 | 商业付费 | 开源免费 |
| 适合场景 | 企业级、生产环境 | 个人学习、轻量测试 |
4.2 安装与配置:别踩这些坑
安装过程我就不啰嗦了,下一步下一步就行。但有几个关键配置,我吃过亏,得跟你说说。
4.2.1 硬件虚拟化必须开启
很多新手装完虚拟机,发现系统特别卡,或者直接报错“VT-x is disabled”。为什么?因为BIOS里没开虚拟化。
# 检查是否开启虚拟化(Windows)
systeminfo | find "虚拟化"
# Linux下检查
grep -E "vmx|svm" /proc/cpuinfo
4.2.2 内存分配有讲究
我曾经给一台虚拟机分配了8GB内存,结果宿主机自己卡死了。你想想看,物理机总共16GB,你分一半出去,剩下的还要跑IDE、浏览器、数据库,不卡才怪。
经验法则:
- 宿主机至少留4GB给自己
- Linux桌面版给2-4GB
- Windows虚拟机至少4GB
- 服务器版(无GUI)1-2GB就够了
4.3 创建第一台虚拟机:手把手教学
嗯,这里我以VirtualBox为例,因为免费嘛。VMware操作逻辑差不多。
- 点击“新建”,输入名称,比如“CentOS-7-Test”
- 选择类型和版本:Linux -> Red Hat (64-bit)
- 分配内存:2048MB(先给这么多,后面可以调)
- 创建虚拟硬盘:选VDI格式,动态分配,大小20GB
- 挂载ISO镜像:在“存储”里添加CentOS的ISO文件
- 启动安装:按提示操作,分区选自动就行
关键点:安装时记得勾选“开发工具”和“网络工具”。我刚开始装系统总忘记选,后面装gcc、git还得手动yum安装,麻烦得很。
4.4 快照与克隆:测试人员的后悔药
快照这东西,说白了就是“存档”。你玩游戏知道存档吧?快照就是虚拟机的存档。
4.4.1 快照的使用场景
- 做实验前打快照:比如你要测试一个危险的脚本,先拍个快照。搞坏了直接恢复,5秒钟的事。
- 系统更新前打快照:我遇到过更新内核后系统起不来的情况。有快照?直接回滚,不慌。
- 搭建复杂环境时:每完成一步拍个快照,方便回溯。
4.4.2 克隆:批量部署的利器
克隆分两种:
- 链接克隆:基于原始虚拟机,占用空间小,但原始虚拟机不能删
- 完整克隆:完全独立的副本,占用空间大,但互不影响
我在项目中经常用链接克隆。比如要测试5个不同版本的软件,先装好一个基础系统,然后链接克隆5份,每份装不同版本。省时省力。
4.5 虚拟网络类型详解
网络配置是虚拟化里最容易出问题的环节。我见过太多人卡在这一步。来,我给你捋清楚。
4.5.1 NAT模式(网络地址转换)
这是默认模式。虚拟机通过宿主机上网,外部网络看不到虚拟机。就像你家路由器,所有设备共用一个公网IP。
特点:
- 虚拟机可以访问外网
- 外网不能主动访问虚拟机
- 适合只需要上网下载软件的场景
4.5.2 桥接模式
虚拟机直接连接到物理网络,就像一台独立的物理机。它有自己的IP地址,和宿主机平级。
特点:
- 虚拟机可以被其他设备访问
- 需要占用一个局域网IP
- 适合搭建服务器、做网络测试
4.5.3 仅主机模式(Host-Only)
虚拟机只能和宿主机通信,不能访问外网。就像一个封闭的局域网。
特点:
- 完全隔离,安全性高
- 适合做恶意软件分析、安全测试
- 宿主机和虚拟机之间可以传文件
4.5.4 内部网络
虚拟机之间可以互相通信,但宿主机也访问不了它们。这是VirtualBox特有的模式。
特点:
- 完全隔离,宿主机都管不着
- 适合模拟内网环境
- 需要手动配置IP地址
| 网络模式 | 虚拟机→外网 | 外网→虚拟机 | 宿主机↔虚拟机 | 虚拟机之间 |
|---|---|---|---|---|
| NAT | ✓ | ✗ | ✓ | ✗ |
| 桥接 | ✓ | ✓ | ✓ | ✓ |
| 仅主机 | ✗ | ✗ | ✓ | ✓ |
| 内部网络 | ✗ | ✗ | ✗ | ✓ |
4.6 实战:搭建一个三节点的测试集群
光说不练假把式。我带你搭一个三节点的测试集群,用NAT模式。
- 创建三台CentOS虚拟机,每台2GB内存,20GB硬盘
- 网络全部设为NAT模式
- 安装时设置主机名:node1、node2、node3
- 安装完成后,查看IP地址:
ip addr - 用SSH从宿主机连接:
ssh root@192.168.xxx.xxx - 测试三台机器之间能否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
好了,虚拟化基础就这些。你先把第一台虚拟机跑起来,打个快照,再试试克隆。等你把这些操作练熟了,后面搭建测试平台就顺手多了。