amanda 使用disk备份笔记

 

客户端的配置

升级的yum配置

Rpm -Uvh amanda.x86_64 amanda-client.x86_64

设置xinetd中的amanda

vim /etc/xinetd.d/Amanda

vim /etc/xinetd.d/amandaidx

vim /etc/xinetd.d/amidxtape

改这行disable = no

/etc/init.d/xinetd restart

配置允许访问的服务器主机名、amanda帐户

vim /var/lib/amanda/.amandahosts

服务器名 amanda

服务器名 root

配置hosts文件

cat /etc/hosts

服务器IP 服务器名

 

服务端配置

Rpm -Uvh install gnuplot amanda.x86_64 amanda-client.x86_64 amanda-devel.x86_64 amanda-server.x86_64

这里采用磁盘来作备份,即disk-to-disk方式

1./etc/amanda/DailySet1/amanda.conf

Amanda的所有备份策略和执行命令,均通过 “DailySet1”这个目录下的几个配置文档来定义。 
下面是部分需要修改的参数

# vi amanda.conf  
runspercycle 7 //
设置每个备份周期内amanda运行的次数 
tapetype HARD-DISK //
设置存储类型 
labelstr "^DailySet1-[0-9][0-9]*$"//
定义卷标格式 
logdir "/var/log/amanda" //
指定日志存放路径,默认存放在amanda配置目录下 
tpchanger "chg-disk" //
更换磁带的脚本 
changerfile "/etc/amanda/DailySet1/changer"
tapedev "file:/amanda/DailySet1" //
指定存储位置 
define dumptype root-tar { //
定义转存储类 
   global //
调用前面定义的global类型 
   program "GNUTAR" //
使用GNU tar作为备份程序,默认是DUMP 
   comment "root partitions dumped with tar" //
描述该类型的信息 
   compress none //
不采用压缩 
   index yes //
备份集索,必须为yes(默认为no),否则在恢复的时候将不能找到可恢复的索引信息 
   priority low


define tapetype HARD-DISK { //
定义磁盘类型 
comment "disk-to-disk
length 1000 mbytes 
}

2. 创建虚拟磁带 虚拟磁带的目录结构如下: 

slot_root_dirtapedev所指定的路径,而slotn中的n的值应和tapecycle的值一致。如下:

# mkdir /amanda/DailySet1 
# cd /amanda/DailySet1/ 
# mkdir slot1 slot2 
# touch info 
# ln -s slot1 data 
# chown -R amanda.disk /amanda

3. 添加备份项,这里备份192.168.0.2(客户端)上的data目录

# vi /etc/amanda/DailySet1/disklist 
192.168.0.2 /data comp-root-tar

4. 创建tapelist文件

# touch /etc/amanda/DailySet1/tapelist 
# chown amanda.disk /etc/amanda/DailySet1/tapelist

5. 制作虚拟磁盘卷标 与使用磁带机一样,使用前也需要为虚拟磁盘创建卷标,如下:

# su - amanda 
$ /usr/sbin/amlabel DailySet1 DailySet1-01 slot 1 
changer: got exit: 0 str: 1 file:/amanda/Dailyset1 
labeling tape in slot 1 (file:/amanda/Dailyset1): 
rewinding, reading label, not an amanda tape (Read 0 bytes) 
rewinding, writing label DailySet1-01, checking label, done. 
$ /usr/sbin/amlabel DailySet1 DailySet1-02 slot 2

6. 检查配置 Amanda自带了一个检测配置文件的工具,用于检测整个Amanda服务端与客户端的配置情况。

先建立如下文件: 
/etc/amanda/DailySet1 
该目录下先建立如下文件 
# mkdir -p /etc/amanda/DailySet1/curinfo/192.168.0.2/_var_log 
# tuoch /etc/amanda/DailySet1/curinfo/192.168.0.2/_var_log/info 
# mkdir -p /etc/amanda/DailySet1/curinfo/192.168.0.2/localhost 
# mkdir -p /etc/amanda/DailySet1/index/192.168.0.2/_var_log 
# chown -R amanda.disk /etc/amanda/DailySet1/curinfo 
# chown -R amanda.disk /etc/amanda/DailySet1/index 
权限问题很麻烦,千万不要犯晕 
测试: 
$ /usr/sbin/amcheck DailySet1 Amanda Tape Server Host Check Amanda Tape Server Host Check 
----------------------------- 
Holding disk /dumps/amanda: 3510768 KB disk space available, using 3408368 KB 
slot 2: read label `DailySet1-02', date `X' 
NOTE: skipping tape-writable test 
Tape DailySet1-02 label ok 
Server check took 0.131 seconds 
Amanda Backup Client Hosts Check 
-------------------------------- 
Client check: 1 host checked in 0.100 seconds, 0 problems found 
(brought to you by Amanda 2.5.0p2)

7. 备份 Amanda中备份数据使用的程序是amdump,通常情况下放在cron里去自动执行,amdump在备份时不会提示任何的信息,可以通过查看日志文件来检查备份是否成功。

$ /usr/sbin/amdump DailySet1 
8.
恢复 Amanda提供了交互式的amrecover工具来从Amanda的备份中恢复文件,它需要备份集设置了索引,也就是使用了“index yes”的设置,同时在服务端需要启动amandaidxamidxtape进程,这两个进程也是由xinetd来管理的。在客户端恢复数据的时候必须使用root用户来运行。恢复前首先要切换到需要恢复的当前目录下,Amrecover工具的使用方法如下:

 # amrecover DarilySet1 -s serverhost -t serverhost 上面命令中的-s 参数表示指定存放备份集索引的服务器,-t则用于指定磁带机所在的服务器。连接成功后将会停在一个交互式的对话框

备份多个需要建立多个/etc/Amanda/DailySetX(x=1,2,3,4,5,6)等多个,每一个对应一个/amanda/DailySetX

二、服务端配置

1amanda.conf

Amanda配置文档默认路径在/etc/amanda/DailySet1,在前面提到过,Amanda一个目录对应一个配置,Amanda的所有备份策略和执行命令,均通过“DailySet1”这个目录下的几个配置文档来定义。

amanda.conf里面通常需要设置的有如下部分:

org "turbolinux"

设置使用amanda的单位或者机构的名称

mailto "root@turbolinux.com.cn"

指定将报告发送的邮件地址

dumpuser amanda

指定使用Amanda备份的用户,默认为amanda用户

dumpcycle 7days

设置备份周期的长度,单位也可以是weeks,在这里设置7days1weeks的效果是一样的。

runspercycle 7

设置每个备份周期内amanda运行的次数

tapecycle 1 tapes

设定完成一个完整的备份周期最少所需要磁带,这个需要根据备份数据量的大小来设定

ctimeout 30

设置检测客户端超时时间,单位为秒

runtapes 1

amdump每次运行使用磁带最大数

tapedev "/dev/nst0"

指定使用磁带机的设备名称,“/dev/nst0”表示不倒带设备。

tpchanger " chg-manual"

更换下一个磁带的脚本。在disk-to-tape方式中它与tapedev只能使用其中一个,建议将该项注释掉。

tapetype HP-DAT

指定磁带类型,下面将讲到如何去定义磁带类型。

labelstr "^DailySet1-[0-9][0-9]*$"

设定磁带卷标格式,使用正则表达式去匹配卷标名称,磁带在使用之前,必须使用 amlabel 指定卷标,下面将会讲到amlabel的用法。

logdir "/var/log/amanda"

指定日志文件存放的目录,默认存放在amanda配置目录下

indexdir "/var/adm/index"

指定存放备份集索引数据目录,默认为amanda配置目录下的index目录

在配置文件中包含了许多预定义的磁带类型,所以一般都不需要自己手工去定义磁带类型,关于定义磁带类型的格式以及参数见如下:

define tapetype HP-DAT { 
   comment "DAT tape drives"
对于磁带类型的描述 
   length 1930 mbytes
磁带的容量 
   filemark 111 kbytes
文件标志大小 
   speed 468 kbytes
磁带驱动器速度 
   }

上面的内容表示对HPDAT这台磁带类型的定义,磁带类型的参数尤其重要,所以不要乱修改里面的参数。

holdingdisk hd1 { 
   directory "/dumps/amanda"
临时磁盘存放的路径 
   use 5 Gb
临时磁盘总共可以使用的大小 
   }

上面是对临时存储磁盘的定义,同时可以定义多个临时磁盘,在分配临时磁盘的大小有两种设定方法,一种是指定临时磁盘可以使用的大小,当值为0是则使用所有剩余空间;另一种是在临时磁盘这个文件系统上始终保留一定的空间,其余的则全部分配给临时磁盘使用。

amanda.conf文件,最后需要配置的就是定义转储类型,转储类型里面主要定义备份时使用的程序,压缩的类型等。如下:

define dumptype root-tar { 
   global
调用前面定义的global类型 
   program "GNUTAR"
使用GNU tar作为备份程序,默认是DUMP 
   comment "root partitions dumped with tar"
描述该类型的信息 
   compress none
不采用压缩 
   exclude list "/etc/amanda/exclude.gtar"
排除备份文件的列表 
   }

在每个转储类型的定义中,都可以调用前面定义好的类型。如果需要对备份的数据进行压缩,有两种方式可以实现,一种是在客户端压缩,那么可在compress项设置为“compress client fast”或“compress client best”,另一种是在服务器进行压缩,则设置为“compress server fast”或“compress server best”。

2disklist

接下来需要修改的是disklist文件,该文件存放在配置目录下,disklist用于指定实际要备份的数据,里面的格式是:

client partition/mountpoint dumptype

client :需要备份的客户度计算机,可以是IP或者主机名;

partition/mountpoint: 指定要备份的内容,可以是设备名或挂载点。

dumptype:指定备份数据时使用的转储类型,这是在amanda.conf文件里面所定义的。

例如:现在需要备份IP192.168.1.100的客户端下面的/data目录,并使用“root-tar”的转储类型,那么只需要在disklist文件里插入如下即可。

192.168.1.100 /data root-tar

3、创建tapelist和磁带标签

tapelist文件用来记录当前可用的磁带列表,默认该文件不存在,创建该文件以及修改文件的权限的方法如下:

# > /etc/amanda/DailySet1/tapelist 
   # chown amanda.disk /etc/amanda/DailySet1/tapelist

注:凡是手工创建或指定给amanda的文件以及目录,包括前面所指定的临时磁盘存放的目录以及日志存放的目录等,其所属用户和组必须是amandadisk,否则Amanda在备份的时候没有操作权限。

切换至amanda用户,执行amlabel命令设置卷标

# su amanda 
   $ /usr/sbin/amlabel DailySet1 DailySet1-01

所设置的卷标一定要符合“labelstr”所指定的正则表达式,否则会报错。设置好可用卷标的磁带,会自动添加到tapelist列表里。

三、配置实例

Amanda目前也可以基于磁盘来做备份,即disk-to-disk方式,也是一个相对比较复杂的方式,下面是一个基于磁盘备份以及恢复的详细过程。

1、客户端配置

.amandahosts文件中指定备份服务器与用户以及在/etc/hosts文件设置IP与主机名的对应关系,同时在xinetd中启动amanda服务,具体操作见前面的说明。

# vi /var/lib/amanda/.amandahosts 
   holmes86 amanda 
   holmes86 root 
   # vi /etc/hosts 
   192.168.1.99 holmes86

此后的配置步骤都是在服务端进行。

2、创建虚拟磁带的文件系统

所谓基于磁盘的备份方式,就是在服务器上使用磁盘来作为一个虚拟的磁带机。所以需要准备一块容量较大的分区或磁盘,创建好文件系统后挂载在指定的目录下。

# mount /dev/hda6 /amanda

3、定义虚拟磁带类型

编辑amanda.conf文件,定义一个新的磁带类型,而磁带的大小可以根据自己的需要来设置。一块磁盘可以平均划分多个磁带,考虑到磁盘的性能,建议在使用中始终保留10%的空间。比如一块100G的磁盘,就按90G空间去划分磁带,如果在90G的空间里创建3个虚拟磁带,那每个磁带能够使用的大小就是30G。下面定义了每个虚拟磁带的大小为200M

define tapetype HARD-DISK { 
   comment "disk-to-disk" 
   length 200 mbytes 
   }

4、修改amanda.conf文件

amanda.conf配置文件中,其它需要修改的参数是:

dumpcycle 2 days 
   runspercycle 2 
   tapecycle 2 
   tapetype HARD-DISK 
   labelstr "^DailySet1-[0-9][0-9]*$" 
   tpchanger "chg-disk" 
   changerfile "/etc/amanda/DailySet1/changer" 
   tapedev "file:/amanda/DailySet1" 
   define dumptype root-tar { 
   global 
   program "GNUTAR" 
   comment "root partitions dumped with tar" 
   compress none 
   index yes 
   priority low 
   }

其中tapedev中指定的“/amanda/DailySet1”,“DailySet1”是配置文件名,该目录名必须与配置文件名一致。同时一定要在定义转储类型的部分加上“index yes“,否则在恢复的时候将不能找到可恢复的索引信息。

5、创建虚拟磁带

虚拟磁带的目录结构如下:

slot_root_dir -| 
   |- info 
   |- data -> slot1/ 
   |- slot1/ 
   |- slot2/ 
   |- ... 
   |- slotn/

slot_root_dirtapedev所指定的路径,而slotn中的n的值应和tapecycle的值一致。如下:

  # mkdir /amanda/DailySet1 
  # cd /amanda/DailySet1/ 
  # mkdir slot1 slot2 
  # touch info 
  # ln -s slot1 data 
  # chown -R amanda.disk /amanda

6、修改disklist文件

编辑disklist文件,增加需要备份的项,如下:

192.168.1.100 /data comp-root-tar

7、创建disklist文件

# > /etc/amanda/DailySet1/tapelist 
# chown amanda.disk /etc/amanda/DailySet1/tapelist

8、制作虚拟磁盘卷标

与使用磁带机一样,使用前也需要为虚拟磁盘创建卷标,如下:

# su - amanda 
$ /usr/sbin/amlabel DailySet1 DailySet1-01 slot 1 
$ /usr/sbin/amlabel DailySet1 DailySet1-02 slot 2

9、检查配置

Amanda自带了一个检测配置文件的工具,用于检测整个Amanda服务端与客户端的配置情况。如下:

$ /usr/sbin/amcheck DailySet1 
Amanda Tape Server Host Check 
----------------------------- 
Holding disk /amanda: 419077 KB disk space available, using 316677 KB 
slot 1: read label `DailySet1-01', date `X' 
NOTE: skipping tape-writable test 
Tape DailySet1-01 label ok 
Server check took 0.151 seconds 
Amanda Backup Client Hosts Check 
-------------------------------- 
Client check: 1 host checked in 0.100 seconds, 0 problems found 
(brought to you by Amanda 2.5.0p2)

10、备份

在前面的Amanda组件中提到过,备份数据使用的程序是amdump,通常情况下放在cron里去自动执行,amdump在备份时不会提示任何的信息,可以通过查看日志文件来检查备份是否成功。

$ /usr/sbin/amdump DailySet1

11、恢复

Amanda提供了交互式的amrecover工具来从Amanda的备份中恢复文件,它需要备份集设置了索引,也就是使用了“index yes”的设置,同时在服务端需要启动amandaidxamidxtape进程,这两个进程也是由xinetd来管理的。在客户端恢复数据的时候必须使用root用户来运行。恢复前首先要切换到需要恢复的当前目录下,Amrecover工具的使用方法如下:

# amrecover DarilySet1 -s 服务器名 -t服务器名

上面命令中的-s 参数表示指定存放备份集索引的服务器,-t则用于指定磁带机所在的服务器。连接成功后将会停在一个交互式的对话框下,下面是一个详细的恢复过程。

#cd /data 
# amrecover DailySet1 -s holmes86 -t holmes86 
AMRECOVER Version 2.5.0p2. Contacting server on holmes86 ... 
220 holmes86 AMANDA index server (2.5.0p2) ready. 
200 Access OK 
Setting restore date to today (2007-08-05) 
200 Working date set to 2007-08-05. 
Scanning /amanda... 
DailySet1: skipping cruft directory, perhaps you should delete it. 
200 Config set to DailySet1. 
200 Dump host set to holmes86. 
Trying disk /data ... 
$CWD '/data' is on disk '/data' mounted at '/data'. 
200 Disk set to /data. 
/data 
amrecover> ls
浏览备份的数据 
2007-08-05 sbin/ 
2007-08-05 lost+found/ 
2007-08-05 boot/ 
2007-08-05 bin/ 
2007-08-05 . 
amrecover& add bin
增加一个恢复的列表 
Added dir /bin at date 2007-08-05 
amrecover& extract
执行恢复 
Extracting files using tape drive null: on host holmes86. 
The following tapes are needed: DailySet1-02 
Restoring files into directory /data 
Continue [?/Y/n]? y 
Extracting files using tape drive null: on host holmes86. 
Load tape DailySet1-02 now 
Continue [?/Y/n/s/t]? y 
./bin/ 
./bin/alsacard 
............ 
./bin/zsh 
amrecover> quit 
200 Good bye.