什么是多个大型软件安装的一个很好的解决scheme?

我在linux下每台运行大型(〜10GB)闭源服务的机器运行多个实例。 有没有一种解决scheme,以安装之间的共同文件不占用太多的空间? (几乎所有的安装都是通用的所有安装)。 我想制作一个大的硬链接树,但是每个安装都运行自己的自动更新器,所以事情可能会不一致。

听起来你需要一个支持重复数据删除的文件系统。

如果没有支持重复数据删除的本地文件系统,则可以考虑通过NFS托pipe数据并将其放在ZFS上,这样每个新副本都不会占用太多的额外空间。

这几乎完全取决于你的软件是如何构build的。 假设您可以访问程序背后的源代码和程序员,您可以与开发人员交谈,看看是否有共享通用数据的方法。 但是,如果每个程序都使用自己的数据库或类似的东西,那么你倒霉了。

否则,您可以将数据存储在某种NAS或SAN上,并将常用信息保存在一个共同的位置。

如果这个程序不是为了它,我绝对不会冒险的。 你会腐败的东西,并为自己创造更多的问题。

我有一个应用程序,我认为可能是类似的。

我在vsphere下运行了一个特定的应用程序,每个应用程序都运行在它自己的VM上。 每个服务器共享应用程序数据存储(〜12 GB)的相同vmdk文件,该文件被configuration为独立/非持久性(导致数据只在重新启动时持续存在,而不是closures)。 符号链接将应用程序指向非持久性卷上的数据文件。 应用程序状态和我们需要持久的数据被写入另一个单独的卷。

当更新发布到数据集并假设我们不能closures虚拟机(或没有维护窗口)时,我们只需将更新推送到非持久性存储,因为更改是非持久性的,而vm-具体(至less直到下一次关机)。 而在下一个可用的更改窗口,我们可以最终更新后备vmdk。

我们已经在开发中做了几次这样的事情,虚拟机永远不会停机,但是,这可能不是我们在生产中可以做的事情。

显然,这只有在你有一些虚拟化你的应用程序的方式,以及控制你的应用程序更新的方法时才有效。