6. AMANDA 설정 하기

6.1. 필자의 시스템 구성

들어가기 전에, 필자가 사용하는 테잎 장치, 리눅스 서버 그리고 설정에 필요한 가정 등에 대한 얘기를 잠깐하고자 한다.

우선, 테잎 장치는 모델명 ULT3581인 IBM Ultrium Tape Autoloader이다. 1 개의 드라이브와 7개의 슬롯을 가진 제품이다. 미디어 하나의 용량은 비압축 상태로 100GB이며 50% 압축이 된다고 한다면 최대 200GB까지 하나의 미디어에 저장할 수 있다. 테잎에 데이타를 기록하는 속도도 평균 14MB 이상이 나오며 윈도우에서는 20MB 속도가 나오는 것을 확인하였다. 특정 제품 선전을 위한 것이 아님은 두 말할 나위도 없다. DAT, DLT 등에 비해 월등히 빠른 속도를 보여주고 있으며 Super DLT와는 비교를 하지 않아서 아는 바가 없다.

리눅스는 Debian 3.0이며 커널은 버전 2.4.18을 사용하고 있다. 커널은 소스로부터 따로 컴파일 하였다. 위 테잎 장치에 대한 디바이스 드라이버를 IBM에서 제공하고 있으며 RedHat 7.1/7.2에서 사용할 수 있고 RedHat에서 제공하는 2.4.2 커널 또는 kernel.org에서 제공하는 2.4.9 커널을 지원한다고 한다. 그러나 반드시 IBM에서 제공하는 디바이스 드라이버를 사용할 필요는 없다. 필자는 2.4.18의 sg 모듈과 st 모듈을 이용하고 있으며 아직 아무런 문제점을 발견하지 못하였다. IBM의 드라이버를 사용하였을 때 속도가 더 향상되는 지는 모르겠으나, 이 글을 쓰는 시점에 옛 기억을 더듬어 보면 별 차이가 없었던 것으로 기억된다.

5절에서 언급한 적이 있지만, 프로젝트명 SpaceWar에서 사용하는 파일들을 백업한다는 가정하에 설정 부분을 진행할 것이다. 그리고 아래에서 설명할 설정은 되도록이면 일반적으로 적용할 수 있도록 하겠지만 특정 부분은 위에서 언급한 필자의 시스템 구성에 맞추어서 설명하도록 하겠다.

6.2. /etc/amanda/amanda.conf 파일 설정

아마도 Amanda Server s/w를 설치하면 /etc/amanda/DailySet1/amanda.conf파일이 있을 것이다. 이 파일을 /etc/amanda/amanda.conf로 복사한 후 편집을 하도록 하자. /etc/amanda/amanda.conf에 설정할 여러가지 파라미터가 있다. 필요한 것들을 하나씩 알아보자.

mailto

백업이 이루어진 결과에 대한 정보를 메일로 받을 사용자를 지정한다.

mailto "aaa@bbb.ccc.co.kr"

dumpuser

백업을 실행할 테잎서버의 사용자를 지정한다.

dumpuser "styoo"

2절에서 언급한 대로 패키지를 Amanda 사용자를 변경하여 새로이 빌드하지 않고, 제공되는 그대로 설치하였다면 dumpuser는 backup이 될 것이다. 또는 root가 될 수도 있다.

etimeout

파일서버의 백업할 각 디렉토리의 용량을 측정하는데 할당가능한 최대 시간(단위:초).

etimeout 3600

파일서버의 백업할 디렉토리의 용량을 측정하는데 걸리는 시간이 3600초를 초과한다면, 더 이상 측정하지 않고 그 디렉토리에 대한 백업을 진행하지 않는다.

dtimeout

네트웍 불량 등의 이유로 파일서버로부터 백업할 데이타를 받지 못할 경우 대기할 최대 시간(단위:초).

dtimeout 3600

백업이 진행되기 전 또는 백업 진행 중에 어떤 이유로 파일서버로부터 데이타를 받지 못할 경우, 3600초 동안 대기하다가 그 이상 시간이 초과되면 백업을 진행하지 않는다.

tapedev

테잎 장치를 지정한다.

tapedev "/dev/nst0"

