You are on page 1of 26

資料來 源:

http: //ome ga.h pc.cs ie .t hu .ed u. tw /wi ki/i nde x. ph p/ %E 9% A6 %96 %E9 %A 0% 81

前言

本實驗室主要研究方向之一為網格計算,為了達成分享分散的計算、儲存資源,我們利用 Globus
Alliance 所維護髮展的 Globus Toolkit 作為中介軟體,將分散各地的機器串聯起來。我們將教你如何安
裝 Globus Toolkit 4 於 Fedora Core 3 ,主要是因為 Globus Toolkit 到了版本 4 開始有支援 Fedora Core 3
的 Binary 版本,也就是說,我們現在可以不用像以前一樣裝 Globus Toolkit 3 時要花很多時間編譯原始
碼,就可以很快享有網格計算帶來的便利。

• 圖片顯示的軟體版本與文字不一為正常現象,請依照新版版號自
行判斷

IP 與 Hostname 設定

要安裝 Globus Toolkit 之前,你必須先安裝好 Fedora Core 3 ,我們建議你參考同系列文章 如何使用網


路快速安裝 Fedora Core 3 完成這個步驟,其中有個該注意的地方是,機器必須有真實 IP,除此之外,
如果是實驗室的機器,Hostname 設定請依照「yourhostname.hpc.csie.thu.edu.tw」的規則,這裡以
「demo1.hpc.csie.thu.edu.tw」為例;如果是其他單位或學校的機器,你可以參考自己單位或學校機器的設
定規則,基本上是「機器名字.該單位的 Domain Name」,並記得在「/etc/hosts」設定好 IP 與 Hostname 對
應。

執行「」指令確認 設定是否正確
檢查「」設定,如圖才是正確的,別忘了把 主機也加入,後面會用到, 「」

有需要的話可以編輯「」修改 ,重開機後生效

需要帳號

• 安裝 你可以新增一個帳號比如 或者是直接使用 帳號安裝,這邊我們使用 帳號來安裝。


• 使用 本實驗室一般使用 作為一般使用者,可以使用「」新增,「」指定實驗室通用密碼。

需要軟體

使用 root 於「/opt」下建立子目錄「src」存放所需軟體。我們將安裝所需軟體於「/opt」底下,你可以直接連
到「http://hpc.csie.thu.edu.tw/~cagen/gt4.0.1/」下載(使用 wget 指令)下列軟體,或是到各軟體的官網上下
載最新版本。


o 網址:
o 說明:版本以 以上為佳,請下載 「」。

o 網址:
o 說明:這是安裝 必備軟體,請下載「」。

o 網址:
o 說明:請下載「」,我們需要裡面的「」。

o 網址:
o 說明:請下載「」的「」,如果你是使用其他 ,請找相對應的版本,如果找不到的話,請
下載原始碼版本「」或是「」。

o 網址:
o 說明:如果你需要安裝 才需要下載安裝「」,這邊我們直接使用實驗室的 即可。

o 網址:
o 說明:請下載由實驗室所發的 「」。

o 網址:
o 說明:這邊我們下載最新版本 「」。

下載至「」裡面的所有軟體

安裝步驟

準備好上面的軟體及帳號後,請跟著下面的步驟做,我們將所有軟體安裝在「/opt」底下,除了比較方
便管理之外,以後如果安裝 condor 之類的軟體,需要使用到 NFS,則我們可以更方便的分享已經安
裝好的軟體至其他機器上。

設定網路時間校時

設定網路時間校時執行時間校正可以避免因為機器之間的時間不一致,而產生一些執行上的錯誤,請
一定要設定妥當。以下步驟皆使用 root 帳號執行。

• 在「」底下新增一個 檔案,這樣就可以讓系統自動每小時進行時間校正。
# vi /etc/cron.hourly/ntp.cron
輸入以下內容
#!/bin/bash
/usr/sbin/ntpdate -s time.stdtime.gov.tw
/usr/sbin/hwclock –w

檔案的內容

.要測試執行時,如果本來的的 NTP Daemon 有啟動的話會執行失敗,要先關掉 NTP Daemon 才會正


常運作,完成後執行該檔案測試一下,正常的話以後每小時會自動執行校時。

# service ntpd stop


# chkconfig --level 345 ntpd off
# chmod +x /etc/cron.hourly/ntp.cron
# sh /etc/cron.hourly/ntp.cron

網路時間校時執行畫面

安裝 J2SE SDK

以下步驟皆使用 root 帳號執行。

