はじめに
以前、本ブログにてMondo Rescueを用いたシステムリカバリの方法について解説しましたが、今回は、バックアップ&リカバリの基本とも言えるdump/restoreコマンドを用いたシステムリカバリの方法について解説します。
前提条件
構築に必要なサーバー要件および、導入パッケージは下記のとおりです。
1.サーバー要件
サーバー要件は、次のとおりです。
サーバー | バックアップ対象サーバー | リストア対象サーバー | 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をエクスポートフォルダとして設定しています。
2.導入するパッケージ
導入するパッケージは、次のとおりです。
パッケージ | バージョン |
---|---|
dump | 0.4 |
rmt | 0.4 |
サーバーのバックアップ
1.パッケージのインストール
CentOSの場合、dumpコマンドが標準インストールされていませんので、パッケージをインストールします。
$ sudo yum -y install dump
[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!
2.ディスク情報の出力
バックアップ対象サーバーのディスク情報を、ファイルに出力します。
$ 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
3.シングルユーザーモードへの移行
データベースアクセスが無いサーバーの場合、オンラインバックアップでも構いませんが、念の為シングルユーザーモードに移行してバックアップを実行します。
$ sudo init 1
4.ネットワーク設定とNFSマウント
ネットワーク設定を行った後、dumpコマンドで出力するダンプファイルを保存するフォルダをNFSでマウントします。
# ifconfig eth1 192.168.0.10 # mount -o rw 192.168.0.90:/backup /mnt # df
5.バックアップの実行
バックアップ対象サーバーのマウントポイントごとに、ダンプします。
今回は、/および、/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マウントを解除します。
レスキューモードの起動
ダンプが終了しましたので、リストア対象サーバーにリストアを行います。
なお、リストア対象サーバーは、OSがインストールされていない新規サーバーとしています。
1.レスキューモードの起動
CentOSのインストールCDを用いて、リストア対象サーバーを起動します。
ブートメニューが表示されたら、[Rescue Installed System]を選択します。
2.言語とキーボードの指定
Rescueモードを選択すると、言語とキーボードレイアウトを選択します。
なお、言語選択では、日本語も選択できますが、Warningが表示されるため、英語を選択して下さい。
ネットワーク指定
ネットワークを開始するか確認されますので、[No]を選択します。
3.レスキュー処理の選択
既存のLinuxシステムがある場合、[Continue]を選択しますが、今回は新規サーバーのレスキューとなりますので、[Skip]を選択します。
4.レスキューシェルの起動
[shell 1=”shell” language=”Start”][/shell]を選択して、レスキュー用シェルを起動します。
パーティションの準備
レスキューシェルが起動しましたので、新規ディスクのパーティションを作成し、フォーマットを行います。
1.パーティション作成
新規のSCSIハードディスクに、パーティションを作成します。
ここでは、sda1および、sda2(LVM)を作成し、sda1にブートフラグを設定しています。
2.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
3.ディスクフォーマットとスワップ領域の作成
作成したパーティションのフォーマットとスワップ領域を作成します。
# mke2fs -j /dev/sda1 # mke2fs -j /dev/VolGroup/lv_root # mkswap -f /dev/VolGroup/lv_swap
ダンプデータのリストア
パーティションが準備できましたので、NFSサーバーに保存したダンプデータをリストアします。
1.ダンプデータのマウント
ネットワークを設定し、NFSサーバーのダンプデータの保存フォルダをマウントします。
# ifconfig eth0 192.168.0.10 # mkdir /dump # mount -o rw 192.168.0.90:/backup /dump # mkdir /dump/tmp
2.ダンプデータのリストア
作成したパーティションをマウントして、対応するダンプデータをリストアします。
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)のセットアップ
これまでの手順で、リストアが完了しましたので、ブートローダーをセットアップします。
1.chroot環境への移行
リストアのマウントポイントを仮想ルートディレクトリに設定します。
# chroot /restore
2.デバイスの作成
リストア直後は、デバイスが作成されていませんので、MAKEDEVコマンドで作成します。
$ MAKEDEV sda
3.GRUBのセットアップ
grubコマンドを起動し、下記のとおり設定します。
# grub
root (hd0,0) setup (hd0) quit
4.fstabの修正
/etc/fstabの/bootデバイスを修正します。
# vi /etc/fstab
ここでは、/dev/sda1をデバイス名として設定しています。
5.サーバーの再起動
chroot環境および、レスキュー用シェルをexitで終了すると、GUI画面に戻りますので、CentOSのインストールCDを取り出した後、[reboot Reboot]を選択してサーバーを再起動します。
まとめ
ここまで、dump/restoreコマンドを用いたシステムリカバリの方法について解説しました。今回解説した方法は、CentOSだけで無く、他のLinux系OSにも有効なリカバリ方法となりますので、リカバリツールに頼らないシステムのリカバリを実現できます。
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments