Amandaを利用した仮想テープへのバックアップ(目次)

Table of Contents

システム構成

概要

amandaを利用して「serv111の/etc」と「serv200 の/etc」を仮想テープドライブ(ハードディスク)
へバックアップします。

amanda - システム構成.JPG

バックアップクライアント

  • ホスト名(IP)
    • serv111.oss-d.net (192.168.11.111)
  • OS
    • CentOS 5.4 (kernel 2.6.18-164.6.1.el5)
  • パッケージ
    • amanda-2.5.0p2-8.el5
    • amanda-client-2.5.0p2-8.el5

バックアップサーバ

  • ホスト名(IP)
    • serv200.oss-d.net(192.168.11.200)
  • OS
    • CentOS 5.4 (kernel 2.6.18-164.6.1.el5)
  • パッケージ
    • amanda-2.5.0p2-8.el5
    • amanda-client-2.5.0p2-8.el5
    • amanda-server-2.5.0p2-8.el5

その他

バックアップクライアントの設定(192.168.11.111)

インストール

  • amandaのインストール
    # yum install amanda
    # yum install amanda-client

amandaの設定

xinet.dの設定

  • amandaがxinetd経由で起動するよう設定する
    # vi  /etc/xinetd.d/amanda
           disable                 = no
  • xinetdを再起動する
    # /etc/init.d/xinetd restart
  • 自動起動を確認する
    # chkconfig --list
    xinetd ベースのサービス:
           amanda:         on

hostsの設定

  • amandaはhostsを利用して他のマシンと通信するため、バックアップサーバをhostsに登録する。

    自ホスト(127.0.0.1)に対しても正しく設定しておきます。

    # vi /etc/hosts
    127.0.0.1       serv111 serv111.oss-d.net localhost.localdomain localhost
    192.168.11.200  serv200 serv200.oss-d.net

amandahostsの設定

  • amandahostsで接続を許可するサ一バとユーザを設定します。
    $ vi /var/lib/amanda/.amandahosts
    serv200.oss-d.net amanda

amanda-client.confの設定

  • amanda 2.5.0 はamanda-client.confに非対応のため、省略します。

バックアップサーバの設定(192.168.11.200)

インストール

  • amandaのインストール
    # yum install amanda
    # yum install amanda-server
    # yum install amanda-client

amandaの設定

xinet.dの設定

  • amandaがxinetd経由で起動するよう設定する
    # vi  /etc/xinetd.d/amanda
           disable                 = no

    # vi  /etc/xinetd.d/amandaidx
           disable                 = no

    # vi /etc/xinetd.d/amidxtape
           disable                 = no

  • xinetdを再起動する
    # /etc/init.d/xinetd restart
  • 自動起動を確認する
    # chkconfig --list
    xinetd ベースのサービス:
           amanda:         on
           amandaidx:      on
           amidxtape:      on

hostsの設定

  • amandaはhostsを利用して他のマシンと通信するため、バックアップサーバをhostsに登録します。
    # vi /etc/hosts
    192.168.11.111          serv111 serv111.oss-d.net 
    192.168.11.200          serv200 serv200.oss-d.net

amandahostsの設定

  • 接続を許可するサ一バとユーザをamandahostsで設定します。
    $ vi /var/lib/amanda/.amandahosts
    serv200.oss-d.net amanda #バックアップ用
    serv200.oss-d.net root   #リストア用
    serv111.oss-d.net amanda #バックアップ用
    serv111.oss-d.net root   #リストア用

