用虚拟机

我是用虚拟机在一次系统崩溃后彻底转向虚拟机的。那台老笔记本的用虚拟机Windows 10在更新到一半时蓝屏,重启后直接进了恢复模式,用虚拟机折腾了三个小时才救回来。用虚拟机后来我装了VirtualBox,用虚拟机把日常用的用虚拟机开发环境整个搬进了Ubuntu虚拟机里,宿主机只留一个干干净净的用虚拟机Windows当底座。从那以后,用虚拟机系统更新、用虚拟机驱动冲突、用虚拟机注册表垃圾——这些破事再也没能把我按在地上摩擦。用虚拟机

虚拟机的用虚拟机核心价值其实就一句话:把“运行的软件”和“跑它的硬件”彻底剥离开。你在这台机器上装好的用虚拟机环境,拷贝到另一台机器上,用虚拟机双击就能跑,用虚拟机一模一样。我同事小张上周把整个深度学习环境打包成OVA文件,从公司台式机迁移到家里的笔记本上,连CUDA版本都没重配,打开就是原样。这种可移植性,物理机永远给不了。

但虚拟机不是没有代价。性能损耗是实打实的,尤其是I/O密集型的活儿。我在虚拟机里跑过数据库压力测试,同样的硬件配置,比裸机慢了将近三成。内存更是吃紧,给虚拟机分了8G,宿主机自己就剩个可怜巴巴的4G,开个浏览器都卡。所以你要是只玩个Office、看个视频,没必要上虚拟机,那是给自己找罪受。

真正让我觉得虚拟机“香”的场景,是那些需要反复折腾的实验环境。比如学Kubernetes集群,我直接在VirtualBox里开了三台最小化的CentOS,网络用host-only模式连起来,玩坏了就删掉重来,整个流程不超过十分钟。要是用物理机,且不说你得准备三台机器,光是每次重装系统的时间就够你喝一壶的。

还有个细节可能很多人没注意到——快照功能简直是手残党的救星。我在虚拟机里配Nginx时手滑改错了配置文件,导致服务起不来,急得满头大汗。后来想起来有快照,一键回滚到十分钟前的状态,跟没事人一样。这要是放在物理机上,你得手动备份、恢复、排查,搞不好还得重装。

不过我得泼盆冷水:虚拟机不是万能的。它解决的是“环境隔离”和“快速恢复”的问题,但解决不了“资源不够”的问题。你要是想跑大型3D游戏、视频渲染这类吃显卡的活儿,虚拟机目前还是力不从心。GPU直通技术虽然存在,但配置起来麻烦得要命,不是普通用户能驾驭的。

我的建议是,如果你是个开发者、运维、或者喜欢折腾各种软件的人,虚拟机值得花半天时间学学基础操作。VirtualBox免费、VMware Workstation Player也免费,选一个装上,建个虚拟机,装个Linux或者老版本Windows,随便折腾,折腾坏了也不心疼。那种“随便造、随便删”的自由感,用过一次就回不去了。