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

Table of Contents
↑

システム構成

↑

概要

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

amanda - システム構成.JPG
↑

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

  • ホスト名(IP)
    • serv111.oss-d.net (192.168.11.111)
  • OS
    • CentOS 6.2 (kernel 2.6.32-220.4.1.el6)
  • パッケージ
    • amanda-2.6.1p2-7.el6
    • amanda-client-2.6.1p2-7.el6
↑

バックアップサーバ

  • ホスト名(IP)
    • serv200.oss-d.net(192.168.11.200)
  • OS
    • CentOS 6.2 (kernel 2.6.32-220.4.1.el6)
  • パッケージ
    • amanda-2.6.1p2-7.el6
    • amanda-client-2.6.1p2-7.el6
    • amanda-server-2.6.1p2-7.el6
↑

補足

  • プロンプトについては以下の通りです。
    #  ←rootで実行$ ←amandabackupユーザで実行
↑

↑

インストール

  • 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 --listxinetd ベースのサービス:       amanda:         on

↑

hostsの設定

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

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

    # vi /etc/hosts127.0.0.1       serv111.oss-d.net localhost.localdomain localhost192.168.11.200  serv200.oss-d.net

↑

amandahostsの設定

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

amanda-client.confの設定

  • リストア用にamanda-client.confを編集します。
    # vi /etc/amanda/DailySet1/amanda-client.confconf "DailySet1"                 # your config nameindex_server "serv200.oss-d.net" # your amindexd servertape_server "serv200.oss-d.net"  # your amidxtaped servertapedev "file:/var/lib/amanda/vtl"auth "bsdtcp"ssh_keys ""  unreserved-tcp-port 1025,65535
↑

↑

インストール

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

↑

amandaの設定

↑

xinet.dの設定

  • xinetdの起動ファイルをコピーします。
    # cp -rp /etc/amanda/DailySet1/xinetd.amandaserver /etc/xinetd.d/amandaserver
  • amanda-serverがxinetd経由で起動するよう設定する
    # vi  /etc/xinetd.d/amandaserver
    service amanda{        disable         = no           #■noに設定します        flags           = IPv6        socket_type     = stream        protocol        = tcp        wait            = no        user            = amandabackup        group           = disk        groups          = yes        server          = /usr/lib64/amanda/amandad        server_args     = -auth=bsdtcp amdump amindexd amidxtaped}


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

↑

hostsの設定

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

↑

amandahostsの設定

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

↑

amanda.confの設定

  • amanda.confの設定を行います。
    設定ファイルは、ほとんどがdefine行なので、主要項目と変更箇所を抜粋しています。
    $ vi /etc/amanda/DailySet1/amanda.conf
    org      "DailySet1" mailto   "root"dumpuser "amandabackup"  inparallel 4 netusage  8000 Kbps  ### 毎日バックアップを実行し、週1回だけフルバックアップdumpcycle 1 weeksrunspercycle 7 tapecycle 8 tapes### 仮想テープの設定define tapetype HDD {       length 1024 mbytes}tapetype HDDtpchanger "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 DIRECTORYlogdir   "/etc/amanda/DailySet1"                # log directoryindexdir "/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を作成します。
    # su - amandabackup$ mkdir "/var/lib/amanda/holdingdisk"
  • tapelistを作成します。
    $ touch /etc/amanda/DailySet1/tapelist$ chmod 660 /etc/amanda/DailySet1/tapelist
↑

disklistの設定

  • バックアップクライアント名、バックアップ対象、バックアップ方式を設定します。
    $ vi /etc/amanda/DailySet1/disklistserv111.oss-d.net /etc comp-user-tarserv200.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
  • 仮想テープのファイルを所有者、グループを確認します。
    所有者はamandabackup、グループはdiskにします。
    $ ls -al /var/lib/amanda/vtldrwxr-xr-x. 10 amandabackup disk 4096  5月  2 00:53 2012 .drwxr-xr-x.  7 amandabackup disk 4096  5月  2 00:52 2012 ..lrwxrwxrwx.  1 amandabackup disk   25  5月  2 00:53 2012 data -> /var/lib/amanda/vtl/slot1-rw-r--r--.  1 amandabackup disk    0  5月  2 00:53 2012 infodrwxr-xr-x.  2 amandabackup disk 4096  5月  2 00:52 2012 slot1drwxr-xr-x.  2 amandabackup disk 4096  5月  2 00:52 2012 slot2drwxr-xr-x.  2 amandabackup disk 4096  5月  2 00:52 2012 slot3drwxr-xr-x.  2 amandabackup disk 4096  5月  2 00:52 2012 slot4drwxr-xr-x.  2 amandabackup disk 4096  5月  2 00:52 2012 slot5drwxr-xr-x.  2 amandabackup disk 4096  5月  2 00:52 2012 slot6drwxr-xr-x.  2 amandabackup disk 4096  5月  2 00:52 2012 slot7drwxr-xr-x.  2 amandabackup disk 4096  5月  2 00:52 2012 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]  
  • 設定ファイルの確認を行います。 最後に「0 problems found」と表示されれば問題ありません。
    $ /usr/sbin/amcheck DailySet1Amanda Backup Client Hosts Check--------------------------------Client check: 2 hosts checked in 2.066 seconds.  0 problems found.

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

↑

バックアップの自動化

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

バックアップテスト

  • バックアップを手動で実行します。
    $ /usr/sbin/amdump DailySet1
  • バックアップの確認を行います。
↑

リストア

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

  • amrecover

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

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

  • amrestore

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

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

↑

amrecoverによるリストア

  • リストア用のディレクトリを作成します
    # mkdir /restore
  • バックアップクライアント(serv111)でリストアを開始します。
    [root@serv111 ~]# /usr/sbin/amrecoverAMRECOVER Version 2.6.1p2. Contacting server on serv200.oss-d.net ...220 serv200 AMANDA index server (2.6.1p2) ready.Setting restore date to today (2012-05-02)200 Working date set to 2012-05-02.200 Config set to DailySet1.501 Host serv111 is not in your disklist.Use the sethost command to choose a host to recoveramrecover>

    これ以降は対話形式(プロンプトは "amrecover>")でリストアを行います。
  • バックアップされているホストの一覧を確認します。
    amrecover> listhost200- List hosts for config DailySet1201- serv111.oss-d.net201- serv200.oss-d.net200  List hosts for config DailySet1

  • ホストをセットします。
    amrecover> sethost serv111.oss-d.net200 Dump host set to serv111.oss-d.net.
  • バックアップされているディスクを確認します。
    amrecover> listdisk200- List of disk for host serv111.oss-d.net201- /etc200 List of disk for host serv111.oss-d.net

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

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

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

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

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

    amrecover> add *Added dir /yum/ at date 2012-05-02-01-26-40Added dir /yum.repos.d/ at date 2012-05-02-01-26-40Added file /yum.conf          :          :          :Added /.pwd.lock

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

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

    amrecover> extractExtracting files using tape drive file:/var/lib/amanda/vtl on host serv200.oss-d.net.The following tapes are needed: DailySet1-08Restoring files into directory /restoreContinue [?/Y/n]? y    ■yを選択Extracting files using tape drive file:/var/lib/amanda/vtl on host serv200.oss-d.net.Load tape DailySet1-08 nowContinue [?/Y/n/s/d]? y ■yを選択./ConsoleKit/./ConsoleKit/run-seat.d/./ConsoleKit/run-session.d/        :        :        :./yum/pluginconf.d/fastestmirror.conf./yum/pluginconf.d/refresh-packagekit.conf./yum/pluginconf.d/security.conf
  • amrecoverから抜けます。
    amrecover> exit200 Good bye.
  • 最後にリストアデータを確認して問題なければ完了です。
    [root@serv111 ~]# ls /restore
↑

amrestoreによるリストア

  • リストア用のディレクトリを作成します
    # mkdir /restore

  • バックアップの確認を行い、ラベルを確認します。
  • リストアに利用するテープをセットする
    [amanda@serv200 ~]$ /usr/sbin/amtape DailySet1 label DailySet1-08amtape: scanning for tape with label DailySet1-08amtape: slot   8: time 20120502012640 label DailySet1-08 (exact label match)amtape: label DailySet1-08 is now loaded.

  • 適当なディレクトリに移動してリストアを実行します。
    [root@serv200 restore]# cd /restore[root@serv200 restore]# amrestore file:/var/lib/amanda/vtl serv111 /etcRestoring from tape DailySet1-08 starting with file 1.amrestore: 1: restoring FILE: date 20120502012640 host serv111.oss-d.net disk /etc lev 0 comp .gz program /bin/taramrestore: 2: skipping FILE: date 20120502012640 host serv200.oss-d.net disk /etc lev 0 comp .gz program /bin/tar

  • リストアファイルを確認します。
    [root@serv200 restore]# lsserv111.oss-d.net._etc.20120502012640.0

  • 確認できたらSCPなどでファイルをクライアントに転送します。
    [root@serv200 restore]# scp /restore/serv111.oss-d.net._etc.20120502012640.0 192.168.11.111:/restore

  • ファイルはtar形式なのでtarコマンドで解凍します。
    [root@serv111 restore]# tar xvf serv111.oss-d.net._etc.20120502012640.0
↑

コマンド

  • テープをセットする
    $ /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

↑

その他

↑

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

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

  • 不要なファイルを削除します。
    $ rm -rf /var/lib/amanda/holdingdisk$ rm -rf /etc/amanda/DailySet1/curinfo*$ rm -rf /etc/amanda/DailySet1/log.*$ rm -rf /etc/amanda/DailySet1/index
  • 仮想テープのチェンジャを最初のスロットに戻します。
    $ amtape DailySet1 resetamtape: changer is reset, slot 1 is loaded.
  • バックアップファイルが削除された事を確認します。
    $ /usr/sbin/amadmin DailySet1 findScanning /var/lib/amanda/holdingdisk...No dump to list
このエントリーをはてなブックマークに追加
Last-modified: 2012-05-02 (水) 19:23:03   最終更新のRSS