amanda.confの設定

  • amanda.confの設定を行います。
    $ vi /etc/amanda/DailySet1/amanda.conf
    
    org “DailySet1”
    mailto "root" 
    dumpuser "amanda"
    
    inparallel 4 
    netusage  6000 Kbps 
    
    ### 毎日バックアップを実行し、週1回だけフルバックアップ
    dumpcycle 1 weeks	
    runspercycle 7 days 
    tapecycle 8 tapes
    
    ### 仮想テープの設定
    define tapetype HDD {
           length 1024 mbytes
    }
    tapetype HDD
    tpchanger "chg-disk"
    changerfile "/etc/amanda/DailySet1/changer"
    tapedev "file:/var/lib/amanda/vtl"
    labelstr "^DailySet1-[0-9][0-9]*$" 
    
    
    ### holdingdiskの設定
    ### バックアップの作業領域,テープ交換忘れの際の一時保存領域 
    holdingdisk hd1 {
        comment “main holding disk” # コメント
         directory "/var/lib/amanda/holdingdisk" # 保持ディスクの場所
         use -100Mb    # 保持ディスクとして利用できる容量
         chunksize 1Gb # チャンクサイズ
    }
    
    
    ### ログ関連の設定
    infofile "/etc/amanda/DailySet1/curinfo"        # database DIRECTORY
    logdir   "/etc/amanda/DailySet1"                # log directory
    indexdir "/etc/amanda/DailySet1/index"          # index directory
    
    ### dumptypeの設定
    define dumptype global {
        comment "Global definitions"
        index yes  #amrecoverを利用する場合はyesにする
    }
  • org

    設定名。ディレクトリ名と同じ名前にする。

  • dumpuser

    バックアップユーザーを指定

  • inparallel

    並列処理可能なクライアント数

  • netusage

    バックアップ時の転送速度

  • tapecycle

    フルバックアップ時にエラーとなった場合に前回フルバックアップが消えないようrunspercycle +1 以上を設定する。

  • labelstr

    ラベルの命名規則。デフォルトではDailySet1-01,DailySet1-02・・・DailySet1-99となる

  • holdingdiskを作成します。
    $ mkdir "/var/lib/amanda/holdingdisk"
  • tapelistを作成します。
    $ touch /etc/amanda/DailySet1/tapelist 
    $ chmod 660 /etc/amanda/DailySet1/tapelist

disklistの設定

  • バックアップクライアント名、バックアップ対象、バックアップ方式を設定します。
    $ vi /etc/amanda/DailySet1/disklist
    serv111.oss-d.net /etc comp-user-tar
    serv200.oss-d.net /etc comp-user-tar

仮想テープドライブの作成

  • 仮想テープドライブを作成します。スロットはamanda.confのtapecycle分を用意します。
    $ mkdir /var/lib/amanda/vtl
    $ mkdir /var/lib/amanda/vtl/slot1
    $ mkdir /var/lib/amanda/vtl/slot2
    $ mkdir /var/lib/amanda/vtl/slot3
    $ mkdir /var/lib/amanda/vtl/slot4
    $ mkdir /var/lib/amanda/vtl/slot5
    $ mkdir /var/lib/amanda/vtl/slot6
    $ mkdir /var/lib/amanda/vtl/slot7
    $ mkdir /var/lib/amanda/vtl/slot8
  • 仮想テープの情報管理用ファイルを作成します。
    $ touch /var/lib/amanda/vtl/info 

  • 仮想テープドライブにslot1をセットします。

    dataは現在セットされているスロットになり、ここにバックアップが格納されます。

    $ ln -s /var/lib/amanda/vtl/slot1 /var/lib/amanda/vtl/data
  • 仮想テープのファイルを所有者、グループを確認します。
    所有者はamanda、グループはdiskにします。
    $ ls -al /var/lib/amanda/vtl
    drwxr-xr-x 10 amanda disk 4096  2月 13 00:53 .
    drwxr-xr-x  5 amanda disk 4096  2月 13 00:45 ..
    lrwxrwxrwx  1 amanda disk   25  2月 13 00:53 data -> /var/lib/amanda/vtl/slot1
    -rw-r--r--  1 amanda disk    0  2月 13 00:49 info
    drwxr-xr-x  2 amanda disk 4096  2月 13 00:45 slot1
    drwxr-xr-x  2 amanda disk 4096  2月 13 00:45 slot2
    drwxr-xr-x  2 amanda disk 4096  2月 13 00:45 slot3
    drwxr-xr-x  2 amanda disk 4096  2月 13 00:45 slot4
    drwxr-xr-x  2 amanda disk 4096  2月 13 00:45 slot5
    drwxr-xr-x  2 amanda disk 4096  2月 13 00:45 slot6
    drwxr-xr-x  2 amanda disk 4096  2月 13 00:45 slot7
    drwxr-xr-x  2 amanda disk 4096  2月 13 00:45 slot8
  • 仮想テープのラベル付けを行います。

    ラベル名はamanda.confのlabelstrに合わせる必要があります。

    $ /usr/sbin/amlabel DailySet1 DailySet1-01 slot 1
    $ /usr/sbin/amlabel DailySet1 DailySet1-02 slot 2
    $ /usr/sbin/amlabel DailySet1 DailySet1-03 slot 3
    $ /usr/sbin/amlabel DailySet1 DailySet1-04 slot 4
    $ /usr/sbin/amlabel DailySet1 DailySet1-05 slot 5
    $ /usr/sbin/amlabel DailySet1 DailySet1-06 slot 6
    $ /usr/sbin/amlabel DailySet1 DailySet1-07 slot 7
    $ /usr/sbin/amlabel DailySet1 DailySet1-08 slot 8
    amlabelの書式は以下の通りです。ラベルを上書きする場合はオプションに-fを設定します。
    amlabel [-f] <conf> <label> [slot <slot-number>]
  • 設定ファイルの確認を行います。 最後に「0 problems found」と表示されれば問題ありません。
    $ /usr/sbin/amcheck DailySet1
    Amanda Backup Client Hosts Check
    --------------------------------
    Client check: 2 hosts checked in 0.293 seconds, 0 problems found

