OSSを活用したLinuxのデータ・バックアップ
リカバリDVDを作成できる「mkcdrec」
Mondo Rescue以外にも、リカバリDVDを作成するオープンソースとして、mkcdrecやRelax and Recover(通称ReaR)などがあります。
Mondo Rescueの場合は、mondoarchiveコマンドのオプションによって、その挙動を変えることができました。一方、mkcdrecの場合は、設定ファイルのパラメータを適切に設定することによって、リカバリDVDの作成や出力先ディレクトリの指定ができます。
mkcdrecは、以下のURLから入手可能です。mkcdrecを稼働させるためには、ash RPMパッケージも必要です。
- mkcdrecのtarball入手先
- http://sourceforge.jp/projects/sfnet_mkcdrec/downloads/mkcdrec/v0.9.9/mkCDrec_v0.9.9.tar.gz/
- ash RPMパッケージ
- ftp://fr2.rpmfind.net/linux/sourceforge/m/project/mk/mkcdrec/mkcdrec/v1.0/ash-0.3.8-20.el5.rf.x86_64.rpm
上記のash RPMパッケージを、rpmコマンドを使ってインストールします。今回は、mkcdrecをtarコマンドにより/root/に展開します。
# rpm -vhi ash-0.3.8-20.el5.rf.x86_64.rpm # tar xzvf mkcdrec_v0.9.9.tar.gz -C /root/
以下では、Red Hat Enterprise Linux 5.x環境における、mkcdrecの構築・操作手法を説明します。まず、mkcdrecのtarballを展開した/root/mkcdrec/配下にある設定ファイルConfig.shを開きます。
# cd /root/mkcdrec # cp Config.sh Config.sh.org # vi Config.sh
このファイルに定義されている変数のいくつかを、適切に設定する必要があります。以下では、管理者が知っておくべき最低限のパラメータの設定例を挙げます。
まずは、バックアップ対象サーバーの、OSのアーキテクチャを指定します。
BOOTARCH=x86_64
リカバリDVDのisoイメージの元となる、バックアップ・データのtar.gzファイルの出力先を指定します。
ISOFS_DIR=/var/tmp/backup
リカバリDVDのisoイメージを出力するディレクトリを指定します。
CDREC_ISO_DIR=/var/tmp/isodir
リカバリDVDに含めないディレクトリやファイルを指定します。NFSマウント先やDVD-ROMメディアなどがマウントされていないかどうかを事前に確認してから設定を行うのがよいでしょう。
EXCLUDE_LIST="/tmp/* /var/tmp/* /mnt/* /proc/* /home/* /media/* /work/* "
/home以下には、一般ユーザーのディレクトリがあります。/homeのサイズは非常に大きくなるため、リカバリDVDには含めず、別途テープによるバックアップ運用を行うこともあります。/homeや/workなどの巨大なユーザー・データをEXCLUDE_LISTに含め、別途用意した外部ストレージなどにD2Dでバックアップを行う、といった方法も合わせて検討してください。
次に、1つのisoイメージのファイル・サイズを指定します。デフォルトでは670000(=670Mバイト)に設定されているので、これをDVDメディアの容量に変更します。isoイメージのファイル・サイズは、MAXCDSIZEパラメータで調整します。
MAXCDSIZE=4350000
「HP OpenView Data Protector」を利用していない場合は、DP_RESTOREを”n”に設定します。
DP_RESTORE=”n”
initrd-fsのサイズとして、INITRDSIZEを指定します。mkcdrecのバックアップ対象サーバーで設定すべきサイズは、以下のコマンドで確認します。
# grep CONFIG_BLK_DEV_RAM_SIZE /boot/config-`uname -r` CONFIG_BLK_DEV_RAM_SIZE=16384
コマンドで確認した結果が16384になっている場合は、Config.shファイルに、以下のように記述します。
INITRDSIZE=16384
Config.shファイルの編集を終えたら、mkcdrecが正常に稼働できるかどうかテストします。makeコマンドに引数testを付与して実行します。
# cd /root/mkcdrec # make test
mkcdrecが正常に動作するためには、mkisofsがインストールされている必要があります。事前にmkisofsがインストールされているかどうかを確認してください。
# which mkisofs /usr/bin/mkisofs
mkcdrecによるリカバリDVDの作成
いよいよ、mkcdrecを使って、リカバリDVDのisoイメージを生成します。isoイメージの生成は、makeコマンドに引数CD-ROMを付与して実行します。すると、以下のような画面になり、バックアップが行われます。
# cd /root/mkcdrec/ # make CD-ROM
|
図13: mkcdrecによるバックアップの様子。パーティションごとにtar.gz形式で/var/tmp/backup以下に保管される様子が分かる。最終的には、tar.gz形式のファイルは削除され、リカバリDVD用のisoイメージが生成される |
Config.shファイルで指定したEXCLUDE_LIST以外のディレクトリは、すべてバックアップされます。tar.gz形式(tar格納アーカイブをgzip圧縮)になり、/var/tmp/backupの下に保存されます。すべてのファイルのアーカイブが終了すると、isoイメージが/var/tmp/isodirディレクトリの下に保存されているはずです。isoイメージが生成されると、/var/tmp/backupの下のtar.gz形式のファイルは削除されます。isoイメージは、以下のような名前で保存されます。
CDrec-12.05.2010_1 CDrec-12.05.2010_2 CDrec-12.05.2010_3
上記のように、isoイメージが複数ある場合、その枚数分のDVD-Rメディアが必要になります。ファイル名は、CDrec-の後に作成年月日が付き、アンダーバーの後に枚数のカウントが付きます。このファイルは、ファイル名の拡張子(suffix)が付加されていません。DVD-Rライティング・ソフトによっては、適切な拡張子がついていないisoイメージを扱えない場合があるため、拡張子として.isoを付加しておきます。
# mv CDrec-12.05.2010_1 CDrec-12.05.2010_1.iso # mv CDrec-12.05.2010_2 CDrec-12.05.2010_2.iso # mv CDrec-12.05.2010_3 CDrec-12.05.2010_3.iso
作成したisoイメージは、Mondo Rescueの場合と同様、growisofsコマンドなどを使ってDVD-Rメディアに書き込みます。
mkcdrecで作成したリカバリDVDによるリストア
mkcdrecによって作成したリカバリDVDを使い、サーバーをブートさせます。Mondo Rescueの場合と同様に、RAIDコントローラの論理ボリュームを事前に作成しておき、リカバリDVDを使ってDVDブートします。
リカバリDVDでブートすると、下図のような画面が表示されるので、キーボードから2を入力してEnterキーを押します。
|
図14: mkcdrecにより作成したリカバリDVDからのブートの様子。リカバリを行う場合は、2を選択する |
しばらくするとmkcdrecのリカバリのためのシェル・プロンプトが表示されます。プロンプトが表示されたら、リカバリDVDによるリストアを行います。リカバリを行うには、mkcdrecがメモリー上に作成した/etc/recovery/start-restore.shスクリプトを実行します。
# cd /etc/restore # ./start-restore.sh
これで、mkcdrecによるリカバリが開始されます。リカバリが終了したら、rebootコマンドによりサーバーを再起動させ、正常に内蔵ディスクからブートできるかを確認します。