Amandaを利用した仮想テープへのバックアップ(目次)
| Table of Contents |
システム構成
概要
amandaを利用して「serv111の/etc」と「serv200 の/etc」を仮想テープドライブ(ハードディスク)
へバックアップします。
バックアップクライアント
- ホスト名(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
その他
- CentOS6におけるAmandaは下記を参照して下さい。
バックアップクライアントの設定(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