So-net無料ブログ作成

ZFSをAmandaでバックアップ。 [Solaris package]

オープンソースのバックアップソリューションとしてAmandaというのがあります。
2.6.1からZFSのバックアップ機能が追加されたので試してみました。
ソースは
http://www.zmanda.com/community-builds.php
からNightly-buildのtarをとってきます。

展開して、configureのオプションを以下のようにして実行します。
env CC=cc CXX=CC CPPFLAGS="-I/opt/nsug/include" \
LDFLAGS="-R/opt/nsug/lib -L/opt/nsug/lib -R/usr/sfw/lib -L/usr/sfw/lib" \
./configure  --prefix=/opt/nsug \
        --infodir=/opt/nsug/share/info \
        --mandir=/opt/nsug/share/man \
        --localstatedir=/var/opt/nsug \
        --sharedstatedir=/var/opt/nsug/com \
        --sysconfdir=/etc/opt/nsug --enable-shared --disable-static \
        --with-user=amanda --with-group=sys \
        --with-db=text \
        --with-tape-device=/dev/rmt/0bn \
        --with-changer-device=/dev/changer \
        --with-gnutar=/usr/sfw/bin/gtar \
        --with-gnuplot=/opt/nsug/bin/gnuplot \
        --with-index-server=localhost \
        --with-tape-server=localhost \
        --disable-glibtest 

一般ユーザでgmakeを実行した後、ルートユーザになってインストールします。
amandaの設定ファイルはexample/amanda.confを~amanda/DailySet1/amanda.confにコピーします。
通常バックアップはロボットがついたテープデバイスにするのが普通ですが、普通の人はロボットのついたテープドライブはおろか、最近ではテープドライブすら持っていないと思います。幸いにして、amandaはバックアップ先をローカルのハードディスクにすることが可能なのでHard-Diskへのバックアップの設定をします。
変更箇所は以下のようになります。
tpchanger "chg-disk"  
tapedev "file:/backup/DailySet1" 
tapetype HARD-DISK

以下の4行を追加します。
define tapetype HARD-DISK {
    comment "Dump onto Hard Disk"
    length 8191000 mbytes
}

複数のクライアントから同時にバックアップできるように、holdingdiskの場所と利用可能なサイズを指定します。
  directory "/files/dumps/amanda"     # where the holding disk is
  use -5 Gb 

ディフォルトのログファイルの出力先がよくないので、以下のように変更します。
logdir   "/etc/opt/nsug/amanda/DailySet1/log"

ZFSのバックアップには、gtarを使うのですが、Solarisについてるgtarでは--atime-preserver=systemが使えないので
define application-tool app_amgtarにproperty "ATIME-PRESERVE" "NO"を追加します。
最後に、ZFSのバックアップ用に下記を追記します。
define script-tool amzfs_snapshot {
  comment "backup of zfs snapshot"
  plugin  "amzfs-snapshot"
  execute-on  pre-dle-amcheck, post-dle-amcheck, pre-dle-estimate, post-dle-estimate, pre-dle-backup, post-dle-backup
  execute-where client
  property "DF-PATH" "/usr/sbin/df"
  property "ZFS-PATH" "/usr/sbin/zfs"
  property "PFEXEC-PATH" "/usr/sbin/pfexec"
  property "PFEXEC" "NO"
}

define dumptype user-zfs-amgtar {
  dt_amgtar
  script "amzfs_snapshot"
} 

amandaはudp/tcpを使って複数のホストのデータをバックアップしますので、サーバの/etc/serviceに以下の3行を追加します。
amanda          10080/udp
amandaidx       10082/tcp
amidxtape       10083/tcp

以下の3行を書いてinetconvを実行します。
amandaidx stream tcp nowait amanda /opt/nsug/libexec/amanda/amindexd amindexd
amidxtape stream tcp nowait amanda /opt/nsug/libexec/amanda/amidxtaped amidxtaped
amanda dgram udp wait amanda /opt/nsug/libexec/amanda/amandad amandad

