因为个人计算机的 CPU 速度越来越快,核心数目越来越多,因此个人计算机的效能已经不比服务器等级的大型计算机差了!
不过,如果要用来作为计算大型数值模式的应用,即使是最快的个人计算机,还是没有办法有效的负荷的。此时你可能就得要考虑一下,
是要买超级计算机 (Top 500) 还是要自己组一部 PC 丛集计算机 (PC cluster)。
超级计算机的结构中,主要是透过内部电路将好多颗 CPU 与内存连接在一块,因为是特殊设计,因此价格非常昂贵。
如果我们可以将较便宜的个人计算机串接在一块,然后将数值运算的任务分别丢给每一部串接在一块的个人计算机,
那不就很像超级计算机了吗?没错!这就是 PC cluster 最早的想法。
但是这个作法当中有几个限制喔,因为每部计算机都需要运算相同的程序,而我们知道运算的数据都在内存当中,
而程序启动时需要给予一个身份,而程序读取的程序在每部计算机上面都需要是相同的!同时,每部计算机都需要支持平行化运算!
所以,在 PC cluster 上面的所有计算机就得要有:
- 相同的用户帐户信息,包括账号、密码、家目录等等一大堆信息;
- 相同的文件系统,例如 /home, /var/spool/mail 以及数值程序放置的位置
- 可以搭配的平行化函式库,常见的有 MPICH, PVM...
上面的三个项目中,第一个项目我们可以透过 NIS 来处理,第二个项目则可以使用 NFS 来搞定~所以啰,你说, NIS 与 NFS
有没有可使用的空间啊? ^_^
Tips: 由于『预测』这个玩意儿越来越重要,比如说气象预报、空气质量预报等等,而预测需要一个很庞大的模式来进行仿真的工作,
这么庞大的模拟工作需要大量的运算,在学校单位要买一部很贵的大型主机实在很不容易!不过,如果能够串接十部四核心的个人计算机的话,
那么可能只需要不到 20 万便能够组成相当于具有 40 颗 CPU 的大型主机的运算能力了!所以说,在未来 PC cluster
是一个可以发展的课题喔!
| |
那我们有没有办法来实作一下平行化的丛集架构呢?老实说,很麻烦~不过,至少我们可以先完成前面谈到的两个组件!
分别是 NIS 与 NFS 嘛!但是,在我们目前这个网络环境中,用户账号实在是太紊乱了~所以,如果想要将服务器的 /home
挂载到客户端的 /home,那么那个测试用的客户端可能很多本地用户都无法登入了~因此,在这个测试练习中,
我们打算这样做:
- 账号:建立大于 2000 以上的账号,账号名称为 cluser1, cluser2, cluser3 (将 cluster user 缩写为
cluser,不是少写一个 t 喔!),且这些账号的家目录预计放置于 /rhome 目录内,以与 NIS client 本地的用户分开;
- NIS 服务器:领域名为 vbirdcluster,服务器是 www.centos.vbird (192.168.100.254),客户端是
clientlinux.centos.vbird (192.168.100.10);
- NFS 服务器:服务器分享了 /rhome 给 192.168.100.0/24 这个网域,且预计将所有程序放置于 /cluster 目录中。
此外,假设所有客户端都是很干净的系统,因此不需要压缩客户端 root 的身份。
- NFS 客户端:将来自 server 的文件系统都挂载到相同目录名称底下!
那就分别来实作一下啰!
# 1. 建立此次任务所需要的账号数据:
[root@www ~]# mkdir /rhome
[root@www ~]# useradd -u 2001 -d /rhome/cluser1 cluser1
[root@www ~]# useradd -u 2002 -d /rhome/cluser2 cluser2
[root@www ~]# useradd -u 2003 -d /rhome/cluser3 cluser3
[root@www ~]# echo password | passwd --stdin cluser1
[root@www ~]# echo password | passwd --stdin cluser2
[root@www ~]# echo password | passwd --stdin cluser3
# 2. 修改 NISDOMAIN 的名称
[root@www ~]# vim /etc/sysconfig/network
NISDOMAIN=vbirdcluster <==重点在改这个项目喔!
|
这个案例中,你只要做完上述的动作就即将完成了,其他的配置文件请参考前面 14.2 节所谈到的各个必要项目。
接下来当然就是重新启动 ypserv 以及制作数据库啰!
# 3. 制作数据库以及重新启动所需要的服务:
[root@www ~]# nisdomainname vbirdcluster
[root@www ~]# /etc/init.d/ypserv restart
[root@www ~]# /etc/init.d/yppasswdd restart
[root@www ~]# /usr/lib64/yp/ypinit -m
|
依序一个一个指令下达!上述的这四个指令稍微有相依性关系的!所以不要错乱了顺序喔!接下来,请换到客户端进行:
- 以 setup 进行 NIS 的设定,在领域的部分请转为 vbirdcluster 才对!
- 做完后再以 id cluser1 确认看看。
作法太简单了,鸟哥这里就不示范啰。
# 1. 设定 NFS 服务器开放的资源:
[root@www ~]# mkdir /cluster
[root@www ~]# vim /etc/exports
/rhome 192.168.100.0/24(rw,no_root_squash)
/cluster 192.168.100.0/24(rw,no_root_squash)
# 2. 重新启动 NFS 啰:
[root@www ~]# /etc/init.d/nfs restart
[root@www ~]# showmount -e localhost
Export list for localhost:
/rhome 192.168.100.0/24
/cluster 192.168.100.0/24
|
服务器的设定是很单纯的~客户端的设定得要注意啰!
# 1. 设定 NIS Client 的 mount 数据!
[root@clientlinux ~]# mkdir /rhome /cluster
[root@clientlinux ~]# mount -t nfs 192.168.100.254:/rhome /rhome
[root@clientlinux ~]# mount -t nfs 192.168.100.254:/cluster /cluster
# 如果上述两个指令没有问题,可以将他加入 /etc/rc.d/rc.local 当中啊!
[root@clientlinux ~]# su - cluser1
[cluser1@clientlinux ~]$
|
最后你应该就能够在客户端以 cluser1 登入系统!就这么简单的将账号与文件系统同步做完啦!如果你真的想要玩一下 PC Cluster
的话,鸟哥也有写过一篇不是很成熟的 PC cluster 简易架设,有兴趣的话请自行参考: