linux システムバックアップリストア(ext2/ext3 dump restore)

linux ext2/ext3ファイルシステム使用時のシステムバックアップリストア方法
こちらにメンテナンスされた(最新版の)文章があります。リンク先をご覧ください。
■ 前提条件

  • レスキューCD(インストールCD)を利用する
  • バックアップイメージは他サーバーのNFSエクスポート領域に配置
  • ファイルシステムはext2またはext3を使用

■ バックアップ
ローカルディスクの全ファイルシステムをバックアップ

# sync #念のため
# dump -0f – <ファイルシステムデバイス> | gzip -c > /backup/<イメージ名>

パーティション構造、lvm構造とかも記録しておく

#fdisk -l
#df
#cat /etc/fstab
# pvdisplay
# lvdisplay

■ リストア
1.インストールCDからブート
起動パラメータは

linux rescue       (レスキューモード)

ネットワークはメニューで設定しない。
後ほどコマンドで設定

# ifconfig eth0 ipaddr 192.168.1.xxx netmask 255.255.255.0

ファイルシステムはマウントしない
インストール済みLINUXを/mnt/sysimageに・・・   → スキップする
シェル起動完了


※ディスク交換した場合ディスクのパーティションを定義

# fdisk

/bootになるパーティションにはブートフラグを立てる。
lvm領域はタイプを8e(LinuxLVM)にする
lvm定義

# lvm pvcreate <デバイス>
# lvm vgcreate <vg名> <pvデバイスファイル>    ※vg名は以前のvg名とあわせる(vmlinuzの中に記録されている??)
# lvm lvcreate –size lv容量 –name lv名 <VG名>

ファイルシステム作成(+スワップ領域作成)

# mke2fs -j <ファイルシステムデバイス>    ※ラベルが設定されていた場合ラベルも設定する
# mkswap <ファイルシステムデバイス>

※上記作業中に中断(電源落とす)して、再開した場合
vgが有効化されていないので有効化する

# lvm vgchagne -ay


2.バックアップイメージを置いたNFS領域をマウント
/backup 以下にバックアップイメージを置いたNFS領域をマウント

# mkdir /backup
# mount -t nfs <NFSサーバーエクスポートディレクトリ> /backup

大抵のディストリビューションのrescueモードはnfsマウントしかできないはず・・・
(家庭用NASでsmbfsのみのものがよくあるので注意!)
3.リストア
”復旧させるファイルシステムのルートディレクトリ”に移動して、リストアする。
一番最初に、/にマウントするファイルシステムを/restoreにマウントし、リストア。その後、/boot などにマウントするファイルシステムを/restore以下に復活しているマウントポイントにマウントしてリストアする。
/tmpになるファイルシステムはリストアしないがrestoreコマンドで使用する(下記参照)ので/restore/tmpなどにマウントすると吉。

# mkdir /restore
# mount -t ext3 -o nouser_xattr <ファイルシステムデバイス> /restore/<従来のマウントポイント>
# cd /restore/<従来のマウントポイント>
# gzip -dc /backup/<バックアップイメージ> | restore -r -T <大容量ファイルが格納できるディレクトリ> -f –
(mountから繰り返し)
# sync

※mountするときは、ファイルシステムタイプを必ず指定すること。rescueモードでは自動的にファイルシステムタイプを認識しない。(よって、ext3でもタイプを指定しなければext2でマウントされてしまう → バックアップイメージが2G超だとrestoreがフリーズする)
※restore時に-Tオプションで大容量ファイルが格納できるディレクトリを指定する。1ファイルをバックアップイメージから抜き出すときに使用するため。この領域がなければrestoreは失敗する(restoreがデフォルトで使用するrescueモードの/tmpは小さい)。復旧予定のディスクの/tmpになるファイルシステムをマウントして、そのディレクトリを指定しておけば良い。
※nouser_xattrは拡張属性を無効にする(つけないとCentOS5で警告が出る)
4.各種設定変更
マウントの情報やらネットワークの情報を必要に応じて変更する。
# vi /etc/fstab
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# vi /etc/sysconfig/network
# vi /etc/resolv.conf

など・・・


※ディスク交換した場合
5.ブートローダ(grub)のインストールgrubをインストール
chrootしてリストア先のgrubコマンドを直接実行できるようにする。KNOPPIXなどリストアするOSと違うディストリビューションのLiveCDを使用いる場合に有効。この場合chroot後/devにブロックデバイスファイルは当然存在しないので作成してあげディスクにアクセスできるようにする。

# chroot /restore
# MAKEDEV hda # SATAの場合はsda
# /usr/sbin/grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit


インストールCDをドライブから抜いて再起動。

# sync;sync;sync #←石橋を叩きたい数だけ(笑)
# exit

ハードウェアを交換した場合は再起動中のkudzuで質問に答えてハードウェア情報を更新しておくこと。