OSSを活用したLinuxのデータ・バックアップ
バックアップ運用管理
システムを障害から守り業務を継続する主な手法には、HA(高可用性)クラスタによる冗長化や、サーバー機器を構成する部品の冗長化などがあります。この上で、ハードウエアの障害対策に加えて、OSの設定ファイやユーザー・データなどのデータを複製しておく必要があります。
データの複製を作っておくことにより、本番環境のデータが失われた場合でも、作成しておいた複製からデータを復旧させることができます。システムの可用性を高めるためには、サービスの継続以外に、データのバックアップ体制を整えておくことが必須です。
今回は、Linuxサーバー・システムで利用可能な、オープンソースのデータ・バックアップ・ソフトを取り上げ、その基本的な利用方法、運用の基礎を解説します。また、オープンソースのバックアップ・ソフトを用いて旧資産を有効利用する方法についても、合わせて紹介します。
バックアップ・システムの基本的な構成
サーバーのOS情報は、ハード・ディスク・ドライブ(以下、ディスク)に保存されるのが一般的です。ディスクに障害が発生した場合は、サーバーのディスクを交換し、RAIDを再構成した後に、OSの再インストール、データの復旧を行います。
システムの正常な状態を取得して複製することを「バックアップ」と呼びます。バックアップの取得方法には、大きく分けて、テープへのバックアップ(D2T: Disk to Tape)と、ディスクへのバックアップ(D2D: Disk to Disk)の2つが存在します。
|
図1: テープへのバックアップ(D2T)やディスクへのバックアップ(D2D)の例。安価で安定したテープ装置へのバックアップも多くみられるが、最近は大容量ディスクへのD2Dバックアップも一般的である |
テープへのバックアップは、現在でもUNIXやLinuxシステムで多く使われます。メリットは、バックアップ先となるテープ・カートリッジが比較的安定しているため、データの長期保存に適するという点です。CPUにx86を搭載したPCサーバーにおいてもテープ・バックアップは多くみられ、RISC UNIXシステムで利用されている手法と同様に使われています。
tarコマンドによるバックアップ
UNIXシステムにおけるバックアップは、一般的に、tarコマンドや商用のバックアップ・ソフトを使います。Linuxにおいても、ユーザー・データをテープにバックアップする際には、UNIXシステムで利用されている手法と同様、tarコマンドがよく使われます。
tarコマンドは、フロッピ・ディスクへのバックアップもサポートしている経緯から、幅広く利用されています。さらに、データをアーカイブする機能があるため、データの可搬性を高められます。このため、D2Dによるバックアップを行う場合にも、tarコマンドがよく使われます。
tarコマンドは、gzip圧縮やbzip2圧縮を併用するのが一般的です。tarコマンドは、種類によって仕様が異なるため、注意が必要です。例えば、一般的な商用UNIX OSに最初から搭載されているtarコマンドと、一般的なLinuxに搭載されているGNU tarコマンドとでは、オプションなどの仕様が異なります。UNIXでもLinuxでもGNU tarコマンドを使うようにすれば、UNIXとLinuxが混在したヘテロジニアスな環境でもバックアップ運用の違いを意識せずに利用できます。
Red Hat Enterprise Linux 6に搭載されているtarコマンドは、GNU tarです。gzip、bzip2との併用を可能とするオプションが用意されています。GNU tarによる主な利用例は、以下の通りです。
GNU tarとgzip圧縮を併用する場合の例
# tar czvf /mnt/data-`hostname`-`date`.tar.gz /data
上記は、/data以下のデータを/mntディレクトリに、data-“ホスト名”-“日付”.tar.gzというファイル名でアーカイブする例です。また、bzip2圧縮を併用する場合は、tarコマンドに渡すオプションを変更します。
GNU tarとbzip2圧縮を併用する場合の例
# tar cjvf /mnt/data-`hostname`-`date`.tar.bz2 /data
|
図2: tarコマンドによるバックアップ構成例。別途NFSサーバーを用意し、NFSマウントされたディレクトリにtgz形式のファイルをバックアップする。管理サーバーから複数のバックアップ対象にtarコマンドをスケジュール発行する仕組みを整えることが多い |
テープにバックアップする場合は、tarコマンド以外にmtコマンドを利用できます。tarコマンド、mtコマンドともに、テープ・デバイスのドライブ名を指定して使います。テープの場合、ディスクへのバックアップとは異なり、テープ・カートリッジの巻き戻しを行うかどうかなどの制御を、テープ・デバイスを指定して制御します。
tarにオプションとして渡したcvfは、テープ・カートリッジ内のデータを上書きバックアップします。したがって、テープ・カートリッジ内に保存されていた以前のデータは消えます。以下に、tarの主なオプション指定方法を示します。参考にしてください。
オプション指定 | 動作 |
---|---|
# tar cvf /dev/st0 | テープの先頭から新規書き込み(テープを上書き) |
# tar rvf /dev/st0 | テープに追加書き込み(テープ内既存データは保護) |
# tar tvf /dev/st0 | テープに記録されたデータを閲覧(テープの内容確認に適する) |
# tar xvf /dev/st0 | テープに記録されたデータをディスクに展開(リストア) |
データがテープに保存されているかどうかを確認するには、tarコマンドにtvfオプションを付与します。正常にファイルが保存されていることを注視し、最後まで確認します。
テープ・デバイスの中には、イジェクト・ボタンを押すと自動的にテープが巻き戻され、テープ・カートリッジ自体がテープ・デバイスからイジェクトされるものもあります。
以下に、一般的なテープ・デバイスを備えたサーバー機で、標準的なLinux OSが搭載しているtarコマンドとmtコマンドを使った場合のテープ・バックアップの例を示します。参考にしてください。
/home/testuser01を、テープ・デバイス/dev/nst0に書き込みます。
#tar cvf /dev/nst0 /home/testuser01
/home/testuser02を、テープ・デバイスに追加で書き込みし、さらにテープを巻き戻します。
#tar cvf /dev/st0 /home/testuser02
テープ・デバイスに記録された内容を表示します。
#tar tvf /dev/nst0
テープ・デバイスの、次の位置に移動します。
#mt -f /dev/nst0 fsf
/home/testuser02の内容を表示し、テープを巻き戻します。
#tar tvf /dev/st0
テープ・デバイスに記録されたデータを、ディスクにリストアします。
#tar xvf /dev/nst0
テープ・デバイスのポジションを、1つ先へ移動させます。
#mt -f /dev/nst0 fsf
移動させたところからデータをリストアし、テープを巻き戻します。
#tar xvf /dev/st0
ユーザー・データは容量が肥大化することが多く、テープ・カートリッジ1本に収まりきらないことがよくあります。バックアップのために複数本のテープ・カートリッジを使う場合も、少なくありません。このため、個々のテープ・カートリッジを正確に管理する必要があります。
テープ・カートリッジ本体とテープ保護ケースには、下図のような、識別のためのラベルを付けて管理するのが一般的です。
|
図3: テープ・カートリッジにつけるラベル例。テープ・カートリッジは、複数にまたがって記録することが多いため、ラベルをつけて管理を行う |
最近では、テープ・カートリッジの物理的な保管やラベルの管理が煩雑であるという理由から、従来のテープ・バックアップの管理手法をそのままにしながらディスクによる仮想テープ(仮想テープ・ライブラリ)にバックアップを取るD2Dバックアップ・システムが提供されています。
商用バックアップ・ソフトを使った一般的な運用方法
OS標準のtarコマンドやmtコマンドを使ったコマンド・ラインでのバックアップ/リストアは、これらのUNIXコマンドに精通した管理者でなければ運用が難しいという弱点があります。こうした背景から、GUIやスケジュール管理機能などを備えた、商用のバックアップ・ソフトが広く利用されています。
Linux向け商用バックアップ・ソフトの多くは、管理に手間がかからない独自の仕組みを取り入れています。OSのイメージ取得機能やデータの暗号化、圧縮機能、高度なスケジューリング機能、分かりやすいGUIなどが特徴です。
通常は、バックアップ・サーバーと呼ぶ管理サーバーを用意します。ここで、バックアップ/リストアの操作を実行するほか、スケジューリングされたタスクが正しく実行されているかを確認します。バックアップ・データは、NFS(ファイル・サーバー)やFC(Fibre Channel) SANストレージ、iSCSIストレージなどに保管します。
商用バックアップ・ソフトでは、tarコマンドのように、ファイル・システムが稼働している状態で、特定のディレクトリ配下をファイル・ベースでバックアップできます。これとは別に、OS起動領域などのバックアップには、ディスク・イメージをバックアップするやり方がよく使われます。
OSを保存している内蔵ディスクのイメージ・ファイルを取得するためには、通常、バックアップ対象サーバーを再起動し、その後、バックアップ・ソフト・ベンダーが用意しているブートCDから起動し、ネットワーク経由でイメージを取得します。分かりやすいGUIを備えているため、初心者でも簡単に運用できるのがメリットです。
バックアップ対象のサーバーOSが稼働した状態でバックアップする場合は、バックアップ・サーバーからバックアップ対象として認識させるために、エージェントを動作させるのが一般的です。エージェントは、バックアップ・サーバー上で稼働するバックアップ・ソフトと連携し、バックアップの挙動を制御します。
|
図4: 商用バックアップ・ソフトは、分かりやすいGUIと先進の機能により、管理者の精神的負担を大幅に減らすことができる。OSのイメージ取得機能や高度な暗号化機能などを有し、Linuxサーバーでも広く利用されている。NFSサーバーやテープ・デバイス以外に、FC SANストレージやiSCSIストレージをバックアップ先とする場合も少なくない |
オープンソースのバックアップ・ソフト「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にパーティショニングを行っていることが分かる |
リストアが終了したら、サーバーを再起動させます。正常にブートし、データが復旧されていることを確認してください。
Mondo Rescueを使ったP2V
HP ProLiant G7サーバーは現在、Intel製CPU搭載機とAMD製CPU搭載機を用意しており、それらのCPUコア数は劇的に増えてきています。コア数が増えると、サーバー仮想化の利用が推進されます。1つのCPUコアあたり1つの仮想マシンを割り当てる運用が行われることが多いからです。
サーバー仮想化の主な用途の1つが、物理サーバーで稼働している既存システムを仮想サーバーへと移行するP2V(Physical to Virtual)です。OSやミドルウエアを含めた既存システム一式を、最新のハードウエア上に構築したサーバー仮想化環境で利用し続けることができます。
|
図9: P2V(Physical to Virtual)のメリットは、旧資産の延命だけではない。保守、消費電力、運用効率など、さまざまなメリットをもたらす |
P2Vは、Mondo RescueのリカバリDVDで実現できます。
移行元となある物理サーバーにMondo Rescueをインストールし、先述したmondoarchiveコマンドを用いてリカバリDVDを作成します。リカバリDVDが作成できれば、あとは、新しいサーバーで仮想サーバーを作成し、仮想サーバーに対してリカバリDVDでリストアします。OSイメージを含んだ物理ディスク全体を仮想サーバー上に復元するので、ディスク容量をかなり消費します。仮想サーバーを配置する共有ディスクの容量に注意してください。
仮想サーバーの作成には、virt-managerなどを利用します。インストール・メディアとして、リカバリDVDを使用します。
図10: Mondo Rescueにより作成したリカバリDVDを使ってP2Vを行う(左)。Mondo Rescueで作成したリカバリDVDをインストール・メディアとして仮想マシンを作成する(右)(クリックで拡大) |
P2Vには注意点があります。リカバリDVDを作成する前に、ハードウエア・ベンダーが標準で用意しているハードウエア監視エージェントや、SELinuxなどが備えるOSのセキュリティ機構を無効にする必要があるということです。特に、ハードウエア監視エージェントは、仮想サーバーでの稼働を想定していないため、仮想サーバーで起動させた場合、仮想サーバーのブートに失敗する可能性もあります。
インストール・メディアの指定をリカバリDVDにして、仮想サーバーを起動します。Virt-managerの仮想コンソールに、Mondo Rescueのリストアの画面が表示され、プロンプトが表示されます。nuke interactiveを入力して、仮想サーバーに対してリカバリを開始します。
この時、RAIDコントローラのデバイス名が異なる場合、新しいデバイス名に変更する画面が現れるので、新しいデバイス名を入力します。ProLiantサーバーが備えるSmart Arrayコントローラの多くは、デバイス名として/dev/cciss/cXdXをとります。さらに古いRAIDコントローラの場合は、/dev/ida/cXdYというデバイス名の場合もあります。KVMの仮想サーバーはデバイス名として/dev/hdXをとるのが一般的なので、これら古いRAIDコントローラのデバイス名を/dev/hdXに変更する必要があります。
|
図11: Mondo Rescueにより作成したリカバリDVDをインストール・メディアにして、仮想マシンに対してDVDブートを行う(左)。Mondo Rescueのリカバリ画面で、旧サーバーのRAIDコントローラ配下のデバイス名をKVM仮想マシンで利用するデバイス名/dev/hdXに変更する |
Mondo Rescue上でデバイス名を変更すると、リカバリが始まります。こうして、旧システムがKVM仮想サーバー上に構築され、P2Vが行われます。
|
図12: Mondo Rescueによって古いマシンから吸い出したリカバリDVDイメージを利用して、KVM環境にP2Vを行っている様子 |
Mondo Rescueではまた、P2Vの最中に新システムの設定変更が必要になることを想定した機能として、以下の設定ファイルの編集を促すP2V支援機能を備えています。
設定ファイル |
---|
/etc/fstab |
/etc/mtab |
/boot/grub/device.map |
/boot/grub/grub.conf |
これらのファイルには、Linuxの旧システムのRAIDコントローラ向けのデバイス名やパーティション名が含まれています。このため、KVM環境で正しくブートさせるためには、編集が必要です。古いProLiantサーバーのRAIDコントローラは/dev/cciss/cXdXや/dev/ida/cXdXというデバイス名なので、これをKVM環境に合うように/dev/hdXに変更します。
Mondo Rescue Tips
Mondo Rescueをうまく使いこなすためのノウハウを、以下にいくつか紹介します。
Tipsその1
まず、リストアを行う前には、必ずRAIDコントローラ配下の論理ボリュームを消去した上で、再度論理ボリュームを作成することを勧めます。古い論理ボリュームが残っていると、Mondo Rescueのリストアに失敗することがあります。
Tipsその2
デバイス名にUUIDを使っているUbuntuなどの場合は、バックアップ元(P2V元)となるOSで、/dev/fstabファイル、/etc/mtabファイル、device.mapファイル、/etc/grub/menu.lstファイルに記載されているUUIDを、デバイス名(/dev/cciss/cXdXpX)などに変更しておきます。
Tipsその3
Mondo Rescueのバックアップ時、bzip2コマンドがない旨のエラー・メッセージが表示される場合は、mondoarchiveコマンドに-O(ハイフンゼロ)オプションを付与して無圧縮でisoイメージを作成すると、エラーを回避できる場合があります。
Tipsその4
Mondo RescueによるリカバリDVD作成時には、SELinuxをdisabledにしておくことを勧めます。SELinuxが有効になっている状態で作成したリカバリDVDでは、リストア後に管理者権限でログインできなくなる可能性があります。
Red Hat Enterprise Linux系のOSでSELinuxをdisableにするやり方は、以下の通りです。まず、/etc/sysconfig/selinuxファイルを編集します。
# vi /etc/sysconfig/selinux … SELINUX=disabled …
/etc/sysconfig/selinuxファイルにSELINUXという項目があるので、disabledを記述します。こうしておいてから、OSを再起動させ、管理者権限でログインし、Mondo RescueのリカバリDVDの作成に取り掛かります。
Mondo Rescueのテスト結果
以下に、2010年12月時点でのMondo Rescue 2.2.8と2.2.9の簡易テスト結果を載せておきます。左側がバックアップ元のProLiantサーバー機種とOS、右側がバックアップ先のサーバーです。
Mondo Rescue 2.2.8の簡易テスト結果
バックアップ元サーバー | バックアップ元OS | バックアップ先サーバー |
---|---|---|
HP ProLiant DL380G7 | RHEL5.3 x86-64 | HP ProLiant DL380g7 |
HP ProLiant DL380G7 | RHEL5.3 x86-64 | HP ProLiant DL180 |
HP ProLiant DL360G6 | RHEL5.3 x86-64 | HP ProLiant DL360G6 |
HP ProLiant DL360G6 | RHEL4.8 x86-64 | HP ProLiant DL360G6 |
HP ProLiant DL360G6 | CentOS5.3 x86-64 | HP ProLiant DL360G6 |
HP ProLiant DL360G3 | RHEL5.3 x86-64 | HP ProLiant DL360G3 |
HP ProLiant DL360G3 | RHEL4.6 i386 | HP ProLiant DL320G5 |
HP ProLiant DL365G1 | RHEL5.3 x86-64 | HP ProLiant DL365G1 |
Mondo Rescue 2.2.9の簡易テスト結果
バックアップ元サーバー | バックアップ元OS | バックアップ先サーバー |
---|---|---|
HP ProLiant SL160z | CentOS5.3x86-64 | HP ProLiant SL160z |
HP ProLiant BL465cG1 | RHEL5.3x86-64 | HP ProLiant BL465cG1 |
HP ProLiant DL360G6 | RHEL5.5x86-64 | HP ProLiant DL360G6 |
HP ProLiant DL360G6 | RHEL5.5x86-64 | HP ProLiant DL360G7 |
HP ProLiant DL360G7 | RHEL5.5x86-64 | HP ProLiant DL360G7 |
バックアップ元サーバー | バックアップ元OS | P2V先のサーバー / KVMホストOS |
HP ProLiant DL360G3 | RHEL4.6 i386 | HP ProLiant MicroServer / CentOS5.5 x86-64 |
HP ProLiant DL360G6 | CentSO5.3x86-64 | HP ProLiant DL360G6 / RHEL5.4 x86-64 |
[注意]
上記のテスト結果は、あくまでもMondo RescueとProLiantサーバーの組み合わせにおける簡易的なテスト結果であり、このテスト結果に関して日本HPによる保守サポート及び動作保証はありません。また、バックアップやリストア後の、OSやアプリケーションの正常動作を保証するものでもありません。十分に注意してください。
リカバリ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コマンドによりサーバーを再起動させ、正常に内蔵ディスクからブートできるかを確認します。
NFSサーバーとRelax and Recoverを使ったシステム・リカバリ
リカバリDVDの作成以外にも、NFSサーバーとブートCDを使って簡単にシステム・ディスクのリカバリができるRelax and Recover(通称ReaR)があります。ReaRは、mkcdrecの開発も手掛けているベルギーのHewlett-Packardのエンジニアが開発に関わっています。ReaRは、Mondo Rescueやmkcdrecと同様に、オープンソースのバックアップ・ソフトですが、ベンダーによる保守サポートや動作保証はありません。
ReaRの特徴は、NFSサーバーとブートCDを使ったバックアップ、リストアが比較的簡単にできるという点です。以下では、ReaRによるNFSサーバーを使ったLinux OSのバックアップおよびリカバリ方法について説明します。まず、以下のURLからRed Hat Enterprise Linux 5.x用のReaRを入手します。
バックアップ対象となるサーバーにReaRをインストールします。Rearにはsyslinux RPMパッケージが必要です。
# rpm -vhi syslinux-3.11-4.x86_64.rpm # rpm -vhi rear-1.7.26-1.el5.noarch.rpm
/etc/rear/local.confファイルに以下を記述します。
OUTPUT=ISO BACKUP=NETFS NETFS_URL=nfs://192.168.1.207/work
NFSサーバーは、ReaRで取得したtarballとリカバリ用のブートCDのisoイメージを保管するファイル・サーバーとなります。NFSサーバー側では、データ保管用のディレクトリ/workを作成しておきます。バックアップ対象サーバーがNFSサーバーの/workにアクセスできるようにNFSサーバーを設定します。
# mkdir /work # vi /etc/exports /work *(rw,no_root_squash) # chkconfig nfs on # service nfs start # showmount -e localhost
ReaRがインストールされたバックアップ対象サーバー側で、rearコマンドを使ってバックアップを行います。
# rear mkbackup
NFSサーバーへのバックアップが始まると、NFSサーバーの/work以下に、バックアップ対象サーバーのホスト名のディレクトリが作成され、バックアップ対象サーバーのシステム・ディスクをアーカイブしたtarball(backup.tar.gz)と、リカバリ用のブートCDのisoイメージ・ファイル(ReaR.iso)が生成されるはずです。NFSサーバー側で生成されたファイルを確認してみます。
[root@dl980g7]# pwd /work/dl360g7rhel55.jpn.linux.hp.com [root@dl980g7]# ls -lh 合計 961M -rw-r--r-- 1 root root 202 12月 19 23:06 README -rw-r--r-- 1 root root 16M 12月 19 23:06 ReaR.iso -rw-r--r-- 1 root root 377 12月 19 23:06 VERSION -rw-r--r-- 1 root root 937M 12月 19 23:06 backup.tar.gz -rw-r--r-- 1 root root 6.6M 12月 19 23:06 backup.txt -rw-r--r-- 1 root root 0 12月 19 23:06 selinux.autorelabel
ReaR.isoによるリストア
リストアを行う場合は、ReaR.isoをCD-Rなどに焼き、リストア対象となるサーバーのDVD-ROMドライブに挿入してDVDブートします。HP ProLiantサーバーの場合は、オンボードのiLO3遠隔管理チップによる仮想DVD-ROMドライブ機能でWebブラウザからisoイメージをマウントして利用することもできます。
リストア対象となるサーバーをDVDブート後、プロンプトが現れるのでrearと入力します。その後、ログイン・プロンプトが現れるので、rootでログインします。シェルのプロンプトが現れるので、rearコマンドに引数recoverを付与して実行すると、NFSサーバーからリストアを行います。リカバリが終了したら、init 6を実行し、リストアCDをDVD-ROMドライブから抜いて再起動します。
# rear recover
図15: ReaRリカバリーCDによるリカバリの様子。CDブート後、プロンプトでrearと入力するとリカバリ・モードに入る(左)。rootでログインし、シェル上でrear recoverと入力することにより、NFSサーバーからリストアが行われる(右)(クリックで拡大) |
ReaRのようなNFSサーバーを使ったリカバリーツールのメリットとしては、
- バックアップ対象サーバーのバックアップ容量が巨大な場合でも、NFSサーバーに圧縮してアーカイブ保管できる
- バックアップ対象サーバーが複数ある場合でも、それらの複数のバックアップ・アーカイブをNFSサーバーで一元的に管理できる
- OSのインストールメディアがなくても、リカバリ用のブートCDによって容易にリストアできる
といった点が挙げられます。ただし、ネットワーク経由でのリカバリ運用で注意すべき点は、リカバリ用のブートCDが、リカバリ対象となるサーバーのRAIDコントローラ配下の論理ボリュームとNICを正常に認識できる必要があるということです。Mondo Rescue、mkcdrecと同様に、ReaRにおいても必ずリストア試験を行い、正常に元に戻ることを確認してください。
以上が、オープンソースを使ったバックアップ、P2Vの基本的な手法です。オープンソースのバックアップ・ソフトは、システムが小規模で、あまりコストをかけたくない場合に威力を発揮します。
しかし、中大規模なSAN環境などでは、さまざまなバックアップ要件を満たす必要があるため、商用のバックアップ・ソフトが一般的であり、オープンソースが一般的になっているとは到底言えません。企業システムにおいては、データの保全性が低下することは命取りだからです。
バックアップは負担になりがちですが、絶対に必要なジョブです。オープンソースのバックアップ・ソフトが自社のシステムに合うかどうかをを考慮しつつ、データを失わないようにするためにどのようなバックアップ・システムを構築すればよいのかをよく考える必要があります。
オープンソースで対処できる部分と対処が難しい部分を洗い出しつつ、仮想化環境を得意とする商用ソフトとオープンソースをうまく使い分けるには、製品の調査が必要になります。ある程度実績のあるソフトを選択するというのも1つの考えです。オープンソースと既存のバックアップ・スクリプトを組み合わせて新しいシステムに適用するやり方もあります。
まとめ
本連載では、オープンソースの監視ソフト、GUIツールの導入、KVM仮想化環境の管理、バックアップ手法、P2Vのノウハウを解説しました。Linuxシステムの運用管理に関する問題点をいかにオープンソースとベンダー提供の製品で解決できるかを、簡単に述べました。オープンソースとベンダー製品の組み合わせや、それぞれの適用範囲を検討してみてください。