• 在「」底下,變更「」為可執行屬性

# chmod +x j2sdk-1_4_2_11-linux-i586.bin
.執行「j2sdk-1_4_2_11-linux-i586.bin」進行解壓縮
# ./j2sdk-1_4_2_11-linux-i586.bin

增加可執行屬性

按「」直接跳到最後面

然後輸入「」按 進行解壓縮

解壓縮完畢
解壓縮完畢

產生一個新資料夾「」

.將「j2sdk1.4.2_11」移到上一層,即「/opt」底下

# mv j2sdk1.4.2_11 /opt

移完後的樣子
.在「」底下,作一個
# ln -s j2sdk1.4.2_11/ java

做完 的樣子

安裝 Apache Ant

以下步驟皆使用 root 帳號執行。

• 在「」底下解壓縮「」及「」

# tar zxf apache-ant-1.6.5-bin.tar.gz


# unzip -q junit4.0.zip
.將「」底下的「」複製到「」底下並更改檔名為「」,完成後將「」移到上一層,即「」底下

# cp junit4.0/junit-4.0.jar apache-ant-1.6.5/lib/junit.jar
# mv apache-ant-1.6.5 /opt

.一樣在「/opt」底下做個 Link

# ln -s apache-ant-1.6.5/ ant

設定環境變數

上面步驟只是把執行檔給放好而已,我們還必須設定環境變數,這樣安裝 Globus Toolkit 時才能抓到


Java 以及 Ant 。

• 編輯「」加入以下設定,完成後記得匯入環境變數

# vim /etc/profile

(.... 略 ....)
fi
# Java Home
export JAVA_HOME=/opt/java
PATH=$JAVA_HOME/bin:$PATH
# Ant Home
export ANT_HOME=/opt/ant
PATH=$ANT_HOME/bin:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
(.... 略 .....)

設定 以及 的環境變數

.測試 以及 是否正常,如下圖
# java -version
# ant -version

出現版號才是正確的

安裝 Globus Toolkit

以下步驟如未特別說明皆使用 root 帳號執行。

• 在「」底下新增資料夾「」

# cd /opt
# mkdir globus

.在「」底下解壓縮「」

# cd /opt/src
# tar zxf gt4.0.1-x86_fc_3-binary-installer.tar.gz

.將 裝至「」

# cd gt4.0.1-x86_fc_3-binary-installer
# ./configure --prefix=/opt/globus

這樣才是正確的

.如果 沒有錯誤的話就可以接著編譯原始碼,然後進行安裝
# make
# make install

開始
完畢

開始

完畢

設定環境變數

編輯「/etc/profile」加入以下設定,完成後記得匯入環境變數

# vim /etc/profile

