Amandaを使ってAmazon S3にデータをバックアップする

Amandaはバックアップデータの格納先にS3を使うことが可能です。
ということで試してみました。今回のエントリはその時のメモです。

環境


CentOSAWS Marcket Placeで公開されているCentOS6.3 64bit版を使用しました。
AmandaはZmanda提供のRPMパッケージ(amanda-backup_server-3.3.3-1.rhel6.x86_64)を使用しています。

準備


AmandaからS3にアクセスするために、アクセスキーを用意する必要があります。
アクセスキーを作成していない場合は、AWSのManagement Consoleから「Security Credencials」のページに移動し、
アクセスキーを用意しておきます。


設定をする


コンフィグを作成します。今回、S3のストレージは標準のものではなく、
冗長化ストレージ(Reduced Redundancy Storage)を指定しました。

# amazonaws S3
device_property "S3_ACCESS_KEY" "<Your Access Key>"
device_property "S3_SECRET_KEY" "<Your Secret Key>"
device_property "S3_STORAGE_CLASS" "REDUCED_REDUNDANCY"
device_property "S3_SSL" "YES"
tpchanger "chg-multi:s3:think-t/backup/slot-{01,02,03,04,05,06,07,08,09,10}"
changerfile  "s3-statefile"
tapetype S3

define tapetype S3 {
    comment "S3 Bucket"
    length 10240 gigabytes
}


コンフィグを作成したところで今度は仮想テープにラベルを設定します。
スロットは必要な分だけ。

# su -l amandabackup -c "amlabel backup backup-01 slot 1"
Reading label...
Found an empty tape.
Writing label 'backup-01'...
Checking label...
Success!
(略)


ラベル設定をすると、S3に以下のようなファイルが作成されます。


バックアップを取得する


今回はバックアップ対象として、ローカルディスクの/opt以下を対象としました。
バックアップ対象としてダミーファイルを作成します。

# dd if=/dev/zero of=/opt/1M.img bs=1024 count=1000
1000+0 records in
1000+0 records out
1024000 bytes (1.0 MB) copied, 0.0171975 s, 59.5 MB/s
# dd if=/dev/zero of=/opt/10M.img bs=1024 count=10000
10000+0 records in
10000+0 records out
10240000 bytes (10 MB) copied, 0.632678 s, 16.2 MB/s
# dd if=/dev/zero of=/opt/100M.img bs=1024 count=100000
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 7.68087 s, 13.3 MB/s


バックアップを実行し、結果を確認してみます。

# su -l amandabackup -c "amdump backup"
# su -l amandabackup -c "amadmin backup find"

date                host        disk lv tape or file file part status
2013-02-24 04:49:47 amanda-test /opt  0 backup-01       1  1/1 OK


バックアップの整合性も確認を取ります。問題ないようです。

# su -l amandabackup -c "amcheckdump backup"
You will need the following volume: backup-01
Press enter when ready

Validating image amanda-test:/opt dumped 20130224044947 level 0
Reading volume backup-01 file 1
All images successfully validated


S3には新たなファイルが作成されていました。


リストアしてみる


バックアップが取得できたので、ファイルをリストアしてみます。
ファイルは「/tmp/test」に戻します。

# amrecover -s amanda-test -t amanda-test -C backup
AMRECOVER Version 3.3.3. Contacting server on amanda-test ...
220 amanda-test AMANDA index server (3.3.3) ready.
Setting restore date to today (2013-02-24)
200 Working date set to 2013-02-24.
200 Config set to backup.
200 Dump host set to amanda-test.
Use the setdisk command to choose dump disk to recover
amrecover> listdisk
200- List of disk for host amanda-test
201- /opt
200 List of disk for host amanda-test
amrecover> setdisk /opt
200 Disk set to /opt.
amrecover> add *
Added file /1M.img
Added file /10M.img
Added file /100M.img
amrecover> lcd /tmp/test
amrecover> lpwd
/tmp/test
amrecover> extract

Extracting files using tape drive changer on host amanda-test.
The following tapes are needed: backup-01

Extracting files using tape drive changer on host amanda-test.
Load tape backup-01 now
Continue [?/Y/n/s/d]? Y
Restoring files into directory /tmp/test
All existing files in /tmp/test can be deleted
Continue [?/Y/n]? Y

./100M.img
./10M.img
./1M.img
amrecover> exit
200 Good bye.


バックアップ対象としたファイルと、リストアしたファイルのハッシュ値を比較してみます。

# md5sum /opt/1M.img /tmp/test/1M.img
80ec129d645c70cf0de45b1a5a682235  /opt/1M.img
80ec129d645c70cf0de45b1a5a682235  /tmp/test/1M.img
# md5sum /opt/10M.img /tmp/test/10M.img
596c35b949baf46b721744a13f76a258  /opt/10M.img
596c35b949baf46b721744a13f76a258  /tmp/test/10M.img
# md5sum /opt/100M.img /tmp/test/100M.img
75a1e608e6f1c50758f4fee5a7d8e3d0  /opt/100M.img
75a1e608e6f1c50758f4fee5a7d8e3d0  /tmp/test/100M.img


値が同じでしたので、無事にリストア出来ていることが確認できました。

リストア時に「Error setting 's3-secret-key' on device 'tape:/dev/YOUR-TAPE-DEVICE-HERE'」と出力される場合


リストア時に上記エラーが出る場合、クライアント側の設定を確認するとよいかもしれません。
テープデバイスの指定があると、エラーが出ます。


私の場合は以下のような記述が邪魔をしていましたので、コメントアウトをしました。

tapedev      "tape:/dev/YOUR-TAPE-DEVICE-HERE"


サーバ側の設定ファイル(amanda.conf)に以下の記述をしておくとよいです。

amrecover_changer "changer"


ひとまず、基本的なデータバックアップ、リストアはできたようです。
今後はもう少しいろいろ試してみようと思います。


今日はこんなところで。