ぜんぜんまとまってません。書き途中です。
(2010/12)
はじめに
Amandaは、(標準では)Linux上で動作するクライアント・サーバ型のデータバックアップシステムです。
一般的な形態としては、
・サーバ
テープやディスクなどのバックアップ先を持ち、バックアップの計画を立てます。
・クライアント
バックアップするデータを持ちます。
という形で、クライアントが複数存在するときにAmandaの効果が発揮されます。
複数のクライアントがあるときに、サーバ側のリソース配分を自動的に行ってくれる点がAmandaの特長です。
基本的には書き出し先はテープですが、ここでは仮想テープ(HDD)を使います。
インストール
初めにCentOSでAmandaを入れようとしたところ、パッケージは2.5あたりでかなり古い状態でした。
最新のAmandaは、Amanda公式の
http://www.zmanda.com/download-amanda.php
http://www.amanda.org/
にあって、最新は3.2.1です(2011/2現在)。
3.1.3以上に上げると、最近のWindows(7, 2008 R2)でもネイティブクライアントが動くようです。
正式に対応しているプラットフォームは、
Debian, Fedora, OpenSuse, RedhatEnterprise, SuseEnterprise, Ubuntu
です。Windowsはネイティブのクライアントのみでサーバはありません。
どれでもいいけど、Debianにしました。
バージョンは、5.0.6。(カーネルだと、2.6.26-2)
Xありだと何故かインストール途中で止まるので、Xなしの標準でインストールしています。
amanda-backup-server_3.2.1-1Debian31_i386.deb
を.debで入れた以外では、
- parted
- smbclient
- xfsdump
- xfsprogs
- dovecot-pop3d
をパッケージマネージャで入れています。
よく忘れるのでメモ。
HDD
安価に大容量を確保するために、冗長性は持たせない方針です。(システム領域だけは、ミラーリングしています)。
個々のHDDの障害について対策をしないので、JBODやLVMでまとめるような使い方もしません。テープの使い方に近く、個々のHDDが故障しても切り捨てるだけで、そのほかに影響がないようにします。
/vtapes/fs/* にHDDをマウント
/vtapes/slots/slot* に500GB単位でシンボリックリンク
としています。
1スロット(1テープ)分の容量以上の領域をHoldingDiskとして確保します。
HoldingDiskはテープに書きだす前の一時的なバッファで、vtapeの場合は実質的にデメリットしかないのですが、使わないとディスク領域を有効に使えないというAmandaの制約があるので、使うようにします。
HoldingDiskから、vtapeへ大容量のコピーが発生するので、HDDコントローラも別にします(単に性能の問題なので、必要な容量さえ確保できればどこでも良い)。
パーミッション設定
drwxrwx--- amandabackup:disk /vtapes
drwxrwx--- amandabackup:disk /vtapes/dumps
drwxrwx--- amandabackup:disk /vtapes/fs
drwxrwx--- amandabackup:disk /vtapes/slots
フォーマット
PartedでGPTパーティション作成
2TBまでならMBRでも大丈夫ですが、ブート領域ではないし、2TBを超えるHDDを使う機会も増えてくるでしょうから、GPTにします。
パーティションは全体を1領域で使います。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #parted /dev/sdf
GNU Parted 1.8.8
Using /dev/sdf
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
New disk label type? [gpt]? gpt
(parted) print
Model: AMCC 9500S-8 DISK (scsi)
Disk /dev/sdf: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
(parted) mkpart primary 0 2000G
(parted) print
Model: AMCC 9500S-8 DISK (scsi)
Disk /dev/sdf: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2000GB 2000GB primary
(parted) quit
Information: You may need to update /etc/fstab
|
XFSでファイルシステムの初期化
ext3でもXFSでもJFSでも何でもいいのですが、性能が若干良いらしいXFSにしました。
1
2
3
4
5
6
7
8
9
10
11
12
| # mkfs.xfs /dev/sdf
mkfs.xfs: /dev/sdf appears to contain a partition table (DOS).
mkfs.xfs: Use the -f option to force overwrite.
# mkfs.xfs -f /dev/sdf
meta-data=/dev/sdf isize=256 agcount=4, agsize=122069632 blks
= sectsz=512 attr=2
data = bsize=4096 blocks=488278528, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096
log =internal log bsize=4096 blocks=32768, version=2
= sectsz=512 sunit=0 blks, lazy-count=0
realtime =none extsz=4096 blocks=0, rtextents=0
|
途中で文句を言われたので、-f で強制実行。
/etc/fstabも適宜書き換えます。
HDDの接続順番などの制約を受けたくないので、UUIDでのマウントを使います。
UUIDは、
で調べられます。
起動ディスクを変えることはないので、sdaは従来どおりです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/sda1 / ext3 errors=remount-ro 0 1
/dev/sda5 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
#
UUID=8a983031-1f30-434c-9729-3bc4196b10de /vtapes/fs/00 xfs defaults 0 2
UUID=1d85fc67-a2f0-4db5-ad16-61fcd724c095 /vtapes/fs/01 xfs defaults 0 2
UUID=cb79d74c-4bb7-45de-b3ed-631f56a0634e /vtapes/fs/02 xfs defaults 0 2
UUID=c6ebfc38-3e05-402c-af85-c266d17d6739 /vtapes/fs/03 xfs defaults 0 2
UUID=bf8ee60c-7838-4056-a316-a17e7e888c15 /vtapes/fs/04 xfs defaults 0 2
UUID=9c8ef5fd-6fed-4972-a7e8-fa7a1d5df83a /vtapes/fs/05 xfs defaults 0 2
UUID=34f30284-e292-4c25-9c90-967ade8d9150 /vtapes/dumps xfs defaults 0 2
|
mount状況。
UUIDでマウントしても従来のデバイス名で表示されます。
1
2
3
4
5
6
7
8
9
10
11
12
13
| # df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda1 958617732 1001132 908921580 1% /
tmpfs 1811584 0 1811584 0% /lib/init/rw
udev 10240 720 9520 8% /dev
tmpfs 1811584 0 1811584 0% /dev/shm
/dev/sdb 976420864 4336 976416528 1% /vtapes/fs/00
/dev/sdc 976420864 4336 976416528 1% /vtapes/fs/01
/dev/sdd 976420864 4336 976416528 1% /vtapes/fs/02
/dev/sde 976420864 4336 976416528 1% /vtapes/fs/03
/dev/sdf 1952983040 4400 1952978640 1% /vtapes/fs/04
/dev/sdg 1952983040 4400 1952978640 1% /vtapes/fs/05
/dev/sdh 976631512 4336 976416528 1% /vtapes/dumps
|
amanda.confの設定
標準と異なる設定のみ抜粋。
/etc/amanda/DailySet1/amanda.conf
1
2
3
4
5
6
7
8
| 43c43
< runspercycle 20 # the number of amdump runs in dumpcycle days
---
> runspercycle 28 # the number of amdump runs in dumpcycle days
45c45
< tapecycle 25 tapes # the number of tapes in rotation
---
> tapecycle 16 tapes # the number of tapes in rotation
|
1
2
3
4
5
6
7
8
9
10
| 109,112c109,112
< flush-threshold-dumped 0
< flush-threshold-scheduled 0
< taperflush 0
< autoflush no
---
> flush-threshold-dumped 100
> flush-threshold-scheduled 100
> taperflush 100
> autoflush yes
|
holdingdiskのフラッシュ設定。この設定にすると、holdingdiskに溜められるだけ溜めてからテープに書き出されます。
1
2
3
4
5
6
7
8
9
10
| 117c117
< tapedev "tape:/dev/YOUR-TAPE-DEVICE-HERE" # tape changer or device to use
---
> #tapedev "tape:/dev/YOUR-TAPE-DEVICE-HERE" # tape changer or device to use
121a122
> tpchanger "chg-disk:/vtapes/slots"
140c141
< tapetype HP-DAT # what kind of tape it is (see tapetypes below)
---
> tapetype HARDDISK
|
vtapeを使う設定です。
1
2
3
4
5
6
7
8
9
10
11
12
| 162,163c165,167
< directory "/dumps/amanda" # where the holding disk is
< use -100 Mb # how much space can we use on it
---
> # directory "/dumps/amanda" # where the holding disk is
> directory "/vtapes/dumps"
> use 500Gb # how much space can we use on it
271a276,279
> define tapetype HARDDISK {
> length 500gbytes
> }
>
|
holdingdiskの場所とサイズの設定です。
1
2
| 508a514
> auth "bsdtcp"
|
globalの設定で、authをbsdtcpにします。セキュリティ的に甘くなりますが、設定は簡単になります。
Windowsの共有をSMBマウントしてバックアップ
/etc/amanda/DailySet1/disklist
1
| Amandaホスト名(FQDN) //Windowsホスト名/共有名 user-tar
|
圧縮しても大して小さくならないので、user-tarを使っていますが、小さくなるようなデータが多いなら、comp-user-tarが有用です。
/etc/amandapass
1
| //Windowsホスト名/共有名 ユーザ%パスワード ドメイン
|
/var/lib/amanda/.amandahosts
1
| Amandaホスト名(FQDN) amandabackup amdump
|
chg-diskの設定
500GBごとにslotを割り当てます。
具体的には、ここではサイズ指定はないので、単に総容量/500GBの数のディレクトリを用意しているだけです。
1
2
3
4
5
6
7
8
9
10
11
| cd /vtapes/fs
cd 00
mkdir 0 1
cd 01
mkdir 0 1
...
cd /vtapes/slots
ln -s ../fs/00/0 slot1
ln -s ../fs/00/1 slot2
ln -s ../fs/01/0 slot3
ln -s ../fs/01/1 slot4
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| /vtapes/slots# ls -l
合計 16
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:08 slot1 -> ../fs/00/0
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:08 slot2 -> ../fs/00/1
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:08 slot3 -> ../fs/01/0
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:08 slot4 -> ../fs/01/1
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:08 slot5 -> ../fs/02/0
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:08 slot6 -> ../fs/02/1
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:08 slot7 -> ../fs/03/0
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:09 slot8 -> ../fs/03/1
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:09 slot9 -> ../fs/04/0
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:09 slot10 -> ../fs/04/1
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:09 slot11 -> ../fs/04/2
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:09 slot12 -> ../fs/04/3
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:09 slot13 -> ../fs/05/0
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:09 slot14 -> ../fs/05/1
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:09 slot15 -> ../fs/05/2
lrwxrwxrwx 1 amandabackup disk 10 2010-12-24 12:09 slot16 -> ../fs/05/3
|
ラベル名設定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #!/bin/sh
max=16
i=1
while [ $i -le $max -a $i -le 9]
do
cd slot$i
amlabel DailySet1 DailySet1-0$i slot $i
cd ..
i=`expr $i + 1`
done
i=10
while [ $i -le $max ]
do
cd slot$i
amlabel DailySet1 DailySet1-$i slot $i
cd ..
i=`expr $i + 1`
done
|
最近のAmandaでは、これでchg-diskの設定が終わります。
2.5以前だともう少し手間がかかります。
WindowsClient
Windowsクライアント側設定
ZWC-Community-3.1.3-64bit.zip(32bitの場合は、ZWC-Community-3.1.3-32bit.zip
)をインストールします。
特に必要な設定はありません。
Amandaサーバ側設定
/etc/amanda/DailySet1/amanda.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 664a674,687
> define dumptype zwc-normal {
> global
> auth "bsdtcp"
> program "DUMP"
> }
>
> define dumptype zwc-compress {
> global
> auth "bsdtcp"
> maxdumps 1
> compress client fast
> program "DUMP"
> }
>
|
windowsクライアント用の設定を追加します。
authは"bsdtcp"のみ使えます。sshは使えません。
/etc/amanda/DailySet1/disklist
1
| Windowsホスト名(FQDN) "c:/folder" zwc-compress
|
Apendix
スケジュール
Amandaにいくつかのヒント情報を与えると、Amandaのバックアップのアルゴリズムによって、フルバックアップや差分バックアップのスケジューリングをしてくれます。
ユーザーが細かく指定しなくても、システムが良いようにしてくれるらしいです。
dumpcycle フルバックアップの周期。0で毎回(毎日)。最長でもこの周期でフルバックアップが取られます。
runspercycle dumpcyleの期間内で何回amdumpするか。0でdumpcylceと同じ値になります。
tapecycle 使えるテープ数。tapecycle-1ボリュームを書くまで上書きしません。
runtapes 1回の実行で使うテープの上限
例)1ヶ月に1回はフルバックアップを取って、あとは毎週バックアップを取る場合。
dumpcycle 4week
runspercycle 4
runspercycleがtapecycleよりも多いと、amdump時に警告が出ますが、実際に問題が無ければ大丈夫です。flushの設定を変えていると、1サイクルあたり1テープも使いません。
WARNING planner tapecycle (16) <= runspercycle (28)
テープの利用効率が悪すぎる
フルバックアップでテープを占有するのは構いませんが、差分を個別ボリュームにされると困ります。
http://wiki.zmanda.com/index.php/FAQ:Why_does_Amanda_not_append_to_a_tape%3F
に回答があり、
1つのテープにまとめると危ないから、別々にしている
ということらしいです。
1つにまとめる方法は、2.6以降ならHoldingDiskに溜め込んでおいて1本のテープ分をまとめて書き出せ、ということらしいです。
flush-threshold-dumped 100
flush-threshold-scheduled 100
taperflush 100
autoflush yes
が指定オプションです。
autoflushは、plannerで解釈されるオプションで、yesの場合は、新しいdumpの実行前にplannerがHoldingDiskをflushします。
flush-threshold-dumped,flush-threshold-scheduled,taperflush
は、driverのオプションです。
flush-threshold-dumpedは、HoldingDiskの大きさが指定以上になったらFlushするオプションで、flush-threshold-scheduledは、今回のDumpでHoldingDisk以上になる予定ならFlushするというオプションらしいです。
taperflushは、Dump実行後に指定された以上の大きさになったらフラッシュするオプションらしいです。
flush-thresholdは、DLE単位で、taperflushはamdumpの実行単位?
データベース
curinfo /etc/amanda/DailySet/curinfo/HOST/DISK/info
curinfo
version: 0
command: 0
full-rate: 9583.098279
full-comp: 0.939487
incr-rate: 8178.254364 8367.600514 8330.927684
incr-comp: 0.994028 0.994028 0.235401
stats: 0 358593351 336893820 35155 1293170039
stats: 1 22947111 22956360 2807 1293498001
last_level: 1 4
history: 1 22947111 22956360 1293498001 2807
history: 1 22947111 22810079 1293411601 2726
history: 1 22947111 22810080 1293343382 2738
history: 1 10994 2588 1293238801 471
history: 0 358593351 336893820 1293170039 35155
ログ
/etc/amanda/DailySet1/以下に詳細なログが残ります。
amdump
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
| amdump: start at Mon Dec 27 10:00:01 JST 2010
amdump: datestamp 20101227
amdump: starttime 20101227100001
amdump: starttime-locale-independent 2010-12-27 10:00:01 JST
driver: pid 3588 executable /usr/libexec/amanda/driver version 3.2.0
planner: pid 3587 executable /usr/libexec/amanda/planner version 3.2.0
planner: build: VERSION="Amanda-3.2.0"
planner: BUILT_DATE="Mon Oct 18 09:20:05 PDT 2010" BUILT_MACH=""
planner: BUILT_REV="3545" BUILT_BRANCH="3_2_0"
planner: CC="i486-linux-gnu-gcc"
planner: paths: bindir="/usr/bin" sbindir="/usr/sbin"
planner: libexecdir="/usr/libexec"
planner: amlibexecdir="/usr/libexec/amanda" mandir="/usr/share/man"
planner: AMANDA_TMPDIR="/tmp/amanda"
planner: AMANDA_DBGDIR="/var/log/amanda" CONFIG_DIR="/etc/amanda"
planner: DEV_PREFIX="/dev/" RDEV_PREFIX="/dev/r"
planner: DUMP="/sbin/dump" RESTORE="/sbin/restore" VDUMP=UNDEF
planner: VRESTORE=UNDEF XFSDUMP="/sbin/xfsdump"
planner: XFSRESTORE="/sbin/xfsrestore" VXDUMP=UNDEF VXRESTORE=UNDEF
planner: SAMBA_CLIENT="/usr/bin/smbclient" GNUTAR="/bin/tar"
planner: COMPRESS_PATH="/bin/gzip" UNCOMPRESS_PATH="/bin/gzip"
planner: LPRCMD=UNDEF MAILER=UNDEF
planner: listed_incr_dir="/var/lib/amanda/gnutar-lists"
planner: defs: DEFAULT_SERVER="localhost" DEFAULT_CONFIG="DailySet1"
planner: DEFAULT_TAPE_SERVER="localhost" DEFAULT_TAPE_DEVICE=""
planner: NEED_STRSTR AMFLOCK_POSIX AMFLOCK_FLOCK AMFLOCK_LOCKF
planner: AMFLOCK_LNLOCK SETPGRP_VOID ASSERTIONS AMANDA_DEBUG_DAYS=4
planner: BSD_SECURITY USE_AMANDAHOSTS CLIENT_LOGIN="amandabackup"
planner: CHECK_USERID HAVE_GZIP COMPRESS_SUFFIX=".gz"
planner: COMPRESS_FAST_OPT="--fast" COMPRESS_BEST_OPT="--best"
planner: UNCOMPRESS_OPT="-dc"
READING CONF INFO...
planner: timestamp 20101227100001
planner: tape_length is set from tape length (524288000 KB) * runtapes (1)\
== 524288000 KB
planner: time 0.000: startup took 0.000 secs
SENDING FLUSHES...
driver: tape size 524288000
driver: adding holding disk 0 dir /vtapes/dumps size 524288000 chunksize\
1048576
reserving 524288000 out of 524288000 for degraded-mode dumps
FLUSH amanda.domain //winpc/data 20101224145359 0\
/vtapes/dumps/20101224145359/amanda.domain.__winpc_data.0
FLUSH amanda.domain //winpc/data 20101225100001 1\
/vtapes/dumps/20101225100001/amanda.domain.__winpc_data.1
FLUSH amanda.domain //winpc/data 20101226150302 1\
/vtapes/dumps/20101226150302/amanda.domain.__winpc_data.1
ENDFLUSH
SETTING UP FOR ESTIMATES...
planner: time 0.024: setting up estimates for\
amanda.domain://winpc/data
setup_estimate: amanda.domain://winpc/data:\
command 0, options: none last_level 1 next_level0 25\
level_days 2 getting estimates 0 (-3) 1 (-3) -1 (-3)
planner: time 0.024: setting up estimates took 0.000 secs
GETTING ESTIMATES...
dumper: pid 3590 executable dumper0 version 3.2.0
driver: started dumper0 pid 3590
driver: send-cmd time 0.071 to dumper0: START 20101227100001
driver: started dumper1 pid 3594
driver: send-cmd time 0.071 to dumper1: START 20101227100001
driver: started dumper2 pid 3595
driver: send-cmd time 0.071 to dumper2: START 20101227100001
dumper: pid 3595 executable dumper2 version 3.2.0
dumper: pid 3594 executable dumper1 version 3.2.0
dumper: pid 3596 executable dumper3 version 3.2.0
driver: started dumper3 pid 3596
driver: send-cmd time 0.094 to dumper3: START 20101227100001
driver: send-cmd time 0.095 to taper: START-TAPER worker0 20101227100001
driver: start time 0.095 inparallel 4 bandwidth 8000 diskspace 524288000\
dir OBSOLETE datestamp 20101227100001 driver: drain-ends tapeq FIRST\
big-dumpers sssS
driver: state time 0.095 free kps: 8000 space: 524288000 taper:\
idle idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0\
driver-idle: not-idle
driver: interface-state time 0.095 if default: free 8000
driver: hdisk-state time 0.095 hdisk 0: free 524288000 dumpers 0
driver: state time 0.220 free kps: 8000 space: 524288000 taper: idle\
idle-dumpers: 4 qlen tapeq: 3 runq: 0 roomq: 0 wakeup: 0\
driver-idle: not-idle
driver: interface-state time 0.220 if default: free 8000
driver: hdisk-state time 0.220 hdisk 0: free 524288000 dumpers 0
driver: result time 0.220 from taper: TAPER-OK worker0
planner: time 5.070: got partial result for host amanda.domain\
disk //winpc/data: 0 -> -3K, 1 -> -3K, -1 -> -3K
planner: time 106.765: got partial result for host amanda.domain\
disk //winpc/data: 0 -> 381206917K, 1 -> -3K, -1 -> -3K
planner: time 139.018: got partial result for host amanda.domain\
disk //winpc/data: 0 -> 381206917K, 1 -> 22946652K, -1 -> -3K
planner: time 139.018: got result for host amanda.domain disk\
//winpc/data: 0 -> 381206917K, 1 -> 22946652K, -1 -> -3K
planner: time 139.018: getting estimates took 138.994 secs
FAILED QUEUE: empty
DONE QUEUE:
0: amanda.domain //winpc/data
ANALYZING ESTIMATES...
pondering amanda.domain://winpc/data... next_level0 25\
last_level 1 (not due for a full dump, picking an incr level)
pick: size 22946652 level 1 days 2 (thresh 76241383K, 1 days)
curr level 1 nsize 22946652 csize 15846434 total size 15846533\
total_lev0 0 balanced-lev0size 12790676
INITIAL SCHEDULE (size 15846533):
amanda.domain //winpc/data pri 1 lev 1 nsize 22946652\
csize 15846434
DELAYING DUMPS IF NEEDED, total_size 15846533, tape length 524288000\
mark 1
delay: Total size now 15846533.
PROMOTING DUMPS IF NEEDED, total_lev0 0, balanced_size 12790676...
planner: time 139.018: analysis took 0.000 secs
GENERATING SCHEDULE:
--------
DUMP amanda.domain ffffffff9efefbffffffffff01\
//winpc/data 20101227100001 1 1 2010:12:24:5:53:59 22946652\
15846434 3168 5001 "Skipping: a full is not planned, so can't dump\
in degraded mode"
--------
driver: flush size 0
chunker: pid 3602 executable chunker0 version 3.2.0
driver: started chunker0 pid 3602
driver: send-cmd time 139.048 to chunker0: START 20101227100001
driver: send-cmd time 139.048 to chunker0: PORT-WRITE 00-00001\
/vtapes/dumps/20101227100001/amanda.domain.__winpc_data.1\
amanda.domain ffffffff9efefbffffffffff01 //winpc/data 1\
2010:12:24:5:53:59 1048576 GNUTAR 15847008 |;auth=bsdtcp;compress-fast;\
index;
driver: result time 139.049 from chunker0: PORT 15278 127.0.0.1:15279
driver: send-cmd time 139.049 to dumper0: PORT-DUMP 00-00001 15278\
amanda.domain ffffffff9efefbffffffffff01 //winpc/data\
NODEVICE 1 2010:12:24:5:53:59 GNUTAR "" "" "" "" bsdtcp\
AMANDA 127.0.0.1:15279 |" <auth>bsdtcp</auth>\n\
<compress>FAST</compress>\n <record>YES</record>\n\
<index>YES</index>\n <datapath>AMANDA</datapath>\n"
driver: state time 139.049 free kps: 2999 space: 508440992\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 139.049 if default: free 2999
driver: hdisk-state time 139.049 hdisk 0: free 508440992 dumpers 1
driver: state time 2066.101 free kps: 2999 space: 508440992\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2066.101 if default: free 2999
driver: hdisk-state time 2066.101 hdisk 0: free 508440992 dumpers 1
driver: result time 2066.114 from chunker0: RQ-MORE-DISK 00-00001
driver: send-cmd time 2066.114 to chunker0: CONTINUE 00-00001\
/vtapes/dumps/20101227100001/amanda.domain.__winpc_data.1\
1048576 792352
driver: state time 2146.924 free kps: 2999 space: 507648640\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2146.924 if default: free 2999
driver: hdisk-state time 2146.924 hdisk 0: free 507648640 dumpers 1
driver: result time 2146.924 from chunker0: RQ-MORE-DISK 00-00001
driver: send-cmd time 2146.924 to chunker0: CONTINUE 00-00001\
/vtapes/dumps/20101227100001/amanda.domain.__winpc_data.1\
1048576 831968
driver: state time 2233.063 free kps: 2999 space: 506816672\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2233.063 if default: free 2999
driver: hdisk-state time 2233.063 hdisk 0: free 506816672 dumpers 1
driver: result time 2233.073 from chunker0: RQ-MORE-DISK 00-00001
driver: send-cmd time 2233.073 to chunker0: CONTINUE 00-00001\
/vtapes/dumps/20101227100001/amanda.domain.__winpc_data.1\
1048576 873568
driver: state time 2322.584 free kps: 2999 space: 505943104\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2322.584 if default: free 2999
driver: hdisk-state time 2322.584 hdisk 0: free 505943104 dumpers 1
driver: result time 2322.584 from chunker0: RQ-MORE-DISK 00-00001
driver: send-cmd time 2322.584 to chunker0: CONTINUE 00-00001\
/vtapes/dumps/20101227100001/amanda.domain.__winpc_data.1\
1048576 917248
driver: state time 2415.885 free kps: 2999 space: 505025856\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2415.885 if default: free 2999
driver: hdisk-state time 2415.885 hdisk 0: free 505025856 dumpers 1
driver: result time 2415.885 from chunker0: RQ-MORE-DISK 00-00001
driver: send-cmd time 2415.885 to chunker0: CONTINUE 00-00001\
/vtapes/dumps/20101227100001/amanda.domain.__winpc_data.1\
1048576 963104
driver: state time 2513.719 free kps: 2999 space: 504062752\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2513.719 if default: free 2999
driver: hdisk-state time 2513.719 hdisk 0: free 504062752 dumpers 1
driver: result time 2513.720 from chunker0: RQ-MORE-DISK 00-00001
driver: send-cmd time 2513.720 to chunker0: CONTINUE 00-00001\
/vtapes/dumps/20101227100001/amanda.domain.__winpc_data.1\
1048576 1011264
driver: state time 2616.649 free kps: 2999 space: 503051488\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2616.649 if default: free 2999
driver: hdisk-state time 2616.649 hdisk 0: free 503051488 dumpers 1
driver: result time 2616.650 from chunker0: RQ-MORE-DISK 00-00001
driver: send-cmd time 2616.650 to chunker0: CONTINUE 00-00001\
/vtapes/dumps/20101227100001/amanda.domain.__winpc_data.1\
1048576 1061856
driver: state time 2725.220 free kps: 2999 space: 501989632\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2725.220 if default: free 2999
driver: hdisk-state time 2725.220 hdisk 0: free 501989632 dumpers 1
driver: result time 2725.220 from chunker0: RQ-MORE-DISK 00-00001
driver: send-cmd time 2725.220 to chunker0: CONTINUE 00-00001\
/vtapes/dumps/20101227100001/amanda.domain.__winpc_data.1\
1048576 1114944
driver: state time 2865.360 free kps: 2999 space: 500874688\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2865.360 if default: free 2999
driver: hdisk-state time 2865.360 hdisk 0: free 500874688 dumpers 1
driver: result time 2865.360 from dumper0: DONE 00-00001 22947111\
22810079 2726 "[sec 2726.267 kb 22810079 kps 8366.8 orig-kb 22947111]"
driver: finished-cmd time 2865.360 dumper0 dumped\
amanda.domain://winpc/data
driver: send-cmd time 2865.360 to chunker0: DONE 00-00001
driver: state time 2865.360 free kps: 2999 space: 500874688\
taper: idle idle-dumpers: 3 qlen tapeq: 3 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2865.360 if default: free 2999
driver: hdisk-state time 2865.360 hdisk 0: free 500874688 dumpers 1
driver: result time 2865.360 from chunker0: DONE 00-00001\
22810079 "[sec 2721.178 kb 22810079 kps 8382.7]"
driver: finished-cmd time 2865.360 chunker0 chunked\
amanda.domain://winpc/data
driver: state time 2865.633 free kps: 8000 space: 501477217\
taper: idle idle-dumpers: 4 qlen tapeq: 4 runq: 0 roomq: 0\
wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 2865.633 if default: free 8000
driver: hdisk-state time 2865.633 hdisk 0: free 501477217 dumpers 0
driver: QUITTING time 2865.633 telling children to quit
driver: send-cmd time 2865.633 to dumper0: QUIT ""
driver: send-cmd time 2865.633 to dumper1: QUIT ""
driver: send-cmd time 2865.633 to dumper2: QUIT ""
driver: send-cmd time 2865.633 to dumper3: QUIT ""
driver: send-cmd time 2865.633 to taper: QUIT
driver: FINISHED time 2869.669
amdump: end at Mon Dec 27 10:47:51 JST 2010
|
メモ
適当に使えば、適切に動くらしいですが、気になるのでソースを見ます。
amdumpは、Perlスクリプトでした。
そこから、Planner(これはC)が呼ばれます。planner.cを見れば、だいたいわかりそうです。
Plannerは、amdumpから呼ばれて、Driver(デバイスドライバではありません)との間に入って、コンフィグファイルや今までの統計情報から今回のバックアップで行うべきバックアッププランを決定するプログラムです。
最終的に1DLEあたり1行のコマンドを発行します。
スケジューリングは、
- Dumpレベルの事前計算
- クライアントからDumpサイズの予想を取得
- 解析
という段階を経て決定します。
DUMP Strategyは、
- SKIP dumpしない
- STANDARD 0 1111 222 ...
- NOFULL 1 1 1 ...
- NOINC 0 0 0...
- 4 0 1 2 3 4 5 6 7 8...
- 5 0 1 1 1 1 1 1...
- HANOI
- INCRONLY 0 1 1 2 2 FORCE0 1 1
だそうです。追ってると、
amadmin <config-name> disklist
でストラテジを含む disk_tの中身がコマンドラインで見えことに気づいた。
結構便利そうです。
デフォルトは、STANDARDで、明示的に指定しなければ変わらないようです。
経験的にこの手のパラメータは素直に標準で使ったほうが地雷を踏みません。
DS_HANOIとか検索してもPlannerでは使ってないので、多分指定しても思うように動かないと思います。
以下、STANDARDの場合。
次回level0(FULL)は、dumpcycle後
今回のlevel0が本来よりも遅れていたら、その分次回は早く来る
runspercycleはbalancedsizeの計算に使われる。
balanced_size = level0size / runs_per_cycle
amdumpのログ
1
2
3
4
| amdump: start at Wed Dec 15 10:00:01 JST 2010
amdump: datestamp 20101215
amdump: starttime 20101215100001
amdump: starttime-locale-independent 2010-12-15 10:00:01 JS
|
開始時刻
1
2
3
4
5
| driver: pid 3045 executable /usr/libexec/amanda/driver version 3.2.0
planner: pid 3044 executable /usr/libexec/amanda/planner version 3.2.0
planner: build: VERSION="Amanda-3.2.0"
中略
planner: UNCOMPRESS_OPT="-dc
|
Amandaのビルド情報、パス、デフォルト値
1
2
3
4
| READING CONF INFO...
planner: timestamp 20101215100001
planner: tape_length is set from tape length (1048576000 KB) * runtapes (1) == 1048576000 KB
planner: time 0.000: startup took 0.000 sec
|
コンフィグファイルの読み込み
1
2
| SENDING FLUSHES...
ENDFLUS
|
必要ならここでHoldingDiskをフラッシュします。
1
1
2
3
4
5
6
| SETTING UP FOR ESTIMATES...
planner: time 0.000: setting up estimates for amsrv.example://winclient/data_safe
setup_estimate: amsrv.example://winclient/data_safe: command 0, options:
none last_level 0 next_level0 27 level_days 0 getting estimates 0 (-3)
1 (-3) -1 (-3)
planner: time 0.021: setting up estimates took 0.020 sec
|
予測前の事前のパラメータ設定。
last_level 前回のダンプレベル
next_level0 次のleven0ダンプまでの予定日数
estimates レベル毎の予想サイズ
実際にドライバに計算させます。
2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| driver: tape size 1048576000
driver: adding holding disk 0 dir /vtapes/dumps size 891641856 chunksize 1048576
reserving 891641856 out of 891641856 for degraded-mode dumps
driver: started dumper0 pid 3050
driver: send-cmd time 0.389 to dumper0: START 20101215100001
中略
driver: send-cmd time 0.389 to dumper3: START 20101215100001
driver: send-cmd time 0.389 to taper: START-TAPER worker0 20101215100001
driver: start time 0.389 inparallel 4 bandwidth 8000 diskspace 891641856 dir
OBSOLETE datestamp 20101215100001 driver: drain-ends tapeq FIRST big-dumpers sssS
driver: state time 0.389 free kps: 8000 space: 891641856 taper: idle
idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: not-idle
driver: interface-state time 0.389 if default: free 8000
driver: hdisk-state time 0.389 hdisk 0: free 891641856 dumpers 0
中略
driver: state time 0.705 free kps: 8000 space: 891641856 taper: idle
idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: not-idle
driver: interface-state time 0.705 if default: free 8000
driver: hdisk-state time 0.705 hdisk 0: free 891641856 dumpers 0
driver: result time 0.705 from taper: TAPER-OK worker0
planner: time 5.138: got partial result for host amsrv.example disk
//winclient/data_safe: 0 -> -3K, 1 -> -3K, -1 -> -3K
planner: time 118.176: got partial result for host amsrv.example disk
//winclient/data_safe: 0 -> 323209323K, 1 -> -3K, -1 -> -3K
planner: time 147.144: got partial result for host amsrv.example disk
//winclient/data_safe: 0 -> 323209323K, 1 -> 788475K, -1 -> -3K
planner: time 147.144: got result for host amsrv.example disk
//winclient/data_safe: 0 -> 323209323K, 1 -> 788475K, -1 -> -3K
planner: time 147.144: getting estimates took 147.123 secs
FAILED QUEUE: empty
DONE QUEUE:
0: amsrv.example //winclient/data_safe
ANALYZING ESTIMATES...
pondering amsrv.example://winclient/data_safe... next_level0 27 last_level 0
(not due for a full dump, picking an incr level)
picklev: last night 0, so tonight level 1
curr level 1 nsize 788475 csize 394237 total size 394336 total_lev0 0
|
balanced-lev0size 301739497
nsize ネイティブサイズ
csize 圧縮後サイズ
3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
| INITIAL SCHEDULE (size 394336):
amsrv.example //winclient/data_safe pri 1 lev 1 nsize 788475 csize 394237
DELAYING DUMPS IF NEEDED, total_size 394336, tape length 1048576000 mark 1
delay: Total size now 394336.
PROMOTING DUMPS IF NEEDED, total_lev0 0, balanced_size 301739497...
planner: time 147.145: analysis took 0.000 secs
GENERATING SCHEDULE:
--------
DUMP amsrv.example ffffffff9efefbffffffffff01 //winclient/data_safe
20101215100001 1 1 2010:12:13:16:5:10 788475 394237 384 1024
"Skipping: a full is not planned, so can't dump in degraded mode"
--------
driver: flush size 0
driver: send-cmd time 147.147 to taper: PORT-WRITE worker0 00-00001
amsrv.example //winclient/data_safe 1 20101215100001 "" "" "" "" "" "" "" "" AMANDA
driver: state time 147.147 free kps: 6976 space: 891641856 taper: writing
idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 147.147 if default: free 6976
driver: hdisk-state time 147.147 hdisk 0: free 891641856 dumpers 0
driver: state time 147.148 free kps: 6976 space: 891641856 taper: writing
idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 147.148 if default: free 6976
driver: hdisk-state time 147.148 hdisk 0: free 891641856 dumpers 0
driver: result time 147.148 from taper: PORT worker0 00-00001 49344 "127.0.0.1:48542"
driver: send-cmd time 147.148 to dumper0: PORT-DUMP 00-00001 49344
amsrv.example ffffffff9efefbffffffffff01 //winclient/data_safe NODEVICE 1
2010:12:13:16:5:10 GNUTAR "" "" "" "" bsdtcp AMANDA 127.0.0.1:48542 |"
<auth>bsdtcp</auth>\n <compress>FAST</compress>\n <record>YES</record>\n
<index>YES</index>\n <datapath>AMANDA</datapath>\n"
taper: status file amsrv.example //winclient/data_safe:/tmp/amanda/taper_status_file_9ahh8h
driver: state time 147.172 free kps: 6976 space: 891641856 taper: writing
idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 147.172 if default: free 6976
driver: hdisk-state time 147.172 hdisk 0: free 891641856 dumpers 0
driver: result time 147.172 from taper: REQUEST-NEW-TAPE 00-00001
driver: send-cmd time 147.172 to taper: START-SCAN worker0 00-00001
driver: send-cmd time 147.172 to taper: NEW-TAPE worker0 00-00001
taper: wrote label 'DailySet1-02'
driver: state time 147.189 free kps: 6976 space: 891641856 taper: writing
idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 147.189 if default: free 6976
driver: hdisk-state time 147.189 hdisk 0: free 891641856 dumpers 0
driver: result time 147.190 from taper: NEW-TAPE 00-00001 DailySet1-02
driver: state time 514.354 free kps: 6976 space: 891641856 taper: writing
idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 514.354 if default: free 6976
driver: hdisk-state time 514.354 hdisk 0: free 891641856 dumpers 0
driver: result time 514.354 from taper: PARTDONE 00-00001 DailySet1-02 1
193912 "[sec 367.162942 kb 193912 kps 528.136088]"
driver: state time 514.355 free kps: 6976 space: 891641856 taper: writing
idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 514.355 if default: free 6976
driver: hdisk-state time 514.355 hdisk 0: free 891641856 dumpers 0
driver: result time 514.355 from taper: DUMPER-STATUS 00-00001
driver: state time 519.371 free kps: 6976 space: 891641856 taper: writing
idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 519.371 if default: free 6976
driver: hdisk-state time 519.371 hdisk 0: free 891641856 dumpers 0
driver: result time 519.371 from dumper0: DONE 00-00001 789481 193913 372
"[sec 372.201 kb 193913 kps 521.0 orig-kb 789481]"
driver: finished-cmd time 519.371 dumper0 dumped amsrv.example://winclient/data_safe
driver: send-cmd time 519.371 to taper: DONE worker0 00-00001 789481
driver: state time 519.372 free kps: 6976 space: 891641856 taper: writing
idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 519.372 if default: free 6976
driver: hdisk-state time 519.372 hdisk 0: free 891641856 dumpers 0
driver: result time 519.372 from taper: DONE 00-00001 INPUT-GOOD TAPE-GOOD
"[sec 367.000000 kb 193912 kps 528.370572 orig-kb 789481]" "" ""
driver: finished-cmd time 519.372 taper wrote amsrv.example://winclient/data_safe
driver: state time 519.373 free kps: 8000 space: 891641856 taper: idle
idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
driver: interface-state time 519.373 if default: free 8000
driver: hdisk-state time 519.373 hdisk 0: free 891641856 dumpers 0
driver: QUITTING time 519.373 telling children to quit
driver: send-cmd time 519.373 to dumper0: QUIT ""
driver: send-cmd time 519.373 to dumper1: QUIT ""
driver: send-cmd time 519.373 to dumper2: QUIT ""
driver: send-cmd time 519.373 to dumper3: QUIT ""
driver: send-cmd time 519.373 to taper: QUIT
driver: FINISHED time 520.374
amdump: end at Wed Dec 15 10:08:42 JST 201
|
autoflush
holdingdisk
Counter: 1438,
today: 1,
yesterday: 1