我从事软件(主要是网络)开发,而且我独自工作,因此我必须应对大量系统管理员类型的工作,以便设置不同堆栈的网络/应用程序/数据库/源代码控制服务器,更不用说我自己的开发环境了。
最近我一直痴迷找到一种方法来虚拟化这些不同的问题,使我的设置更易于管理。理想情况下,我会登录到一个瘦开发客户端(使用我的 Xsession、emacs 和 ssh),让服务器无头运行,并像在现实世界中一样使用它们。我的目标是最终让所有这些都处于版本控制之下......
除此之外,我还有几个顾虑:
性能,因为我没有杀手级机器,每台服务器都使用完全虚拟化的操作系统可能会让速度慢得像爬行一样。
还有可移植性,即当我将这些配置移动到 vps 或其他本地机器时,能够尽可能少地调整即可重复使用这些配置。
考虑到这一点,我基本上将其范围缩小到操作系统级虚拟化。
OpenVZ 似乎是可行的方法,但后来我发现了 LXC 和 Linux V-Server,现在我很困惑。
所以无论如何,很抱歉说了这么多,但我想问你们是否有使用这些虚拟化解决方案的经验,也许可以提供一些见解,说明什么最适合我的需求?
干杯!
答案1
它们是类似的虚拟化形式 - 仅在操作系统级别。与完全虚拟化相比,它具有多种优势。
- 开销小- 对于低功率机器,我建议使用其中之一。我有六台虚拟机在 400MHz VIA Samuel 2 系统上运行,在 OpenVZ 下只有 256Mb 的 RAM。您只会使用与在单台机器下运行应用程序时相同的资源量。不同机器上的应用程序的多个实例实际上共享资源。
- 文件访问- 在主机节点与虚拟机之间以及虚拟机之间传输文件非常简单,因为它们都共享主机上的同一文件系统。因此,我可以直接从主机节点检查和操作虚拟机文件。这对于开发目的非常有用。
- 备份图像- 由于文件系统是共享的,您只需
rsync
在虚拟机目录上运行即可备份任何机器。您还可以通过简单地复制目录来轻松复制一台机器。
OpenVZ 和 VServer 之间的区别似乎只是类似事物的不同版本。您可以轻松在两个系统之间移动虚拟机,详情可参见其网站。与其他两个更成熟的系统相比,LXC 看起来更新一些。
答案2
在类似情况下,我使用 KVM 时运气很好。是的,这是一个完整的机器虚拟化解决方案,但如果内核在 KVM 中处于空闲状态,它不会使用除 RAM 之外的任何资源。(对于任何虚拟化解决方案,您都希望添加尽可能多的 RAM)
请注意,只要负载是您和测试脚本,而不是完整的生产站点,带有 Apache、Mysql 或类似程序的无头 Linux 就可以使用大约 256 MB 的 RAM 运行。