2011年5月5日 星期四

[Linux] Linux學習-- RHEL6 安裝TSM Client

    IBM的TSM(由ADSM而來),是一個跨平台、功能非常強大的備份軟體,由於他的功能非常多,所以相對其他備份軟體而言也比較難學。這套軟體是Client-Server架構的,由一部(或多部)Server提供備份服務,供Client端將資料用各種方式備份上來。這個文件主要是寫TSM Client的安裝法,版本是6.2.2.0,作業系統是RHEL6。會特別寫這個文件是因為TSM與RHEL都大改版了,與之前第五版的安裝略有不同,所以將細節列出來供有需要的讀者參考。




ftp://ftp.software.ibm.com/storage/tivoli-storage-management/maintenance/client/v6r2/Linux/LinuxX86/v622/6.2.2.0-TIV-TSMBAC-LinuxX86.tar

1. 下載TSM Client 6.2.2.0版tar檔

2. 若RedHat未註冊,無法使用yum 做套件管理,可以直接mount CDROM來做sourcelist.

方法如下:
    # mkdir /mnt/rhel6
    # mount /dev/sr0 /mnt/rhel6 (我是用kvm mount iso,所以是/dev/sr0這個裝置,如果一般的情況應該會是/dev/cdrom。請在安裝的時候自行判斷,可以用dmesg看看自己的光碟是在哪個裝置上。有問題可以提出來討論)

由於系統現在並沒有yum可用的sourcelist,因此我們要從光碟上複製一個範例到本機上使用

    # cp /mnt/rhel6/media.repo /etc/yum.repos.d/media.repo

編輯 /etc/media.repo,將baseurl指向光碟機

      在檔案最後加上 baseurl=file:///mnt/rhel6/

    # vi /etc/yum.repos.d/media.repo

[InstallMedia]
name=Red Hat Enterprise Linux 6.0
mediaid=1285193176.460470
metadata_expire=-1
gpgcheck=0
cost=500
baseurl=file:///mnt/rhel6/ <===加入這一行

如此即可使用CD-ROM來進行套件的安裝了。

3. 安裝TSM Client

將適才下載的tar檔解開
> tar xvf 6.2.2.0-TIV-TSMBAC-LinuxX86.tar

可得以下所有檔案,其中gskcrypt與gskssl套件是一定會用到的,別忘了缺少這兩個套件時可以安裝。
NOTICES.TXT
README_enu.htm
README_api_enu.htm
README_hsm_enu.htm
TIVsm-API.i386.rpm
TIVsm-API64.i386.rpm
TIVsm-BA.i386.rpm
TIVsm-HSM.i386.rpm
TIVsm-BAhdw.i386.rpm
gskcrypt32-8.0.13.4.linux.x86.rpm
gskcrypt64-8.0.13.4.linux.x86_64.rpm
gskssl32-8.0.13.4.linux.x86.rpm
gskssl64-8.0.13.4.linux.x86_64.rpm


試著安裝TIVsm-API.i386.rpm,系統會告訴你缺了一大堆該有的套件

