请考虑以下几点:
我(假设)有一个具有两个磁盘的重量级服务器/主节点,以及10千兆位局域网上的一组轻量级无盘客户机/节点。
服务器正在运行: DHCP和TFTP,以便在PXE上为客户端提供一个内核。PXE内核将主服务器上的NFS作为根文件系统加载和挂载。
我通过主服务器路由所有的internet访问,并与客户端共享它,以防止由于我希望在节点和主机之间实现最大的I/O而带来的安全问题,从而创建一个私有的不受保护的可信网络和一个公共防火墙网络。这是因为我的主节点将有2个gigE端口。
我们的目标是以不到4000美元的价格为大约6个人建立一个软件开发实验室。其想法是尽可能多地共享硬件。
我的问题是:更好的方法是直接在NFS挂载上编译,或者在tmpfs (一个完全在RAM中没有后备存储的文件系统)上进行编译,然后在主节点上使用我的交换(希望我不必过多使用它)。还是值得只为从节点获取SSD,以便它们可以执行本地编译,然后将结果保存到主节点上的NFS挂载,同时记住这是非常昂贵的,并且与设置的目标背道而驰。
发布于 2011-09-15 21:45:10
我已经建立了这样的多个系统。启动磁盘/USB可以访问DHCP和TFTP站点,从而将映像加载到任何要临时添加到集群中的随机系统,这也非常方便。您还可以设置工作站,以便在夜间自动重新引导到集群中(对于一些非高峰处理功能),并在白天重新引导到任何其他操作系统。顺便说一句,如果你是用手做的话,有很多工具包可以帮助你。
要回答您的问题,在这样的系统上进行编译的一般方法是使用所有磁盘在前端编译,并将主目录NFS从那里安装到计算节点。如果将其放在tmpfs上,则必须在重新编译时重新构建节点。如果您曾经扩展到数百个或数千个节点,NFS可能不会扩展到那么高的范围,但是像autofs这样的工具可以帮助解决这个问题,并且nfs可以很好地满足您的需要。我假设您将这个系统设置为运行某种并行作业(MPI、hadoop等)。我之所以提到这一点,是因为您可能希望6个用户以一种有效的方式共享这个并行资源。我建议对作业使用排队系统,这样单个计算节点一次不会被多个用户共享(单个作业可以跨越多个/所有计算节点)。
SSD可能不错,但我认为它们完全辜负了您拥有廉价并行计算资源的目标。只要您有足够的RAM来保存一个小映像并运行您的作业,NFS就会很好地将应用程序代码提供给它们。如果你在记忆中不能胜任你的工作,那你就成了另一场比赛了。在这种情况下,考虑需要多少个计算节点才能适应内存中的作业(毕竟,这是一个并行作业,希望它能扩展到这个程度)。无论如何,RAM比SSD更快,所以在昂贵的SSD上额外的钱通常会花在更多的具有更多RAM的计算节点上。
https://serverfault.com/questions/311985
复制相似问题