國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)1平行計算/叢集主機架設手冊LINUXVersion海大河工周宗仁林騰威國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)2「平行計算/叢集主機架設手冊」LINUXVersion國立台灣海洋大學河海工程學系海洋綜合實驗館2004.4.1第二版注意事項本手冊僅供參考,若造成任何損失訴不負責。本手冊適用於本館主機之設定。本手冊另有WindowsNT/2000/XPVersion,歡迎參考。有任何疑問或發現錯誤敬請賜教E-mail:m91520041@mail.ntou.edu.tw國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)3簡易Cluster架設前言我想「cluster」這部分大家都有些概念,在此就不再多講了。我是用Fortran來跑程式,所以再示範的時後以Fortran為主,至於其他語言就在設定compiler的時候注意一下。我大概簡述一下我的環境,我有一個server及三個node,都為P4-3GHz,RAM為2GB,作業系統是Redhat7.3,swap為2GB(Redhat7.3只能管理到2GB,Redhat9可以管理到3GB),在此說明一下CPU的狀況,雖然P4速度3GHz開始有支援超行序的功能,解就是說在MS-Windows下能顯示成雙CPU,在LINUX也不例外,在開機程序是有一個smp模式可以選擇,據知有無smp模式對cluster是沒影響的。這篇主要是想給一些跑數值計算、而又不是讀資訊科學的理工科學生,普遍來講我們念工科的同學對除了MS-Windows之外,大概不會去用LINUX,因為再去學另一套系統是對課業上的另一項負擔,大家都知道MS-Windows一開機就佔掉相當多的資源,另外在價格上也是需考量的因素,所以用cluster來架設cluster是一項不錯的選擇,這就是現在有相當多的工作站還是使用UNIX系統的原因,我也是從現在才開始學LINUX,相信大家一定也可以。國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)4一、準備事項在此為大家介紹四台PC的超簡易架設法。要準備的東西有:(1)個人電腦(2)網路交換器或集線盒(3)LINUX(Redhat7.3)(4)compiler(Fortran等)簡單說來,要把電腦連接好,安裝LINUX,因為到時候要啟動下列裝置,安裝的時候必須注意,如果沒把握就全裝吧,不到4GB。至於Fortran的compiler有許多公司有出,包括GNU、PGI、NAG、Intel、•••等等,由於我們在MS-Windows上最常使用的CompaqVisualFortran近來被Intel併購,所以改出IntelVisualFortran7.1(有LINUX版本),在非營利用途可上網申請免費使用。GNU則是LINUX裡附的,版本為Fortran77。PGIFortran則是在LINUX上較具歷史的。除了GNU的Fortran可自由下載外,其餘的價格並不便宜,由於Redhat9的原因是內建的Fortran77(g77-3.10)不被MPICH支援,故採用Redhat7.3(g77-2.96),其實MPICH是建議使用g77-2.95,g77-2.96也能用,他很明白的講g77-3.10不支援。國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)5二、架設整體架構的架設當中,需要的所有軟體為:Master主機安裝需要:RSHNISServerNFSServerCompilerInstallMPICHInstallSlave主機安裝需要:RSHNISClientNFSClient網路參數的各個檔案是這樣的:主機名稱請修改:/etc/sysconfig/networkNETWORKING=yesHOSTNAME=server.cluster【主機名稱】網路卡設定項目請修改:/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=staticIPADDR=192.168.1.1【IP位置】NETMASK=255.255.255.0國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)6內部主機名稱查尋系統請修改:/etc/hosts127.0.0.1localhostlocalhost.localdomain192.168.1.1server.cluster192.168.1.2node1.cluster192.168.1.3node2.cluster192.168.1.4node3.cluster而我的每部主機將所有的服務都關掉,剩下列服務在開機時啟動:networkxinetd不過如此,視窗介面將會不正常啟動,所以要改依下/etc/inittab這個檔案。#Default………#0-halt………..#1-Single……...#2-Multiuser…….#3-Full…………..#4-unused………#5-X11………….#6-reboot……….#id:3:initdefault【圖文介面是5,文字介面是3】如果中途還有要加入新硬體,可以將自動偵測硬體的功能打開,然後重新開機。[root@serverroot]#chkconfig--level35kudauon[root@serverroot]#reboot國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)7NFS架設將每部主機的/disk1分享出去,因此每部主機都必須要開放NFS服務。由於Cluster裡所有的帳號都由NIS管制,因此將Master的/home也分享出來,並且每部Slave主機都掛載Master的/home。設定程序:Master:1.啟動portmap並且設定開機啟動:[root@node1root]#mkdir/disk1【建立共享的資料夾】[root@serverroot]#/etc/rc.d/init.d/portmapstart[root@serverroot]#chkconfig--level35portmapon2.設定NFS分享出去:[root@serverroot]#vi/etc/exports/home192.168.1.0/255.255.255.0(rw,async,no_root_squash)/disk1192.168.1.0/255.255.255.0(rw,async,no_root_squash)[root@serverroot]#exportfs-rv[root@serverroot]#/etc/rc.d/init.d/nfsstart[root@serverroot]#chkconfig--level35nfson3.設定預計的掛載點:[root@serverroot]#mkdir-p/cluster/server[root@serverroot]#mkdir-p/cluster/node1[root@serverroot]#mkdir-p/cluster/node2[root@serverroot]#mkdir-p/cluster/node3國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)8Slave:1.啟動portmap並且設定開機啟動:[root@node1root]#/etc/rc.d/init.d/portmapstart[root@node1root]#chkconfig--level35portmapon2.設定NFS分享出去:[root@node1root]#mkdir/disk1【建立共享的資料夾】[root@node1root]#vi/etc/exports/disk1192.168.10.0/255.255.255.0(rw,async,no_root_squash)[root@node1root]#exportfs-rv[root@node1root]#/etc/rc.d/init.d/nfsstart[root@node1root]#chkconfig--level35nfson3.設定預計的掛載點:[root@node1root]#mkdir-p/cluster/server[root@node1root]#mkdir-p/cluster/node1[root@node1root]#mkdir-p/cluster/node2[root@node1root]#mkdir-p/cluster/node3國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)9載掛程序:Master:將底下這些指令測試執行一下[root@node1root]#mount-tnfs-obg,hard,intrserver.cluster:/disk1/cluster/server[root@node1root]#mount-tnfs-obg,hard,intrnode1.cluster:/disk1/cluster/node1[root@node1root]#mount-tnfs-obg,hard,intrnode2.cluster:/disk1/cluster/node2[root@node1root]#mount-tnfs-obg,hard,intrnode3.cluster:/disk1/cluster/node3【第一行的意思是將server.cluster的/disk1在掛到/cluster/server,依此類推】如果成功後,將/etc/rc.d/rc.local複製到/root加以修改[root@node1root]#cp/etc/rc.d/rc.local/root/rc1.local[root@node1root]#vi/root/rc1.local將/root/rc1.local內的內容全部刪去,改為下面這樣mount-tnfs-obg,intrserver.cluster:/disk1/cluster/servermount-tnfs-obg,intrnode1.cluster:/disk1/cluster/node1mount-tnfs-obg,intrnode2.cluster:/disk1/cluster/node2mount-tnfs-obg,intrnode3.cluster:/disk1/cluster/node3國立台灣海洋大學河海工程學系海洋工程綜合實驗館平行計算/叢集主機架設手冊(LINUXVersion)10Slave:將底下這些指令測試執行一下[root@serverroot]#mount-tnfsserver.cluster:/home/home[root@serverroot]#mount-tnfs-obg,hard,intrserver.cluster:/disk1/cluster/server[root@serverroot]#mount-tnfs-obg,hard,intrnode1.cluster:/disk1/cluster/node1[root@serverroot]#mount-tnfs-obg,hard,intrnode2.cluster:/disk1/cluster/node2[root@serverroot]#mount-tnfs-obg,hard,intrnode3.cluster:/disk1/cluster/node3如果成功後,將/etc/rc.d/rc.local複製到/root加以修改[root@nod