虚拟机从概念到普及,走过了四个关键阶段:1960年代IBM大型机上的虚拟化萌芽、1999年VMware带来的x86平台商业化落地、2003到2007年开源虚拟化与云计算的结合、以及硬件辅助虚拟化让性能损耗低到可以忽略的全面普及。今天你看到的每一朵云,底层几乎都长着虚拟机的骨架,这个故事得从一台昂贵到令人窒息的大型机讲起。
虚拟机哪一年出现的?大型机时代的技术起源
虚拟机这个概念,比大多数人想象的老得多。1960年代,一台IBM System/360大型机动辄数百万美元,企业买不起好几台,却又想让不同部门同时跑不同任务,IBM的研究人员在剑桥大学和自家实验室里琢磨出了一个办法:把一台物理机的CPU、内存、I/O设备切成多块,让每块看起来像一台独立的计算机。
分时系统如何催生虚拟化概念
当年有个叫CP-40的研究项目,后来演化成CP-67,再后来变成CMS系统,这套系统允许几十个终端用户同时登录,每人拥有一个独立的“虚拟IBM机器”。业内专家指出,这套系统的意义不只是省钱,它第一次证明了“虚拟化”不是玄学,而是可工程化的软件技术。1972年,IBM正式发布VM/370,把虚拟机监控器(Hypervisor)这个概念固化成了商业产品。
为什么大型机虚拟化一出生就很实用
那个年代的虚拟机货真价实,但不是为了装各种操作系统,而是为了资源切片和分时共享,大型机上的虚拟化有几个无法反驳的好处:
- 一台机器顶几十台用,硬件利用率翻着倍涨
- 内存和CPU隔离得干净,一个用户崩溃不拖累全局
- 测试环境随手建,坏了就扔,不碰生产系统
行业共识认为,虚拟化概念的真正源头就是分时系统对计算资源的动态切分,不过那时候技术门槛太高,普通人连看都看不到,虚拟机像一位高冷的学术明星,关在IBM的玻璃机房里。
虚拟机怎么从大型机走到个人电脑?x86虚拟化的破冰时刻
时间跳到1990年代,x86服务器价格一路走低,中小企业终于买得起服务器了,但新问题冒了出来:一台服务器只跑一个应用太浪费,跑两个应用又怕互相干扰,Windows蓝屏能把同机的Linux邮件服务带崩。x86虚拟化就是在这样的背景下被逼出来的。
x86架构的虚拟化难题
x86处理器在设计之初压根没考虑过“被虚拟化”,它有16条特权指令,在虚拟机监控器里跑的时候会静默失败或者直接崩掉,不像大型机那样天然留了虚拟化后门,当时斯坦福大学的教授Mendel Rosenblum带着学生研究这个问题,搞出了一套叫二进制翻译的技术:在运行时把虚拟机的特权指令悄悄替换成安全指令,让客户机操作系统以为自己在独占硬件。
二进制翻译与VMware Workstation的诞生
1998年,VMware公司成立,1999年,VMware Workstation 1.0发布
,这是x86平台上第一款实用的虚拟机产品,用过第一版的人都知道那种神奇感:Windows 98的桌面上开一个窗口,里面稳稳地跑着一个Linux系统,还能同时上网。
随后在2001年,VMware发布了ESX Server,这是一款不需要宿主机操作系统的“裸机型”虚拟机监控器。VMware Workstation让个人用户第一次玩上虚拟机,ESX Server则把虚拟机正式搬进了企业机房。
实操经验:当年的人怎么用虚拟机
- 开发人员用Workstation在同一台Windows电脑上同时调试Linux和Windows程序
- 测试人员靠快照功能一键还原系统,不再一遍遍重装系统
- 网管用虚拟机在一台物理服务器上跑邮件、DNS和文件共享,机房里的机器终于少了
虚拟机为什么在数据中心大规模普及?开源与云计算的双重推动
VMware在商业上取得了成功,但价格不便宜,一套企业版授权让很多中小企业望而却步,真正把虚拟机推向全世界的,是开源社区和公有云两个大浪。
Xen与亚马逊的云生意
2003年,剑桥大学发布Xen虚拟机监控器,它采用半虚拟化技术,客户机里装一套修改过的内核就能以接近物理机的速度运行,Xen项目很快得到IBM、Intel、AMD的支持,更关键的是,2006年亚马逊AWS推出EC2服务时,底层用的正是Xen,从那一刻起,虚拟机不再只是省钱的工具,它成了“按需租用计算资源”这种全新商业模式的基石,你不用买服务器,在网页上点几下,几分钟内就能拿到一台跑着Linux的虚拟机。
KVM如何成为Linux内核的一部分
2007年,KVM(Kernel-based Virtual Machine)合并进Linux内核主线,这一步意义深远,它把虚拟机监控器变成了操作系统的一个普通模块,任何一台x86 Linux服务器都能开箱当宿主机用,安装创造虚拟机的操作路径非常直接:
sudo apt install qemu-kvm libvirt-daemon-system virtinst sudo systemctl enable --now libvirtd virt-install --name demo --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/demo.qcow2,size=20 --cdrom /tmp/ubuntu.iso
这套组合拳打下来,虚拟化的门槛降到了“装个驱动”这么低,加上开源社区的OpenStack编排平台、国内云厂商和各大互联网公司的推动,虚拟化技术从高冷的商业软件变成了数据中心的标配,据工信部历年发布的云计算发展白皮书显示,虚拟化技术已经成为国内云计算基础设施建设的最重要支撑之一,物理服务器的整合率大幅提升,机房电费肉眼可见地往下掉。
开源与商业的拉扯
- 免费:Xen、KVM、VirtualBox,成本为零但需要自己维护
- 商业:VMware vSphere、Hyper-V,花钱买稳定和售后
- 折中:公有云厂商提供的虚拟机,按小时计费,省去自建运维
虚拟机哪个好用?硬件辅助虚拟化与工具成熟期
2005年Intel推出VT-x,2006年AMD推出AMD-V,CPU终于从硬件层面支持虚拟化了,虚拟机的性能损耗从原来的20%-30%骤降到普遍不超过5%,虚拟机市场彻底进入百花齐放的时代。
主流虚拟机软件横向对比
| 软件 | 类型 | 最适场景 | 部署难度 | 成本 |
|---|---|---|---|---|
| VMware Workstation Pro | Type 2 | 个人开发、测试多系统 | 低 | 付费 |
| VMware ESXi | Type 1 | 企业生产环境 | 中 | 贵,按CPU插槽授权 |
| Microsoft Hyper-V | Type 1 | Windows生态、微软系应用 | 中 | 随Windows Server授权 |
| VirtualBox | Type 2 | 个人尝鲜完全免费 | 低 | 免费 |
| KVM/libvirt | Type 1 | Linux服务器、云平台底层 | 较高 | 免费 |
| Proxmox VE | Type 1 | 中小企业的私有云平台 | 中 | 基础免费,订阅付费 |
虚拟机性能损耗到底有多大
很多刚接触虚拟机的人最关心这个问题。实际上在现代硬件上,多数场景下的性能损耗低到可以忽略。计算密集型任务因为硬件辅助虚拟化和NUMA感知技术,损耗通常控制在5%以内;I/O密集型的数据库应用,只要给KVM虚拟机配置virtio半虚拟化驱动,网络和磁盘吞吐量能接近物理机水平。
需要注意一个实操细节:别在一台物理机上超卖太多CPU和内存。比如一台8核16G的宿主机,强行跑6台4核4G的虚拟机,CPU排队会让所有虚拟机一起卡顿,云厂商的超卖比例很高,但那是靠大规模调度和热迁移兜底,自建环境别学。
虚拟机价格贵吗?以及容器时代的冷思考
这是相当多小企业主和开发者问过的问题,答案分两种情况:用商业产品,真不便宜;用开源方案,软件免费但运维成本得自己扛。
商业授权与免费开源的真实成本
- VMware vSphere按物理CPU插槽数授权,两个插槽的机器一年授权费就够买一台新服务器
- Microsoft Hyper-V不用额外买虚拟化授权,但Windows Server授权费本就不低
- KVM、Proxmox VE开源免费,但补丁管理、故障排查、性能调优都得自己来
- 公有云上的虚拟机按小时计费,包年包月更划算,但长期跑满的话比自己买物理机贵
国内企业现在普遍采用“KVM+开源管理平台”或者国产超融合方案,来绕开VMware的高昂授权费,对于个人学习,VirtualBox免费且跨平台,VirtualBox安装Windows或者Linux都非常顺滑,它还是很多人走上运维道路的第一个练习场。
容器和虚拟机的相爱相杀
2013年Docker出现之后,许多人喊着“虚拟机要完蛋了”。
容器和虚拟机确实有很多不同:
- 容器共享宿主机内核,启动只要秒级,虚拟机要从BIOS开始启动,通常要几十秒
- 容器占用的磁盘空间以MB计,虚拟机以GB计
- 容器的隔离性弱于虚拟机,边界是内核级而不是硬件级
但现实是,容器没有干掉虚拟机,反而和虚拟机形成了互补,大多数云平台的容器服务(比如ACK、TKE)实际上是把容器跑在虚拟机里,虚拟机提供租户隔离,容器提供应用部署效率,各司其职。虚拟机价格这件事在容器时代反而更清晰了:云厂商把底层虚拟机成本折算进容器集群的节点费里,你自己不感知,但它一直在那儿。
未来趋势:轻量虚拟化
近年来Firecracker、Kata Containers、Cloud Hypervisor等轻量虚拟化技术开始兴起,它们取消虚拟机多余的设备模拟,专为Serverless场景设计,启动时间压缩到毫秒级,这说明虚拟机的内核思想依然活着,只是形态变得更敏捷。
虚拟机的故事远没结束,从1960年代大型机上的资源切片,到x86平台上的商业化落地,再到云计算世界的基石,它用了半个多世纪完成蜕变。即便容器和Serverless风头正劲,虚拟机这套隔离逻辑依然稳如磐石,并且正在以更轻量、更贴合云原生的面貌回归。
虚拟机发展历史Q&A:实际使用中的高频疑问
Q1: 虚拟机迁移到另一台服务器怎么操作?
A: 如果是KVM环境,用virsh dumpxml导出虚拟机配置,将对应的qcow2磁盘文件拷贝到目标宿主机,再执行virsh define声明配置就能完成迁移,VMware环境在vCenter中直接用vMotion在线迁移,业务不中断,VirtualBox则用“导出虚拟电脑”生成OVA文件,再到目标机器“导入虚拟电脑”,迁移前务必确认两边的CPU品牌和虚拟化特性一致,否则性能会明显下降。
Q2: 虚拟机系统崩溃了,里面的数据怎么恢复?
A: 最直接的办法是把虚拟磁盘挂载到宿主机上,KVM用guestmount -a disk.qcow2 -i /mnt或者kpartx -a disk.qcow2读取分区,然后把重要文件拷出来,VMware的vmdk文件可以用vmfs-tools或者直接挂载到ESXi宿主机临时目录,云平台虚拟机建议联系云厂商用快照回滚,平时做好定期快照和异地备份,比任何花哨的恢复手段都管用。
Q3: 虚拟机里的系统时间总是越来越慢,怎么校正?
A: 宿主机先启用NTP同步,然后在虚拟机里安装增强工具,VMware装open-vm-tools,KVM装qemu-guest-agent,这样会启用时间同步机制,Windows虚拟机需要关闭“Windows Time”服务里的手动调整选项,Linux虚拟机注意不要同时开启chronyd和宿主机NTP冲突,虚拟机长时间挂起后恢复,时间偏差较大时直接执行timedatectl set-ntp true强制重新同步。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/633852.html





