はじめに
現在、システムのバックアップには、BackupExec、ARCServeなどのGUIベースのバックアップソフトウエアを利用できるようになっています。UNIXでは、古くからdump/restoreコマンドを使ったシステムのバックアップ、リストアが行われて来ました。 今回は、バックアップ&リカバリの基本とも言えるdump/restoreコマンドを用いたシステムリカバリの方法について解説します。
2014年02月07日 23時37分
現在、システムのバックアップには、BackupExec、ARCServeなどのGUIベースのバックアップソフトウエアを利用できるようになっています。UNIXでは、古くからdump/restoreコマンドを使ったシステムのバックアップ、リストアが行われて来ました。 今回は、バックアップ&リカバリの基本とも言えるdump/restoreコマンドを用いたシステムリカバリの方法について解説します。
構築に必要なサーバー要件および、導入パッケージは下記のとおりです。
OS | Windows 7 Ultimate 32bit |
Cygwin | Setup Version 2.831 |
VirtualBox | 4.3.6 r91406 |
Vagrant | 1.4.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をエクスポートフォルダとして設定しています。
パッケージ | バージョン |
---|---|
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
データベースアクセスが無いサーバーの場合、オンラインバックアップでも構いませんが、念の為シングルユーザーモードに移行してバックアップを実行します。
$ sudo init 1
ネットワーク設定を行った後、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マウントを解除します。
# ls -l /mnt # umount /mnt
ダンプが終了しましたので、リストア対象サーバーにリストアを行います。
なお、リストア対象サーバーは、OSがインストールされていない新規サーバーです。
CentOSのインストールCDを用いて、リストア対象サーバーを起動します。
ブートメニューが表示されたら、Rescue Installed Systemを選択します。
Rescueモードを選択すると、言語とキーボードレイアウトを選択します。
なお、言語選択では、日本語も選択できますが、Warningが表示されるため、英語を選択して下さい。
ネットワークを開始するか確認されますので、Noを選択します。
既存のLinuxシステムがある場合、Continueを選択しますが、今回は新規サーバーのレスキューとなりますので、Skipを選択します。
shell Start shellを選択して、レスキュー用シェルを起動します。
レスキューシェルが起動しましたので、新規ディスクのパーティションを作成し、フォーマットを行います。
新規のSCSIハードディスクに、パーティションを作成します。
ここでは、sda1および、sda2(LVM)を作成し、sda1にブートフラグを設定しています。
バックアップ対象サーバーのディスク情報を元に、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サーバーに保存したダンプデータをリストアします。
ここまでの作業で、リストアが完了しましたので、ブートローダーをセットアップします。
リストアのマウントポイントを仮想ルートディレクトリに設定します。
# chroot /restore
リストア直後は、デバイスが作成されていませんので、MAKEDEVコマンドで作成します。
$ MAKEDEV sda
grubコマンドを起動し、下記のとおり設定します。
# grub
root (hd0,0) setup (hd0) quit
/etc/fstabの/bootデバイスを修正します。
# vi /etc/fstab
ここでは、/dev/sda1をデバイス名として設定しています。
chroot環境および、レスキュー用シェルをexitで終了すると、GUI画面に戻りますので、 CentOSのインストールCDを取り出した後、reboot Rebootを選択して サーバーを再起動します。