我有许多需要相同配置的机器。我的目标是从网络启动它们并加载虚拟机。如果能为所有客户服务机器提供一个映像就太好了。这样,我就可以加载虚拟映像、执行更新,并知道下次启动时它们将具有所有更改。理想情况下,机器会将映像存储在本地,并且只有在发生更改时才下载新映像。
看到这么多关于“桌面虚拟化”、“PXE 启动”和“虚拟机”的信息,我感到很迷茫。我已经读了好几个小时,却感觉自己只是触及了皮毛。
我想使用开源或免费软件来实现这一点。有什么建议吗?
答案1
您正在结合两件事:(1)在 HiPC 集群中常见的无盘启动,其中编译器、库等工具存储在 Lustre 或 NFS 等集群文件系统上;(2)虚拟磁盘映像(vmdk 或 vdi,或其他任何映像)。
在情况 (1) 中,您需要一个 tftp 服务器和一个 dhcp 服务器,以及一个用于定制驱动程序、脚本等的修改后的 initrd 映像。
http://www.pixelchaos.net/2009/02/15/diskless-booting-with-pxe-and-nfs/
在情况 (2) 中,假设所有机器都相同,包括配置,您可以通过 nfs 挂载虚拟磁盘映像。编写一个脚本来检查是否有任何更改,例如现有映像是否与 nfs 挂载的映像相同;如果它们不相同,则将此映像复制到启动分区并重新启动。您需要在 initrd 中添加此脚本。你可以试试这个。
http://www-conf.slac.stanford.edu/afsbestpractices/Slides/afsboot.pdf
上面的论文给了你一些线索。你最好关注整个启动过程是如何进行的,等等。
如果您使用的是 ESXi,那么还有一种更好的方法来实现您想要的效果:将 nfs 导出到 esxi 主机。将 vmdk 和 -flat.vmdk 文件保留在 nfs 服务器上,并在 .vmx 文件中更改 vmdk 位置。在下次启动时,它会获取您的新映像。
答案2
首先让我们定义一些你搞混的术语。
PXE 引导:
它是一个替代 BIOS 的实用程序,具有联网功能。例如无盘计算机,它从服务器下载内核映像并执行它。内核之后将远程分区挂载为根文件系统。
虚拟机:
虚拟机是由软件运行的机器。如果我在某个操作系统上工作,那么我可以运行虚拟机来启动另一个操作系统而无需重新启动。有些操作系统专门用于虚拟化。虚拟机无法解决您的问题。
好的,现在我将解释我的建议,我没有用过它,我认为它不是免费软件,但你应该尝试找到替代品。Northon Ghost 是一个 PXE,它在主操作系统之前启动,以检查磁盘映像是否与服务器上的相同。如果我来到这样的计算机并清除操作系统,然后重新启动...服务器将恢复操作系统,但不会恢复数据。
答案3
我不认为你可以用免费软件做到这一点和避免花费大量时间阅读。事实上,我认为使用“shiny pay for”软件也不容易做到这一点。了解所有细节既困难又耗时,因为配置所有细节既困难又耗时。
你正在寻找类似的东西网络启动我认为。让这样的事情在实验室的几台机器上工作并不困难。您会发现让它在复杂的路由 LAN 上工作有些复杂 - 我们使用 Apple 的变体来运行安装程序,将我们的标准 OSX 桌面映像安装到 Mac 工作站上。
顺便说一句,桌面虚拟化与你实际想要做的事情完全不同。它可能是解决你正在考虑的问题的有效方法,但我尽量不要在你考虑这种方式的同时考虑它——你只会让问题变得比它需要的更难理解。
答案4
微软有一款产品可以做到这一点,它被称为微软企业桌面虚拟化(又名 MED-V):
http://www.microsoft.com/windows/enterprise/products/mdop/med-v.aspx