これでバックアップの設定は完了です。

バックアップの自動化

  • 毎日17時にテープのチェックを行い、25時にバックアップを自動実行するようcronに設定します。
    $ crontab –e
    0 17 * * * /usr/sbin/amcheck -m DailySet1
    0 1 * * * /usr/sbin/amdump DailySet1

バックアップテスト

  • バックアップを手動で実行します。
    $ /usr/sbin/amdump DailySet1
  • バックアップの確認を行います。
    $ /usr/sbin/amadmin DailySet1 find
    Warning: no log files found for tape DailySet1-01 written 2010-02-14
    Scanning /var/lib/amanda/holdingdisk...
    
    date       host              disk lv tape or file file part status
    2010-02-14 serv111.oss-d.net /etc  0 DailySet1-01    2   -- OK
    2010-02-14 serv200.oss-d.net /etc  0 DailySet1-01    1   -- OK

リストア

amandaでは下記2種類のリストアコマンドが用意されています。 今回は、2種類の方法でserv111の/etcをリストアします。

  • amrecover

    対話形式でファイル単位のリストアが可能。

    コマンドはクライアント側から実行可能だが、利用するためにはindex情報を必要とする。

  • amrestore

    バックアップ対象ごとのリストアが可能。

    コマンドはサーバ側で実行する必要があるため、バックアップファイルをクライアントに転送する必要がある。

