amandaを使用した...
TRANSCRIPT
バックアップとは • 定期的にデータを作成・保管して、 トラブル発生時にすぐ復旧できるよう 備えること。 – 操作ミスによるデータの損失 – HDDの劣化による破損 – 地震や火災などの災害による物理破損
バックアップを取るには • 次の4点を決めておく(計画重要)
1. バックアップ対象データを決める 2. バックアップメディアを決める 3. バックアップソフトを決める 4. バックアップの取り方とサイクルを決める
• 気合いをためる – 中途半端な気分で取りかかると途中で面倒になる。気合いをためて一気にやるべし。
対象データ • どれをバックアップするか
– 設定ファイル – 文書や画像など普通のデータ
• サイズとファイル数(メディアに影響) – 小さいファイルがたくさん – 大きいファイルが数個
• ファイルの更新量(サイクルに影響) – 更新頻度が高いDBデータ – あまり更新されないHTMLファイル・画像
バックアップメディア • バックアップメディア
– CD/DVD(安価) • HDDに負けつつある?
– ハードディスク(安価) • 1TBが7000円台、1.5TBが1万円台
– USBメモリ, SSD(比較的安価) • 書き換え寿命とか心配?
– テープ(比較的高価) • DDS: 容量少なめ・遅い • Ultrium: 大容量・高速
バックアップソフトウェア • Windows: 標準のバックアップ • Mac: Time Machine • Linux: tar(?), Amanda, Bacula • Acronics True Imageなどの市販製品 • 手動でコピーする方法も
バックアップの取り方とサイクル • 取り方
– フルバックアップ ……毎回すべてのデータをバックアップ
– 差分バックアップ ……最後のフルバックアップ以降に変更され たデータをバックアップ
– 増分バックアップ ……前回のバックアップ以降に変更された データをバックアップ
バックアップの取り方とサイクル • サイクル
– 毎日フルバックアップ – 週1回フルバックアップ+差分バックアップ – 週1回フルバックアップ+増分バックアップ
フルバックアップ 差分バックアップ 増分バックアップ
1回のバックアップ時間
長い 短い 短い
リストアの手間 (テープ入れ替え
とか) 少ない 普通 多い
Amandaについて • The Advanced Maryland Automatic
Network Disk Archiver の略。 • メリーランド大学で開発されたパブリックドメインのバックアップユーティリティ
• Unix/Mac OS X/Linux/Windowsで利用 可能
• 2008年12月現在の最新版は2.6.0p2 • http://www.amanda.org/
Amandaの特徴 • 複数マシンのデータを1台のバックアップドライブでバックアップする – クライアントソフトがネットワーク経由で転送 – 1台のみでの利用も、もちろん可能
バックアップ 対象のマシン
バックアップ サーバー
Amandaの特徴 • テープバックアップに最適化
– テープチェンジャー対応 – HDDなどにもバックアップ可能
• 保持ディスク機能 – ネットワーク経由で転送されたデータを一時的に格納
– テープドライブに問題があった場合は保持ディスクに記録される
Amandaのデメリット • インターネット上では日本語資料が少ない
– 設定に一苦労 – まだ機能を使いこなせていない・理解していない部分も…
– ただし、O’REILLYの「Unixバックアップ&リカバリー」で詳しく解説されている(¥6,600)。
社内サーバーのそれまで • 初代サーバー (自作機)
– 仮想化されていないただのファイルサーバー
• 2代目サーバー (HP ML110) – Xenで仮想化
• 従来のファイルサーバーと、新規の社内Webサーバーが仮想マシンで稼働。
• どちらもRAIDを組むだけ、 バックアップは無し。危険!
現在の社内サーバー • 3代目 (HP ML350)
– 業務拡大によるサーバーの高性能化 – HDDの大容量化(共有に1TB-HDDを使用) – RAID設定 – バックアップを意識してテープドライブ装備
• Ultrium-3で高速・大容量!(HP StorageWorks 960) • しかし、バックアップ設定が面倒で放置
社内サーバーの構成 • OS: CentOS 5.2 + Xen • 仮想マシンが6台稼働
– ファイルサーバー – 社内Webサーバー – svnサーバー – vpnサーバー – pxeサーバー – SUSEアップデート サーバー
仮想マシンのバックアップ • 方法は2つ
– ディスクイメージごとバックアップ – 仮想マシン内のファイルをネットワークで吸い出してバックアップ
• Amandaで行うのは後者 – 前者も可能だが、仮想マシンをシャットダウンするか、ポーズする必要がある
– 仮想マシンを一時停止できるのであれば、前者の方がリストア時に楽
バックアップの計画 • バックアップ対象
– Dom0(Xen管理OS)の/etc以下 – ファイルサーバーの共有部分と、/etc – 社内WebサーバーのWebデータ – (その他のサーバーも最近バックアップを開始)
• バックアップメディア – Ultrium-3テープを用意
バックアップの計画 • バックアップソフト
– (有名らしいので)Amandaを採用
• バックアップサイクル – 平日(月~金)の25:00にフルバックアップ – 土日はバックアップしない
• 会社がお休みのため
Amanda導入の流れ • インストール • 設定
– サーバー(バックアップ処理を実行するマシン) – クライアント(バックアップ対象のマシン)
• テープの用意 • 設定確認 • バックアップ実行
サーバーのインストール インストール先: Dom0 • yumでインストール
– # yum –y install amanda-server
• xinetdの設定(disable=noに変更) – /etc/xinetd.d/amanda (Amandaサーバ) – /etc/xinetd.d/amandaidx (リストア時に使用) – /etc/xinetd.d/amidxtape (リストア時に使用)
• xinetdを再起動 – # service xinetd restart
クライアントのインストール インストール先: Dom0, ファイルサーバー, Webサーバー • yumでインストール
– # yum –y install amanda-client • xinetdの設定(disable=noに変更)
– /etc/xinetd.d/amanda • xinetdを再起動
– # service xinetd restart
/etc/hostsの設定 • Amamdaではホスト名を使用して通信する • 弊社での設定例 # Dom0 192.168.100.8 orange.office.begi.net orange
# File Server 192.168.100.10 sebone3.office.begi.net sebone3
# Web Server 192.168.100.13 ginjiro.office.begi.net ginjiro
Amandaの各種設定の前に • Amandaの各設定ファイルは、amandaユーザーで編集する – # su amanda
• 設定を行うのは次の2つ – /var/lib/amanda/.amandahosts – /etc/amanda/(バックアップ設定名)/各種設定ファイル
amandahostsの設定 • /var/lib/amanda/.amandahostsを編集
– FQDN名とバックアップユーザ名を指定
• サーバー側(バックアップ対象ホストを記述)
• 各クライアント側(サーバーのホストを記述)
orange.office.begi.net amanda # バックアップ用 orange.office.begi.net root # リストア用 sebone3.office.begi.net amanda sebone3.office.begi.net root ginjiro.office.begi.net amanda ginjiro.office.begi.net root
orange.office.begi.net amanda
バックアップの設定準備 • /etc/amanda内は1ディレクトリ1バックアッププロジェクト
• DailySet1がサンプルプロジェクト – このディレクトリをコピーして使うと良い – ※今回はこのまま利用
• DailySet1ディレクトリに入りtapelistファイルを作成 – $ cd DailySet1 – $ touch tapelist; chmod 660 tapelist
amanda.confの設定(1/7) • バックアップに関する基本的な設定を行う
– バックアップのサイクル – テープドライブのパス – テープドライブの種類 – ホールドディスク – バックアップ対象ディレクトリの設定
• サンプルは設定項目が多いが、 大体はデフォルト設定のままで良い
amanda.confの設定(2/7)
• org “DailySet1” – 設定名。ディレクトリ名と同じ名前にする。
• mailto “[email protected]” – 通知メールの送信先を指定する。
• dumpuser “amanda” – バックアップユーザーを指定。変更しない
• netusage 100000Kbps – バックアップ時の転送速度の指定。誰もいない夜間に バックアップするので、帯域は適当に大きくとった。
org ”DailySet1” # your organization name for reports mailto "[email protected]” # space separated list of operators .. dumpuser "amanda" # the user to run dumps under
netusage 100000 Kbps # maximum net bandwidth for Amanda, ...
amanda.confの設定(3/7) • 月~金にフルバックアップする
• dumpcycle 0 weeks – 1サイクルの期間の指定
• runspercycle 0 days – 1サイクルあたりにバックアップを実行する回数の指定
• tapecycle 5tapes – 1サイクルあたりに使用するテープの本数
dumpcycle 0 weeks # the number of days in the normal ... runspercycle 0 days # the number of amdump runs in dumpcycle.. tapecycle 5 tapes # the number of tapes in rotation...
バックアップサイクル • 差分バックアップも可能
– フル・差分の間隔はAmandaにお任せになる – バックアップ量に応じて判断してくれる
• 1週間を1サイクルとして、1サイクル中4日バックアップを取る
• テープはdumpcycle*runspercycle+1本必要
dumpcycle 1 weeks # the number of days in the normal ... runspercycle 4 days # the number of amdump runs in dumpcycle.. tapecycle 5 tapes # the number of tapes in rotation...
amanda.confの設定(4/7)
• tapetype: テープドライブの種類 – 次のページでドライブの設定を探して 設定ファイルの最後の方に書き加える http://wiki.zmanda.com/index.php/Tapetype_definitions
• labelstr: テープの命名規則 – 正規表現が使用可能。 – DailySet1-01, DailySet1-02 ...のようになる。
tapetype HP-Ultrium-960 # what kind of tape it is ... labelstr ”^DailySet1-[0-9][0-9]*$" # label constraint regex: ...
amanda.confの設定(5/7)
• 保持ディスクの設定 – 各クライアントから集めたダンプデータを置く場所
• directory – /dunpsを作成して250GBのAmanda用ディスクにマウント – /dumps/amandaディレクトリを作成(所有者をamandaユーザーに)
• use: 200GBを確保。「-50000 Mb」を指定しても大体同じ • chunksize: 2GB以上のファイルを扱えないOSでは2GBに設定する。そうでなければ大きめにとる。
holdingdisk hd1 { comment “main holding disk” # コメント directory “/dumps/amanda” # 保持ディスクの場所 use 200000 Mb # 保持ディスクとして利用できる容量 chunksize 100Gb # チャンクサイズ }
amanda.confの設定(6/7)
• infofile – バックアップのデータベースを格納するディレクトリ。 – 特に変更しない。ディレクトリを作成する必要はない。
• logdir – ログを格納するディレクトリ。
• indexdir – インデックスを格納するディレクトリ – 特に変更しない。ディレクトリを作成する必要はない。
infofile "/etc/amanda/DailySet1/curinfo" # database DIRECTORY logdir "/etc/amanda/DailySet1" # log directory indexdir "/etc/amanda/DailySet1/index" # index directory
amanda.confの設定(7/7)
• バックアップ方法(dumptype)の設定 – define dumptype global設定のindex yesのコメントアウトを削除する(リストア時に必要になる)
• グローバル設定の下に、それぞれのバックアップ方法の設定が記述されている – この中にある設定を、disklistファイルで指定する。
define dumptype global { comment "Global definitions
(略) index yes # コメントアウトを外す (略)
}
disklistの設定 • バックアップを取る場所の指定 • バックアップ方法(dumptype)の指定 #書式 # <ホスト名> <パス> <dumptype>
# ファイルサーバー sebone3.office.begi.net /etc comp-user-tar # 設定ファイル sebone3.office.begi.net /home comp-user-tar-sebone # 共有部分 # 社内WebサーバーのWebデータ部分 ginjiro.office.begi.net /var/www/html comp-user-tar # Dom0の各種設定データ orange.office.begi.net /etc comp-user-tar
使用したdumptype(1/2) • comp-user-tar
• comp-user-tar-sebone (ファイル共有部分用)
define dumptype comp-user-tar { user-tar # user-tarの設定を読み込み compress client fast # クライアント側で高速圧縮をかける }
define dumptype comp-user-tar-sebone { user-tar compress client fast exclude “./diskimage” # LinuxなどのISOイメージを排除している }
使用したdumptype(2/2) • user-tar-compで読み込んだ設定 define dumptype user-tar { root-tar # root-tarの設定を読み込む comment "user partitions dumped with tar" priority medium # 優先度は中 }
define dumptype root-tar { global program “GNUTAR” # GNU TARを使用 comment "root partitions dumped with tar" compress none # 圧縮しない index # ? # exclude list “/etc/amanda/exclude.gtar” # 除外のサンプルらしい priority low # 優先度は低 }
テープの準備 • ラベルを書き込む
– $ amlabel –f <設定名> <ラベル名> – -fは強制でラベルを設定するという意味 – ラベル番号は1から始まる(0ではない)
$ amlabel -f DailySet1 DailySet1-01 changer: got exit: 0 str: 3 /dev/nst0 labeling tape in slot 3 (/dev/nst0): rewinding, reading label, not an amanda tape (Cannot allocate memory) rewinding, writing label DailySet1-01, checking label, done.
設定の確認 • amcheckコマンドを実行
– $ amcheck DailySet1
• エラーが無ければ準備完了 • エラーがあったら、設定を見直す
– hosts, .amandahostsの設定 – amanda.confの設定 – ファイヤーウォールが設定されていれば、ポート解放(10080/udp, 10082/tcp, 10083/tcp)
設定の確認(実行例) $ amcheck DailySet1 Amanda Tape Server Host Check ----------------------------- Holding disk /dumps/amanda: 227924984 KB disk space available, that's plenty slot 1: read label `DailySet1-01', date `X'
NOTE: skipping tape-writable test Tape DailySet1-01 label ok Server check took 0.277 seconds
Amanda Backup Client Hosts Check -------------------------------- Client check: 3 hosts checked in 0.051 seconds, 0 problems found
(brought to you by Amanda 2.5.0p2)
バックアップの実行 • amandaユーザーでamdumpコマンドを実行
– $ amdump DailySet1
• バックアップ中のステータスは、amstatusコマンドで確認可能 – $ amstatus DailySet1 – ダンプの進行状況などが確認できる
• バックアップが完了するとメールが送信される
バックアップ完了通知メール These dumps were to tape DailySet1-01. The next tape Amanda expects to use is: DailySet1-02.
STATISTICS: Total Full Incr. -------- -------- -------- Estimate Time (hrs:min) 0:00 Run Time (hrs:min) 1:38 Dump Time (hrs:min) 1:24 1:24 0:00 Output Size (meg) 44362.8 44362.8 0.0
- - - - - - - - - - - - - - - - - ( 略 ) - - - - - - - - - - - - - - - - - - DUMPER STATS TAPER STATS HOSTNAME DISK L ORIG-KB OUT-KB COMP% MMM:SS KB/s MMM:SS KB/s -------------------------- ------------------------------------- ------------- ginjiro.offi -r/www/html 0 24420 17696 72.5 0:07 2406.0 0:04 4998.7 orange.offic /etc 0 420 160 38.1 0:00 316.7 0:02 71.9 sebone3.offi /etc 0 104780 14560 13.9 0:11 1305.7 0:05 3125.4 sebone3.offi /home 0 52564872 45395264 86.4 83:23 9073.9 12:28 60690.1
(brought to you by Amanda version 2.5.0p2)
cronにジョブ登録 • /etc/amanda/crontab.sampleを参考にする • 今回の設定
– 月曜日~金曜日の17時にテープチェック • amcheck –mは、エラー時にメールを送信する
– 月曜日~金曜日の25時にバックアップ実行
• amandaユーザーで「crontab –e」コマンドを実行して、cron設定を記述する 0 17 * * 1-5 /usr/sbin/amcheck -m DailySet1 0 1 * * 2-6 /usr/sbin/amdump DailySet1
リストア • リストアするまでがバックアップです。
– 「家に着くまでが遠足です」 • おおよそ3種類のリストア方法
– Amandaのバックアップデータベースを利用 • amrecoverによるリストア • amrestoreによるリストア
– Amandaを利用しないリストア • ddコマンド
バックアップデータベース • 設定ファイルのディレクトリ下に配置される • データベースが壊れると、amandaのリストアコマンドが使えないらしい – ちょっと面倒
• データベースのバックアップも重要! – テープではなく別のサーバーなどにコピーする
• テープの場合、最新の1つ前のデータベースが バックアップされるため
amrecoverによるリストア • 対話式のリストアツール • バックアップデータベースを利用 • ファイル毎のリストアが可能 • リストアするデータの日付・パス、展開先を指定するだけ
• リストアに必要なテープを指示通りに入れると自動的にリストアしてくれる
amrecoverによるリストア • データをリストアしたいクライアント上の
rootユーザーでamrecoverコマンドを実行
– -s : バックアップサーバー – -t : テープドライブのあるサーバー
• 大体は-sで指定するサーバーと同じ – -C : 設定名
# amrecover ‒s orange ‒t orange ‒C DailySet1
amrecoverによるリストア演習 • 社内Webの画像をリストアしてみる
– 弊社相談役・旭山銀次郎のイラスト(絵:私) • とりあえずrmで削除
# ls /var/www/html/top.png top.png # rm -f /var/www/html/top.png # ls /var/www/html/top.png ls: /var/www/html/top.png: そのようなファイルやディレクトリはありません
amrecoverによるリストア演習 • Webサーバーの端末からamrecoverを実行
# amrecover -s orange -t orange -C DailySet1 AMRECOVER Version 2.5.0p2. Contacting server on orange ... 220 orange AMANDA index server (2.5.0p2) ready. 200 Access OK Setting restore date to today (2008-11-12) 200 Working date set to 2008-11-12. Scanning /dumps/amanda... 200 Config set to DailySet1. 200 Dump host set to ginjiro.office.begi.net. Trying disk / ... Trying disk rootfs ... Can't determine disk and mount point from $CWD '/root' amrecover>
amrecoverによるリストア演習 • バックアップされているディスクを確認して マウントする amrecover> listdisk ← ディスクの確認 200- List of disk for host ginjiro.office.begi.net 201- /var/www/html 200 List of disk for host ginjiro.office.begi.net amrecover> setdisk /var/www/html ← マウント 200 Disk set to /var/www/html. amrecover> ls ← バックアップ中の/var/www/htmlの一覧を表示 2008-11-12 wiki/ 2008-11-12 top.png ← リストアしたいファイル (略) 2008-11-12 . amrecover>
amrecoverによるリストア演習 • 対象のファイルをリストア対象に追加する
• データのリストア先を指定する
amrecover> add top.png Added /top.png amrecover>
amrecover> lpwd ← Local側でのpwdコマンドと同等 /root amrecover> lcd /var/www/html ← Local側でのcdコマンドと同等 amrecover>
amrecoverによるリストア演習 • リストアの実行
amrecover> extract
Extracting files using tape drive null: on host orange. The following tapes are needed: DailySet1-02
Restoring files into directory /var/www/html Continue [?/Y/n]? Y ← /var/www/htmlに展開して良いですか
Extracting files using tape drive null: on host orange. Load tape DailySet1-02 now Continue [?/Y/n/s/t]? Y ← DailySet1-02 をセットしてYを入力 ./top.png ← 展開された amrecover>
amrecoverによるリストア演習 • リストアの確認
• 大成功!
amrecover> exit 200 Good bye. # ls /var/www/html blog files index.php style.css top.png.orig enter.gif gewiki screenshot top.png wiki #
amrestoreによるリストア • ディスク単位のリストアツール
– disklistで指定したバックアップ対象ごと
• バックアップデータベースを利用
• 確認作業などはamandaユーザーで実行 • リストアはrootユーザーで実行
amrestoreによるリストア演習 • 現在のファイルサーバーのバックアップ状況を調べる -bash-3.2$ /usr/sbin/amadmin DailySet1 find Scanning /dumps/amanda... Scanning /dumps/amanda...
date host disk lv tape or file file part status 2008-11-06 sebone3.office.begi.net /etc 0 DailySet1-03 2 -- OK 2008-11-07 sebone3.office.begi.net /etc 0 DailySet1-04 2 -- OK 2008-11-08 sebone3.office.begi.net /etc 0 DailySet1-05 2 -- OK 2008-11-11 sebone3.office.begi.net /etc 0 DailySet1-01 3 -- OK:
(略) :
amrestoreによるリストア演習 • 11/06にバックアップしたファイルサーバーの/etcをリストアしてみる – /root/testを作業ディレクトリとした # amrestore /dev/nst0 sebone3 /etc ←amrestore テープドライブ ホスト名 パス amrestore: missing file header block amrestore: WARNING: not at start of tape, file numbers will be offset amrestore: 1: skipping orange.office.begi.net._etc_asterisk.20081106.0 amrestore: 2: restoring sebone3.office.begi.net._etc.20081106.0 amrestore: 3: skipping ginjiro.office.begi.net._var_www_html.20081106.0 amrestore: 4: skipping sebone3.office.begi.net._home.20081106.0 amrestore: 5: reached end of tape: date 20081106 # ls sebone3.office.begi.net._etc.20081106.0 ←リストア……された?
amrestoreによるリストア演習 • sebone3.office.begi.net._etc.20081106.0の正体はtarファイル
• 大成功!
# tar xvf sebone3.office.begi.net._etc.20081106.0 ←展開 ./ ./NetworkManager/ ./X11/ ./X11/applnk/ (略) # ls ←確認してみる DIR_COLORS hosts protocols DIR_COLORS.xterm hosts.allow quotagrpadmins (略)
Amandaを利用しないリストア • 障害などによってバックアップデータベースが壊れたときに覚えておくべき方法
• Amandaのテープフォーマットはシンプル – あえてそうなっている – 各イメージの先頭32KBにイメージの情報 – それ以降にイメージが格納されている
• mtコマンドとddコマンドでテープから取りだしが可能
Amandaを使わないリストア演習 • テープの中身のイメージ
• テープのヘッダを表示 # mt ‒f /dev/st0 rewind # dd if=/dev/nst0 bs=32k count=1 ←テープ先頭から32KB分読み込む AMANDA: TAPESTART DATE 20081106 TAPE DailySet1-03 014 1+0 records in 1+0 records out 32768 bytes (33 kB) copied, 0.081231 seconds, 403 kB/s # dd if=/dev/nst0 bs=32k ←よくわからないなにかを読み飛ばす
テープの ヘッダ(32KB)
よくわからないなにか
イメージ1のヘッダ(32KB)
イメージ1 イメージ2のヘッダ(32KB)
イメージ2 つづく……
Amandaを使わないリストア演習 • テープの中身のイメージ
• イメージ1のリストア # dd if=/dev/nst0 bs=32k count=1 ← ヘッダの取りだし AMANDA: FILE 20081106 orange.office.begi.net /etc lev 0 comp .gz program /bin/tar ← Dom0の/etcらしい To restore, position tape at start of file and run:
dd if=<tape> bs=32k skip=1 ¦ /bin/gzip -dc ¦ /bin/tar -f... ‒ (ddの出力結果略) # dd if=/dev/nst0 of=1106-orange-etc bs=32k ← イメージ1の取りだし # tar xf 1106-orange-etc # ls 1106-orange-etc host.conf quotatab DIR_COLORS hosts racoon
テープの ヘッダ(32KB)
よくわからないなにか
イメージ1のヘッダ(32KB)
イメージ1 イメージ2のヘッダ(32KB)
イメージ2 つづく……
運用中のトラブル対処 • テープの入れ替え忘れ
– テープチェック時にはき出される – 次のテープを入れてもはき出してしまう
• 恐らくテープチェンジャーの設定が違う
– サーバーにログインして、テープチェックプロセスをkillしなくてはいけなくなる、らしい。
– 予防策:テープチェック前に自前のテープチェックを実行→パトライト点灯・メール配信
• バックアップ担当不在時も安心
まとめ • Amandaの使い勝手
– 設定は若干難しい(というか面倒?) – 設定の山を越えれば、後は簡単
• バックアップ重要!! – データを失う辛さに比べたら バックアップの面倒さなんてちっぽけなもの
– 1週間ぐらいで洗脳される • バックアップジュウヨウ、バックアップジュウヨウ、バックアップジュウヨウ……
参考文献 • Unixバックアップ&リカバリ
(オライリージャパン) • amandaを使ってLTOにバックアップ
– http://www.ait.pref.akita.jp/~kurosawa/backup.html
• その他のページは、(個人の) はてなブックマークにいくつか登録してます – http://b.hatena.ne.jp/Akkiesoft/バックアップ/