|
|
用户名:kevintop 笔名:树梢上 地区: 中国-北京 行业:其他 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
欢迎访问树梢上的博客!!!
Mesothelioma Attorneys, Mesothelioma Lawsuit Info!
(作者置顶)
WAP的相关市场数据
WWW固定互联网 | WAP无线互联网 | |
计算能力 | 强大 | 一般 |
表现形式 | 丰富 | 比较简单 |
内容承载 | 很多 | 多 |
可移动性 | 一般 | 强大 |
现有用户 | 9000万 | 3000万 |
用户增长 | 快 | 非常快 |
用户资费 | 50—100元包月 | 10—20元包月 |
用户操作 | 复杂(需要掌握电脑知识) | 简单(只需要一部WAP手机) |
用户分析 | 简单 (缺乏具体用户资料) | 精确 (可以掌握用户的手机号码、属地、手机型号等信息) |
SMS手机短信 | WAP无线网站 | |
计算能力 | 简单 | 强大 |
表现形式 | 70个文字 | 海量的文字、图片、动画等 |
内容承载 | 少 | 多 |
应用开发 | 简单 | 强大 |
潜在用户 | 3亿 | 3000万 |
用户增长 | 快 | 非常快 |
用户资费 | 0.1元/条 | 10—20元包月 |
用户操作 | 简单 | 简单 |
用户分析 | 简单 (只能获取用户的手机号码) | 精确 (可以掌握用户的手机号码、属地、手机型号等信息) |
如何架构高性价比的分布式计算机集群(五)
背景资料:
相关名词
SMP:对称多处理器
LTSP:Linux终端服务器项目 (Linux Terminal Server Project)
Kernel:内核
Ramdisk:内存虚拟盘
Etherboot:以太启动
Bootrom:网卡启动芯片
大型主机(Mainframes),超级计算机(Supercomputers)和集群(Clusters)
纵观计算机的历史,最先让人了解的就是大型主机和超级计算机,这是计算机历史的一部分,没有这些大家伙,就没有今天的个人电脑。这些大家伙通常是一个或几个有强大研发队伍和资金的厂商完成,最初的目的是军方或政府的需要,很多大学的研发也促成了这些大家伙更强大。一般情况下,大型主机和超级计算机都使用超过8个,多达上百个的CPU和自己的专用操作系统,计算机历史上很多的重要成员都和这些大家伙有关,IBM,DEC,Cray,SGI,HAL。大型主机已经成为历史,而超级计算机成了各国技术实力的争夺焦点,但是目前个人电脑的发展使集群成为竞争超级计算机的强大对手,集群的CPU数和浮点能力和超级计算机的差距已经越来越近。
Cluster
集群系统,也有成为机群和群集系统的。集群主要分为三类:容错集群(Fail-over Cluster),负载均衡集群(Load balancing Cluster),高性能计算集群(High Performance Computing)。
容错集群是指两台主机通过两个或两个以上网路连接的系统,其中一个连接称为心跳线(heartbeat),利用每台主机上的服务进程监控对方主机的状态,一旦发现对方主机宕机或出现不能正常工作的情况,心跳线会反映给互为备份的另外一台主机,该主机则会接替出问题的主机。典型的使用场景是空军的雷达追踪系统。
负载均衡集群一般用于相应网络请求的网页服务器,代理服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。
高性能计算集群是指具有响应大量计算的性能,可以作为数据中心使用的计算机的集合。比如压缩mp3,气象云图的分析等。
集群模式
(N)UMA非一致性内存访问(Non-)Uniform Memory Access一般是指通过执行特殊的程序代码对内存的共享访问。在Linux内核中,可以执行对访问时间内的不同内存区域进行交叉访问,也就是内核进程可以使用接近CPU使用时的内存。对正在使用内存区域的访问,才可以共享。线性的内存访问是无法共享的。
PVM/MPI是指并行虚拟机(Parallel Virrual Machine)和信息传递界面(Message Passing Interface)。在Beowulf的世界里最常提到的就是这两个概念,该软件包已经提供了多平台的版本。通过开放式的标准信息传递库,并行机之间可以通讯,事实上PVM也是一组库,程序可以使用这些编译库来改造程序适应并行系统。但是这些都要相应的修改源程序,系统内核事实上并没有发生改变。
其他模式:Turbo Linux EnFuzion,Platform等网格计算(Grid Computing)不必讨论这类集群不是单纯意义的集群,以Enfuzion为例,EnFuzion是Turbo Linux收购的一个软件改良版(前身就叫Cluster),因为使用了Java,可以跨平台,使用驻留系统服务来监控集群间的通讯,事实上是任务分发和监控器,依赖于计算数据离散性,对于数据不可分的程序,无能为力。也就是说每个节点都运行相同的程序,但处理的数据是不同的,该集群提供了控制这些程序的界面,跨平台性也只是依赖于计算的应用有跨平台版本,而其只提供跨平台的监控。主要集中在CPU空闲的监控和计算的再分配。
数据可分和程序可分
集群计算中最重要的就是分布,根据不同的应用,分为两种:数据可分和程序可分。
数据可分是指数据间没有必然联系或联系在结果的基础上,比如mp3的压缩,每个单独的mp3互不关联,或者有限元计算的某个步骤,单一的曲面计算生成结果再参加后面的关联计算,更著名的是SETI@home通过分析射电望远镜的信号寻找外星人,这是典型的将中间分析结果传递给下一部分析,这就是数据可分,这最适合网格计算。
程序可分,用过ANSYS的人都知道商业软件分为单处理器和多处理器版本,因为计算量大,所以支持SMP的计算软件和使用单一CPU的软件是不同的,多CPU共同运算时也要考虑到内存的访问,处理通讯和负载均衡,除非操作系统支持,不然使用DOS和Windows9x很难用到第二个CPU(甚至不可见),有了操作系统的支持,应用程序也要支持,即使操作系统支持并行,应用程序不可分的话,只能使用1/n(n=CPU数量)的处理能力,典型的例子就是2CPU的WindowsNT/2000下使用单处理器版本的ANSYS,处理器进程显示50%,但是2CPU共同生效。而使用多处理器版本时,2CPU都可以在98%的使用率。因此程序可分是集群重要的应用基础,即使程序本身不可分,而集群支持子进程的迁移,也意味着类似SMP系统支持程序可分。
SETI@home
在家寻找外星人计划,这是NASA全球计划之一,位于波多黎各西北的一个火山口中垂直对天的射电望远镜Arecibo(007黄金眼中最后决战的地点和X-files第二部第一集中收到外星人电波的天线,直径305米,接收器高约30米,约位于130米高处),用于收集来自宇宙的无线电信号,就像TCP/IP网中的sniffer,这是宇宙中的一个嗅探器,通过收集信号,来分析由智慧生物发出的,有一定规律的无线电。比如,第一台电视的信号和猫王歌曲在多年前通过收音机发送的无线电信号,至今还在宇宙中遨游,虽然可能很微弱了,但是还可以接收到。这个计划就是接受类似外星人的无线电信号,具体的步骤是让个人电脑的用户下载客户端程序,一个屏幕保护程序,或一个命令行程序,然后在连接互联网时下载大约330KB的数据包,然后利用处理器空闲时间计算。该数据包只是庞杂数据中的一小部分,但是全球目前加入的上亿台计算机就构成了最大的超级计算机,当计算完成后,在连接互联网时上载结果,并下载新的数据包,根据其目前的计算形式,Intel称为P2P计算,其实是网格计算的一种。上载的数据不是最终数据,经过和其他人加工的数据整合,会产生新的结果,这时可能要继续计算,也可能就此产生阶段报告,每天SETI@home的主页上都会有新的成果,当然不一定是发现外星人的报告。笔者的成绩因为借助了自己设计的网格计算,全球4055845位排名1787名左右,还在向前靠拢,大约是完成了23096个数据包,在中国目前第一。