테잎 장치가 /dev/st0가 아니라 왜 /dev/nst0인지 궁금할 수도 있다. 그것은 Amanda가 non-rewinding 테잎 장치를 사용하기 때문이다. non-rewinding 테잎 장치는 "n"을 붙여서 표시한다. 따라서 /dev/st0이 아니라 /dev/nst0인 것이다. /dev/st0/dev/nst0의 차이는 tar 명령으로 쉽게 확인할 수 있다.

/usr/bin디렉토리를 테잎에 백업한 다음, /tmp에 복원하는 경우를 가정하자. 먼저, /dev/st0에 쓰는 경우를 보자.
                  $ tar cvf /dev/st0 --directory /usr/bin .
		
백업이 끝나면 /tmp 디렉토리로 이동해서 복원을 해 보자.
                  $ cd /tmp
                  $ tar xvf /dev/st0
		
테잎이 자동으로 rewind 된 후에 백업된 파일들이 복원될 것이다. 이제, /dev/nst0에 백업하는 경우를 보자.
                  $ tar cvf /dev/nst0 --directory /usr/bin .
                
백업이 끝났으면 복원을 해 보자.
                  $ cd /tmp
                  $ tar xvf /dev/nst0
                
파일이 제대로 복원 되는가? 아마도 복원되는 파일이 전혀 없거나 에러가 발생할 것이다. 테잎에 데이타를 써 넣은 후 테잎이 rewind 되지 않았기 때문이다. 테잎을 rewind 시킨 후 다시 복원을 시도해 보자.
                  $ mt -f /dev/nst0 rewind
                  $ tar xvf /dev/nst0
		
파일이 복원되는가? 아마도 잘 될 것이다. 비슷하게 /dev/st0에 데이타를 백업한 후 이어서 또 다른 데이타를 백업하면 테잎이 처음으로 rewind된 후 데이타를 덮어쓰게 된다. 그러나 /dev/nst0를 사용하면 뒤에 이어서 데이타를 써 넣는다. Amanda는 각 백업 대상을 각각 하나의 파일로 만든 후 테잎에 써넣는 방식을 취하고 있으므로 만들어진 각 백업 대상의 각 파일을 차례 차례 테잎에 써넣어야 한다. 따라서 non-rewinding 테잎 장치인 /dev/nst0를 사용하는 것이다.

changerdev

autoloader와 같은 미디어 체인저가 있으면 지정한다. 아래의 tpchanger에 따라서 설정할 필요가 없는 경우도 있다. 필자가 사용하는 IBM 3581 autoloader는 이를 지정할 필요가 없었다.

changerdev "/dev/sg0"

tpchanger

autoloader와 같은 미디어 체인저가 있으면 이를 구동할 스크립트를 지정한다. IBM 3581 autoloader의 경우 mtx 패키지에 들어 있는 mtx-changer 스크립트를 약간 수정하니 그럭저럭 구동하였다.

tpchanger "mtx-changer"

tapetype

사용할 테잎의 종류를 지정한다.

tapetype IBM-LTO

위에서 예로 든 IBM-LTO는 Amanda에서 지정된 이름이 아니라 사용자가 임의로 지정하는 것이다. IBM-LTO가 어떤 테잎인가에 대한 정의를 따로 해 주어야 한다.

columnspec

백업 프로세스가 끝난 후, Amanda는 메일로 그 정보를 보내준다. 그때 사용할 각 목록의 길이 등을 지정한다.

columnspec "HostName=0:13,Disk=1:20,OrigKB=1:9,OutKB=1:9,DumpRate=1:7,TapeRate=1:7"

HostName=0:13의 의미는, 호스트네임의 표시에 최대 13자를 사용할 수 있고 "0"은 그 왼쪽에 공백이 없다는 뜻이다. 비슷하게 1:7은 해당 아이템에 사용할 수 있는 글자의 수는 7개 이며 그 왼쪽에 공백을 하나 넣어라는 의미이다. 그리고 각 아이템의 순서대로 메일에 표시된다.

holdingdisk

3절에서 설명했다시피 Amanda는 데이타를 로컬디스크에 저장했다가 다시 테잎으로 옮겨 쓰는 방식을 취하고 있다. 이 로컬디스크를 holdingdisk라고 부른다.

                  holdingdisk hd1 {
                  comment "main holding disk"
                  directory "/backup-image/Image"
                  use -10Mb
                  chunksize 0
                  }
                

