Linuxシステムバックアップの基本:dump と restore コマンドによるシステムリカバリの方法を今更ながら解説(Linux)

はじめに

以前、本ブログにてMondo Rescueを用いたシステムリカバリの方法について解説しましたが、今回は、バックアップ&リカバリの基本とも言えるdump/restoreコマンドを用いたシステムリカバリの方法について解説します。

前提条件

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

  1. サーバー要件

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

    サーバーバックアップ対象サーバーリストア対象サーバー NFSサーバー
    ホスト名dump-backupn/anfs-server
    IPアドレス192.168.0.10(eth1)n/a192.168.0.90(eth1)
    OSCentOS 5.5 i386n/a ubuntu 13.10 i386
    インストールタイプminimaln/aserver
    HDD8GB(SCSI)
    RAM512MB

    NFSサーバーは、/backupをエクスポートフォルダとして設定しています。

  2. 導入するパッケージ

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

    パッケージバージョン
    dump0.4
    rmt0.4

サーバーのバックアップ

  1. パッケージのインストール

    CentOSの場合、dumpコマンドが標準インストールされていませんので、パッケージをインストールします。

    $ sudo yum -y install dump
    
  2. [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!
    
  3. ディスク情報の出力

    バックアップ対象サーバーのディスク情報を、ファイルに出力します。

    $ 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
    
    4014-03
    [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
    
  4. シングルユーザーモードへの移行

    データベースアクセスが無いサーバーの場合、オンラインバックアップでも構いませんが、念の為シングルユーザーモードに移行してバックアップを実行します。

    $ sudo init 1
    
    4014-05 4014-06
  5. ネットワーク設定とNFSマウント

    ネットワーク設定を行った後、dumpコマンドで出力するダンプファイルを保存するフォルダをNFSでマウントします。

    # ifconfig eth1 192.168.0.10
    # mount -o rw 192.168.0.90:/backup /mnt
    # df
    
    4014-07 4014-08
  6. バックアップの実行

    バックアップ対象サーバーのマウントポイントごとに、ダンプします。
    今回は、/および、/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
    
    4014-09 4014-10

    ダンプが終了すると、NFSマウントしたマウント先にダンプファイルが出力されますので、NFSマウントを解除します。

    4014-11

レスキューモードの起動

ダンプが終了しましたので、リストア対象サーバーにリストアを行います。
なお、リストア対象サーバーは、OSがインストールされていない新規サーバーとしています。

  1. レスキューモードの起動

    CentOSのインストールCDを用いて、リストア対象サーバーを起動します。
    ブートメニューが表示されたら、[Rescue Installed System]を選択します。

    4014-13
  2. 言語とキーボードの指定

    Rescueモードを選択すると、言語とキーボードレイアウトを選択します。
    なお、言語選択では、日本語も選択できますが、Warningが表示されるため、英語を選択して下さい。

    4014-14 4014-15
  3. ネットワーク指定

    ネットワークを開始するか確認されますので、[No]を選択します。

    4014-16
  4. レスキュー処理の選択

    既存のLinuxシステムがある場合、[Continue]を選択しますが、今回は新規サーバーのレスキューとなりますので、[Skip]を選択します。

    4014-17
  5. レスキューシェルの起動

    を選択して、レスキュー用シェルを起動します。

    4014-18

パーティションの準備

レスキューシェルが起動しましたので、新規ディスクのパーティションを作成し、フォーマットを行います。

  1. パーティション作成

    新規のSCSIハードディスクに、パーティションを作成します。
    ここでは、sda1および、sda2(LVM)を作成し、sda1にブートフラグを設定しています。

    4014-20 4014-21 4014-22 4014-25
  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
    
    4014-26

    作成した論理ボリューム(LV)を表示します。

    # lvdisplay
    
    4014-27
  3. ディスクフォーマットとスワップ領域の作成

    作成したパーティションのフォーマットとスワップ領域を作成します。

    # mke2fs -j /dev/sda1
    # mke2fs -j /dev/VolGroup/lv_root
    # mkswap -f /dev/VolGroup/lv_swap
    
    4014-28 4014-29 4014-30

ダンプデータのリストア

パーティションが準備できましたので、NFSサーバーに保存したダンプデータをリストアします。

  1. ダンプデータのマウント

    ネットワークを設定し、NFSサーバーのダンプデータの保存フォルダをマウントします。

    # ifconfig eth0 192.168.0.10
    # mkdir /dump
    # mount -o rw 192.168.0.90:/backup /dump
    # mkdir /dump/tmp
    
    4014-31
  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
    
    4014-32 bootファイルシステムのリストア
    # mount -t ext4 /dev/sda1 /restore/boot
    # cd boot
    # restore -r -T /dump/tmp -f /dump/dump-backup_boot.dump
    
    4014-33

ブートローダー(GRUB)のセットアップ

これまでの手順で、リストアが完了しましたので、ブートローダーをセットアップします。

  1. chroot環境への移行

    リストアのマウントポイントを仮想ルートディレクトリに設定します。

    # chroot /restore
    
    4014-34
  2. デバイスの作成

    リストア直後は、デバイスが作成されていませんので、MAKEDEVコマンドで作成します。

    $ MAKEDEV sda
    
  3. GRUBのセットアップ

    grubコマンドを起動し、下記のとおり設定します。

    # grub
    
    root (hd0,0)
    setup (hd0)
    quit
    
    4014-35
  4. fstabの修正

    /etc/fstabの/bootデバイスを修正します。

    # vi /etc/fstab
    

    ここでは、/dev/sda1をデバイス名として設定しています。

    4014-37
  5. サーバーの再起動

    chroot環境および、レスキュー用シェルをexitで終了すると、GUI画面に戻りますので、CentOSのインストールCDを取り出した後、[reboot Reboot]を選択してサーバーを再起動します。

    4014-38 4014-39 4014-40

まとめ

ここまで、dump/restoreコマンドを用いたシステムリカバリの方法について解説しました。今回解説した方法は、CentOSだけで無く、他のLinux系OSにも有効なリカバリ方法となりますので、リカバリツールに頼らないシステムのリカバリを実現できます。

3 comments on “Linuxシステムバックアップの基本:dump と restore コマンドによるシステムリカバリの方法を今更ながら解説(Linux)

  1. あれぇ?丘people!?なんでコメント表示してくれないのぉ!?

  2. コメントありがとうございます。記事が参考になれば幸いです。 コメント表示確認が遅くなりすみませんでした。

  3. 大変参考になりました。xfsではdumpは使えないようですがその代わりにxfsdump/xfsrestoreがあるようですね。