相关连接:
SETI@home的主页:http://setiathome.ssl.berkeley.edu/index.html
笔者的成绩:http://setiathome.ssl.berkeley.edu/fcgi-bin/fcgi?email=dw22077@163.net&cmd=user_stats_new
openMosix小组的成绩:http://setiathome.ssl.berkeley.edu/stats/team/team_151601.html
波多黎各Arecibo射电望远镜:http://www.naic.edu/
需要强大计算的应用
财务与社会行为分析,使用数学模型模拟的计算。
音乐,图象等多媒体数据处理,例如mp3压缩,动画渲染,后期处理。
流体力学,有限元分析,例如乐高玩具的数字模拟强度分析。
编译,数据库挖掘。
医学研究,例如AIDS和DNA的结构分析,成功运作的有UD(United Devices http://www.ud.com/home.htm)
天文研究,例如SETI@home,在家寻找外星人项目(http://setiathome.ssl.berkeley.edu/index.html)。天气和海浪预报。
电子电路数字模拟分析,例如研发新的处理器。
穷举解密,例如破解DES密码(http://www.distributed.net/index.html.en)。
正在研发的分布式计算系统
Beowulf
是目前开放源码世界中最大的高性能计算项目,该项目就在探寻能适应于不同需要,不同处理速度的计算组合。但是这个项目并不是指单一的某个软件包或者一种技术,而是整个研发方向的综合。你可以在该项目中寻找适合你的技术和软件,还有很多项目成员并未找出通用的方法,而是将已经在使用的专门系统公开到Beowulf项目中,让大家参考。其中有用于分布式编译,数据采集,还有多媒体处理等很多领域。

相关连接:www.beowulf.org
Plan 9
1993年源于贝尔实验室(Computing Sciences Research Center of Bell Laboratories) 开发的新分布式操作系统,建立在Unix和C与C++基础上,支持的处理器有Intel x86, Sparc, Alpha, Power PC, 和ARM。目前没有象KDE漂亮的图形界面,使用上接近UNIX,标准UNIX工具也可以使用,但是从设计原理和基础上不同于UNIX,核心已经完全重写并设计成网络操作系统,就像设计完UNIX后的补充,其中设计元素包括用户端的终端,存储固定文件的服务器和提供更快CPU的计算服务器,提供用户验证和网关特性。
目前吸引人的焦点是Plan 9的文件系统可以支持所有的系统服务进程,也就是说所有任何用户可以使用的资源在文件系统中都可以找到唯一的命名,已经可以称为命名空间了。通过网络层的协议9P来访问所有的资源,这一点类似NFS,但不同之处是对用户不透明。支持异构的网络:以太网,光纤和普通调制解调器,还有ISDN的连接。
较早的Plan 9更像文件系统,现在的系统支持更多的用户并发。标准情况下,用户可以运行任意的从他们的终端上或CPU服务器上启动应用,应用将会从文件服务器上获取数据,并且可以小到在笔记本上运行。因为具备了高可配置性,因此摆脱了客户机服务器体系的中心控制模式。



相关连接:http://plan9.bell-labs.com/plan9dist/
其他的网格计算
http://www.gridcomputingplanet.com/ 网格计算的信息站点
http://wwws.sun.com/software/gridware/ SUN的网格计算软件
http://www.turbolinux.com/enfuzion TurboLinux的EnFuzion
如何编译内核
首先你的手中要有一个Linux的分发版本,RedHat是个不错的选择,为了具有普遍性,下面的操作是在RedHat 7.2的基础上完成的。
当你安装完Linux后,你需要确认下列的rpm包已经存在(*是指不同的版本),你可以使用rpm -Uvh来安装(绝大多数文件在CD2中) :
|
如果你从www.kernel.org上下载了Linux稳定的内核2.4.18,可以将他解开并移到/usr/src目录下:
|
你可以修改Makefile文件来改变编译的内核名称,RedHat 7.2的内核版本是2.4.7.10,首先要清理编译的过程文件,将当前版本内核配置文件作为新编译内核版本的配置使用,编译中的错误输出到指定文件
|
编译内核的初始化文件:
|
修改GRUB的启动配置(/boot/grub/grub.conf)文件,加入新编译内核的条目:
|
下次启动时就可以选择了。
www.Rom-O-matic.net
动态创建以太网启动映象。目前的版本是5.0.7。使用的原理就是用软盘启动来模拟网卡的启动芯片。主页是交互式的,通过下拉菜单,可以选择网卡的类型和映象类型。在配置菜单中还可以设置支持的启动类型和其他的参数,最后点击Get ROM将提示保存映象文件。把保存的结果传到Linux上,使用cat命令将映象文件创建以太启动软盘。

LTSP的启动过程
LTSP的启动过程需要很多步骤,了解这些步骤可以很好排除出现的问题:
以下的例子硬件环境是
客户端DELL Gx1 PII 350MB 128MB 3C905B ATI rage128
服务器端运行RedHat 7.2和DHCP服务
网络地址范围192.168.0.0网段,子网掩码是255.255.255.0
客户端开机自检
在开机自检的过程中,BIOS将检测扩展的芯片,也就是网卡上增加的用于以太网启动的启动芯片(bootrom),BIOS可以检测到网卡上的启动芯片。 一旦开机自检完成,执行步骤将到以太启动代码。 以太启动代码检测网卡类型,当检测正确时,初始化网卡。
以太启动代码将在本地网段中发申请DHCP的广播,网卡的MAC地址将包括在该广播中。
服务器端的DHCPD守护进程将收到来自客户端的广播申请,检查配置文件中与接受到客户端MAC地址相匹配的参数。
DHCPD守护进程发送回复的数据包,该数据包中包括:该客户端的IP地址,本网段的子网掩码,下载内核的路径,需要装载的根文件系统的路径,传递内核命令行执行的参数。
以太启动代码将从服务器接受这些数据,随后开始按照提供的数据配置网卡的TCP/IP设置。
使用TFTP(Trivial File Transfer Protocol直接文件传输协议),以太启动代码可以从服务器上下载内核。
一旦内核下载到客户端完成,以太启动代码将把内核放到内存正确的位置。
完成必要步骤之后,控制权交到内核控制,内核将开始初始化整个系统和全部的可识别外围设备。
下面才是真正的开始。因为内核是文件系统的镜像,需要象调入内存的虚拟盘中,并作为根文件系统临时装载到系统中。用内核命令行表示root=/dev/ram0引导内核镜像作为根文件系统装载。
正常情况下,内核完成启动过程后,将启动init进程。需要指明内核如何调入shell脚本,用init=/linuxrc命令行表示。
/linuxrc脚本将扫描PCI总线,搜索网卡等。每种类型的PCI驱动都会在/etc/niclist中寻找匹配的参数。一旦发现匹配的,该网卡类型的模块将返回给内核用来加载。对于ISA接口的卡,驱动模块必须被内核以命令行方式加载,并且需要特别指定中断和占用的地址。
一旦网卡被识别,/linuxrc脚本将加载前面返回的内核模块。
dhclient将随后运行来从DHCP服务器来的确认请求。这里需要特别区分确认的类型,从以太启动得到的确认将被内核取消,内核将忽略任何曾经特殊指定过根路径的NFS(网络文件系统)服务器。如果你的NFS服务器和TFTP服务器不是同一台时,这一点非常重要。也就是说这是系统不再依赖TFTP服务器而是开始使用NFS服务器来装载文件系统了。
当dhclient从服务器得到回应,将开始运行/etc/dhclient-script文件,它将重新收集系统信息,配置eth0网卡。
从上面的几点,根文件系统实际是在内存虚拟盘里的。现在/linuxrc脚本将通过NFS装载新的根文件系统,这个目录就是在服务器上共享的/opt/ltsp/i386目录。它将被装载成新的根文件系统。首先它要被装载到/mnt目录下,随后将作一次根对称 (pivot_root),也就是把当前的根文件系统和新文件系统交换,一旦完成,NFS文件系统将装载到根,而旧的根文件系统将会装载到/oldroot目录下。
当装载和根对称完成,也就完成了/linuxrc脚本,这时才真正的开始init进程。
init将读取 /etc/inittab文件开始设定客户端环境。
init提供了运行级别(runlevel),客户端不同的服务进程运行在不同的运行级别上,LTSP客户端的运行级别就是2,这是系统缺省的运行级别。
列在inittab中头一项的就是rc.local文件,该命令是运行于客户端的系统初始化状态(sysinit)。
rc.local脚本将创建1MB的内存虚拟盘,其中有在整个过程中随时需要写和修改的任何文件。
内存虚拟盘将被装载到/tmp目录下。任何需要写的文件都会真实的存在/tmp目录下,然后创建相应的符号连接到正确的目录下。
随后是/proc文件系统被装载。
如果客户端配置为通过NFS作交换区(swap),/var/opt/ltsp/swapfiles目录将会被装载到/tmp/swapfiles下。反之,如果没有设置,交换区将被自动创建。交换区的大小设置在lts.conf文件中配置。 交换文件通过swapon命令激活。自循环(loopback)网卡将被配置,设定IP地址为127.0.0.1。
本地应用模式激活,随后/home目录将被装载,随后的应用将以用户的家目录起始访问。
一系列的目录在/tmp文件系统下创建,用来提供给系统运行作临时过渡文件。这些目录包括:
|
配置X Windows系统,在lts.conf文件中,参数(XSERVER)是不可缺少的,一般设定为auto自动,这意味着尝试自动检测。如果是PCI的设备,将尝试获取驱动厂商和驱动设备标识,并从/etc/vidlist文件中寻找匹配项。
如果该卡支持Xfree86 4.x版本,PCI扫描程序将返回驱动模块的名称,如果仅支持Xfree86 3.3.6版本,PCI扫描程序将返回将要使用的X服务器的名称。rc.local脚本可以选择不同的版本使用,因为旧的3.3.6服务器是使用XF86_开头的。如果是Xfree86 4.x版本,/etc/rc.setupx脚本将创建XF86Config配置文件给4.x版本。反之,XFree86 3.3.6将由/etc/rc.setupx3脚本创建XF86Config配置文件。
XF86Config配置文件是基于/etc/lts.conf文件的,当rc.setupx脚本完成后,将返回给rc.local脚本,创建/tmp/start_ws脚本,该脚本是用来启动X服务器的。
随后创建/tmp/syslog.conf文件。该文件将告知syslogd守护进程发送关于系统的日志信息到指定的日志机接收。日志主机定义在lts.conf文件中。事实上/etc/syslog.conf是/tmp/syslog.conf的符号连接。 启动syslogd守护进程,配置文件在上一步骤已经创建。 返回控制权给init进程,该进程将寻找初始缺省的运行级别。缺省的LTSP核心运行级别定义是2。
缺省的运行级别是2将导致init设定运行级别set_runlevel脚本,该脚本将读取lts.conf文件并定义客户端实际运行的运行级别。客户端LTSP运行级别一般是3,4和5:
3 - 将启动shell,常使用在排错模式,本文中也是定义为3。
4 - 将会在字符模式启动一个或更多的telnet进程,这将有力的替换旧的串行终端。
5 - 图形用户界面,这是X Windows,并且发送XDMCP申请给服务器,随着登录对话框的出现,你就可以登录到服务器了。这种情况下,服务器需要启动显示管理器,例如XDM,GDM,或KDM。
相关连接:www.ltsp.org
MOSIX和openMosix
MOSIX是指Multicomputer Operating System for UnIX,最早原自FEHAL,直到第6个原型还是为BSD/OS,第7个DATE_FEHAL原型开始为GNU/Linux平台开发。正如其他开放源码的程序一样,评估一个最有发展潜质的系统为未来的开发方向是个必然。Barak教授是原始MOSIX项目的领导者。MOSIX原理是利用给内核增加补丁的办法全面兼容Intel架构的32位处理器,支持内核级的负载均衡,可以将负载准确迁移到集群成员,系统会自动或手动的将负载优化的分担给各节点。这种准确的进程迁移使集群类似一个巨大的SMP系统,多个节点就象多个处理器,进而提供了一种不同于NFS的缓冲连接,时间标记连接,稳固连接的强大应用高性能计算组合。
MOSIX是用户端透明的(应用程序不需要因为集群而修改源代码)Linux集群系统解决方案,openMosix是MOSIX的新公开分支,出现该版本的原因是2001年底,MOISX项目决定不再遵循以前的GPL许可,转而到非GPL许可中。事实上,新版本的MOSIX代码已经排除了不限制许可的代码,并加入了所有版权保留(All rights reserved) 的限制。由于这个突然的变化,MOSIX新的发布版本不再是免费的版本,而且尚不清楚目前使用者的权限有什么变化。实际上,未来没有什么能阻挡MOSIX的作者对使用MOSIX的用户收取费用。
鉴于这个明显的原因,许可的变化使很多正在使用MOSIX的用户开始关注这个问题,这一切从MOSIX的邮件列表存档和代码从主页上删除开始,情况越来越恶化。非常幸运的是,有一些人并不仅仅象大众一样关注这种变化。Moshe Bar,MOSIX项目的核心经理,商业MOSIX公司的普通经理,他不同意改变原来的GPL许可,对变化的第一反应就是Moshe本人开始openMosix项目,并保MOSIX免费版本继续为公众服务。OpenMosix是遵循完整的GPL2许可。
在openMosix项目刚开始,至少350人的MOSIX用户切换到openMosix,openMosix建立在Amnon Bark的2002旧MOSIX版权基础上,未来的代码版权属于Moshe Bar,另外Moshe因为新颖更多的开放式研发风格提高了openMosix的研发速度,虽然受他所尊敬的Barak教授经过再三考虑没有加入openMosix,继续留在当时具有1000全球用户的Qlusters公司(即MOSIX转向商业后的公司),但是现在有14个人为openMosix项目研发,而MOSIX仅仅有4个人。在这种情况下,openMosix代码的很多问题被修复,性能得到提高。而且在增加很多新的特性的基础上,更广泛的,高性能的特性也在研发中,比如自动配置,新的用户端工具,节点探测。目前为适应标准化,将会把/proc/mosix文件修改为/proc/hpc,/etc/mosix.map修改为/etc/hpc.map。而且新版本Mosixview也开始支持openMosix。/etc/hpc.map是节点自探测的重要部分。OpenMosix项目的主页连接是www.openMosix.org,项目文件连接是http://openMosix.sourceforge.net。
现在尘埃落定,openMosix和MOSIX的分裂已经平息,其结果使开放创新的得到发展,研发速度更快,更有活力。无论如何Linux的集群解决方案将继续发展。

MFS, DFSA, mosrun, mosmon, migrate
MFS (Mosix File System) 是位于根目录下的mosix文件系统,当mosix启动后,系统自动将所有节点机的根文件系统加载到/mfs下。
DFSA( Direct File System Access),直接文件系统访问,正如MFS装载节点文件系统一样,直接访问节点文件系统是集群具有全局性的必要功能,这样节点间的访问是透明和无缝的,所有的节点访问路径是一致的。
Migrate是进程的迁移,当你启动mosix后,你会发现该进程已经自动的迁移到集群的另外一台机器上去了,每一个进程都有自己独立的源节点,称为UHN(unique home node)。能够迁移就意味着进程被切割成了两个部分,用户级和系统级。用户级的部分将可以迁移到远程节点中,而系统级的部分将留在自己的独立源节点(UHN)中,系统级部分也被称为代理进程,这个进程用来处理解析来自系统的调用。Mosix可以处理2个CPU的通讯,也就是说目前任意双节点间的通讯类似双CPU的SMP,该命令可以指定进程在任意节点间迁移,并可以设定负载均衡。
mosrun是使用mosix加载应用的命令,其中-j可以指定特殊的节点机运行程序。
mosmon是集群节点监视工具。
setpe 设置MOSIX的节点配置
如何架构超过254个节点的集群
问题的关键使网络节点,地址的限制使节点数限制在254个,但是通过修改/etc/mosix.map可以增加新的网关来增加新的地址段,也就是增加节点。作为网关的地址用ALIAS标记。这样理论可以增加到65535个节点。不要忘记修改/etc/hosts文件和保持客户端的配置文件一致。
|
初始安装完系统推荐禁止的服务程序
使用chkconfig -list可以列出目前安装的服务进程,有很多可以停止。下面是一些缺省启动,但是可以在集群中禁止的服务:
|
如何规划你的网络和计算场
首先你要确定最终使用的节点数目,使用什么样的处理器,是单CPU还是SMP,内存的多少可以满足计算的要求,硬盘存储的增量是多少,计算是I/O密集型还是CPU密集型,是否需要磁盘阵列。其次是分析你的网络,网段是多少,是否有DNS服务器和静态的IP地址,网关和子网掩码是什么,如果是动态地址分配,DHCP服务器是什么,主机名是否有要求,交换机的类型是什么,跃点有几个,服务器系统的类型,服务器间使用的通讯协议是什么,是否是10MB和100MB混用的环境,连接ISP的连接是否有防火墙,网线的类别是否满足要求,压线的方式是否正确。最后是拓扑结构图,包括集群在内的网络拓扑图,便于检查拓扑结构和排错。
MOSIX集群主要有三种规划模式:单一池 (single pool) 是将所有可以利用的无盘节点,工作站和服务器都集中到一起。服务器池 (server pool) 是将所有服务器矩阵集中到一起集群。适应池 (adaptive pool) 是将集群节点按照时间段划分,动态的加入计算集群。
计算场的硬件可以参考:



因文章篇幅限制,很多集群的特点和实现方式不能例举,加之文章种种不足之处,希望能和爱好者与研究多年的专家共勉。
特别感谢Moshe Bar,James Jensen和clump/OS (pachyderm software)的开发者Jean-David Marrow,没有他们就没有开放的MOSIX,就没有热心快速回答我问题的专家。还感谢我的家人Grace和我的老板Andy Seah,没有他们,我也不能专心的研究技术,谢谢。最后感谢蓝潮志诚网络有限责任公司的杨波先生,因为他的协助,避免了我在硬件上耗费过多的时间,因为他的出色经验,保证了硬件的质量稳定,提供了全球性价比最高的集群系统。
本文作者版权所有,如需更改应得到作者同意,如需转载应得到作者授权,作者保留所有法律诉讼权利。遵守GNU和GPL的转载需保证原文完整性,包括本版权声明。
如何架构高性价比的分布式计算机集群(四)
典型的配置文件
|
|
|
|
省略一部分
|
|
常见问题和解决方法
内核编译失败怎么办?
编译内核是MOSIX集群的最大操作,对于没有编译过内核的人会遇到很多编译失败的问题。对于经常出现的问题和解决办法如下:
编译失败在SCSI设备时,如果没有SCSI设备,在编译配置菜单中除去SCSI选项。
编译失败在SiS芯片时,如果没使用SiS芯片组的主板,在编译菜单中除去SiS芯片支持选项。
更改编译文件后仍然编译失败时,注意将上一次编译的中间文件清理干净,使用如下命令(不要忘记备份.config文件):
|
DHCP为什么不能正确读取配置文件?
确认你的DHCP版本要3.0.1以上,可以到RedHat的网站上下载。另外检查/etc/dhcpd.conf文件配置是否有错误,可以参考本例的文件。
配置完启动时出现sshd加载失败时怎么办?
该情况出现在MOSIX修改sshd的属性后出现,你可以加载MOSIX的ssd守护进程,操作如下:
|
首次启动MOSIX时提示Host name lookup failure是什么原因?
这是由于/etc/hosts文件没有正确标出主机名对应的地址造成的,修改/etc/hosts文件正确就可以。
首次启动MOSIX时提示以下错误:
setpe: the supplied table is well-formatted,
but my IP address (127.0.0.1) is not there!
是什么原因?
这是由于RedHat Linux 的host文件缺省只有127.0.0.1对应主机名,可以将/etc/hosts文件中的127.0.0.1 mosix localhost分开描述:
|
制作LTSP启动内核映象失败
注意使用的LTSP初始化工具是ltsp_initrd_kit-3.0.1-i386.tgz版本,其他的版本因为修改了初始化脚本,目前没有方法可以初始化成功。
另外制作启动内核映象时必须有mknbi-1.2-6.noarch.rpm包,从RedHat的网站上可以下载最新的版本。
配置ltsp客户端DHCP启动失败
检查/etc/dhcpd.conf文件指向的启动内核路径正确,确认物理连接正确,确认软盘未损坏,确认LTSP内核启动文件正常编译。确认安装并启动了tftp守护进程,确认/etc/exports文件共享了正确的客户端根文件系统路径。
配置ltsp客户端启动X Windows失败
如果需要在客户端启动X Windows,需要安装LTSP的X包,并根据显示卡的不同安装不同的X服务器版本。
|
下载连接是:http://sourceforge.net/project/showfiles.php?group_id=17723
如果并不需要启动X Windws,需要修改/opt/ltsp/i386/etc/lts.conf文件中X_USBMOUSE_BUTTONS = 3即可启动文本界面。
LTSP客户端启动后找不到主机名或不能解析主机名
确认/opt/ltsp/i386/hosts文件不是符号连接,并且和/etc/hosts文件一致,确认/etc/dhcpd.conf文件中加入自动生成主机名配置,确认生成的主机名与hosts文件中的一致。
LTSP客户端启动后不能启动mosix
确认/etc/mosix.map和/opt/ltsp/i386/etc/mosix.map文件一致。
启动mosix后没找到mfs目录
手动创建/mfs目录:
|
如何架构高性价比的分布式计算机集群(三)
|
5.下面是利LTSP配置客户端系统,首先需要安装必要的软件包。并将文件安装放到到适当的路径下。
|
6.因为使用的是openmosix,你需要单独展开的linux-2.4.18.tar.gz文件和openmosix的补丁文件,需要将openmosix的补丁加入,你在安装openmosix-kernel-2.4.18-openmosix2.src.rpm时,源文件会存在于/usr/src/redhat/SOURCES/目录下,同时还有内核补丁文件。
|
7.将内核补丁文件展开并加入内核源文件,并作编译前准备,将旧的内核编译中间结果清理干净:
|
8.修改Makefile文件的EXTRAVERSION部分,加入-om2标记:
|
9.将LTSP的内核编译配置文件备份并放到内核编译目录下:
|
10.启动内核编译配置菜单,注意选择openmosix选项中的进程迁移(process migration support),直接文件系统访问( Direct File-System Access),openmosix文件系统(OpenMosix File-System),注意不要选择内核调试(Kernel Debugger)。其他的配置根据具体需要,没有SCSI硬盘可以去掉SCSI选项,不需要声卡,也可以去掉。
|
11. 编译内核一般分为编译库(make dep),编译启动映象(make bzImage),编译模块(make modules) 和安装模块(make modules_install)。系统可以连续完成几步操作:
|
12. 如果系统没有提示错误并中止,将会显示新的内核映象的大小,模块编译完成并安装等信息。编译完成的内核将作为客户端的内核系统,因此需要将模块复制到LTSP的目录下:
|
13.完成后将创建符合无盘启动的系统,使用LTSP的初始化工具就可以完成,进入/usr/src/ltsp_initrd_kit目录,修改buildk文件的最后部分,用#注释掉原有prepare_kernel部分,并添加适合本例的命令。
|
14. 修改完后运行buildk将会在/tftpboot/lts/下创建新的内核启动文件。
|
15. 建议创建内核启动文件连接,这样不必频繁修改配置文件的内容,下次只要改变文件名就可以更换内核了。
|
16. 修改/etc/dhcpd.conf文件,使动态地址分配支持新的启动内核。修改内核启动文件的名称和路径,如果该文件不存在,可以参考后面的配置文件。
|
17. 随后你可以添加自动分配主机名,这样每台客户机启动时自动生成主机名,注意主机名要和你的hosts文件对应。本例中自动生成的主机名将是node001到node253,数字部分是根据IP地址补齐三位数得到的。
|
18. 检查重要的服务进程是否启动,并使新配置文件生效。
|
19. 创建mosix.map文件,并保持服务器和客户端的一致。
|
20. 复制openmosix的工具到客户端的目录中。
|
21. 因为/opt/ltsp/i386目录最后是客户端的根文件系统,需要的工具都可以复制到相应的目录中。因为/opt/ltsp/i386/etc/hosts文件是连接,因此需要先删除后复制新文件。
|
22. 创建客户端的/mfs目录:
|
23. 修改客户端文件系统配置文件,加入mfs的配置:
|
24. 修改客户端启动进程脚本,加入启动openmosix的配置,禁止客户端提交集群计算的设置,和装载/mfs文件系统的配置。
|
25.配置完成后准备软盘制作以太启网启动盘。访问www.Rom-O-matic.net网站,选择网卡类型生成以太网启动芯片的映象,保存到Linux上,使用cat生成启动软盘。本例中使用3C905B。放入一张空白三吋软盘。
|
26. 修改LTSP客户端启动配置文件/opt/ltsp/i386/etc/lts.conf,禁止启动X Windows,修改参数X_USBMOUSE_BUTTONS = 3,即启动文本界面。
27. 确认/etc/exports文件包含共享客户端根文件系统和交换区内容:
|
28. 将以太启动软盘放入客户端,开机并确认正常启动,正常获得动态地址,加载内核成功,初始化脚本正常运行,主机名自动生成,openmosix正常初始化,没有任何错误提示。
29. 回到服务器,通过检查/mfs文件系统来检查mfs文件系统。

30. 启动mosmon监控程序来检查通讯是否有效,这是刚加入3个节点时,启动setiathome计算的状态。将下载的应用展开在/dw目录下,注意命令的格式。
|

如何架构高性价比的分布式计算机集群(二)

K,在内核编译配置菜单中,你可以看到新增加的MOSIX选项。

L,选择进入MOSIX选项并添加直接文件系统访问 (Direct File-System Access) 和MOSIX文件系统 (MOSIX File-System)。用ESC键推出当前选单。

M,添加块设备 (Block devices) 的内存虚拟盘的支持 (RAM disk support) 和使用初始化进程初始化内存虚拟盘 (Initial RAM disk (initrd) support)两项。

N,在网络选项 (Networking options) 中增加对IP内核级自动配置 (IP: kernel level autoconfiguration),IP动态地址支持 (IP: DHCP support),IP启动地址绑定支持 (IP: BOOTP support)。

O,建议除去SCSI的支持,本例中没采用SCSI设备,并且可以避免内核编译失败。建议除去声卡支持。


P,在网络文件系统 (Network File System) 中增加NFS支持根文件系统(Root file system on NFS)。

Q,最后多按一次ESC键,提示保存配置文件,选择Yes。系统将开始编译内核,编译模块,安装内核,安装模块。该过程可能会产生一些警告,只要编译没退出,并正常完成回到提示符状态就完成了编译。


R,先不要忙于重启,需要修改/boot/grub/grub.conf文件中MOSIX的内核路径一行,原路径为/boot/vmlinuz-2.4.18-mosix,修改为/vmlinuz-2.4.18-mosix。修改完后键入reboot可以重新启动。

S,这时的启动菜单中出现Mosix 1.6.0 (2.4.18),选择该项启动MOSIX系统。

T,系统启动中会出现若干错误,图中第一个是由于没有创建/mfs引起的,第二个是由于MOSIX更改了sshd服务的权限,而没启动另外的MOSIX的sshd引起的。第一次启动MOSIX系统,会要求配置mosix.map文件,回车选择缺省的编辑器进入编辑。

U,配置文件修改完成后,系统会提示节点的IP地址有变化时需要修改mosix.map文件中的节点号。因为网关服务器是192.168.0.254因此定义为节点1,其他的节点从192.168.0.1开始共有253个节点,节点号从2开始。

V,进入系统后,启动MOSIX,显示初始化MOSIX,MOSIX配置完成。
|
如何架构高性价比的分布式计算机集群(一)
鹊桥仙
(宋)秦观
纤云弄巧,飞星传恨,
银汉迢迢暗度。
金风玉露一相逢,
便胜却、人间无数。
柔情似水,佳期如梦,
忍顾鹊桥归路。
两情若是久长时,
又岂在、朝朝暮暮。
google hacking的实现以及应用
Linux下软件包的解压方式大全
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
———————————————
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
———————————————
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
———————————————
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
rar请到:http://www.rarsoft.com/download.htm 下载!
解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp rar_static /usr/bin/rar
———————————————
.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!
>解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp lha /usr/bin/
———————————————
.rpm
解包:rpm2cpio FileName.rpm | cpio -div
———————————————
.deb
解包:ar p FileName.deb data.tar.gz | tar zxf -
———————————————
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
sEx请到: http://sourceforge.net/projects/sex下载!
解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp sEx /usr/bin/
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
语法:gzip [选项] 压缩(解压缩)的文件名
该命令的各选项含义如下:
-c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件,显示下列字段:
压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),
-9 或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。
指令实例:
gzip * % 把当前目录下的每个文件压缩成 .gz 文件。 gzip -dv * % 把当前目录下每个压缩的文件解压,并列出详细的信息。 gzip -l * % 详细显示例1中每个压缩的文件的信息,并不解压。 gzip usr.tar % 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。
Yahoo和Google的区别
1, Google注重语义分析和链接,Yahoo注重title和H1,H2,H3。
2, Google比Yahoo更新的快得多。
由于只要把页面本身优化好,就能在Yahoo中取得很好的排名,而这些页面优化都是自己可以控制的,所以说Yahoo优化比Google优化更容易,所用时间更短,特别是对于热门关键词,两者的区别更明显。从另一个角度来说,能把Google优化好的人,不一定水平有多高,可能只不过是手头有较多的链接资源可以利用;若服务期过了以后,把指向你的链接一撤,你的排名就会掉下来。而若能把Yahoo优化好,说明你的网页优化本身是好的,你的排名基础是扎实的,你的服务商为你做了一些扎扎实实的工作。
我想特别强调一下Google的强大的语义分析能力。我今天在Google中搜"seo入门", 结果排在第一名的是一个关于"seo基础"的网页。这个网页针对"seo基础"作了很好的优化。我看了这个网页的源文件,没有出现一个"入门"。这个网站是个新站,没有多少外部链接,首页PR为0,为什么这个内页会排在很多含"seo入门"的网页之?而且第一页中有七个页面都是针对"seo基础"的,并用红体字突出显示,足见Google把"入门"和"基础"看成极为接近的词。再在Yahoo中搜"seo入门",发现排在前三页的没有针对"seo基础"的,全都针对"seo入门"。
Head区的设置
这些技巧主要讲Meta标签设置的,其实与符合Web标准关系不大,只要注意在最后加“/”关闭标签就可以,但 对网站优化还是有一定好处的。
如果你将本站加入收藏夹,可以看到在收藏夹网址之前的IE图标变成了本站特别的图标。要实现这样效果很简
单,首先制作一个16x16的icon图标,命名为favicon.ico,放在根目录下。然后将下面的代码嵌入Head区:
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
代码如下,替换成你自己站点的内容就可以:
1、允许搜索机器人搜索站内所有链接,如果你想某些页面不被搜索,推荐采用robots.txt方法:
<meta content="all" name="robots" />
2、设置站点作者信息:
<meta name="author" content="webmaster@hmseo.org,海马科技" />
3、设置站点版权信息:
<meta name="Copyright" content="www.hmseo.org,转载请保留版权" />
4、站点的简要介绍(推荐):
<meta name="description" content="为您提供专业的网站排名,网站优化资料." />
5、站点的关键词(推荐):
<meta name="keywords" content="搜索引擎优化,网站排名,网站优化,SEO资料" />
先介绍这么多。补充说明,前面花了5节都是讲Head区的代码,实际页面内容还一字未提,不要急,其实Head 区是非常重要的,看一个页面的Head的代码就可以知道设计师是否够专业。
XHTML代码规范
以前在HTML中,你可以打开许多标签,例如<p>和<li>而不一定写对应的</p>和</li>来关闭它们。但在XHTML
中这是不合法的,必须是成对出现的。XHTML要求有严谨的结构,所有标签必须关闭。如果是单独不成对的标签,
在标签最后加一个“/”来关闭它。例如:
<br />或<img src="../image/logo.jpg" alt="海马科技" />
与HTML不一样,XHTML对大小写是敏感的,<title>和<TITLE>是不同的标签,XHTML要求所有的标签和属性 的名字都必须使用小写。例如:<BODY>必须写成<body>。大小写夹杂也是不被认可的,通常dreamweaver自动生 成的属性名字“onMouseOver”也必须修改成“onmouseover”。
同样因为XHTML要求有严谨的结构,因此所有的嵌套都必须按顺序,以前我们这样写的代码:
<p><b></p></b>
必须修改为:
<p><b></b></p>
就是说,一层一层的嵌套必须是严格对称的。
在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。例如:
<height=80>
必须修改为:
<height="80">
特殊情况,你需要在属性值里使用双引号,你可以用";单引号可以使用´,例如:
alt="say´hello´"
1、任何小于号(<),不是标签的一部分,都必须被编码为:<
2、任何大于号(>),不是标签的一部分,都必须被编码为:>
3、任何与号(&),不是实体的一部分的,都必须被编码为:&
XHTML规定所有属性都必须有一个值,没有值的就重复本身。例如:
<td nowrap>或<input type="checkbox" name="shirt" value="medium" checked />
必须改为:
<td nowrap="nowrap"> 或
<input type="checkbox" name="shirt" value="medium" checked="checked" />
“--”只能发生在XHTML注释的开头和结束,也就是说,在内容中它们不再有效。例如下面的代码是无效的:
<!-- 这里是注释-----------这里是注释 -->
用等号或者空格替换内部的虚线:
<!-- 这里是注释============这里是注释 -->
以上这些规范有的看上去比较奇怪,但这一切都是为了使我们的代码有一个统一、唯一的标准,便于以后的数据再利用。
Google PR更新了
what is mesothelioma
What is Mesothelioma?
SOS]Mesothelioma Attorneys Lewis & Scholnick