SRB套件:
SRB3.2e.tar
srb3.2.1patch.tar
DBMS套件:
postgresql-7.4.2.tar.gz
unixODBC-2.2.10.tar.gz
psqlodbc-7.2.5.tar.gz
主機:
Redhat Linux(Redhat 8, Redhat 9, Redhat AS 3皆測試過)
測試帳號:
srb.nchc.org.tw:5544 / mcat.nchc.org.tw:5544
srbtest
srbtest
Client Application:
InQ下載頁面
目錄:
PostgreSQL and unixODBC Quick Installation Guide
在安裝的過程中,實在歷經千辛萬苦
雖然到了第3版,官方文件卻還是沒有跟著官方測試人員在新版本上的結果而更新,文件的配置潦草隨意
有相當多的堪誤
除了Scommand的設計還算不錯,ClientApp很漂亮也很好用
但Server有些設定及關鍵字的意義難以令人理解,與字面有些與差別
無論如何,我們還是感謝SRB開發人員實現這個想法
但如果是OpenSource,會讓這個想法實現的更完美吧!
可能大部分人都用安裝Oracle解決
Oracle好裝好用,但畢竟不是OpenSource
但是在這裡我用的是PostgreSQL,因為PostgreSQL對於ODBC的支援在幾版前便已經拆開
由非官方的團隊撰寫
ODBC的公用驅動一開始是選擇IODBC,不過似乎對於新版PostgreSQL的相容還是有些許問題
unixODBC有許多好用的設定工具,相容性也完全正常
不過裡面附的PostgreSQL驅動程式,我並沒有使用
MySQL也可能因為Library的關係出現Bus Error,官方沒有任何說明文件
便不在討論範圍內了
修正檔
解開兩個.tar檔
基本上從官方下載會經過pgp加密,請依官方指定的解密方式解密
再來依照srb3.2.1patch下的readme複製檔案
root$> tar xf SRB3.2e.tar
root$> tar xf srb3.2.1patch.tar
root$> cd srb3.2.1patch
root$> cp srbObjFunct.c ../SRB3_2/src/back/
…
…
完成之後,或許你可以將他tar起來,因為應該不會只裝一台的
建置Java Client的先前步驟
如果你要使用他的Java Client App,必須做這些動作
你可以到sun官方站去下載Java 2 SDK的RPM來安裝
此外還需要Apache-Ant,這是一個Java的make工具
請參考官方文件安裝,如果是下載binary的話就簡單的多,只要解開即可
環境變數
$JAVAHOME=你安裝java的路徑
$ANTHOME=你安裝apache-ant的路徑
$CLASSLIB=$JAVAHOME\lib:$JAVAHOME\jre\lib:$ANTHOME\lib
$PATH=$PATH:$JAVAHOME\bin:$JAVAHOME\jre\bin:$ANTHOME\bin
請務必加到環境變數設定檔去
Shell的問題
SRB有一小部分的script是用c shell寫的
經過測試,MCAT的ingest系列程式也是只抓c shell的變數
當下必須完全使用c shell操作
然而一般Linux使用者預設會使用bash
你必須安裝一個可用的c shell如tcsh
安裝的建議
由於SRB本身是一個Server,許多小程式,API的集合
以及這些程式的配置(Layout)方式
並不建議執行make install來安裝至指定目錄
多人共用的話,可以將整個SRB資料夾擺在/usr/local/下,將Owner改成srb,再設定$PATH
或是擺在srb這個帳號的家目錄,再設定srb自己的$PATH
由於基本上是多人共用,我們採用上面方式
Configure參數說明
–enable-installdir=<path> 安裝路徑(預設: /usr/local/srb)
–enable-javagui 如果你選擇這個,你會需要java2 sdk及apache-ant
–enable-jdkhome=<path> 如果選擇上述參數,你需要指定這個參數至正確的路徑
–enable-gsi-auth 開啟globus GSI認證方式
–enable-globus-location=<path> 如果選擇上述參數,你需要指定這個參數至正確的路徑
–enable-secure-comm 和globus進行安全連線
–enable-openssl-location=<path> 如果要進行安全連線,卻不想使用globus內附的openssl,就指定其他路徑
–enable-project=<name> 如果你要在同一個主機上執行多個SRB,需要指定
Configure & Make
官方說要gmake那是在少數平台上才可能會有的問題,現在大多數的make都是gmake
如果你在Solaris或是其他大型主機的unix上操作請要注意
configure的時候,會自動地寫入mk/mk.common, mk/mk.config,使用者不需更改
root$> mv SRB3_2 /usr/local/SRB
root$> cd /usr/local/SRB
root$> ./configure –enable-javagui –enable-jdkhome=$JAVA_HOME
root$> make
root$> adduser srb
root$> chown -R srb:srb ./
環境變數
以下的路徑要加入至$PATH
/usr/local/SRB/bin
/usr/local/SRB/java/bin
/usr/local/SRB/utilities/bin
/usr/local/SRB/utilities/admin-bin
如果你要的話,可以將下列加入至$MANPATH
/usr/local/SRB/utilities/man
SRB套件附了什麼工具?
admin/
這是一個srb的監控工具
bin/
srbMaster,SRB的服務程式
/bin/commands
給runsrb及killsrb使用的script
data/
SRB主要設定檔的目錄,MCAT/data有部分檔案會做連結
jargon/
Java API
java/
Java Client,即為srbBrowser
matrix/
使用SRB的一個應用
NT/
Windows版的用戶端文字介面程式
readme.dir/
所有主要的說明都放在這裡
tape/
SRB的磁帶管理介面,可以將磁帶也納入MCAT管理
test/
測試程式及範例
unixIO/
libsrbUio.so,srbUio.h,提供的C API
utilities/
Scommand文件介面工具
安全機制
MDAS
(
Massive Data Analysis System ) 為SRB主要的存取控制,排程,中介資料(metadata)控制的子系統
每個SRB服務器需要連接到一個MCAT服務器
進入SRB Source的data目錄
編輯mcatHost 檔案
第一行是mcat主機位置
第二行是加密方式,一般使用ENCRYPT1即可
第三行目前沒有太大影響,不作任何編輯
你可以在SRB Source下的utilities/envFiles目錄找到兩個隱藏檔
.MdasAuth
.MdasEnv
建立~srb/.srb目錄,並且將這兩個檔案複製到其中
編輯這兩個檔案
一個前提是,這裡所使用到的帳號密碼
全部是在mcat中有註冊的帳號密碼,跟主機本身的帳號密碼沒有關連
在.MdasAuth檔案中填入密碼
而.MdasEnv中
在所有欄位填入相對應的值
如果你不是MCAT的管理者,你應該會被主動告知這些資訊
啟動
切換成srb帳號
務必進入bin目錄才能啟動
以下列出一般啟動及停止的情況
srb$> ./runsrb
rm: cannot lstat `./../data/lockDir/.[a-z]*’: No such file or directory
rm: cannot remove `./../data/lockDir/CVS’: Is a directory
findServerExec: found “/usr/local/SRB/bin/./srbServer” using argv[0]
logFile: ../data/srbLog opened successfully.
initHostWithMCat: mcatHost not defined for zone demozone
LocalHostName: nasyp2, localhost, nasyp2.nchc.org.tw, 127.0.0.1, Port Num: 5544.
Local storage vault conf:
storSysType: 0, vaultPath: /srbVault
NOTICE:Oct 17 15:37:25: srbMaster version SRB-3.2.0&F is up.
initHostWithMCat: mcatHost not defined for zone demozone
findServerExec: found “/usr/local/SRB/bin/./srbServer” using argv[0]
srb 6671 1 0 15:37 ? 00:00:00 ./srbMaster-3.2.0 -d 1 -S
srb 6679 6667 0 15:37 pts/3 00:00:00 grep srbMaster
srb$> ./killsrb
040 S srb 6671 1 0 75 0 - 2890 schedu 15:37 ? 00:00:00 ./srbMaster-3.2.0 -d 1 -S
000 S srb 6674 6671 0 76 0 - 3173 pipe_w 15:37 ? 00:00:00 /usr/local/SRB/bin/./srbServer -Q -p7 -P8
Will kill srbServers with pid = 6674
Will kill srbMaster with pid = 6671
Enter y to do so:
y
kill 1: 6674
kill 2: 6674
kill 1: 6671
kill 2: 6671
kill 6671: No such proces
介紹
PostgreSQL是一個以物件導向為基礎的關連式資料庫,以下列出幾個好用的資源
幾乎很多大學的FTP都有PostgreSQL的Mirror
ftp://ftp.isu.edu.tw/pub/Unix/Database/PostgreSQL/
在本文件撰寫的時候,最新版本是7.4.5
你可以在ftp://ftp.isu.edu.tw/pub/Unix/Database/PostgreSQL/odbc/versions/src/
找到最新的ODBC驅動
你可以在下載頁面找到最新版
unixODBC是一套擁有相當高支援性的unix平台ODBC驅動程式,比起iODBC,unixODBC更多了一些好用的工具介面及詳細的說明
你可以在官方站的manual頁面找到許多安裝指南
安裝PostgreSQL
在這裡必須強烈建議使用Source安裝,使用RPM由於會自動加入ptherad功能
就SRB的maillist有提到說可能會引發程式出錯
將下載回來的套件解開之後,進入PostgreSQL source 目錄
root $> ./configure –with-perl –with-nls
root $> make all install
root $> cd /usr/local/pgsql
root $> adduser postgres
root $> mkdir data
root $> chown -R postgres:postgres data
#請自行加入路徑至PATH
root $> initdb ./data
root $> pg_ctl -D ./data -l ./data/pgsol.log start
#要停止的話
root $> pg_ctl -D ./data stop
#重新啟動
root $> pg_ctl -D ./data -l ./data/pgsol.log restart
PostgreSQL與MySQL一樣,預設使用unix domain socket
為了能使ODBC驅動程式正常運作
我們得啟動他的tcp通訊埠
編輯data/postgresql.conf
大概在第30行有個tcpip_socket = false 改成true
下面有個port=5432
這是等會也要在ODBC設定檔設置的
重新啟動PostgreSQL之後可以測試看看
root $> netstat -al
tcp 0 0 *:postgres *:* LISTEN
安裝unixODBC及psqlodbc驅動程式
unixODBC的圖形工具要在kde下跑,如果你沒有安裝kde及libqt,記得加入 –enable-gui=no
root $> ./configure
root $> make all install
由於psqlodbc欠了三個檔案,請從postgresql安裝目錄找到這三個檔案,並複製過去
例如:/usr/local/pgsql/include
這三個檔案是
iodbc.h
isqlext.h
isql.h
#進入psqlodbc source目錄
root $> ./configure –with-unixodbc –enable-static
root $> make all install
在linux中,如果動態函示庫沒有以lib開頭,會無法正確連結
不使用softlink是因為mcat程式會無法正確抓到載入系統的函示庫
不過unixODBC是直接連接的,仍然可以正常運作
root $> cd /usr/local/lib
root $> ln psqlodbc.la libpsqlodbc.la
root $> ln psqlodbc.so libpsqlodbc.so
root $> ldconfig -v
新增odbcinst.ini
建立/usr/local/etc/odbcinst.ini
加入
[PostgreSQL]
Description = PostgreSQL driver for Linux & Win32
Driver = /usr/local/lib/libpsqlodbc.so
| root$> odbcinst -i -d -f odbcinst.ini -n PostgreSQL |
他會自動做其餘的設定
odbc驅動需要在預設資料庫增加一些function
| root $> su postgrespostgres $> psql template1 < /usr/local/share/psqlodbc/odbc.sql |
建立預設及mcat所要用的資料庫
我給SRB用的資料庫名稱為srb
root $> su postgres
postgres $> createdb postgres
postgres $> createdb srb
postgres $> createuser srb
切換成srb帳號,進入家目錄
建立.odbc.ini
並增加下列幾行
[PostgreSQL]
Servername = localhost
Database = srb
Username = srb
Password = nchcsrb
Port = 5432
Driver = /usr/local/lib/psqlodbc.so
如果出了問題,想要察看log,可以加入
Trace = Yes
TraceFile = /home/srb/odbc.trace
srb$> odbcinst -i -s -f .odbc.ini
srb$> isql PostgreSQL
+—————————————+
| Connected!
|
| sql-statement
| help [tablename]
| quit
|
+—————————————+
SQL>
表示可以正常連接
前面準備動作都同樣,多了設定MCAT那個部分
| root$> ./configure–enable-psgmcat –enable-psghome=/usr/local/pgsql–enable-javagui –enable-jdkhome=$JAVA_HOMEroot$> make |
接下來仍然是建立srb帳號
加入環境變數…等
由於我們使用的是PostgreSQL ODBC Driver,而SRB又少了三個.h檔,我們必須將他複製到你安裝PostgreSQL的include
例如:/usr/local/pgsql/include
這三個檔案是
iodbc.h
isqlext.h
isql.h
切換至SRB Source目錄
| root$> makeroot$> cd MCATroot$> makeroot$> chown -R srb:srb /usr/local/SRB |
編輯設定檔
接著進入data目錄編輯三個檔案
- 將mcatHost檔案改為你的主機名稱
- 將MdasConfig.psg複製,覆蓋掉原來的MdasConfig
你只要更動這裡所有的路徑至正確的,此外DB2USER就是剛剛使用createuser在PostgreSQL建立的帳號”srb” - 將hostConfig加入你的主機名稱
建立資料庫
切換成srb帳號,進入SRB Source下的MCAT/data目錄
如果有需要觀看結果,輸出重導至任何檔案
install.results.*這些檔案是SDSC他們安裝的結果,可以用diff與你自己的安裝結果比較
| srb$> psql srb < catalog.install.psg |
將MCAT/bin加入至你的路徑,你可以現在就將這些常用的路徑寫至srb帳號的環境設定檔
之後可以在MCAT/data執行test.catalog這個script
test.reault.*是SDSC測試的結果
| srb$> ./test.catalog |
使用diff來將你的結果和官方的結果比較後
若是發現錯誤,可以使用utilities/bin底下的Scommand
| srb$> Serror -3219 Serror DATA_SUBCOLLECTION_NOT_UNIQUE: DATA_SUBCOLLECTION_NOT_UNIQUE |
你或許可以在SRB的maillist找到一些解釋
isql連線測試沒什麼問題的話,就幾乎都會正常
若是出現Segmentation fault,你應該試著將psqlodbc驅動重新make,或是使用另一個版本
真的有錯誤,為了追蹤,你可以開啟PostgreSQL的Log connection/statement 功能
註冊帳號及區域
MCAT有預先定義一組區域及帳號,我們將使用這組帳號來新增其他帳號
以下的操作,需要一個可用的c shell
以下可能會有一些字元混淆的狀況,例如O和0,1和l
不行的話試著複製貼上吧
srb$> csh
srb%> setenv srbUser srb
srb%> setenv srbAuth CANDO
srb%> setenv mdasDomainName sdsc
srb%> ingestToken Domain nchc gen-lvl4
srb%> ingestUser srbadmin nchcsrb nchc sysadmin ” ” ”
這兩道指令原本的意思
ingestToken Domain $YOURDOMAIN gen-lvl4
ingestUser $YOUR_ADMIN_NAME $YOUR_PASSWD $YOUR_DOMAIN sysadmin ” ” ”
啟動
同樣地,複製並編輯好.MdasAuth及.MdasEnv兩個檔案
便可以依照上面的作法啟動SRB
啟動的訊息應該也會於上面無異
你可以下載InQ,Windows的SRB Client來使用上面的帳號連接看看
一些API,工具的使用在之後的文章會陸續介紹

最新回應