Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101863
  • 博文数量: 20
  • 博客积分: 1404
  • 博客等级: 中尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-02 15:40
文章分类

全部博文(20)

文章存档

2012年(1)

2009年(1)

2008年(8)

2007年(10)

我的朋友

分类:

2009-05-15 19:33:49

TSM 5.3 + LINUX 安装配置
OS: CENTOS 4.4
TSM5.3.2
环境: 一台破PC 机,P3 900Mhz,256M 内存,40G 硬盘
一台淘汰了的HP DAT 40 磁带机
N个不知道多少年的DDS3 和DDS4 磁带
参考书籍: IBM Tivoli Storage Manager for Linux 管理员指南
IBM Tivoli Storage Manager for Linux 管理员参考
IBM Tivoli Storage Manager for Linux 快速入门
IBM Tivoli Storage Manager for UNIX 备份-归档客户机安装与
用户指南
IBM Tivoli Storage Manager 消息
安装包: TIVsm-server-5.3.2-0.i686.tar.bz2
TSM532.tar
目的: 能够每天自动备份/home 目录下的所有文件,并且自动备份TSM 的数
据库
安装步骤:
1. 最小化安装CENTOS.
2. 解压缩TIVsm-server-5.3.2-0.i686.tar.bz2,里面有server 和tsmscsi 两个rpm 文件,一个是
服务器端,一个是设备的驱动程序,都是必须的,想都不想,装上去先,记得会提示缺一个包,
在CENTOS 光盘中就有,装上就OK.
3. 解压缩TSM532.tar,安装里面的TIVsm-API.i386.rpm 和TIVsm-BA.i386.rpm.
4. 全部4 个rpm 文件按照默认路径安装完成之后,会在/opt 目录下生成tivoli 子目录,内有
N 多东西,如server 目录,client 目录.
5. 执行:export DSMSERV_DIR=/opt/tivoli/tsm/server/bin
执行:export DSMSERV_CONFIG=/opt/tivoli/tsm/server/bin/dsmserv.opt
用来添加一下变量。
配置步骤:
1. 首先,进入/opt/Tivoli/tsm/client/ba/bin 目录,里面有dsm.opt.smp 和dsm.sys.smp 两个示例文
件,把他们分别copy 成dsm.opt 和dsm.sys 文件.
2. 用VI 编辑dsm.sys 文件,如下:
######################################
SErvername centos
COMMMethod TCPip
TCPPort 1500
TCPServeraddress 172.16.9.165
nodename centos
passwordaccess generate
managedservices schedule
######################################
其中,第一行SErvername centos 表示,服务器的名称centos,
第二行 COMMMethod TCPip 表示客户端和服务器端的通讯方式
第三行 TCPPort 1500 表示客户端和服务器端的通讯端口
第四行 TCPServeraddress 172.16.9.165 表示服务器的IP 地址
第五行 nodename centos 表示这台客户端的节点名称centos
第六行 passwordaccess generate 表示密码的提示方式
第七行 managedservices schedule 表示CAD 服务管理目标
由于我只有一台破PC,所以服务器和客户端都是它,名字也都是centos,服务器IP 就是自
己,这些都好说,重点在第六,七行,第六行有两个值,其中passwordaccess 是选项
名,generate 是值,generate 表示在客户端和服务器端联系的时候,不询问密码,另一个值
prompt 表示每次都询问密码,是默认值.由于我需要自动执行任务,所以需要指明是
generate.第七行managedservices 是指CAD 程序管理调度程序还是WEB 客户机,两个
值,webclient 是默认值,schedule 表示管理调度,可以两个都指定.
3. 用VI 编辑dsm.opt 文件,如下:
###############################
SErvername centos
###############################
这里我只写了一行,因为我没有很多个服务器,所以只有一行,要和dsm.sys 里面对应
4. 进入/opt/Tivoli/tsm/server/bin,运行./dsmserv &启动服务器,并放入后台运行.
5. 进入/opt/Tivoli/tsm/client/ba/bin,运行./dsmadmc –con,用以查看服务器反馈的消息,这个很
重要的,管理员帐号和密码都是admin.
6. 再次运行./dsmadmc,进入命令行控制台,帐号密码admin.此时,服务器的名字是server 1,用
set servername centos 把名字改成centos.最好把服务重启一次.
7. q do 发现,有一个domain 是standard,我不喜欢他,删除掉,但需要先删除掉domain 里面的
客户机,remove node client 可以删除原有的接点,client 是接点名.然后再del do standard,
删除掉默认的domain,后面会重新建立一个.
8. 定义一个手动库newlibrary:
Def lib newlibrary libtype=manual
9. 定义newlibrary 里面的驱动器newdrive.
Def drive newlibrary newdrive
10. 定义newdrive 的path:
Def path centos newdrive srctype=server desttype=drive library=newlibrary
device=/dev/tsmscsi/mt0.
我曾在这里碰到很大一个麻烦,两天多才解决,就是device 这个参数的值不知道是什么,
在linux 中,磁带机一般是/dev/st0,我用/dev/st0 可以正常的tar,但定义path 的时候,device
设置/dev/st0 就一直报错ANR8420E 错误,查《IBM Tivoli Storage Manager 消息》得知,
就是device 的值错误,弯弯饶,饶弯弯,终于在《IBM Tivoli Storage Manager for Linux 快速
入门》中看到, 原来需要一些配置, 象我这种只连接了一个磁带机的, 运行
/opt/Tivoli/tsm/devices/bin 下的autoconf 文件,就会生成/dev/tsmscsi/mt0,用这个做device
的值就可以了.
11. 定义设备类devclass:
Def devclass newdevclass library=newlibrary devtype=4mm format=dds4c estcapacity=40G
定义了一个newdevclass 的设备类,属于newlibrary 库,使用4mm 磁带,规格dds4C,C 表示
压缩,容量40G.
12. 定义一个新的存储池newpool:
Def stgpool newpool newdevclass maxscratch=0
定义了一个属于newdevclass 设备类的存储池newpool,不使用临时卷.
13. 给磁带做label:
Label libvolume newlibrary linuxtsm1 overwrite=yes
Label 了一个linuxtsm1 的磁带,覆盖了原由的label.如此反复几次,label 所有要用的磁带
14. 把已经label 好的磁带分配给存储池:
Def volume newpool linuxtsm1
把linuxtsm1 分配给newpool 这个存储池.
15. 定义一个位置在硬盘上的存储池,以实现高速备份的目的:
Def stg diskpool disk maxsize=100M nextpool=newpool
定义了一个diskpool 池,属于disk 类,最大能存放的单个文件大小100M,超过100M 的直
接放到下一个存储池newpool,迁移时也迁移到newpool.
定义这个存储池的目的是为了实现高速备份,因为硬盘速度毕竟比磁带快多了,但要限制
单个文件的大小,防止太大的文件写入导致空间不够,引起备份过程中就要迁移,很不好,
下一个存储池就可以指向磁带存储池newpool.这个存储池对备份性能的提高很有作用.
16. 给diskpool 存储池定义一个在硬盘上的卷:
Def vol diskpool /home/diskvol formatsize=5000
定义了一个在/home 目录下的卷,名称diskvol,大小5000M,属于diskpool 池,
17. 定义一个新的domain:
Def domain newdomain
18. 定义一个新的policyset:
Def policyset newdomain newset
定义了一个新的策略设置newset,属于newdomain
19. 定义一个新的管理类newmgclass
Def mgmtclass newdomain newset newmgclass
定义了一个新的管理类newmgclass,属于newdomain 域的newset 策略设置
20. 定义一个新的copygroup 组standard
Def copygroup newdomain newset newmgclass destination=diskpool
定义了一个新的copygroup 组standard,这里不用写名字,默认就是standard,这个拷贝组
的目标存储池是diskpool,就是说有什么要备份的,先写到diskpool 存储池
21. 分配默认的管理类:
Assign defmgmtclass newdomain newset newmgclass
22. 激活一个策略设置:
Activate policyset newdomain newset
23. 注册客户机节点:
Register node centos donggua domain=newdomain
注册了一个叫centos 的客户机,密码donggua,分配到newdomain 域.
到此为止,配置部分已基本完成,大部分细节都使用的是默认设置,配置了一个在硬盘上
的存储池diskpool,一个磁带机构成的存储池newpool,所有备份数据先到diskpool,等diskpool
满了后,迁移到newpool,这个过程的条件可以控制,后面会接着写,没有定义归档组,因为差不
多,而且我的工作内容没有涉及到归档,也就没有动力,大家见谅哈~!也没有定义很多的管
理类,策略设置,域什么的,因为我也初学,太复杂的搞得头昏,以后慢慢完善.
接下来是计划任务的设置了,涉及到文件的自动备份,存储池的自动迁移,TSM 自身数
据库的备份,旧数据库的删除等.
调度计划设置:
1. 每日文件备份设置:
由于我计划只备份/home 下的文件,而且要排除掉刚才在/home 目录下创建的那个
diskvol 卷,所以我需要修改/opt/Tivoli/tsm/client/ba/bin 下的dsm.sys 文件,增加下面几行:
exclude.fs /
exclude.fs /usr
exclude.fs /var
include.fs /home
exclude.backup /home/diskvol
我的硬盘分配是:/单独一个分区,/usr 一个分区,/var 一个分区,/home 一个分区,由于我
不打算备份/home 以外的分区,所以一至三行要那样写,最好不要写成其他的,
如”exclude.backup /”,我在这上面也吃过亏,因为/是一个单独的文件系统,所以要写成
exclude.fs /,当然也有其他的方法,不过这个是我第一个想到的,就他了.由于要排除掉
/home/diskvol,所以要写在第五行,不要写在include.fs /home 上面,因为这个包含排除列
表是从下望上读的,所以大家要注意了.
每日文件备份方法1:
Dsm.sys 文件改完后,在控制台输入如下命令:
Def sch newdomain newsch type=client action=incremental starttime=12:00:00 duration=1
durunits=hours
这一行的意思是,定义一个叫newsch 的任务,属于newdomain 域,类型是client 备份任务
(与之对应的有admin 管理任务),动作是增量备份,在每天的中午12 点开始,最多延迟1 个
小时,1 小时后还没执行,则算失败.
定义完任务以后,还需要把客户端分配给这个任务:
Def association newdomain newsch centos
这样,这个任务就在服务器端定义完了,接着到客户端操作,因为到12 点后,服务器段
需要联系客户端来完成备份,这时候,客户端要有一个接受方式,有两种,一种是运行命
令/opt/Tivoli/tsm/client/ba/bin/dsmc schedule,使它一直在运行,会倒记时,12 点到了以后,
会再延迟一段时间,再开始备份,这点很讨厌.如果使用这种方法,dsm.sys 文件里的
managedservices schedule 这一行需要注销掉,因为这是使用另一种方法的设置,另一种方
法是使用CAD 来接受服务器的备份计划,再通过CAD 启动dsmc schedule,这种的好处是
不用在前台运行服务,方法是运行/opt/Tivoli/tsm/client/ba/bin 里的dsmcad,运行后,CAD
程序启动,自动在后台接受服务器的计划任务,都可以实现自动备份,但都有一段时间
的延迟,不知道为什么.
每日文件备份方法2:
如果不想要方法1 中的延迟,那么就使用linux 的crontab 来进行自动备份吧,编辑一个
crontar,设置在每天的12 点执行/opt/Tivoli/tsm/client/ba/bin/dsmc i 命令,dsmc 是一个客户
端的程序,必须要的,i 是他的参数,指增量备份.这种方法也可以自动备份,而且不用在服
务器上定义任务,且可以不延迟,缺点是如果客户端太多,不好管理和协调客户端的备份
时间.用方法1 就可以避免,萝卜白菜各有所爱吗,我爱第一种.
2. 每日diskpool 存储池的迁移:
每天备份后,由于是备份到diskpool 池里的,也就是备份到硬盘上,这就带来一个问题,
如果这个存储池满了怎么办?虽然它在容量达到90%后会自动向下一个存储池(也就是
磁带存储池newpool)迁移文件,直到容量到70%时停止,但如果我每天备的东西很多,
那么会产生一种问题,备份一次需要迁移N 次,严重影响备份速度,怎么办?设置一个
管理任务,在每天备份完后,强制令diskpool 将所有的数据迁移到newpool,腾出空间,
迎接明天的备份.具体的思路是将diskpool 的最大迁移上限和最小迁移下限设为0,强制
使它迁移,迁移完了之后再设一个管理任务,把上限和下限改回来,免得影响明天的备份.
Def sch qianyi type=a cmd=”update stg diskpool hig=0 low=0” starttime=15:00:00
active=yes
定义了一个叫qianyi 的管理任务,在每天的15 点运行update stg diskpool hig=0 low=0 命
令,把diskpool 存储池的上下限都设为0,强制迁移.
迁移完成后,需要把diskpool 存储池的上下限都改回来,免得影响明天的备份:
Def sch gaihuilai type=a cmd=”update stg diskpool hig=90 low=70” starttime=16:00:00
active=yes
定义了一个叫gaihuilai 的管理任务,在每天的16 点运行update stg diskpool hig=90
low=70 命令,把diskpool 存储池的上限改回90,下限改回70.
3. TSM 自身数据库的备份:
TSM 使用数据库来记录备份的一些信息,所以这个数据库显得很重要,不容有失,要每天
备份,同样需要设置计划任务来自动备份,而且需要设置3 个计划任务,两个用来每天备
份数据库到两个磁带上,一个用来删除旧的备份版本,这里有个需要注意的,我在这里
也饶了一天.TSM 的数据库,不能够备份到以前已使用过的磁带上,就是说,我昨天在
TSM1 磁带上备份了数据库,今天还想备份到这个磁带上,很不好意思,不允许,这怎么
办?难道我每天要拿一个新的磁带来备份数据库吗?不用,可以每天使用del volhistory 命
令把过期的就的数据库备份删除掉.所以这就是为什么我要用3 个计划任务来备份新的
数据库和删除旧的数据库了,我希望保持2 天的数据库,所以用两个磁带,两个计划任
务来备份数据库,如果需要保留N 天的,需要用N 个磁带,N 个计划任务了.
其实,还有其他的方法,在我的生产环境中,数据库是直接备份到硬盘上的,,备份到一个
file 类型的volume 里面的,这种类型的volume 不受上面说的限制,缺点是备份放置的地
方有隐患,万一服务器坏了就完了,但很可惜,这套TSM 不是我做的.
下面说我的方法吧,备份数据库的命令是:
Backup db type=full devclass=dbclass volumename=tsm1
其中,type=full 是指完全备份,devclass 是指用什么设备类,volumename 是指用哪个卷.在
这里,备份数据库只需要指定一个设备类,这个设备类下面不需要存储池,为了管理清楚
点,我新建一个设备类dbclass,并且专门label 了两个磁带tsm1,tsm2 来备份数据库:
Def devclass dbclass library=newlibrary devtype=4mm format=dds4c estcapacity=40G
Label libvolume newlibrary tsm1 overwrite=yes
Label libvolume newlibrary tsm2 overwrite=yes
准备好了之后,定义一个管理任务dbbackup1,备份数据库到TSM1 磁带上,每天的
22:00:00 执行,今天开始执行,每两天一次:
Def sch dbbackup1 type=a cmd=”backup db type=full devclass=dbclass volume=tsm1”
startdate=today starttime=22:00:00 period=2 active=yes
再定义一个管理任务dbbackup2,备份数据库到TSM2 磁带上,每天的22:00:00 执行,明
天开始执行,每两天一次:
Def sch dbbackup2 type=a cmd=”backup db type=full devclass=dbclass volume=tsm2”
startdate=today+1 starttime=22:00:00 period=2 active=yes
这样就实现了今天备份数据库到TSM1,明天到TSM2,后天又TSM1,再后天又TSM2,但
还需要一个任务来实现删除过期的数据库版本:
Del volh todate=today-2 type=dbbackup
这是删除过期版本的命令,意思是删除掉前两天的数据库备份,那么任务命令是:
def sch delolddb type=a cmd=” Del volh todate=today-2 type=dbbackup” startdate=today
starttime=21:00:00 period=1 active=yes
每天的21 点执行,一天一次.一定要放在备份数据库之前执行,如果放在之后执行,会出
错的,除非把命令修改掉.
到此为止,所有计划实现的目标已基本作到,每天中午12 点备份/home 下的文件,15 点强
制迁移,16 点迁移结束后的改回默认值,21 点删除旧的数据库备份,22 点备份当天的数据库.
所有的细节设置全部采用默认,没有进一步设置.
由于我也是初学TSM,错误在所难免,希望大家能予以指正.另外,在TSM 自身数据库的
备份方法上,我总觉得不完美,如果大家有更好的方法,也希望能不吝赐教~!谢谢~!
余冬冬
DDYU@cct.com.hk
阅读(2564) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~