各位研究员,
我有几台电脑,有新的,有旧的(我从 1979 年的第一台电脑开始收集它们,它有 2Kbytes 的 RAM)。收集的电脑越来越多,但这个问题的目的与我一直热爱超级计算机的强大功能有关,或者至少是大型机器的强大功能。
我曾经想过将机器连接起来以获得更强大的功能。我运行一个 1Gbit 的 LAN(局域网),其中有 4 台机器,英特尔 i7 2600k,以 4.8Ghz 水冷运行,每台机器都有 16Mb RAM、SSD 和普通硬盘,总共 30Tb 空间(LAN 上的总量)。阅读了有关虚拟化的文章并观看了许多视频后,我质疑在每台机器上安装裸机(类型 1)虚拟机管理程序的可能性,然后创建一个分布在物理机上的虚拟机,这样我就可以在上面安装像 Windows 这样的操作系统,来运行需要大量资源的软件,如 CPU、RAM、硬盘等。
我认为一定存在一种方式,让虚拟机“认为”它安装在一台机器上,但实际上,它分布在多个节点上(就像一个集群)。对于虚拟机来说,它将系统视为一台大机器,但实际上,它有共享的 CPU、共享的 RAM 和共享的硬盘。
使用这种方式,我们可以安装 OP 并运行 Adobe After Effects 或 Adobe Premiere 等程序,这些程序需要出色的并行处理(或 CPU 能力)才能实时预览,或运行可以从多个处理器中受益的复杂软件。我知道很多人会建议购买大型多 CPU、多核 Xeon 机器进行并行处理,但事实并非如此……我喜欢认为,凭借当前的技术,一定有办法连接 PC 并获得更强的计算能力。
我在 YouTube 上看到有人加入 Raspberry pi 并制作“超级计算机”,其运算速度达到 1 teraflop,那么为什么我们不能用我们自己的机器来做呢?这些机器有 LAN、RAM、磁盘……这不是一回事吗?我们只需要软件和如何做,不是吗?可能吗?怎么做?
谢谢
答案1
不幸的是,就目前而言,你想要运行的“超级计算机”在硬件和软件方面都还尚未开发出来。
现有的虚拟化管理程序(如 Hyper-V、VMware ESXi、XenServer)允许在单个主机或集群上运行虚拟机。管理程序利用硬件 CPU、RAM 和存储,并将其“转换”为虚拟资源以运行虚拟机。对于存储,可以将其配置在共享卷中,使用网络连接在主机之间镜像以进行数据传输(如 iSCSI SAN、VMware VSAN、StarWind VSAN 等),但每个虚拟机仍然只使用本地计算 CPU 和 RAM。
根据我的经验,没有任何软件或硬件可以将 CPU、RAM 和存储结合起来,因为没有总线类型可以用于“超级计算机”主机之间的通信。
答案2
应用程序仅限于那些能够有效利用您给定资源的应用程序。除非存在知道如何在所有从属计算机上分配工作量的软件,否则您无法在“超级计算机”上运行 After Effects。
首先,您没有所需的软件。即使您购买了所需的虚拟化软件(无论花费多少,或者公司是否愿意将其出售给您!),集群也有一些最低要求,通常包括几乎相同的规格。我能找到的最接近的软件是 VMware ESXi。
其次,计算机之间相互通信会带来巨大的损失,以至于任何性能提升基本上都会被抵消。通过网络共享 RAM 速度太慢,不可行,而通过 iSCSI 共享驱动器可能不如您预期的那样可靠。
第三,这些普通台式机的能源效率加起来是如此之低,你在一个月左右的时间内就会发现自己无力支付这台“超级计算机”的费用。
你想用现有的资源赚钱,但这不是办法。卖掉你的电脑,买性能更高的电脑,即使是古董也能卖得很好。
答案3
这实际上是可以做到的。曾经有一个名为 ClusterKnoppix 的 Linux 发行版,它基于一个仍然可用的专有但免费的 AFAICS Linux 软件包的开源分支,名为摩斯克斯。
来自管理指南:
MOSIX 是一个通过在集群和多集群私有云内迁移进程来提供负载平衡的软件包。MOSIX 主要用于分布式并发计算,例如用于密集型计算。
它能做什么:
提供单系统映像。
– 用户可以在任何节点登录并且不需要知道他们的程序在哪里运行。
– 无需修改或链接应用程序与特殊库。
自动资源发现和工作负载分配。
但
所有节点必须具有 x86 64(64 位)架构。同一节点的所有核心必须具有相同的速度。
所以它可能不适合您的特定要求。