Mondo rescueを用いたシステムリカバリの方法

Mondo Rescue is a GPL disaster recovery solution. It supports Linux (i386, x86_64, ia64) and FreeBSD (i386). It's packaged for multiple distributions (Fedora, RHEL, openSuSE, SLES, Mandriva, Mageia, Debian, Ubuntu, Gentoo).

はじめに

本ブログでは、以前の記事でBaculaを用いたバックアップシステムについて取り上げましたが、サーバーのリカバリ方法については取り上げていません。そこで今回は、Mondo Rescueを用いたサーバーのリカバリ方法について解説します。

Mondo Rescueはオープンソースのディザスターリカバリーツールです。OS含めた全てのデータをイメージとしてバックアップすることが可能です。これは、ハード障害などの緊急時に利用するブート可能なDVDを作成したり、OS丸ごとISOイメージファイルからの復元に利用することが出来ます。

前提条件

構築に必要なサーバー要件および、導入パッケージは下記のとおりです。

  1. サーバー要件

    サーバー要件は、次のとおりです。

    ホスト名mondo-rescue
    IPアドレス192.168.0.178(DHCP)
    OSCentOS 5.5 i386
    SELinuxDisabled
    HDD8GB(SCSI)
    RAM512MB
  2. 4013-01
  3. 導入するパッケージ

    導入するパッケージは、次のとおりです。

    パッケージバージョン
    mondorescueリポジトリなし
    dvd+rw-tools7.0
    mkisofs2.01
    afio2.5
    buffer1.19
    cdrecord2.01
    mindi2.1.7
    mindi-busybox1.18.5
    mondo3.0.4

リカバリディスクの作成

  1. 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
    
    4013-02
  2. 関連パッケージのインストール

    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!
    
  3. 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!
    
  4. リカバリディスクの作成

    Mondo Rescueでは、システムのリカバリディスクをDVDドライブに直接書き込んだり、NFSマウントされた任意のフォルダにISOファイルを作成することができます。

    なお、Mondo Rescueの主なオプションは、下記のとおりです。

    オプション概要
    -OISOファイルを出力(Output)する際に指定します。
    -V出力したISOファイルをベリファイ(Verify)する際に指定します。
    -S作業(Scratch)フォルダを指定します。
    -E除外(Exculude)フォルダを指定します。
    デフォルトで、下記のフォルダは除外されます。
    /mnt/floppy, /mnt/cdrom, /proc, /sys, /run, /tmp
    -T一時(Temporary)フォルダを指定します。
    -iISOファイルをバックアップメディアとして使用する際に指定します。
    -dISOファイルの出力先のフォルダを指定します。
    -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
    
    4013-09

    最後に、出力されたISOファイルを確認します。

    $ ls /mnt
    
    4013-10
  5. 以上で、リカバリディスクの作成は終了です。

    作成したISOファイルは、DVDなどのリムーバブルメディアに書き込んだ後、保管する必要があります。

システムリカバリの実行

作成したリカバリディスクを使って、システムリカバリを実行します。

ここでは、VirtualBox上に作成した仮想マシンにリカバリを行います。
なお、リカバリするマシンのハードウエアスペックは、サーバー要件と同一としています。

  1. リカバリディスクからの起動

    作成したリカバリディスクをセットし、マシンを起動するとMondo Rescueのブート画面が表示されます。 4013-11
    boot:プロンプトが表示されたら、リターンキーを入力してレスキュー用のOSを起動します。

    4013-12 4013-13
  2. リストア方法の選択

    レスキュー用OSが起動すると、リストアメニューが表示されますので、Automaticallyを選択します。

    4013-14

    なお、画面表示が崩れていますが、機能的には支障ありません。
    選択された項目は、グレーになっていますので、間違って赤い表示をのまま、リターンキーを入力すると間違った選択となりますので、注意して下さい。

  3. リストアの自動実行

    Automaticallyを選択すると、リカバリディスクに保存されたマシンのディスク構成をも音にパーティションの作成からフォーマットを行った後、自動的にディスクをマウントして、リストアを行います。

    4013-15 4013-16 4013-17 4013-18 4013-19
  4. devicemapの確認

    リストアが終了すると、システムブート時のデバイスの指定を行う画面が表示されますので、デフォルトのままCTRL-Xを入力して、エディタを終了します。

    4013-20 4013-21
  5. initrdの再作成確認

    initrdファイルの再作成をするか確認されますので、Noを選択します。

    4013-22
  6. リカバリの終了

    Mondo Rescueによって、システムがリカバリされた旨のメッセージが表示されますので、OKを選択します。 4013-23
    選択すると、GUI画面が終了しシェルプロンプトが表示されます。

    4013-24
  7. システム再起動

    セットしたリカバリディスクを取り出し、シェルプロンプトから、rebootコマンドを実行して、システムを再起動します。

    4013-25 4013-26
  8. fsckの実行と再起動

    システムをリブートすると、fsckコマンドが実行された後、システムが自動的に再起動します。

    4013-27
  9. リカバリ完了

    再起動すると、リカバリされたマシンの起動が終了します。

    4013-28
  10. 以上で、システムリカバリは終了です。

まとめ

ここまで、Mondo Rescueを用いたシステムリカバリの方法について解説しました。Mondo Rescueは、Linux系OSに幅広く対応しており、ほぼ全てのLinuxマシンのリカバリを行うことも可能です。本記事を参考にして、サーバーのリカバリ方法について、検討しては如何でしょうか。

コメントを残す

メールアドレスが公開されることはありません。