Linux操作系統(tǒng)關(guān)于集群的安裝與并行計算
Linux系統(tǒng)關(guān)于集群的安裝與并行計算
1.linux安裝
安裝過程就不多說了。需要注意的是安裝時,如果機(jī)群不與外界聯(lián)網(wǎng)則可以不考慮安全 方面的因素而把rsh選為可信賴的服務(wù),注意安裝相應(yīng)的軟件包;如果還要與外界保持聯(lián)網(wǎng),出于安全需要應(yīng)把ssh選為可信賴的服務(wù)。安裝以后,應(yīng)該保證各節(jié)點之間能夠用s sh相互登錄。每個節(jié)點的sshd都應(yīng)該能正常提供服務(wù)。主機(jī)名:node1...noden (我所構(gòu)建的系統(tǒng)n=2)
2.創(chuàng)建NFS服務(wù)
在服務(wù)器節(jié)點public目錄下建立mpi目錄,并將其配置成NFS服務(wù)器,在/etc/exports文件中加入一行:
/public/mpi node1(rw) node2(rw)
在客戶端節(jié)點的/etc/fstab文件中增加一行:
sever :/pubilc/mpi nfs rw , bg , soft 0 0
將/public/mpi這個目錄從服務(wù)器節(jié)點輸出,并裝載在各客戶端,從而便于在各節(jié)點間分 發(fā)任務(wù)
3.修改/etc/hosts文件,將所有節(jié)點名稱及其ip地址填入。例如:
127.0.0.1 localhost.localdomain localhost
192.168.1.1 node1
192.168.1.2 node2
…………………….
每個節(jié)點都進(jìn)行類似的配置。這樣做的目的是使節(jié)點之間能夠通過node1 ... noden的名 稱相互訪問。你可以通過ping noden 或 ssh noden進(jìn)行測試。
4.修改(或創(chuàng)建) /etc/hosts.equiv文件
將所有你允許訪問本機(jī)進(jìn)行mpi計算的機(jī)器名填入,一行一個機(jī)器名。這一步是為了使節(jié)點對其它的節(jié)點放權(quán)。
例如,我的node1是我用于啟動mpi集群計算的機(jī)器,其他的節(jié)點是參與計算者,在node
1的/etc/hosts.equiv文件是這樣的:
node1 #給自己放權(quán),這樣在只有一臺機(jī)器時也可以模擬并行計算環(huán)境
node2
.....
Noden
在node2...noden的/etc/hosts.equiv文件:
node1 #對node1放權(quán)
node2
......
noden#p#page_title#e#
5.修改~/.bash_profile文件
首先決定一個用于啟動集群計算的用戶名,不提倡使用root進(jìn)行集群計算。這里在每個 節(jié)點上建立新用戶chief,他們的主目錄都是/home/chief,必須采用同樣的密碼,將來的計算程序必須放在相同的路徑上。譬如你的程序為:fpi.f和a.out,則必須把a.out放在同樣的路境內(nèi),比如~/mpirun/a.out,每個節(jié)點都是如此。 修改~/.bash_profile文件,主要是加入下列幾行腳本:
export PATH=$PATH:/usr/local/mpich/bin
export MPI_USEP4SSPORT=yes
export MPI_P4SSPORT=22
export P4_RSHCOMMAND=rsh 或ssh
這里我們預(yù)定了將來mpich的運行環(huán)境安裝在目錄/usr/local/mpich下面。其余的三個變 量是用來通知mpi運行環(huán)境采用rsh(或ssh)來作為遠(yuǎn)程shell。linux的運行環(huán)境到此就配置完畢了。
6.配置rsh 或ssh
對于采用rsh來作為遠(yuǎn)程shell運行MPI的用戶只要保證在各個節(jié)點上都具有相同的用戶, 并把這一用戶的密碼設(shè)為空密碼就可以運行了。
若采用ssh作為遠(yuǎn)程shell則按如下配置:以你設(shè)定的用于啟動mpi計算的用戶登錄,運行ssh-keygen,這將生成一個私有/公開密鑰對,分別存放在
~/.ssh/identity和~/.ssh/i dentity.pub文件內(nèi)。然后進(jìn)行訪問授權(quán),運行:
cp ~/.ssh/identity.pub ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
ssh-agent $SHELL
ssh-add
在每個節(jié)點重復(fù)一遍。試著在某一節(jié)點上登錄其它節(jié)點,ssh noden,則在.ssh/下生成一個known_hosts2文件,里面放著訪問該主機(jī)的密鑰,把所有密鑰收集起來,在各個節(jié)點上作同樣的拷貝。這樣做的目的是使各節(jié)點相互之間訪問無需輸入密碼#p#page_title#e#
7.開啟各項必需的服務(wù)
如果是以根用戶root 登陸系統(tǒng)的則可以用ntsysv命令啟動ntsysv實用程序。ntsysv 實用程序允許使用簡單的菜單界面啟動或關(guān)閉各種運行等級的服務(wù)。在其中我們選擇開啟 rsh ,rlogin,telnet等。也可以關(guān)閉一些服務(wù)以加快啟動速度如sendmail。
如果是使用su命令轉(zhuǎn)為root用戶的則很可能運行ntsysv并不出現(xiàn)ntsysvs實用程序。此時可以直接去修改/etc/xinetd.d下的rlogin, rsh ,telenet的設(shè)置。用vi編輯器打開xin
etd.d:
vi /etc/xinetd.d
則可看到如下所示的配置文件:
關(guān)于rsh的設(shè)置如下
# default: off
# description: The rshd server is the server for the rcmd(3) routine and,
# consequently, for the rsh(1) program. The server provides
# remote execution facilities with authentication based on
# privileged port numbers from trusted hosts.
service shell
{
disable = yes
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rshd
}
關(guān)于rlogin的設(shè)置如下
# default: off
# description: rlogind is the server for the rlogin(1) program. The server
# provides a remote login facility with authentication based on
# privileged port numbers from trusted hosts.
service login
{
disable = yes
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rlogind
}
關(guān)于telnet的設(shè)置如下
# default: off
# description: The telnet server serves telnet sessions; it uses
# unencrypted username/password pairs for authentication.
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
所有這些服務(wù)在安裝完系統(tǒng)之后都是默認(rèn)為禁用的,要進(jìn)行修改來打開這些服務(wù)。如要 通過修改啟動telenet則就需要改disable = yes為disable = no。對于其他的服務(wù)的啟動的修改與之相同。若啟動這些服務(wù)則只需要簡單執(zhí)行:
#/etc/rc.d/init.d/xinetd restart
或重起計算機(jī)就可以使所作的更改生效。#p#page_title#e#
8.在服務(wù)器節(jié)點編譯、安裝Fortran90編譯器
先將Fortran90(我用的是Intel的)編譯器拷貝至/tmp下,然后用tar xvfz fortran90 .tar.gzj解壓縮。運行
./install
選擇你所要安裝的類型,如果你的機(jī)器是基于IA-32,就選擇1。如果你的機(jī)器是基于It anium(TM)-based system就選擇2。如果要停止安裝,就選擇X。選擇過之后安回車進(jìn)入下一步,此時會要求你選擇 :
1.Intel(R) Fortran Complier for 32-bit Applications,Version 6.0 build 020312Z
2.2.Linux Applicationdebugger for 32-bit Applications,Version 6.0 buid 20020
x. Exit
按順序選擇1和2,最后選擇X 完成安裝并退出。在選擇完1之后會要求你看版權(quán)聲明, 輸入Accept繼續(xù)安裝。默認(rèn)的安裝路徑為/opt/intel,選擇默認(rèn)路徑按Enter繼續(xù)。選2之后的情形與1相同。如果不注冊可以用90天。
9.在服務(wù)器節(jié)點編譯、安裝mpich 1.2.3
將mpich 1.2.4:ftp://ftp.mcs.anl.gov/pub/mpi/mpich.tar.gz??截惖揭粋€臨時目錄下,放在/tmp下了。用root用戶登錄進(jìn)行編譯安裝。
(1). 對mpich的安裝進(jìn)行預(yù)處理:
首先,用tar xvfz mpich.tar.gz解壓。生成mpich-1.2.3目錄。切換到mpich-1.2.3目錄。
運行預(yù)處理:
./configure --prefix=/usr/local/mpi --對應(yīng)于用rsh進(jìn)行遠(yuǎn)程登錄的系統(tǒng)
./configure --prefix=/usr/local/mpi -rsh=ssh --對應(yīng)于用ssh進(jìn)行遠(yuǎn)程登錄的系統(tǒng)
這里我們通知編譯系統(tǒng)mpich的安裝位置為/usr/local/mpich,運行環(huán)境的遠(yuǎn)程shell為 rsh或ssh。
(2).編譯:
make
運行此命令后mpich軟件包會自動編譯形成MPI系統(tǒng)的函數(shù)庫,需要數(shù)分鐘的時間,根據(jù)不同的機(jī)器可以略有不同。
(3).安裝:
make install
運行此命令可以將MPI軟件包安裝到由./configure --prefix選項指定MPICH安裝目錄即
/usr/local/mpi
修改文件/usr/local/mpi/share/util/machines/machines.LINUX。如下:
node1
ndoe2
......
ndoen
這一步是通知mpich運行環(huán)境都有那些節(jié)點可供集群計算。每個節(jié)點都這樣輸入一遍。
(4).測試安裝是否正確
在/usr/local/mpi/examples/basics下編譯cpi.c:
make cpi
用命令行:
../../bin/mpirun -np 2 cp
運行。將會獲得如下信息。
Processes 0 on node1
Processes 1 on node2
……..………………..
如果能正常運行即證明mpich軟件包安裝完全成功。