FreeBSD初歩

テープドライブへのバックアップ&リストア

  • サーバトラブル等に備えた、丸ごとバックアップ
  • dumpを使ったリモートバックアップ
  • restoreを使ったリモート復元
2003/08/25
使用した環境
FreeBSD 4.8-RELEASE
DDS4ドライブ付きのパソコン(A)
 ⇒IPアドレス 192.168.0.2
バックアップをするパソコン(B)
 ⇒IPアドレス 192.168.0.3

1.テープドライブ(DDS4)装置のあるホストの準備

リモート操作ができるように設定をします。

  1. バックアップユーザの登録をします。(ここではユーザ名をdds4としています)
    # vipw

    と入力をして、最下段に下記の1行を追加します。
    dds4:*:888:5::0:0:dds4:/home/dds4:

    終わったら
    [Esc]:wq[Enter]
    で保存します。

  2. ユーザディレクトリを作成します。
    # mkdir /home/dds4

  3. リモートからパスワード無しでログインできるように設定をします。
    # vi /home/dds4/.rhosts

    ----------------------------------------------------
    192.168.0.3 root   ### バックアップしたいホストアドレス + root
    ----------------------------------------------------
    で、保存。

    # vi /etc/inetd.conf

    ----------------------------------------------------
    shell stream tcp nowait root /usr/libexec/rshd rshd
    ----------------------------------------------------
    上記の行を、有効(コメントアウトをはずす)にして保存。

    # killall -HUP inetd

  4. 準備完了。
    テープドライブにテープを入れておく。

    参考までに、テープドライブの操作コマンド
    # mt rewind 先頭まで巻き戻す
    # mt fsf 1 記憶したファイルシステムを1つ分早送り
    # mt bsf 1 記憶したファイルシステムを1つ分巻戻す
    # mt status 現在の状況を表示する
    # mt offline
    (EJECTボタンを押しても同じ)

    先頭まで巻戻してからオフラインにする

 

 

2.リモート端末(バックアップ元)からの操作 〜dumpを使ってバックアップ〜

当然ですが、上記で設定したテープドライブの付いているホストと
ネットワーク接続されている必要があります。
ここではテープドライブの付いているホスト(バックアップ先)を192.168.0.2
リモート端末(バックアップ元)を192.168.0.3としています。

dumpコマンドは通常
dump -オプション デバイス名 バックアップ元

という書式となりますが、リモートバックアップの場合には
デバイス名
ネットワークユーザ名@バックアップ先IPアドレス:バックアップ先デバイス名

となります。

# init 1; exit
シングルユーザーモードに移行する

# dump -0uaf dds4@192.168.0.2:/dev/nsa0 /
# dump -0uaf dds4@192.168.0.2:/dev/nsa0 /var
# dump -0uaf dds4@192.168.0.2:/dev/nsa0 /usr
# dump -0uaf dds4@192.168.0.2:/dev/sa0 /home
最後はnsa0では無くsa0(自動巻き戻しをする)

# exit
マルチユーザーモードに戻す

dumpオプション説明
0
レベル 0 でダンプします。つまり全ファイルをダンプします。
a
自動的にテープメディアの長さを決めようとします。
u
/etc/dumpdates を更新して、最後にバックアップをした日時を記録します。
f
どのテープデバイスを使うかを指定します。

※テープデバイス名がよくわからない場合には、dmesg を使用して調べます。

※シングルユーザーモードからマルチユーザーモードに戻すには
 exit[Enter]とタイプするか
 [Ctrl]+[D]を入力するか
 リブートします。

※/dev/nsa0 は読み書き後にテープ巻き戻しをしません。
 これに 対して、/dev/sa0 は読み書き後に、自動でテープを巻き戻します。
 dumpでは、自動で巻き戻されない方が都合が良いので/dev/nsa0を使います。

書き込みが終わったら確認をしましょう。
(結構良く失敗しています...)

# sh   (※1)shellで起動していれば不要 分からなければ入力する
# TAPE=dds4@192.168.0.2:/dev/nsa0; export TAPE
# restore -t
正常に書き込まれていれば、最初の / の内容がツラツラと表示されます
# restore -t
正常に書き込まれていれば、2番目の /var の内容がツラツラと表示されます
# restore -t
正常に書き込まれていれば、3番目の /usr の内容がツラツラと表示されます
# restore -t
正常に書き込まれていれば、4番目の /home の内容がツラツラと表示されます
# exit   (※1)を入れた場合

これとほぼ同じですが、下記は各コマンド完了後に、巻き戻しを行います。

# sh   (※1)shellで起動していれば不要 分からなければ入力する
# TAPE=dds4@192.168.0.2:/dev/sa0; export TAPE
# restore -ts 1
# restore -ts 2
# restore -ts 3
# restore -ts 4
# exit   (※1)を入れた場合