(.... 略 ....)
fi
# Java Home
export JAVA_HOME=/opt/java
PATH=$JAVA_HOME/bin:$PATH
# Ant Home
export ANT_HOME=/opt/ant
PATH=$ANT_HOME/bin:$PATH
# Globus Home
export GLOBUS_LOCATION=/opt/globus
PATH=$GLOBUS_LOCATION/bin:$GLOBUS_LOCATION/sbin:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
. $GLOBUS_LOCATION/etc/globus-user-env.sh
for i in /etc/profile.d/*.sh ; do
(.... 略 ....)

.匯入環境變數
# source /etc/profile

設定 的環境變數

.設定「」
# vi /etc/ld.so.conf

於最下面加入「」

完成後執行「」

# ldconfig
安裝 Simple CA Package (Client)

進入「/opt/src」底下,使用指令「gpt-build」以及「gpt-postinstall」進行安裝 Simple CA Package

# gpt-build globus_simple_ca_hpc_ffa40f5d_setup-0.13.tar.gz gcc32dbg


# gpt-postinstall

編譯 過程

安裝 過程
.設定
複製畫面中的「/opt/globus/setup/globus_simple_ca_ffa40f5d_setup/setup-gsi」然後再加上「-defsult」參數一起
執行

設定 ,別忘了後面的「」參數;回答問題按 繼續即可

輸入「」存檔
認證設定

要存取 Grid 資源必須透過 Globus 的認證功能,因此我們必須讓機器以及使用者帳號進行認證動作。

機器的認證每台只需作一次即可,這個步驟使用 root 帳號執行;其中「`」是 quote ,與鍵盤左上角的

「~」是同個按鍵,如果你有把 hostname 設定妥當,他會直接填入你設定的 hostname;或是直接在

「-host」參數後面輸入完整的 hostname 也是可以的,例如:「demo1.hpc.csie.thu.edu.tw」。

# grid-cert-request -host `hostname`

要求機器的認證

產生機器的認證金鑰完畢
簽署完後可在「」底下看到三個檔案,其中「」大小為

每個要使用 的使用者都要做過認證,這個步驟用使用者帳號執行,這邊我們以 為例。


# su - test
$ grid-cert-request
$ exit

在「Enter your name, e.g., John Smith:」這邊輸入「test」,然後輸入實驗室通用帳號密碼兩次


產生使用者的認證金鑰完畢

在使用者家目錄的「」底下一樣可以看到三個檔案,其中「」大小為

.傳送機器及使用者的金鑰至 CA Server 將待簽署的金鑰傳送至 CA Server 以便進行簽署認證的動作

# scp /etc/grid-security/hostcert_request.pem cagen@hpc:~


# scp /home/test/.globus/usercert_request.pem cagen@hpc:~

將「」及「」傳送至

.簽署機器及使用者的金鑰
這個步驟一般來說是由 CA Server Administrator 負責簽署認證,但是我們實驗室為了方便起見,我們使
用 cagen 這個帳號來負責進行簽署的動作。 當你完成上一步驟,接著使用 cagen 這個帳號透過 SSH 登
入實驗室主機 hpc (位址為 hpc.csie.thu.edu.tw)
# ssh cagen@hpc

登入 主機後可以看到剛才傳送過來的兩個待認證檔案
一般來說,如果你傳送過去時沒有另外指定檔名,請直接執行「cagen」個 Script ,因為有兩個待認證檔
案,所以會要求你輸入兩次 CA Server Administrator 設定的密碼,這樣就完成簽署的動作了,最後執行
「verifyall」這個 Script 驗證一下,進一步訊息請查看置頂文件「0-ReadMeFirst-0」。
$ ./cagen
$ ./verifyall
$ exit
完成簽署的動作並驗證

新增加了兩個簽署完的檔案「」以及「」

.取回簽署完的認證檔案

使用 cagen 完成簽署的動作後,我們還需要將檔案取回來覆蓋本來的檔案,這樣才算完成。
以下步驟使用 root 帳號執行。
# scp cagen@hpc:~/hostcert.pem /etc/grid-security
# scp cagen@hpc:~/usercert.pem /home/test/.globus
取回簽署完畢的認證檔案

.測試 Proxy

要執行 Globus 相關指令前,該使用者必須先取得授權,因此我們要透過「grid-proxy-init」達到目的。


以下步驟需使用者帳號 test 執行。
# su - test
$ grid-proxy-init -verify -debug

輸入實驗室通用帳號密碼

產生 成功

設定「 /etc/grid-security/grid-mapfile」

Proxy 產生成功後,還不能執行 Globus 的指令,我們還必須做一些其他設定,其中「grid-mapfile」


主要是用來對應使用者的使用權,如果設定不妥當,是無法讓其他人存取機器的資源的。

• 使用使用者帳號 取得認證檔案的 ,然後記得複製下來。

$ grid-cert-info -s
可得到「」
接著使用 root 帳號新增或編輯「/etc/grid-security/grid-mapfile」,輸入如下列格式,即將 Subject 使用引號
引起來,然後空一格後面加上使用者的帳號。
# vi /etc/grid-security/grid-mapfile
"/O=Thu/OU=Hpc/OU=hpc.csie.thu.edu.tw/OU=hpc.csie.thu.edu.tw/CN=test" test

「」的設定方式

設定 Globus 的兩個 Daemon

這兩個 Daemon 分別為「gsigatekeeper」以及「gsiftp」,一個是負責認證授權用一個是負責 GridFTP 傳

輸使用的。

.新增「/etc/xinetd.d/gsigatekeeper」檔案,輸入以下內容,注意等號前後有一個空白。

service gsigatekeeper
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
env = LD_LIBRARY_PATH=/opt/globus/lib
server = /opt/globus/sbin/globus-gatekeeper
server_args = -conf /opt/globus/etc/globus-gatekeeper.conf
}
「」的內容
.新增「」檔案,輸入以下內容,注意等號前後有一個空白。
service gsiftp
{
disable = no
instances = 100
socket_type = stream
wait = no
user = root
env += GLOBUS_LOCATION=/opt/globus
env += LD_LIBRARY_PATH=/opt/globus/lib
server = /opt/globus/sbin/globus-gridftp-server
server_args = -i
log_on_success += DURATION
nice = 10
}

「」的內容
.編輯「」,替這兩個 開啟 ,新增內容如下:
gsigatekeeper 2119/tcp # Globus Gatekeeper
gsiftp 2811/tcp # Globus GridFTP
「」的內容

.重新啟動 服務,使得 開啟
# service xinetd restart

.檢查 是否開啟成功
# netstat -an|grep 2119
# netstat -an|grep 2811

開啟成功

測試 Globus 設定

前面的設定可以說是為了這一步,如果成功的話,代表你前面的設定正確,如果失敗的話,趕緊往前
檢查一下哪裡有問題吧。

• 一般來說,執行 指令有兩個步驟,第一步先產生 ,第二步執行指令,通常 產生一次可以維持


小時,所以不用每次執行 指令前都要再產生一次 。這裡以 demo1這台機器為例,請替換成你自
己的機器名字。

# su - test
$ grid-proxy-init -verify -debug
$ globus-job-run demo1 /bin/hostname
$ globus-job-run demo1 /bin/date
本機執行「」以及「」成功

.這裡的「init.sh」為本機端檔案,請自己產生一個任意檔案,而「init2.sh」為你要傳過去存成什麼檔名,
請自行指定,demo1 為機器的名字,請替換成你自己的機器名字。

$ globus-url-copy -vb file:///home/test/init.sh gsiftp://demo1/home/test/init2.sh

本機測試 成功

安裝 MPICH- G2

安裝完 Globus Toolkit 後只不過是把各機器透過 Globus Toolkit 這箇中介軟體串起來而已,充其量只能


在上面執行非平行程式,為了達到真正的鉅量運算目的,我們必須在上面安裝 MPICH-G2,這樣才能
在網格環境執行平行程式。

.以下步驟使用 root 帳號執行。

.先在「/opt」底下建立資料夾「mpich-1.2.7」並做一個 Link

# cd /opt
# mkdir mpich-1.2.7
# ln -s mpich-1.2.7/ mpich
.進入「」底下,解壓縮「」,然後執行「」
# cd /opt/src
# tar zxf mpich-1.2.7.tar.gz
# cd mpich-1.2.7
# ./configure --prefix=/opt/mpich --with-device=globus2:-flavor=gcc32dbg
.Configure 無誤後執行「make」以及「make install」
# make
# make install

.設定環境變數

為了方便使用 MPICH-G2 ,編輯「/etc/profile」加入以下設定,最後記得匯入環境變數


# vi /etc/profile
# source /etc/profile

(.... 略 ....)
fi
# Java Home
export JAVA_HOME=/opt/java
PATH=$JAVA_HOME/bin:$PATH
# Ant Home
export ANT_HOME=/opt/ant
PATH=$ANT_HOME/bin:$PATH
# Globus Home
export GLOBUS_LOCATION=/opt/globus
PATH=$GLOBUS_LOCATION/bin:$GLOBUS_LOCATION/sbin:$PATH
# Mpich Home
export MPICH_HOME=/opt/mpich
PATH=$MPICH_HOME/bin:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
. $GLOBUS_LOCATION/etc/globus-user-env.sh
for i in /etc/profile.d/*.sh ; do
(.... 略 ....)
測試 MPICH-G2

• 以下步驟以使用者帳號 執行。
• 下載以 函式庫撰寫的原始碼,可至「」下載

# su - test
$ wget http://hpc.csie.thu.edu.tw/~cagen/mpi_src/hello3_mpi.c
$ wget http://hpc.csie.thu.edu.tw/~cagen/mpi_src/mm_mpi.c

.進行編譯的動作
$ mpicc -o hello3_mpi hello3_mpi.c
$ mpicc -o mm_mpi mm_mpi.c
.編輯 檔案,指定執行機器以及 個數,這邊我們以 demo1為例,格式為:
「 「」」,與 中間有空格。你
也可以使用「」這個參數來指定其他的 。
$ vi machines

的內容

.執行程式的指令如下,其中「」代表要使用幾顆 來計算,另外,你也可以使用「」來指定其他的 檔案
注意:「」的「」以及程式後面接的矩陣大小必須是 的冪次方。
$ mpirun -np 1 hello3_mpi
$ mpirun -np 2 mm_mpi 256

輸出「」
矩陣相乘的結果

參照

The Globus Alliance, http://www.globus.org/alliance


The Globus Toolkit, http://www.globus.org/toolkit
MPICH-G2, http://www3.niu.edu/mpi

You might also like