amrecoverによるリストア

  • バックアップクライアント(serv111)でリストアを開始します。
    [root@serv111 ~]# /usr/sbin/amrecover -s serv200.oss-d.net -t serv200.oss-d.net -C DailySet1
    
    AMRECOVER Version 2.5.0p2. Contacting server on serv200.oss-d.net ...
    220 serv200 AMANDA index server (2.5.0p2) ready.
    200 Access OK
    Setting restore date to today (2010-02-14)
    200 Working date set to 2010-02-14.
    Scanning /var/lib/amanda/holdingdisk...
      20100214010002: found Amanda directory.
    200 Config set to DailySet1.
    501 Host serv111 is not in your disklist.
    Trying host serv111.oss-d.net ...
    200 Dump host set to serv111.oss-d.net.
    Trying disk / ...
    Trying disk rootfs ...
    Can't determine disk and mount point from $CWD '/root'

    これ以降は対話形式(プロンプトは "amrecover>")でリストアを行います。
  • バックアップされているディスクを確認します。
    amrecover> listdisk
    200- List of disk for host serv111.oss-d.net
    201- /etc
    200 List of disk for host serv111.oss-d.net

  • バックアップされているディスクをセットします。
    amrecover> setdisk /etc
    200 Disk set to /etc.

  • リストア先の/tmp2へ移動します。
    amrecover> lcd /tmp2
    amrecover> lpwd
    /tmp2

  • 全ファイルをリストア対象に追加する。

    尚、*で全ファイルをリストア対象とした場合、後でtarエラーが発生します(リストアとしては問題ない)

    このエラーは、ファイル個別にaddした場合は発生しないので、addコマンドで*を指定した際の処理に問題があると思います。

    amrecover> add *
    Added dir /yum at date 2010-02-14
    Added dir /yum.repos.d at date 2010-02-14
    Added /yum.conf
    Added /yp.conf
              :
              :
              :
    Added /.pwd.lock
    Added dir / at date 2010-02-14 ##本来はこの行が不要なため、リストア時にtarエラーとなる

  • リストアを実行します。

    終盤でtarのエラーが出ますが、正しくリストア出来ている(diffで比較済)ので無視します。

    amrecover> extract
    
    Extracting files using tape drive null: on host serv200.oss-d.net.
    The following tapes are needed: DailySet1-01
    
    Restoring files into directory /tmp2
    Continue [?/Y/n]? y
    
    Extracting files using tape drive null: on host serv200.oss-d.net.
    Load tape DailySet1-01 now
    Continue [?/Y/n/s/t]? y
    ./
    ./NetworkManager/
    ./NetworkManager/VPN/
    ./NetworkManager/dispatcher.d/
            :
            :
            :
    tar: ./yp.conf: アーカイブ内に見つかりません
    tar: ./yum.conf: アーカイブ内に見つかりません
    tar: ./yum.repos.d: アーカイブ内に見つかりません
    tar: ./yum: アーカイブ内に見つかりません
    tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました
    amrecover: Extractor child exited with status 2
    
    extract_list - child returned non-zero status: 1
    Continue [?/Y/n/r]? y
  • amrecoverから抜けます。
    amrecover> exit
  • 最後にリストアデータを確認します。
    [root@serv111 ~]# ls /tmp2

amrestoreによるリストア

  • バックアップの確認を行い、ラベルを確認します。
    [amanda@serv200 ~]$ /usr/sbin/amadmin DailySet1 find
    Scanning /var/lib/amanda/holdingdisk...
    
    date       host              disk lv tape or file file part status
    2010-02-14 serv111.oss-d.net /etc  0 DailySet1-07    2   -- OK
    2010-02-14 serv200.oss-d.net /etc  0 DailySet1-07    1   -- OK
  • リストアに利用するテープをセットする
    [amanda@serv200 ~]$ /usr/sbin/amtape DailySet1 label DailySet1-07
    amtape: scanning for tape with label DailySet1-07
    changer: got exit: 0 str: 7 8 1
    changer_query: changer return was 8 1
    changer_query: searchable = 0
    changer_find: looking for DailySet1-07 changer is searchable = 0
    changer: got exit: 0 str: 7 file:/var/lib/amanda/vtl
    amtape: slot 7: date 20100214 label DailySet1-07 (exact label match)
    amtape: label DailySet1-07 is now loaded.
    
  • リストアに利用するテープを巻き戻す
    [amanda@serv200 ~]$ /usr/sbin/ammt -f file:/var/lib/amanda/vtl rewind
  • 適当なディレクトリに移動してリストアを実行します。
    [root@serv200 tmp2]# cd /tmp2
    [root@serv200 tmp2]# amrestore file:/var/lib/amanda/vtl serv111 /etc
    amrestore:   1: restoring serv111.oss-d.net._etc.20100213.1
    amrestore:   2: skipping serv200.oss-d.net._etc.20100213.0
    amrestore:   3: reached end of tape: date 20100213
  • リストアファイルを確認します。ファイルをクライアントに転送します。
    [root@serv200 tmp2]# ls
    serv111.oss-d.net._etc.20100213.1
  • ファイルはtar形式なのでtarコマンドで解凍します。
    [root@serv111 tmp2]# tar xvf serv111.oss-d.net._etc.20100213.1