問題が無ければ、テープを取り出して大切に保存します。
これでバックアップは完了です。

restore と rrestore

restoreは、リモートの場合rrestoreを使うという文献がありますが
rrestorerestoreの別名らしいです。

日本語マニュアル 4.7-RELEASE
検索コマンド:
Tape is not a dump tape
というメッセージについて(私がこれで少し悩んだので...)
オプション -s で指定する数字は相対的なファイル数となります。
/dev/nsa0 を使用した場合、処理後に自動巻き戻しをしない為に
-s 2 を2回繰り返すと、テープの位置はファイル4個目の終わりとなります。
ここで、restoreコマンドを入力しても、テープには読み込むファイルが無い。

-s 2
-s 2
ooooooo
ooooooo
ooooooo
ooooooo
---------------〜

 

3.restore(復元)

これが必要になる時は、何らかのトラブルが発生した時のはずです。
パニック状態にならない為にも、常に訓練を!(笑)

テープドライブに書き込みを禁止にしたテープを入れる。
これ以外は、全てリモート端末側で行います。

必要なもの

  • バックアップを取った時と構成の変わらない機器
    ※HDD容量等は特に問題ありません。
  • FreeBSD 4.8-RELEASE のCD-ROM or 起動ディスク
  • fixit.flpフロッピーディスク

起動CD(又はフロッピーディスク)を入れて電源ON

sysinstall main Menu が表示されたら Configure に合わせて[Enter]
以下、Configuration Menu設定内容

Console KeymapをJapan106に変更
Networking Interfaces を選択 ⇒ HOST名とIPアドレス(192.168.0.3)を入力して[Enter]
Fdisk Dを押して全てのスライスを削除した後にCでスライス作成⇒[Enter][Enter]
Qを押して、Standardを選択して[Enter]
Label

Fdisk後で、空の状態のはずなので、パーティションを作成する。
(バックアップ時のパーティション容量を参考に)

【18GBのHDDの例】
C1G[Ente]FS選択のまま[Enter]/[Enter]
C512M(メモリーの2倍)[Enter]Swapを選択して[Enter]
C1G[Enter]FS選択のまま[Enter]/var[Enter]
C7G[Enter]FS選択のまま[Enter]/usr [Enter]
C[Enter] (残り全て) ⇒ FS選択のまま[Enter]/home[Enter]

w を押すと実行確認が表示されるのでYesに合わせて[Enter]
これでnewfsが完了。
qを押してConfiguration Menuに戻る

Fixit

Floppyに合わせて[Enter]
確認画面が表示されるので、fixit.flpフロッピーを入れてエンター
ブルーバックにメッセージボックスだけの表示が出たら
[Alt]+[F4] でshellに移行
(shellから抜けるにはexit[Enter]とタイプ)

/mnt/tmp ディレクトリを作成してrestoreの一時ファイル作成場所を
/tmp では無く /mnt/tmp に変更。
これをしないと /usr /home 等のrestore時に高確率でエラーが出る。

# mkdir /mnt/tmp
# TMPDIR=/mnt/tmp; export TMPDIR

# TAPE=dds4@192.168.0.2:/dev/sa0; export TAPE
# cd /mnt; restore -rvs 1
# cd /mnt/var; restore -rvs 2
# cd /mnt/usr; restore -rvs 3
# cd /mnt/home; restore -rvs 4

これで完了。
exitとタイプして、メニューに戻ったらフロッピーディスク・CD-ROMを抜く。
メニューを順にexitしていき、再起動で復帰!

おまけ 異なったデバイス名のHDDへ復元

RAID構成にしたり、IDEからSCSIへとHDDを交換した場合には
/etc/fstab の変更を、再起動の前にしておきます。

/etc/fstab は、3のrestore作業中は /mnt/etc/fstabとなっています

# vi /mnt/etc/fstab
-------------------------------------------------------------------
# Device Mountpoint FStype Options Dump Pass#
/dev/aacd0s1b none swap sw 0 0
/dev/aacd0s1a / ufs rw 1 1
/dev/aacd0s1g /home ufs rw 2 2
/dev/aacd0s1f /usr ufs rw 2 2
/dev/aacd0s1e /var ufs rw 2 2
/dev/acd0c /cdrom cd9660 ro,noauto 0 0
proc /proc procfs rw 0 0
-------------------------------------------------------------------

赤文字の部分は、バックアップ元のHDD構成となっているので
必要に応じて、新しいHDDのデバイスに変更します。
分からない場合には
# df
で、現在のパーティション構成が表示されます。


 

Copyright © 2003 sio All Rights Reserved.