위에서 "use -10Mb"의 의미는 10Mb를 제외한 나머지 공간 모두를 Amanda가 사용한다는 뜻이다. 양수 값을 지정하면 그 크기 만큼만 사용하라는 의미이다. 그리고 Amanda는 데이타를 받아서 백업이미지를 만들때 하나의 파일로 만든다. 이때 OS 차원에서 파일 크기에 제한이 있고 백업이미지가 그 제한 크기보다 크다면 문제가 발생할 것이다. 이를 방지하기 위해서 chunksize 값을 지정할 수 있다. "chunksize 0"는 이미지 크기를 OS에 맡긴다는 의미이다. "chunksize 2Gb"라고 지정하면 백업이미지를 2Gb 크기로 쪼개라는 뜻이 된다.

define tapetype

위에서 지정한 tapetype을 정의한다.

                  define tapetype IBM-LTO {
                  comment "just produced by tapetype program"
                  length 101376 mbytes
                  filemark 0 kbytes
                  speed 13500 kps
                  }
                

사용하는 테잎의 종류는 테잎 장치에 따라서 결정되므로 테잎 장치가 무엇이냐에 따라 위의 정의는 달라질 것이다. Amanda 홈페이지에서 대부분의 테잎 장치에 대한 tapetype을 구할 수 있다. tapetype을 알 수가 없다면 tapetype 명령으로 구할 수도 있으므로 걱정할 필요는 없다. tapetype 명령의 사용법은 tapetype --help를 참고하기 바란다. 또는 Amanda 사용자 메일링 리스트를 뒤져보면 구할 수 있을 것이다.

define dumptype global

                  define dumptype global {
                  program "GNUTAR"
                  compress server fast
                  index yes
                  record yes
                  }
		

  • program "GNUTAR"는 백업 프로그램으로 tar를 사용한다는 의미이다.

  • compress server fast는 테잎서버에서 백업 데이타를 압축하는데 빠른 압축 속도를 사용한다는 의미이다. Amanda는 gzip을 이용하여 압축을 하며 fast는 gzip의 압축률 옵션이다. 즉 가장 낮은 압축률을 의미한다. fast 대신에 best를 사용할 수도 있다. 그리고 server 대신에 client를 사용할 수도 있다. 그 의미는 구구절절이 설명하지 않아도 알 수 있을 것이다.

  • index yes는 백업되는 파일 목록(카탈로그)를 저장하라는 의미이다.

  • record yes는 /var/lib/amanda/amandates 를 백업할 때 업데이트하라는 의미이다.

6.3. /etc/amanda/SpaceWar/amanda.conf 파일 설정

SpaceWar라는 프로젝트와 관련된 데이타들을 따로 백업한다는 가정하에 그와 관련된 설정을 따로 지정할 수 있다. 먼저. /etc/amanda 밑에 SpaceWar라는 디렉토리를 하나 만들고 그 안에 amanda.conf 파일을 만들어 편집을 하자.

includefile

포함할 파일을 지정한다.

includefile "/etc/amanda/amanda.conf"

/etc/amanda/amanda.conf 파일에 공통으로 사용할 파라메타에 대한 정의가 들어 있으므로 당연히 포함되어야 한다.

org

이 백업 설정에 대한 적당한 제목을 지정한다.

org "SpaceWar"

SpaceWar라는 프로젝트에 대한 백업 설정이므로 SpaceWar라고 지정하였다.

inparallel

테잎서버에서 동시에 진행 할 수 있는 백업 프로세스의 수

inparallel 4

maxdumps

하나의 파일서버로 부터 동시에 백업을 진행할 수 있는 최대 개수

maxdumps 2

A라는 파일서버에 SpaceWar의 데이타가 저장되는 디렉토리가 4개 있다면 그 중에서 동시에 2개 디렉토리에 대한 백업을 진행할 수 있다. 전체적으로 동시에 진행되는 백업 프로세스의 수는 inparallel 파라메타에 의해 조절된다. maxdumps 파라메타는 dumptype에서 지정할 수도 있다.

runtapes

SpaceWar 프로젝트의 백업에 사용될 테잎의 개수

runtapes 2

