古典群集问题的解决scheme

这是一个多步骤的问题,请耐心等待。

我正在考虑build立一个小的(10-20节点)集群。 但是,我想要正常的程序(不是为集群devise的)能够利用额外的处理速度。 在最理想的情况下,我希望能够在整个集群上运行一个虚拟机pipe理程序。 据我所知,这个问题没有一个好的解决scheme,可以采取正常的程序,并在群集上运行得更快。

因此,我正在集思广益,如何devise这样一个系统,如果可行的话。 看起来,聚类的固有问题是需要更多的时间来移动数据,而不是处理数据。 (即,将一个问题从一个节点转移到另一个节点需要2秒,但在第一个节点上只需要1秒钟就能解决问题)。但是,我想到了一个可能的解决scheme。

我们只是说从理论上讲,群集中的所有节点都可以从同一个磁盘启动。 因此,他们都可以直接访问相同的数据和相同的程序。 其次,我们假设可以修改Linux内核,将每个新的命令发送到不同的从节点,通过所有节点无限循环。 考虑到这两个条件,用户可以login到主节点的terminal,并以正常(非集群)格式运行命令,但命令的负载将会或多或less地均匀分布在集群中。

所以在这个介绍中,我有两个问题:

  1. 是否有可能创build一个所有的计算机从一个单一的磁盘(可能是NAS)引导的环境? (我知道PXE,但据我所知,它不提供持久性存储,它只托pipe操作系统。)如果目前是可能的,那怎么办呢?
  2. 是否有可能修改内核委托每个新的命令到一个单独的节点? (这可以通过修改bash二进制代替内核本身来完成 – 我不确定)。如果是这样,请详细说明。

这是我曾经在Stack Exchange上问过的最复杂的问题,所以我希望人们在评论中有问题。 但是,如果这个解决scheme实际上可以实施,它可能会彻底改变虚拟化。

是否有可能创build一个所有的计算机从一个单一的磁盘(可能是NAS)引导的环境? (我知道PXE,但据我所知,它不提供持久性存储,它只托pipe操作系统。)

当然,PXE和NFS挂载共享的组合用于持久性存储。

是否有可能修改内核委托每个新的命令到一个单独的节点?

是。

很简单,对吧? 没有那么多

你应该问的问题是:这样做会有多less工作?

在这个问题上已经有三十多年的公司投入了数十亿美元,问题还没有解决。 这并不是说它不能解决,但这是一个非常复杂的问题。

存在多节点,独立操作系统映像,共享存储系统。 例如,在OpenVMS上运行的VMScluster本质上是一个多节点系统。 但是,这不是Linux操作系统,应用程序需要针对不同的平台和多节点意识进行devise。

通常Linux要么扩大规模,要么扩展到更多的机器 对于更大,请将更多的CPU和内存添加到一个操作系统映像。 想想大数据库服务器。 要获得更多信息,请添加具有自己的操作系统映像的小型机器,将它们联网,并使用某种作业pipe理软件或其他负载平衡器。 思考云应用程序或高性能计算。 编辑:请注意,HPC应用程序特别使用MPI接口进行直接内存访问。 这就要求他们针对这些消息库进行开发和构build。