Mosix:强大的集群Linux方案


Linux界现在好像处在疯狂地热衷于集群概念之中。几乎就在几个月之前,唯一的解决方案还只能是自己编写集群软件以达到较高的实用性。当然在科学集群方面,还可以使用Beowulf或者传送消息的集群库(例如 PVM)。但除了早先的这些解决方案,Linux在专有和商业集群的方面上是大大落后的。

   但现在的发展看起来令人欣慰了很多。SGI的Failsafe已基本移植;Linux High Availability(高效性Linux)计划已经启动;Red Hat 推出了Piranha集群软件;等等。

   同时还出现了一些可行的科学集群解决方案,其中最值得推荐的是Mosix。Mosix使用的是单一系统图形(SSI)集群器。SSI集群器之所以受到欢迎是因为它们给用户的感觉像是在一台巨型计算机上工作,而不是一群单个的节点。用户可以登录到Mosix集群器上的任何一个节点,并启动集群器中任何节点上运行的程序,只要内核中的集群软件认为这些程序是可以运行的。如果用户运行的DNS是正确的,他们只需telnet到cluster.mynet.com,DNS的循环功能会让他们随机地登录到某个节点及其分支程序上,然后再分支,分支。

装配Mosix集群器

   有些Mosix集群器可以达到世界上前50种性能最强的的超级计算机的水平。如果有足够多闲置的计算机设备的话,就可以考虑自己动手组装一个Mosix集群器。

   例如,在如下硬件上安装Mosix内核:

3台双CPU计算机,主频从500MHz到933MHz,内存总和为1.5GB左右。

8台单CPU计算机,主频从MMX266MHz到933MHz,内存总和为1.8GB。

存储空间,用了Network Appliance F720,约有120GB的磁盘空间,并使文件系统对所有计算机为可读。非常重要的一点是,所有机器都必须有统一的用户ID和群组ID,否则访问数据时就可能会出现问题。

这些机器通过100/1000Mbit的网络连接起来,中心安置一个光学转换器。
   在这个设计中采用的是用 Network Appliance 存储服务器来实现中心存储的方案,所有集群器节点都围绕其中。有些节点用的是1000Mbit 的网卡,有些用的是较旧的100Mbit。Mosix 会测得每个节点之间的等待时间,并在某个节点上负载过高决定将它的程序转移到其他节点时考虑这个因素。这里使用的网卡是Phobos公司的产品,转换器用的是Nbase公司的。

   从上述网下载两个RPM,并用“rpm -install xxx.rpm”命令进行安装。其中一个RPM是给2.2.16内核的,其中带有所有编译好的 Mosix扩展。另一个则是为监测集群器所用的一套Mosix用户空间命令而备的。

   重新启动各节点进入Mosix内核,此时,工作就已接近尾声了,最后要做的就只是让每个节点知道其他节点的位置。要做到这点,编辑一个映射文件/etc/mosix.map,在文件中指定所有其他的节点和它们的IP地址,这与/etc/hosts文件相似。

   检测一下是否所有节点都能互相看到彼此,运行“mon”监测程序。它将显示所有工作节点的图表和各自的负载水平、内存消耗,及其他信息。
<img src="http://linux.chinabyte.com/image/010613mon.jpg">

mon监测程序的运行界面

启动集群器


   现在就实践一下吧,可以试着创建一个进程,如distributed.net所说的dnetc RC5破程序。然后再加几个其他的进程。此时看一下“mon”程序会发现你的计算机的负载很高,而其他则仍很低。但很快,你节点上的负载量会逐渐降低,而其他节点则相应上升,因为你机子上的一些进程被转移到了其他更佳的节点上了。Mosix会自动调节转移的时间和节点位置,而无需用户对此进行控制。

   为了对这个新集群器的强大性能有个具体的概念,笔者在集群器之外的Linux上写了一组脚本,在某个节点上启动程序并测定该集群器的运行情况。这些程序由质数运算器、互动式空程序,及共享的内存使用进程组成。

   当节点在集群器(双CPU PIII 933-MHz,768MB RAM)之外时,该机器最高达到20个质数运算器、40个互动式任务,以及大约30个共享内存进程。运行了这些程序后,几乎连登录都不能运行,再也不能添加额外的负载了。

   而在集群器中的情况就大为不同了,在最大的节点上可以运行450个以上的质数运算器、数百个shell和大约210个共享内存任务(内存参考模式规定,共享内存程序不能转移到其他节点。)

   如果在单个的计算机上要完成这些任务,不知道需要多高的配置,但至少不会低于Sun E6000或HP V2000大型机的水平,它们的价格达十万美元之巨。而现在所有这些硬件只需要不到2万美元,是Linux使我们做到了这一点。