LTO 미디어는 하드웨어 압축을 하지 않는 상태로 100Gb의 용량을 저장할 수 있으므로 runtapes 2는 200Gb의 데이타를 백업할 수 있다는 의미이다. 3절에서 언급했듯이 각 디렉토리에 대한 백업 용량을 대략 계산한 다음 그 용량이 runtapes 파라메타 값으로부터 계산되는 용량을 초과하면 일부가 백업되지 않으므로 runtapes의 값을 적당히 지정해야 할 것이다.

dumpcycle

한 번의 전체백업으로부터 다음 번 전체백업까지의 주기

dumpcycle 4 weeks

이 값은 적절히 알아서 잡아주면 될 것이다. 1개월에 한 번 정도 전체백업을 한다고 생각하면 4주 정도면 될 것이다. dumpcycle은 Amanda가 자동으로 백업 레벨을 결정하기 위해 필요한 하나의 파라메타이며, 필자는 백업 레벨과 스케줄을 수동으로 결정하기 때문에 dumpcycle 파라메타가 그리 큰 의미는 없었다. dumpcycle 값을 0으로 지정하면 항상 전체백업을 한다는 의미이며 dumpcycle 파라메타는 dumptype에서 지정할 수도 있다.

runspercycle

dumpcycle 동안에 실행될 amdump의 회수

runspercycle 4

dumpcycle이 4주이고 일주일에 한 번 백업을 실행한다면 dumpcycle 동안에 실행될 amdump의 회수는 4회이다. 수동으로 백업 스케줄을 조절할 계획이라면 이 파라메타도 큰 의미는 없다.

tapecycle

dumpcycle 동안에 사용될 테잎의 개수

tapecycle 4 tapes

dumpcycle 동안에 2개의 테잎을 가지고 데이타를 계속 덮어 쓰면서 사용할 계획이라고 하자. 이때 테잎이 에러가 날 경우를 생각해서 tapecycle은 4 정도로 해 두면 될 것이다.

labelstr

테잎 라벨을 구성할 문자열

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

amlabel 명령으로 테잎에 라벨을 써 넣을때 위 문자열의 구성에 맞아야 한다.

define dumptype

/etc/amanda/amanda.conf 파일에서 정의했던 dumptype global 외에 다른 dumptype을 정의한다.

                  define dumptype always-full {
                         global
                         comment "Full dump of this filesystem always"
                         priority high
                         dumpcycle 0
                         maxdumps 4
                         }
		
dumpcycle을 0으로 설정하여 항상 전체백업을 하도록 설정하고 dumptype global을 포함하도록 하였으며 maxdumps를 4로 지정하였다.
                  define dumptype incr-only {
                         global
                         comment "incremental dump only"
                         priority high
                         strategy nofull
                         maxdumps 4
                  }
		
strategy를 nofull로 지정하여 항상 백업 레벨 1의 증분 백업을 하도록 설정하였다. 기타 dumptype에서 지정할 수 있는 파라메타에 대해서는 Amanda man page를 참고하기 바란다.

기타

                  infofile "/var/lib/amanda/SpaceWar/curinfo"
                  logdir   "/var/log/amanda/SpaceWar/log"
                  indexdir "/var/lib/amanda/SpaceWar/index"
                  tapelist "/var/lib/amanda/SpaceWar/tapelist"
		

6.4. /etc/amanda/SpaceWar/disklist 파일 설정

disklist 파일에는 백업할 데이타를 갖고 있는 파일서버의 hostname과 백업할 디렉토리가 저장되어 있다.

        gmfs1	/SpaceWar1/Program-Sources	always-full
        gmfs1	/SpaceWar1/Graphic-Sources	always-full
        gmfs2	/SpaceWar2/Protype		always-full
        gmfs2	/SpaceWar2/Schedule		always-full
      

첫 줄을 살펴보자. gmfs1은 파일서버의 호스트네임이고, /SpaceWar1/Program-Sources은 gmfs1에 있는 백업할 디렉토리이며 always-full은 위에서 설정했던 dumptype이다. 이와 같은 형태로 백업할 디렉토리를 disklist 파일에 적어주면 된다. 그 외에 spindle 값과 interface를 지정할 수 있으니 Amanda man page를 참고하기 바란다.