コマンド

  • テープをセットする
    $ /usr/sbin/amrmtape DailySet1 DailySet1-01

  • テープにラベルを設定する
    $ /usr/sbin/amlabel DailySet1 DailySet1-01 slot 1

  • バックアップファイルを確認する
    $ /usr/sbin/amadmin DailySet1 find

  • バックアップ
    $ /usr/sbin/amrmtape DailySet1 DailySet1-01

  • テープの巻き戻し
    $ /usr/sbin/ammt -f file:/var/lib/amanda/vtl rewind

FAQ

amanda-client.confを利用したamrecoverに失敗する

  • amanda 2.5.0はamanda-client.confに対応していないため、下記のような結果になります。
    #  /usr/sbin/amrecover
     AMRECOVER Version 2.5.0p2. Contacting server on amandahost ...
     amrecover: cannot connect to amandahost: Success

    解決策は、amandaを2.5.2以上にバージョンアップするか
    amrecoverコマンドで下記書式に従い必要なパラメータを指定します。
    amrecover ‒s "バックアップサーバ" ‒t "テープドライブと接続されたサーバ" ‒C "設定名"

クライアント側でamrecover実行時にdisklistが見つからないエラーが表示される

  • hosts、または.amandahostsにホスト名が設定されていません。
    # /usr/sbin/amrecover -s serv200.oss-d.net -t serv200.oss-d.net -C DailySet1
    AMRECOVER Version 2.5.0p2. Contacting server on serv200.oss-d.net ...
    220 serv200 AMANDA index server (2.5.0p2) ready.
    200 Access OK
    Setting restore date to today (2010-02-14)
    200 Working date set to 2010-02-14.
    Scanning /var/lib/amanda/holdingdisk...
      20100214010002: found Amanda directory.
    200 Config set to DailySet1.
    501 Host serv111 is not in your disklist.
    Trying host serv111 ...
    501 Host serv111 is not in your disklist.
    Trying host localhost.localdomain ...
    501 Host localhost.localdomain is not in your disklist.
    Trying host localhost ...
    501 Host localhost is not in your disklist.

    hostsの場合は、127.0.0.1として自ホストの名前が登録されているか確認して下さい。

amrestore時にエラーとなる

  • テープ(仮想テープ)の巻き戻しを実行する必要があります。
    # amrestore file:/var/lib/amanda/vtl serv111 /etc
    amrestore: missing file header block
    amrestore: WARNING: not at start of tape, file numbers will be offset
    amrestore: missing file header block
    amrestore: missing file header block
    amrestore: missing file header block
    amrestore: missing file header block
    amrestore: missing file header block
    amrestore: missing file header block
    amrestore: missing file header block
    amrestore: missing file header block
    amrestore: missing file header block
    amrestore: missing file header block
    amrestore:  10: reached end of information

    以下のようにテープ(仮想テープ)を巻き戻します。
    $ /usr/sbin/ammt -f file:/var/lib/amanda/vtl rewind

その他

仮想テープを初期状態に戻す

検証などで作成されたバックアップファイルを削除する場合の手順です。

  • 不要なファイルを削除します。
    $ rm -r /var/lib/amanda/holdingdisk
    $ rm -r /etc/amanda/DailySet1/curinfo*
    $ rm -r /etc/amanda/DailySet1/log.*
    $ rm -r /etc/amanda/DailySet1/index
  • 仮想テープのチェンジャを最初のスロットに戻します。
    $ amtape DailySet1 reset
    amtape: changer is reset, slot 1 is loaded.

  • バックアップファイルが削除された事を確認します。
    $ /usr/sbin/amadmin DailySet1 find
    Scanning /var/lib/amanda/holdingdisk...
    
    No dump to list
このエントリーをはてなブックマークに追加
Last-modified: 2010-06-05 (土) 12:30:44   最終更新のRSS