[root@localhost ~]# rpm -ivh TIVsm-API.i386.rpm 
error: Failed dependencies:
    gskcrypt32 >= 8.0-13.4 is needed by TIVsm-API-6.2.2-0.i586
    gskssl32 >= 8.0-13.4 is needed by TIVsm-API-6.2.2-0.i586
    libcrypt.so.1 is needed by TIVsm-API-6.2.2-0.i586
    libcrypt.so.1(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6 is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.1) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.1.1) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.1.2) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.1.3) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.2) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.2.3) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.3) is needed by TIVsm-API-6.2.2-0.i586
    libc.so.6(GLIBC_2.3.4) is needed by TIVsm-API-6.2.2-0.i586
    libdl.so.2 is needed by TIVsm-API-6.2.2-0.i586
    libdl.so.2(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libdl.so.2(GLIBC_2.1) is needed by TIVsm-API-6.2.2-0.i586
    libgcc_s.so.1 is needed by TIVsm-API-6.2.2-0.i586
    libgcc_s.so.1(GCC_3.0) is needed by TIVsm-API-6.2.2-0.i586
    libgcc_s.so.1(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8cms.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8iccs.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8iccs.so(ICCSTUB) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8ssl.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8ssl.so(GSKSSL) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8sys.so is needed by TIVsm-API-6.2.2-0.i586
    libm.so.6 is needed by TIVsm-API-6.2.2-0.i586
    libm.so.6(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0 is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0(GLIBC_2.0) is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0(GLIBC_2.1) is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0(GLIBC_2.2) is needed by TIVsm-API-6.2.2-0.i586
    libpthread.so.0(GLIBC_2.3.2) is needed by TIVsm-API-6.2.2-0.i586
    librt.so.1 is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.5 is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.5(CXXABI_1.2) is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.5(GLIBCPP_3.2) is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.6 is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.6(CXXABI_1.3) is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.6(CXXABI_1.3.1) is needed by TIVsm-API-6.2.2-0.i586
    libstdc++.so.6(GLIBCXX_3.4) is needed by TIVsm-API-6.2.2-0.i586


所以我們要一一將缺少的部份安裝起來,我從最後一個套件往上一一解決。
1. libstdc++.so.6
"yum provides" 可用來查看缺少的檔案是由哪個套件所提供的,因此底下我們下這樣的指令:

[root@localhost ~]# yum provides libstdc++.so.6
Loaded plugins: rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
libstdc++-4.4.4-13.el6.i686 : GNU Standard C++ Library
略,我們可以看到libstdc++.so.6這個檔案是libstdc++-4.4.4-13.el6.i686這個套件的。
安裝這個套件
[root@localhost ~]# yum install libstdc++-4.4.4-13.el6.i686

尋找包含libstdc++.so.5的套件
[root@localhost ~]# yum provides libstdc++.so.5
Loaded plugins: rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
compat-libstdc++-33-3.2.3-69.el6.i686 : Compatibility standard C++ libraries

安裝這個套件
[root@localhost ~]# yum install compat-libstdc++-33-3.2.3-69.el6.i686

安裝過程中,由於yum會自動帶進該安裝的相關套件,因此上面所列的缺件都會被一一補齊。
完畢之後,我們再試裝一次TIVsm-API.i386.rpm

[root@localhost ~]# rpm -ivh TIVsm-API.i386.rpm 
error: Failed dependencies:
    gskcrypt32 >= 8.0-13.4 is needed by TIVsm-API-6.2.2-0.i586
    gskssl32 >= 8.0-13.4 is needed by TIVsm-API-6.2.2-0.i586
    libgsk8cms.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8iccs.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8iccs.so(ICCSTUB) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8ssl.so is needed by TIVsm-API-6.2.2-0.i586
    libgsk8ssl.so(GSKSSL) is needed by TIVsm-API-6.2.2-0.i586
    libgsk8sys.so is needed by TIVsm-API-6.2.2-0.i586

還缺gskcrypt32,gskssl32,libgsk8sys.so, libgsk8iccs.so, libgsk8cms.so這幾個檔案,
這幾個就要靠TSM的tar檔解開裡的rpm套件了。
 依序安裝底下幾個rpm 套件,順序不對的話系統會告訴你。

[root@localhost ~]# rpm -ivh gskssl32-8.0.13.4.linux.x86.rpm
[root@localhost ~]# rpm -ivh  gskcrypt32-8.0.13.4.linux.x86.rpm 
[root@localhost ~]# rpm -ivh gskssl32-8.0.13.4.linux.x86.rpm  [root@localhost ~]# rpm -ivh TIVsm-API.i386.rpm 
[root@localhost ~]# rpm -ivh TIVsm-BA.i386.rpm 

TSM Linux client installation complete.

Be sure to set up the system configuration file
before starting the client!

好了,到現在為止,TSM Client已經安裝完畢。接著就是設定設定檔的部份。

兩個檔案,dsm.sys與dsm.opt

# cd /opt/tivoli/tsm/client/ba/bin/
# cp dsm.sys.smp dsm.sys <====最主要的系統設定檔,把sample檔cp成可用的dsm.sys
# cp dsm.opt.smp dsm.opt <====其他設定的設定檔,把sample檔cp成可用的dsm.opt

# vi dsm.sys

************************************************************************
* IBM Tivoli Storage Manager                                           *
*                                                                      *
* Sample Client System Options file for UNIX (dsm.sys.smp)             *
************************************************************************

*  This file contains the minimum options required to get started
*  using TSM.  Copy dsm.sys.smp to dsm.sys.  In the dsm.sys file,
*  enter the appropriate values for each option listed below and
*  remove the leading asterisk (*) for each one.

*  If your client node communicates with multiple TSM servers, be
*  sure to add a stanza, beginning with the SERVERNAME option, for
*  each additional server.

************************************************************************

SErvername  tsm.allen.chen  <====取一個代表TSM Server的名字
   COMMMethod         TCPip
   TCPPort            1500
   TCPServeraddress   tsm.allen.chen <=====可寫IP Address或Hostname(可由DNS轉址的)
   nodename   RHEL6   <===== 安裝TSM Client的主機名稱,這個名稱是註冊在TSM Server上的名稱。
   SCHEDLOGNAME "/var/log/tsmsched.log"  <===== 排程紀錄檔
   ERRORLOGNAME "/var/log/tsmerror.log"  <===== 錯誤紀錄檔,一定要設,否則與TSM Server連線會有問題
   passwordaccess generate  <===== 照著key,這是密碼key in 的方式,當然也可以用明碼,只不過這樣有root 權限的user就可以任意去restore備份的資料下來看了,非常不安全。


存檔離開。

dsm.opt檔可以先不要去動,那是比較進階的設定部份。記得把dsm.opt.smp複製一份成為dsm.opt即可。


設定完畢之後,先與TSM Server連線第一次確認連線是否正常

[root@localhost bin]# dsmc
IBM Tivoli Storage Manager
Command Line Backup-Archive Client Interface
  Client Version 6, Release 2, Level 2.0
  Client date/time: 05/05/2011 20:20:48
(c) Copyright by IBM Corporation and other(s) 1990, 2010. All Rights Reserved.

Node Name: RHEL6
Please enter your user id <RHEL6>: <===== user id就是nodename,可以不必key,直接下enter.

Please enter password for user id "RHEL6":  <===== 輸入TSM Server系統管理員為您所設得密碼

過了之後就會到tsm的命令提示狀態下
tsm>_

這樣就表示可以正常與TSM Server連線了。

接著我們要設定自動排程,由於RHEL6的/etc/inittab已經不給下指令在其中,取而代之的是/etc/init/底下的檔案,要分別為每個服務另外寫,這邊我還沒研究透徹,所以把開機啟動的指令寫在/etc/rc.local裡。

先把dsmc在背景執行:
[root@localhost bin]# nohup /usr/bin/dsmc sched 2> /dev/null &

確認dsmc daemon有在執行
[root@localhost bin]# ps ax | grep dsmc
 2093 tty1   Sl    0:00 /usr/bin/dsmc sched  <=== Daemon在此
 2096 tty1   S+    0:00 grep dsmc
[root@localhost bin]#

將這個指令寫在/etc/rc.local使其在開機時自動執行

[root@localhost bin]# vi /etc/rc.local
在最後加入一行
nohup /usr/bin/dsmc sched 2> /dev/null &

存檔離開,並且reboot測試看看。

如果下ps ax | grep dsmc跟上面一樣有出現
2093 tty1   Sl    0:00 /usr/bin/dsmc sched
就表示開機會自動執行了。
關於/etc/init底下的寫法,我研究完畢會將正規的寫法補充上來。

6 則留言:

  1. /etc/inittab下的寫法:
    tsm::once:/usr/bin/dsmc sched > /dev/null 2>&1 #TSM scheduler
    F.Y.I

    回覆刪除
  2. 眼花了,沒注意到是rhel6!
    樓上那篇當沒發生過吧,囧

    回覆刪除
  3. 有讀者留言,筆者連高興都來不及了!謝謝您的造訪啊!
    下次記得要留個名字喔!謝謝~

    回覆刪除
  4. 回覆
    1. 寫了這麼多年的文章還可以幫上忙,很感謝您的閱讀。

      刪除

艾倫搜尋企業級的Open Source Solutions,提供簡易好上手的教學文件。