はじめに
以前、本ブログにてMondo Rescueを用いたシステムリカバリの方法について解説しましたが、今回は、バックアップ&リカバリの基本とも言えるdump/restoreコマンドを用いたシステムリカバリの方法について解説します。
前提条件
構築に必要なサーバー要件および、導入パッケージは下記のとおりです。
- サーバー要件
サーバー要件は、次のとおりです。
サーバー バックアップ対象サーバー リストア対象サーバー NFSサーバー ホスト名 dump-backup n/a nfs-server IPアドレス 192.168.0.10(eth1) n/a 192.168.0.90(eth1) OS CentOS 5.5 i386 n/a ubuntu 13.10 i386 インストールタイプ minimal n/a server HDD 8GB(SCSI) RAM 512MB NFSサーバーは、/backupをエクスポートフォルダとして設定しています。
- 導入するパッケージ
導入するパッケージは、次のとおりです。
パッケージ バージョン dump 0.4 rmt 0.4
サーバーのバックアップ
- パッケージのインストール
CentOSの場合、dumpコマンドが標準インストールされていませんので、パッケージをインストールします。
$ sudo yum -y install dump
- ディスク情報の出力
バックアップ対象サーバーのディスク情報を、ファイルに出力します。
$ LANG=C sudo fdisk -l > /tmp/`hostname`_fdisk.txt $ LANG=C sudo df -k > /tmp/`hostname`_df.txt $ LANG=C sudo pvdisplay > /tmp/`hostname`_pv.txt $ LANG=C sudo vgdisplay > /tmp/`hostname`_vg.txt $ LANG=C sudo lvdisplay > /tmp/`hostname`_lv.txt
[vagrant@dump-backup ~]$ ls /tmp dump-backup_df.txt dump-backup_lv.txt dump-backup_vg.txt dump-backup_fdisk.txt dump-backup_pv.txt yum.log
- シングルユーザーモードへの移行
データベースアクセスが無いサーバーの場合、オンラインバックアップでも構いませんが、念の為シングルユーザーモードに移行してバックアップを実行します。
$ sudo init 1
- ネットワーク設定とNFSマウント
ネットワーク設定を行った後、dumpコマンドで出力するダンプファイルを保存するフォルダをNFSでマウントします。
# ifconfig eth1 192.168.0.10 # mount -o rw 192.168.0.90:/backup /mnt # df
- バックアップの実行
バックアップ対象サーバーのマウントポイントごとに、ダンプします。
今回は、/および、/bootをバックアップ対象とし、tmpfsは、バックアップ対象外とします。# dump -b 32 -0f /mnt/`hostname`_lv_root.dump /dev/mapper/VolGroup-lv_root # dump -b 32 -0f /mnt/`hostname`_boot.dump /dev/sda1
ダンプが終了すると、NFSマウントしたマウント先にダンプファイルが出力されますので、NFSマウントを解除します。
[vagrant@dump-backup ~]$ sudo yum -y install dump Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Including mirror: www.ftp.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp * base: www.ftp.ne.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp * extras: www.ftp.ne.jp Including mirror: www.ftp.ne.jp Including mirror: ftp.tsukuba.wide.ad.jp Including mirror: ftp.iij.ad.jp Including mirror: ftp.nara.wide.ad.jp Including mirror: ftp.jaist.ac.jp
(2/2): rmt-0.4-0.6.b42.el6.i686.rpm | 25 kB 00:00 -------------------------------------------------------------------------------- Total 569 kB/s | 161 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : 1:rmt-0.4-0.6.b42.el6.i686 1/2 Installing : 1:dump-0.4-0.6.b42.el6.i686 2/2 Verifying : 1:dump-0.4-0.6.b42.el6.i686 1/2 Verifying : 1:rmt-0.4-0.6.b42.el6.i686 2/2 Installed: dump.i686 1:0.4-0.6.b42.el6 Dependency Installed: rmt.i686 1:0.4-0.6.b42.el6 Complete!
レスキューモードの起動
ダンプが終了しましたので、リストア対象サーバーにリストアを行います。
なお、リストア対象サーバーは、OSがインストールされていない新規サーバーとしています。
- レスキューモードの起動
CentOSのインストールCDを用いて、リストア対象サーバーを起動します。
ブートメニューが表示されたら、[Rescue Installed System]を選択します。 - 言語とキーボードの指定
Rescueモードを選択すると、言語とキーボードレイアウトを選択します。
なお、言語選択では、日本語も選択できますが、Warningが表示されるため、英語を選択して下さい。 - ネットワーク指定
ネットワークを開始するか確認されますので、[No]を選択します。
- レスキュー処理の選択
既存のLinuxシステムがある場合、[Continue]を選択しますが、今回は新規サーバーのレスキューとなりますので、[Skip]を選択します。
- レスキューシェルの起動
を選択して、レスキュー用シェルを起動します。
パーティションの準備
レスキューシェルが起動しましたので、新規ディスクのパーティションを作成し、フォーマットを行います。
- パーティション作成
新規のSCSIハードディスクに、パーティションを作成します。
ここでは、sda1および、sda2(LVM)を作成し、sda1にブートフラグを設定しています。 - LVM作成
バックアップ対象サーバーのディスク情報を元に、LVMを作成します。
# lvm pvcreate /dev/sda2 # lvm vgcreate VolGroup /dev/sda2 # lvm lvcreate --size 512M --name lv_swap VolGroup # lvm lvcreate --size 7G --name lv_root VolGroup
作成した論理ボリューム(LV)を表示します。
# lvdisplay
- ディスクフォーマットとスワップ領域の作成
作成したパーティションのフォーマットとスワップ領域を作成します。
# mke2fs -j /dev/sda1 # mke2fs -j /dev/VolGroup/lv_root # mkswap -f /dev/VolGroup/lv_swap
ダンプデータのリストア
パーティションが準備できましたので、NFSサーバーに保存したダンプデータをリストアします。
- ダンプデータのマウント
ネットワークを設定し、NFSサーバーのダンプデータの保存フォルダをマウントします。
# ifconfig eth0 192.168.0.10 # mkdir /dump # mount -o rw 192.168.0.90:/backup /dump # mkdir /dump/tmp
- ダンプデータのリストア
作成したパーティションをマウントして、対応するダンプデータをリストアします。
rootファイルシステムのリストア# mkdir /restore # mount -t ext4 /dev/VolGroup/lv_root /restore # cd /restore # restore -r -T /dump/tmp -f /dump/dump-backup_lv_root.dump
bootファイルシステムのリストア# mount -t ext4 /dev/sda1 /restore/boot # cd boot # restore -r -T /dump/tmp -f /dump/dump-backup_boot.dump
ブートローダー(GRUB)のセットアップ
これまでの手順で、リストアが完了しましたので、ブートローダーをセットアップします。
- chroot環境への移行
リストアのマウントポイントを仮想ルートディレクトリに設定します。
# chroot /restore
- デバイスの作成
リストア直後は、デバイスが作成されていませんので、MAKEDEVコマンドで作成します。
$ MAKEDEV sda
- GRUBのセットアップ
grubコマンドを起動し、下記のとおり設定します。
# grub
root (hd0,0) setup (hd0) quit
- fstabの修正
/etc/fstabの/bootデバイスを修正します。
# vi /etc/fstab
ここでは、/dev/sda1をデバイス名として設定しています。
- サーバーの再起動
chroot環境および、レスキュー用シェルをexitで終了すると、GUI画面に戻りますので、CentOSのインストールCDを取り出した後、[reboot Reboot]を選択してサーバーを再起動します。
まとめ
ここまで、dump/restoreコマンドを用いたシステムリカバリの方法について解説しました。今回解説した方法は、CentOSだけで無く、他のLinux系OSにも有効なリカバリ方法となりますので、リカバリツールに頼らないシステムのリカバリを実現できます。
あれぇ?丘people!?なんでコメント表示してくれないのぉ!?
コメントありがとうございます。記事が参考になれば幸いです。 コメント表示確認が遅くなりすみませんでした。
大変参考になりました。xfsではdumpは使えないようですがその代わりにxfsdump/xfsrestoreがあるようですね。