OSSを活用したLinuxのデータ・バックアップ
オープンソースのバックアップ・ソフト「Mondo Rescue」
バックアップ・ソフトには、個人向けや企業向けを含め、さまざまな種類のものが存在します。オープンソースのバックアップ・ソフトも、非常に多種多様です。
今回は、OSのリカバリDVDを作成できる「Mondo Rescue」と「mkcdrec」、さらに、NFSサーバー経由のリカバリCDを簡単に作成できる「ReaR」を紹介します。
Mondo Rescueは、OSをインストールした内蔵ディスクのリカバリDVDを作成するバックアップ・ソフトです。OSを起動させた状態でディスク全体のイメージ・ファイルをiso形式で作成します。イメージ作成時には、除外したいディレクトリなどを指定することも可能です。
オープンソースとして提供されており、開発にはフランスのHewlett-Packardのエンジニアが関わっています。ただし、ベンダーの保守サポートはないので、何か不具合があってもベンダーへの問い合わせはできません。利用者の自己責任で取り扱う必要があります。
Mondo Rescueは、OSが稼働した状態でイメージを取得するので、オープンしているファイルが存在しないことが前提となります。オープンしているデータベースや編集中のファイルが存在した状態でバックアップした場合、リストア時にそれらのデータの中身が正常に戻る保証はありません。
リカバリ用のメディア(媒体)として、DVDのほかに、USBメモリーを利用することも可能です。リカバリDVD同様、リカバリUSBメモリーを作成できます。
|
図5: Mondo Rescueによるバックアップ・システム構成例。Mondo Rescueはコマンド・ラインから操作を行い、リカバリDVDの生成が可能である。無償提供のオープンソース・ソフトであるので、ベンダーの保守サポートはない |
Mondo RescueによるリカバリーDVDの作成
Mondo Rescueは、通常のtar形式に加えて、RPMパッケージが提供されています。
以下では、Red Hat Enterprise Linux 5用に公開されているMondo Rescueを導入・設定します。導入方法とリカバリDVDの作成、リストア方法について紹介します。Mondo Rescueは、以下のURL(公開FTPサイト)から入手できます。
Mondo Rescueの導入には、afio、buffer、mindi-busybox、mindi、mondoのRPMパッケージが必要です。以下は、2010年12月時点での最新版ですが、さらに新しいバージョンがリリースされているかもしれないので、上記のFTPサイトをチェックしてください。
Red Hat Enterprise Linux 5.xの場合
- afio RPMパッケージ
- ftp://ftp.mondorescue.org/rhel/5/afio-2.4.7-1.x86_64.rpm
- buffer RPMパッケージ
- ftp://ftp.mondorescue.org/rhel/5/buffer-1.19-1.x86_64.rpm
- mindi-busybox RPMパッケージ
- ftp://ftp.mondorescue.org/rhel/5/mindi-busybox-1.7.3-1.rhel5.x86_64.rpm
- mindi RPMパッケージ
- ftp://ftp.mondorescue.org/rhel/5/mindi-2.0.7.5-1.rhel5.x86_64.rpm
- mondo RPMパッケージ
- ftp://ftp.mondorescue.org/rhel/5/mondo-2.2.9.4-1.rhel5.x86_64.rpm
上記URLから入手したRPMパッケージを、バックアップ対象サーバーのRed Hat Enterprise Linux 5にインストールします。
# rpm -vhi afio-2.4.7-1.x86_64.rpm # rpm -vhi buffer-1.19-1. x86_64.rpm # rpm -vhi mindi-busybox-1.7.3-1.rhel5.x86_64.rpm # rpm -vhi mindi-2.0.7.5-1.rhel5.x86_64.rpm # rpm -vhi mondo-2.2.9.4-1.rhel5.x86_64.rpm
これで、Mondo Rescueが利用できるようになりました。バックアップの実行は、mondoarchiveコマンドで行います。以下の例は、DVD isoイメージを/data配下に作成する例です。
# mondoarchive -O -i -g -0 -s 4g -p dl380g7-mr229 -l GRUB -d /data -E /data
上記のmondoarchiveコマンドに渡すオプションの意味は、以下の通りです。
オプション | 意味 |
---|---|
-O(英大文字のオー) | イメージ作成に必須 |
-i | ISOイメージの作成 |
-g | GUIを表示 |
-0(ゼロ) | 無圧縮にする場合 |
-s | 1つのDVD isoイメージのファイルサイズ(4gは4GBの意味) |
-p | 生成するDVD isoイメージのファイル名のprefix |
-l(英小文字のエル) | リカバリ時にマスター・ブート・レコードのインストールを行う |
-d | バックアップisoイメージの保管先 |
-E | バックアップ対象から除外したいディレクトリを指定 複数ある場合は、” ”で囲む |
上記コマンド実行例では、4GBずつのisoイメージdl380g7-mr229-x.isoという名前でリカバリーDVDイメージが生成されます。生成されたDVDイメージはDVD-Rに焼き付けます。
/data/dl380g7-mr229-1.iso /data/dl380g7-mr229-2.iso /data/dl380g7-mr229-3.iso
図6: Mondo Rescueでのバックアップの様子。バックアップ時間はディスクの容量によって大きく左右されるので事前のテストが必要である(左)。バックアップが終了すると、終了した旨のメッセージが表示されるので、Enterキーを押す(右)(クリックで拡大) |
Linuxサーバーの場合、Red Hat Enterprise Linux 5.xに標準で搭載されているgrowisofsコマンドを使えば、簡単にDVD-Rメディアへの書き込みが可能です。最近のx86サーバーにはDVD-RWドライブが搭載されている(容易に搭載できる)ので、内蔵DVD-RWドライブでDVD-Rメディアを作成することが可能です。
まず、DVD-RWドライブのデバイス名を確認します。ProLiant G7サーバーでは、主に/dev/dvdへのリンク先が/dev/hdaになります。サーバーの種類によっては、/dev/hdaではない場合もあります。/dev/dvdへのシンボリック・リンクを確認するとともに、dmesgコマンドを使ってデバイス名を確認してください。
# ls -l /dev/dvd lrwxrwxrwx 1 root root 3 10月 1 19:30 /dev/dvd -> hda # dmesg |grep DVD hda: TEAC DV-W28ECWS, ATAPI CD/DVD-ROM drive hda: ATAPI 24X DVD-ROM DVD-R CD-R/RW drive, 2000kB Cache, DMA
DVD-RWドライブにDVD-Rメディアをセットしたら、growisofsコマンドを使ってisoイメージをDVD-Rメディアに書き込みます。growisofsコマンドでは、-Zオプションを使ってDVD-RWドライブのデバイス名を指定し、ファイル名を「=」でつなぎます。下記のように実行すると、DVD-Rメディアへの書き込みが始まります。
# growisofs -Z /dev/dvd=/data/dl380g7-mr229-1.iso
Mondo Rescueで作成したリカバリDVD-Rからのリストア
作成したリカバリDVDを使って、リストアのテストを行いましょう。
リストアのテストを行うには、まず内蔵ディスクを新しいものに取り換え、内蔵のRAIDコントローラで論理ボリュームを作成しておきます。
RAIDコントローラによる論理ボリュームの作成が終わったら、作成したリカバリDVDをDVDドライブに装着して、サーバーをDVDブートします。
DVDブート後、画面には、Mondo Rescueのリストア画面が表示されます。bootプロンプトが現れるので、以下のように入力します。
boot: nuke noresize interactive
dontejectを付加することにより、リカバリ後にDVDドライブをイジェクトさせないことも可能です。
boot: nuke donteject interactive
|
図7: Mondo Rescueで作成したリカバリDVDによるブートの様子。bootプロンプトにコマンドを与えることでMondo Rescueのリカバリの挙動を変更することができる |
リカバリDVDのブート後、リカバリDVDのリストア画面が表示され、ディスクのパーティショニングとデータのリストアが行われます。
|
図8: Mondo Rescueで作成したリカバリDVDによるリカバリの様子。RAIDコントローラー配下の論理ボリューム/dev/hdaにパーティショニングを行っていることが分かる |
リストアが終了したら、サーバーを再起動させます。正常にブートし、データが復旧されていることを確認してください。