はじめに
本ブログでは、以前の記事でBaculaを用いたバックアップシステムについて取り上げましたが、サーバーのリカバリ方法については取り上げていません。そこで今回は、Mondo Rescueを用いたサーバーのリカバリ方法について解説します。
Mondo Rescueはオープンソースのディザスターリカバリーツールです。OS含めた全てのデータをイメージとしてバックアップすることが可能です。これは、ハード障害などの緊急時に利用するブート可能なDVDを作成したり、OS丸ごとISOイメージファイルからの復元に利用することが出来ます。
前提条件
構築に必要なサーバー要件および、導入パッケージは下記のとおりです。
- サーバー要件
サーバー要件は、次のとおりです。
ホスト名 mondo-rescue IPアドレス 192.168.0.178(DHCP) OS CentOS 5.5 i386 SELinux Disabled HDD 8GB(SCSI) RAM 512MB - 導入するパッケージ
導入するパッケージは、次のとおりです。
パッケージ バージョン mondorescueリポジトリ なし dvd+rw-tools 7.0 mkisofs 2.01 afio 2.5 buffer 1.19 cdrecord 2.01 mindi 2.1.7 mindi-busybox 1.18.5 mondo 3.0.4
リカバリディスクの作成
- Mondo Rescureリポジトリのインストール
公式サイトから、リポジトリ情報をインストールします。
$ wget -q ftp://ftp.mondorescue.org//rhel/5/i386/mondorescue.pubkey $ sudo rpm --import mondorescue.pubkey $ sudo curl -sLo /etc/yum.repos.d/mondorescue.repo ftp://ftp.mondorescue.org/rhel/5/i386/mondorescue.repo $ sudo sed -i -e "s|^enabled=1|enabled=0|" /etc/yum.repos.d/mondorescue.repo $ rm -f mondorescue.pubkey
- 関連パッケージのインストール
Mondo Resucueのインストール時に、自動でインストールされないパッケージをインストールします。
$ sudo yum -y install dvd+rw-tools
[vagrant@mondo-rescue ~]$ sudo yum -y install dvd+rw-tools Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: www.ftp.ne.jp * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package dvd+rw-tools.i386 0:7.0-1.el5 set to be updated --> Processing Dependency: mkisofs >= 2.0 for package: dvd+rw-tools --> Running transaction check ---> Package mkisofs.i386 9:2.01-10.7.el5 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size
(1/2): dvd+rw-tools-7.0-1.el5.i386.rpm | 114 kB 00:00 (2/2): mkisofs-2.01-10.7.el5.i386.rpm | 592 kB 00:00 -------------------------------------------------------------------------------- Total 1.4 MB/s | 706 kB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : mkisofs 1/2 Installing : dvd+rw-tools 2/2 Installed: dvd+rw-tools.i386 0:7.0-1.el5 Dependency Installed: mkisofs.i386 9:2.01-10.7.el5 Complete!
- Mondo Rescueのインストール
mondorescueリポジトリから、Mondo Rescueをインストールします。
$ sudo yum --enablerepo=mondorescue -y install mondo
[vagrant@mondo-rescue ~]$ sudo yum --enablerepo=mondorescue -y install mondo Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: www.ftp.ne.jp * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp mondorescue | 1.2 kB 00:00 mondorescue/primary | 58 kB 00:00 mondorescue 313/313 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package mondo.i386 0:3.0.4-1.rhel5 set to be updated --> Processing Dependency: mindi >= 2.0.7 for package: mondo --> Processing Dependency: afio for package: mondo --> Processing Dependency: cdrecord for package: mondo --> Processing Dependency: buffer for package: mondo --> Running transaction check ---> Package afio.i386 0:2.5-1.rhel5 set to be updated ---> Package buffer.i386 0:1.19-4.rhel5 set to be updated ---> Package cdrecord.i386 9:2.01-10.7.el5 set to be updated ---> Package mindi.i386 0:2.1.7-1.rhel5 set to be updated --> Processing Dependency: mindi-busybox >= 1.7.3 for package: mindi --> Running transaction check ---> Package mindi-busybox.i386 0:1.18.5-3.rhel5 set to be updated
Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : mindi-busybox 1/6 Installing : buffer 2/6 Installing : cdrecord 3/6 Installing : afio 4/6 Installing : mindi 5/6 Installing : mondo 6/6 Installed: mondo.i386 0:3.0.4-1.rhel5 Dependency Installed: afio.i386 0:2.5-1.rhel5 buffer.i386 0:1.19-4.rhel5 cdrecord.i386 9:2.01-10.7.el5 mindi.i386 0:2.1.7-1.rhel5 mindi-busybox.i386 0:1.18.5-3.rhel5 Complete!
- リカバリディスクの作成
Mondo Rescueでは、システムのリカバリディスクをDVDドライブに直接書き込んだり、NFSマウントされた任意のフォルダにISOファイルを作成することができます。
なお、Mondo Rescueの主なオプションは、下記のとおりです。
オプション 概要 -O ISOファイルを出力(Output)する際に指定します。 -V 出力したISOファイルをベリファイ(Verify)する際に指定します。 -S 作業(Scratch)フォルダを指定します。 -E 除外(Exculude)フォルダを指定します。
デフォルトで、下記のフォルダは除外されます。
/mnt/floppy, /mnt/cdrom, /proc, /sys, /run, /tmp-T 一時(Temporary)フォルダを指定します。 -i ISOファイルをバックアップメディアとして使用する際に指定します。 -d ISOファイルの出力先のフォルダを指定します。 -s 出力するISOファイルのサイズ(size)を指定します。
作成するISOファイルのサイズが、指定したサイズよりも大きくなる場合、自動的に複数のISOファイルに分割されます。-p 出力するISOファイルのファイル名を指定します。
本オプションを指定しない場合、mondorescueがデフォルトのファイル名として使用されます。ここでは、システム上の/mntフォルダにISOイメージファイルを作成します。
$ sudo mondoarchive -Oi -s 4480m -d /mnt -E /mnt
[vagrant@mondo-rescue ~]$ sudo mondoarchive -Oi -s 4480m -d /mnt -E /mnt Initializing... See /var/log/mondoarchive.log for details of backup run. Checking sanity of your Linux distribution Done. BusyBox's sources are available from http://www.busybox.net Making catalog of files to be backed up ---evalcall---1--- Making catalog of / ---evalcall---2--- TASK: [**..................] 6% done; 0:15 to go ---evalcall---E--- ---evalcall---1--- Making catalog of / ---evalcall---2--- TASK: [***.................] 14% done; 0:12 to go ---evalcall---E--- ---evalcall---1--- Making catalog of / ---evalcall---2--- TASK: [****................] 17% done; 0:19 to go ---evalcall---E--- ---evalcall---1--- Making catalog of / ---evalcall---2--- TASK: [*****...............] 22% done; 0:17 to go ---evalcall---E--- ---evalcall---1--- Making catalog of / ---evalcall---2--- TASK: [******..............] 27% done; 0:16 to go ---evalcall---E--- ---evalcall---1--- Making catalog of / ---evalcall---2--- TASK: [******..............] 30% done; 0:16 to go
---evalcall---1--- Running mkisofs to make ISO #1 ---evalcall---2--- TASK: [***************.....] 75% done; 0:04 to go ---evalcall---E--- ---evalcall---1--- Running mkisofs to make ISO #1 ---evalcall---2--- TASK: [****************....] 79% done; 0:03 to go ---evalcall---E--- ---evalcall---1--- Running mkisofs to make ISO #1 ---evalcall---2--- TASK: [******************..] 88% done; 0:02 to go ---evalcall---E--- ---evalcall---1--- Running mkisofs to make ISO #1 ---evalcall---2--- TASK: [********************] 96% done; 0:00 to go ---evalcall---E--- ---evalcall---1--- Running mkisofs to make ISO #1 ---evalcall---2--- TASK: [********************] 98% done; 0:00 to go ---evalcall---E--- Call to mkisofs to make ISO (ISO #1) ...OK Done. Done. Backup and/or verify ran to completion. Everything appears to be fine. /var/cache/mindi/mondorescue.iso, a boot/utility CD, is available if you want it Data archived OK. Mondoarchive ran OK. See /var/log/mondoarchive.log for details of backup run. Execution run ended; result=0 Type 'less /var/log/mondoarchive.log' to see the output log
処理が終了すると、ISOファイルが指定した出力先の/mntフォルダに作成されます。
また、出力されたログファイルには、処理の開始時刻および、終了時刻が出力されますので、処理時間を算出することもできます。
$ grep ^'Time started' /var/log/mondoarchive.log $ grep ^'Time finished' /var/log/mondoarchive.log
最後に、出力されたISOファイルを確認します。
$ ls /mnt
以上で、リカバリディスクの作成は終了です。
作成したISOファイルは、DVDなどのリムーバブルメディアに書き込んだ後、保管する必要があります。
システムリカバリの実行
作成したリカバリディスクを使って、システムリカバリを実行します。
ここでは、VirtualBox上に作成した仮想マシンにリカバリを行います。
なお、リカバリするマシンのハードウエアスペックは、サーバー要件と同一としています。
- リカバリディスクからの起動
作成したリカバリディスクをセットし、マシンを起動するとMondo Rescueのブート画面が表示されます。
boot:プロンプトが表示されたら、リターンキーを入力してレスキュー用のOSを起動します。 - リストア方法の選択
レスキュー用OSが起動すると、リストアメニューが表示されますので、Automaticallyを選択します。
なお、画面表示が崩れていますが、機能的には支障ありません。
選択された項目は、グレーになっていますので、間違って赤い表示をのまま、リターンキーを入力すると間違った選択となりますので、注意して下さい。 - リストアの自動実行
Automaticallyを選択すると、リカバリディスクに保存されたマシンのディスク構成をも音にパーティションの作成からフォーマットを行った後、自動的にディスクをマウントして、リストアを行います。
- devicemapの確認
リストアが終了すると、システムブート時のデバイスの指定を行う画面が表示されますので、デフォルトのままCTRL-Xを入力して、エディタを終了します。
- initrdの再作成確認
initrdファイルの再作成をするか確認されますので、Noを選択します。
- リカバリの終了
Mondo Rescueによって、システムがリカバリされた旨のメッセージが表示されますので、OKを選択します。
選択すると、GUI画面が終了しシェルプロンプトが表示されます。 - システム再起動
セットしたリカバリディスクを取り出し、シェルプロンプトから、rebootコマンドを実行して、システムを再起動します。
- fsckの実行と再起動
システムをリブートすると、fsckコマンドが実行された後、システムが自動的に再起動します。
- リカバリ完了
再起動すると、リカバリされたマシンの起動が終了します。
以上で、システムリカバリは終了です。
まとめ
ここまで、Mondo Rescueを用いたシステムリカバリの方法について解説しました。Mondo Rescueは、Linux系OSに幅広く対応しており、ほぼ全てのLinuxマシンのリカバリを行うことも可能です。本記事を参考にして、サーバーのリカバリ方法について、検討しては如何でしょうか。