在多个节点上创建单一图形集群器只有在程序被转移到另外节点时仍能看到其设备和文件时才是有意义的。Mosix无需中央存储器就能做到这一点,具体情况如何呢?

   当一个进程转移到集群器中的另一个节点时,它的代码存根仍保留在原来的节点上。每当需要输入/输出时,该进程会将请求发送到最初节点的代码存根上,而后代码存根在本地进行输入/输出处理并返回结果。

   当然,这会加大输入/输出密集的程序的负担。为减少这种网络活动,提高整个输入/输出的效率,Mosix开发人员开始将
全局文件系统(Global File System,GFS)移植到Mosix集群器中。

   全局文件系统是Linux的共享盘集群器文件系统。GFS支持客户机故障时的日志和恢复。GFS集群器节点通过Fibre Channel或共享的SCSI 设备物理共享共同的存储器。看起来,文件系统在每个节点上都像是本地机上的,GFS使文件访问在集群器中保持同步。GFS是完全对称的,也就是说,所有节点都是均等的,没有哪个服务器会是瓶颈或出现任何故障。GFS在维护所有Unix文件系统时使用读/写缓冲。

   但是,GFS也存在着一个缺点,它只能运行在较新的SCSI控制器上,而不能在以前的产品上运行。不过对于装备了新设备并且确实有集群必要的用户来说,GFS是非常好的解决方案。

   Mosix GFS执行的时间还不长,但性能确实很好。想想家里要是有这么个功能强大的巨型机该是多么好的感觉。那么,如果你有好几台装了Linux的闲置机器,又想搞个大型机玩玩的话,就试试Mosix吧。

   欲对Mosix有一个全面的了解,请访问网站:http://www.mosix.org/。 

MOSIX是Linux核心集群计算的功能之一。它支持的操作系统平台有BSD/OS 和Linux,它允许任意多个基于X86/Pentium的服务器和工作站协同工作。在MOSIX集群环境中,用户无需对应用程序进行修改,或将应用程序与库连接起来,或将应用程序分配到不同的节点上运行。   MOSIX为Linux核心增添了集群计算的功能。它支持的操作系统平台有BSD/OS 和Linux,它允许任意多个基于X86/Pentium的服务器和工作站协同工作。在MOSIX集群环境中,用户无需对应用程序进行修改,或将应用程序与库连接起来,或将应用程序分配到不同的节点上运行。MOSIX会自动将这些工作透明地交给别的节点来执行。   MOSIX的核心是适应性的资源管理算法,它对各节点的负载进行监测并做出相应的回应,从而提高所有进程的整体性能。它使用抢先的进程迁移方法来在各节点中分配和再分配进程,从而充分利用所有的资源。适应性的资源管理算法具体上又包括适应性的负载平衡算法、内存引导算法和文件I/O的优化算法。这些算法都对集群中的资源使用情况的变化做出响应。如:节点上的不平衡的负载分布或由于内存不足而导致的过多的磁盘换入换出。在这种情况下,MOSIX将进程从一个节点迁移到另外一个节点上,从而来均衡负载或将进程迁移到有足够的内存空间的节点上。   由于MOSIX是在Linux的核心中实现的,因此它的操作对应用程序而言是完全透明的。可以用它来定义不同的集群类型,这些集群中的机器可以相同也可以不同。   与Turbocluster、Linux Virtual Server、Lsf等集群系统不同的是,MOSIX集群中的每个节点既是主节点又是服务节点,不存在主控节点。对于那些在本地节点创建的进程而言,该节点就是一个主节点;对于那些从远方节点迁移过来的进程而言,该节点就是服务节点。这意味着可以在任意时刻向集群中增加节点或从集群中删除节点,而不会对正在运行的进程产生不良的影响。MOSIX的另外一个特性就是它的监测算法能够监测每个节点的速度、负载、可用内存、IPC 以及I/O rate 。系统使用这些信息来决定将进程发送到哪个具体的节点上。当在某个节点上创建了一个进程以后,该进程就在这个节点上执行。当该节点的负载超过了一定的阀值以后,就将该进程透明地迁移到别的节点上继续执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值