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ストレージをバックアップ先とする場合も少なくない |