为了打字省力,本文后续部分用“虚拟机”指代“操作系统虚拟机”。
★运行各种系统的软件
虚拟机最主要的一个功能就是:可以在一台电脑上运行不同的操作系统。不同的操作系统,差异是很大滴。操作系统的差异性导致了很多专有软件——有些软件只有 Windows 才有,有些只有 Mac OS 才有,还有些软件只有 Linux 才有。
举个例子:
很多苹果的粉丝发现苹果系统上翻墙软件奇缺(大部分翻墙软件,比如“VPN gate、自由门、无界”,都是 Windows 软件)。
在没有虚拟机的时代,要想在一台电脑上玩不同的系统,只能通过“多引导”。但是“多引导”一次只能用一个系统。有了虚拟机之后,你就可以【同时】玩不同系统下的软件。
★简化系统管理
◇便于硬件迁移
如今硬件升级换代很快,某些网友时不时就会换新电脑。换了新电脑,可能要重装系统;就算新电脑随机带了操作系统,你也免不了要装一大堆自己用的软件。干这种事情,往往繁琐且费时费力。而虚拟机可以帮你免去这类烦恼。
比如俺,每次换电脑,都非常省事儿。因为俺所有的电脑操作(包括翻墙上网、公司事务、写程序、写博客、等等)全都是在虚拟机内完成;俺平时用的软件(除了虚拟机软件本身),都装在虚拟系统内。所以捏,每次升级电脑,俺只需要安装 Host OS(宿主系统)和虚拟机软件。然后再把一大堆虚拟机镜像 copy 过去,就 OK 了。
◇便于系统备份
既然虚拟机有利于“硬件迁移”,自然也就有利于“系统备份”。
如今笔记本电脑大行其道,但也带来一个问题:容易弄丢或者容易摔坏。一旦弄丢或摔坏,你免不了又要装系统、装软件。如果你平时就使用虚拟机工作,并且记得把虚拟机镜像备份出来(比如拷贝到另外一个移动硬盘)。一旦失窃或摔坏,恢复起来就很省力。
◇便于灾难恢复
前一篇帖子提到虚拟机的快照功能。这个功能有点类似于 Windows 的“系统还原”,但是比“系统还原”更安全,也更好用。因为"系统还原"功能只能帮你还原部分文件(主要是系统文件),而虚拟机快照可以帮你复原虚拟操作系统中的所有文件(包括内存状态)。
有了这么牛叉的快照功能,可以帮你从误操作的灾难中恢复出来。
举例说明:
每当装好虚拟系统及常用的几款软件之后,建议你先做一个快照(这个快照对应的是干净的、正常的系统)。以后你在使用的过程中,万一发生了误操作(比如误删了系统文件),直接回退到这个干净的快照,系统自然就恢复了;如果系统莫名其妙坏了、无法启动了,也只需"回退到干净的快照",即可。
◇无需清理系统垃圾
貌似很多网友都会在自己的 Windows 系统上安装一些系统优化的软件。这些软件的一个主要功能是"清理系统垃圾"。
但是像俺这样,主要工作都在虚拟机内完成的人,就没必要"清理系统垃圾"。俺使用的虚拟机,每隔几天就回退到前一个干净的快照。一旦回退快照,系统垃圾自然就没了。
◇使用快照的注意事项
刚才连续举了两种使用快照的场景。顺便说一下“注意事项”。
假如把虚拟机回退到某一个快照(以下称“快照A”),那么从“快照A”之后的所有文件系统的变化(包括新建的文件、修改的文件、删除的文件)都会被复原。
如果你像俺这样,定期回退到前一个干净的快照,有一点务必提醒大家:需要长期保留的文件(尤其是一些个人数据),不要放到虚拟机里。
举个例子:
假如你在虚拟机内用 MSN/Skype 聊天,它会在本地保存聊天记录。一旦你把虚拟机的快照回退,刚刚保存的聊天记录就没了。
解决的办法:
(参见本系列的第7篇)
★用于信息安全领域
◇防范黑客入侵
关于这招,请看《如何防止黑客入侵[7]:Web相关的防范 (下)》一文的“多虚拟机方案”。这里就不再浪费口水了。
◇试用危险的软件
有时候你在网上看到某个软件(比如某个小游戏)很不错,很想安装了体验一下。但是这个软件可能来路不明,你不晓得这个软件本身是否安全可靠。
咋办捏?
俺通常会留一个干净的虚拟机用来进行“软件试用”。这个虚拟机事先做了一个干净的快照。在这个虚拟机里面,想装啥软件都可以(流氓软件、带毒的软件,都无所谓)。等到把这个软件玩腻了,就回退到事先做好的那个干净的快照。一旦回退快照,再流氓的软件都会从眼前消失。
◇搭建蜜罐
所谓的“蜜罐”(洋文叫“honeypot”),是故意用来吸引攻击者的一个系统。
在安全行业中,有时候会用虚拟机来搭建“蜜罐”。蜜罐有很多种用途,有些比较注重安全的企业或机构,可以通过蜜罐进行黑客入侵的早期预警。有些杀毒软件厂商则利用蜜罐用来收集病毒样本。
更多的介绍可以看维基百科(在"这里")
★用于隐私保护
严格来说,“隐私问题”也属于“信息安全”的范畴。不过捏,因为这几年“隐私问题”比较突出,俺单独用一个章节来强调。
◇防范流氓软件偷窥
除了刚才提到的“防范黑客”,虚拟机还可以用来保护隐私。
"比如臭名昭著的 QQ 会偷偷扫描你的硬盘,窥探你的隐私。由于 QQ 的用户群太大了,你不用它还不行(像俺这种从来不用 QQ 的天朝网民,估计不到1%)。
咋办捏?
办法之一是把 QQ 安装到虚拟机系统,然后把你个人的隐私(比如裸照)放到外部的真实系统。这样一来,即使 QQ 偷窥,也看不到你的隐私。
这招不光能用来对付“疼逊”,也可以用来对付其它流氓软件(比如“逊雷、支付宝”)。
◇用于多人共用的电脑
有些网友的电脑会被家人共用——你的MM或老婆可能会拿你的电脑上网;如果你有个已经上学的小孩,他/她可能也会拿你的电脑上网。当多人共用你的电脑,隐私问题就浮现出来了。
举个例子:
假如你上黄色网站,多半不希望让家人知道。不幸的是,你的家人因为用了你的浏览器,可能无意中会看到你的浏览历史......一旦发生这种不幸,轻则名誉受损;重则引发家庭纠纷。
某些网友会建议说:每次上网后,清理一下浏览器历史记录;还有的同学会建议说:使用浏览器的隐私模式。
但是俺觉得,这些招数都不够彻底。以“隐私模式”为例。虽然“隐私模式”不会在浏览器中留下上网的历史痕迹。但是!如果你下载某个黄色视频或黄色图片在本地观看,那“隐私模式”可就帮不了你喽。由此可见,要想彻底避免隐私外泄,还是得用虚拟机。具体做法如下:
装一个虚拟机专门用来上“限制级的网站”。一旦下载了限制级的内容,也只保存在这个虚拟机内。通常来说,你的家人多半不熟悉 IT 技术,可能连"虚拟机"都没听说。所以,你的浏览历史,以及你保存下来的限制级内容,自然不易被发现 :)
◇用于隐匿自己的IP
这种场景比较少见。一般来说,只有像俺这种"反党人士",才有这种需求。
举个例子:
你想通过 QQ 群发一些“不和谐的言论”。但是大伙儿应该都知道,“疼逊”是朝廷的走狗,他会帮朝廷追查“反动言论的始作俑者”。因为 QQ 服务器会记录每一个 QQ 用户的 IP 地址。一旦发现某个用户发送煽动性言论,官府六扇门的捕头直接根据 IP 地址就可以定位到你的位置。
那该咋办捏?
某些天真的网友会想,如果为 QQ 设置代理,让 QQ 客户端通过代理联网;那么 QQ 服务器看到的就是代理的 IP 而不是本人的 IP。
但是捏,这种做法不一定保险。即使你给 QQ 客户端设置代理,说不定 QQ 还是会偷偷地、(不经过代理)直接连接 QQ 服务器。如果是这样的话,那你的真实 IP 还是会暴露。
【正宗的做法】如下:
装2个虚拟机系统(简称 A 系统 和 B 系统)。A 系统装翻墙软件,配置双网卡,分别用 NAT 模式和 Host-Only 模式。B 系统装 QQ,单网卡,配置为 Host-Only 模式。然后配置 QQ 的代理,让 QQ 的代理指向 A 系统的翻墙软件。由于 B 系统的网卡是 Host-Only 模式,QQ 客户端即使想偷偷地直连服务器,也办不到。所以,QQ 只能老老实实地通过 A 系统中转。由于 A 系统的中转是通过翻墙代理,最终 QQ 服务器看到的是翻墙代理的 IP,看不到你本人的真实 IP。
顺便说一下,如果你对安全性的要求比较高,可以在 A 系统中使用多重代理,具体的操作请看俺之前的博文。用了多重代理,朝廷几乎没可能从网络层面追踪你的真实 IP。
光这么说,可能比较抽象,某些网友未必能搞懂。所有俺后来又在《如何隐藏你的踪迹,避免跨省追捕》系列中,补充了2篇博文,详细介绍“双虚拟机”的招数。
★用于软件开发和测试
考虑到俺博客的读者中,还是有不少软件从业人员。最后再介绍一下虚拟机在软件开发和测试中的应用。
◇搭建开发环境
比方说你的工作是编写 Linux 平台的程序,但是你平时又不习惯用 Linux 而喜欢用 Windows。
咋办捏?
你可以在 Windows 系统中安装一个 Linux 的虚拟机。当写程序或调试程序时,切换到这个虚拟机中,其它时间照常用 Windows。
◇搭建测试环境
类似于开发人员,测试人员也可以通过虚拟机来搭建测试环境。根据俺的经验,虚拟机对测试人员的帮助要大于对开发人员的帮助。虚拟机能给测试带来如下好处:
1. 搭建多样化的测试环境
假如你的工作是测试某个软件的 Web 界面。因为要考虑兼容性,你需要分别用不同版本的 IE 来测试它。但是不同版本的 IE 又不能装在同一个 Windows 系统里。
咋整捏?
解决之道就是:装若干个 Windows 虚拟机。有的虚拟机装 IE6,有的装IE8,有的装IE9......以此类推。这样一来,你就可以在一台电脑上,测试多种版本的 IE 浏览器。
2. 确保测试环境的一致性
在没有虚拟机的时代,测试人员往往是在自己的操作系统中进行测试。由于每个测试人员的操作系统可能会有差异(比如:安装的软件不同、升级的补丁不同、等等),这种环境差异会对测试结果造成干扰。比如同一个 bug 张三测试出来,而李四却无法复现。
有了虚拟机之后,可以让同一个测试组的人员使用同一个虚拟机镜像做测试环境。如此一来,可以绝对保证测试环境的一致性。
3. 确保测试环境的纯洁性
在没有虚拟机的时代,测试人员每次拿到新版本的软件之后,需要先卸载旧版本,然后再安装新版本。但是捏,一旦旧版本没卸载干净(比如在系统目录还遗留了旧的动态库),可能会引发很多诡异的问题。
有了虚拟机之后,测试人员可以先做一个干净的虚拟机快照。测试人员每拿到新版本,先把测试用的虚拟系统回退到这个干净的快照,然后再安装。如此一来,可以保证待测的软件总是安装在一个干净的环境中,避免干扰因素。
★结尾
对于虚拟机,上面这些招数算是比较常用的。还有一些应用场景,因为比较冷门,俺就不在这里介绍了。
本系列的下一篇,介绍一下“如何选择虚拟机软件”。
回到本系列的目录
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始网址:https://program-think.blogspot.com/2012/11/system-vm-2.html