バックアップ先のディレクトリ/backup/DailySet1を作り、その中にslot1からslot25のサブディレクトリを作成して、ownerをamanda:sysにします。
# mkdir -p /backup/DailySet1/slot1 .....
# chown -R amanda:sys /backup/DailySet1
# chmod 700 /backup/DailySet1 /backup/DailySet1/slot*

テープラベルを作成します
su amanda -c "/opt/nsug/sbin/amlabel -f DailySet1 DailySet1-01 slot 1"
      ....
su amanda -c "/opt/nsug/sbin/amlabel -f DailySet1 DailySet1-25 slot 25"

バックアップするクライアントのホスト名、バックアップ対象となるディレクトリ名、バックアップ方法をDailySet1/disklistに以下のように書きます。
remotehost /mypool/shares user-zfs-amgtar


サーバー側の準備はこれで完了です。
次にクライアント側の準備を行います。

クライアント側のamandaのホームディレクトリの.amandahostsにサーバのホスト名とamandaのユーザ名をかきます。
% echo "u20m2 amdna" > ~amanda/.amandahosts
% chmod 600 ~amanda/.amandahosts

amandaユーザからzfsのファイルシステムに対してバックアップ、snapshotが可能なようにプロパティを変更します。
zfs allow -ldu amanda destroy,mount,send,snapshot mypool/shares

クライアントのホームディレクトリにソースのexample/amanda-client.confをコピーします。
クライアント側の/etc/servicesにもサーバと同じように以下の3行を追加します。
amanda          10080/udp
amandaidx       10082/tcp
amidxtape       10083/tcp

以下の1行を書いてinetconvを実行します。
amanda dgram udp wait amanda /opt/nsug/libexec/amanda/amandad amandad

これで準備が整いましたので、サーバからバックアップのテストを実行してみます。
% /opt/nsug/sbin/amcheck DailySet1
Amanda Tape Server Host Check
-----------------------------
Holding disk /files/dumps/amanda: 7763 MB disk space available, using 2643 MB
ERROR: logdir /etc/opt/nsug/amanda/DailySet1/log (No such file or directory), you must create directory.
slot 25:read label `DailySet1-25', date `X'.
NOTE: skipping tape-writable test
Tape DailySet1-25 label ok
NOTE: conf info dir /etc/opt/nsug/amanda/DailySet1/curinfo does not exist
NOTE: it will be created on the next run.
Server check took 1.692 seconds

Amanda Backup Client Hosts Check
--------------------------------
Client check: 1 host checked in 1.213 seconds.  0 problems found.

(brought to you by Amanda 2.6.1alpha-20081017)

正常に動いたならバックアップを実行してみます。
% /opt/nsug/sbin/amdump DailySet1

amstatusを使うと実行中の監視ができます。
% /opt/nsug/sbin/amstatus DailySet1
Using /etc/opt/nsug/amanda/DailySet1/log/amdump
From 火 10月 21 01:03:49 JST 2008

remotehost:/mypool/shares 0     27046m dumping to tape (1:03:53)

SUMMARY          part      real  estimated
                           size       size
partition       :   1
estimated       :   1                27046m
flush           :   0         0m
failed          :   0                    0m           (  0.00%)
wait for dumping:   0                    0m           (  0.00%)
dumping to tape :   1                27046m           (100.00%)
dumping         :   0         0m         0m (  0.00%) (  0.00%)
dumped          :   1         0m     27046m (  0.00%) (  0.00%)
wait for writing:   0         0m         0m (  0.00%) (  0.00%)
wait to flush   :   0         0m         0m (100.00%) (  0.00%)
writing to tape :   0         0m         0m (  0.00%) (  0.00%)
failed to tape  :   0         0m         0m (  0.00%) (  0.00%)
taped           :   0         0m         0m (  0.00%) (  0.00%)
3 dumpers idle  : runq
taper idle
 dumper0 busy   :  0:00:05  ( 55.41%)
 0 dumpers busy :  0:00:02  ( 27.14%)                runq:  0:00:02  (100.00%)
 1 dumper busy  :  0:00:05  ( 55.40%)                runq:  0:00:05  (100.00%)



nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。