レプリケーションしているから即時復旧は確実…って本当!? ありがちなバックアップへの認識違い
バックアップにはさまざまな方法がありますが、これまでは主にソフトウェアを使ったバックアップ方法を取り上げてきました。一方で、RAIDやネットワークレプリケーションなどのハードウェアを主体としたバックアップ方法を耳にすることがあります。そして中には、「このシステムはネットワーク越しにレプリケーションしているので即時復旧も可能だし、バックアップソフトは特に必要ないのでは?」といった声が聞こえてくることもあります。それ果たして本当のことなのでしょうか? 今回はRAIDやレプリケーションなどのハードウェア主体のバックアップでありがちな疑問に目を向けてみましょう。
ハード面での耐障害性向上の基本「RAID」とは
ここまでの連載でも書いてきたように、バックアップを実施する必要性にはさまざまなものはありますが、そのひとつにハードウェアに問題が生じるハードウェア障害が挙げられます。中でもハードディスクは、最も障害が起きやすいデバイスとして知られています。これはCPUやメモリーなどの電気信号が流れるだけのデバイスと異なり、実際に円盤が高速回転して駆動することから衝撃などに弱いという特徴を持っているためです。
このハードディスクの障害からシステムやデータを守るための手段として以前から利用されてきたのが「RAID(Redundant Arrays of Inexpensive Disks)」と呼ばれるハードディスクを冗長化する手段です。RAIDを簡単に説明すると、複数のハードディスクをまとめて1台のハードディスクとして管理することによって、その中の1台のハードディスクに障害が発生した場合でもデータが消えたり、システムがダウンしたりすることなく稼動できるようにする方法です。このRAIDによって、最も障害が起きやすいハードディスクが保護できるようになるため、信頼性の求められるサーバーやストレージシステムに数多く採用されています。
RAIDには0~6の段階があり、大まかには3つに分類することができます。1つ目がRAID 0で2つのディスクに対して分割・並列して読み書きする仕組みによって、ディスクの書き込みと読み出し速度の高速化を図るものです。RAID 0はあくまで高速化を図るための方法であり、複数のハードディスクの中で1つでも障害が起きると全てのデータが読み書きできなくなってしまうというデメリットがあります。このため、信頼性に関しては低下する結果となります。
RAID 1は、複数のディスクへ全く同じデータを書き込むことでディスクの耐障害性をあげる方法です。RAID 1の場合、同じデータを複数のハードディスクに書き込んでコピーを作るので、いくつかのディスクに障害がおきても継続的に運用できます。ただし、書き込みする際に、RAID 1を構成しているすべてのハードディスクに同じ内容を記録しなくてはならないため、書き込み速度は低下するとデメリットがあります。
RAID 2~6は、RAID0とRAID1の持つデメリットを解消するために考案された手法で、パリティと呼ばれるデータ保障領域を作ることで、ディスクの読み書きの速度と耐障害性の両方を向上させるものとなります。現在は、コスト効率がよく、かつ耐障害性の高いRAID 5が現在最も多数使用されているといわれています。
ウイルス混入や人的ミスなどに要注意
RAIDはディスク単位で耐障害性を向上させるものですが、同様にネットワークを介してサーバー単位で実施するものが、レプリケーションやクラスタリングと呼ばれるシステムの耐障害性の向上策です。レプリケーションはいわばRAID1のシステム版ともいえるもので、複数のサーバーやストレージに全く同じシステムやデータを恒常的に保存しておくことで、1つのサーバーに問題が発生してダウンしてもシステムは継続的に稼動できるようになります。
クラスタリングはRAID 2~6が持つような効果に近いもので、複数のサーバーをあたかも1台のサーバーとして扱うことで、1台のサーバーが停止してもシステムは問題なく利用できる上に、サーバーの台数を増やせば増やしただけ処理が高速化できるようになります。大規模なWebサービスを展開しているサイトでは、数百~数千台台単位に及ぶサーバークラスタリングによって、数億に及ぶアクセスを遅延なく処理しています。同様に、大規模なストレージクラスタリングを構築することによって、数万人に及ぶユーザーの同時書き込みや決済処理に対してストレスを感じさせないレスポンスを保つなど、システムの高速化と信頼性の向上を果てしているのです。
このように聞くと、レプリケーションやクラスタリングは万能のようにも思えます。実際にレプリケーションやクラスタリングを使ってシステムを構築していれば、バックアップは必要ないと捉えてしまうケースは少なくないようです。システム障害が起きてもタイムラグなしで切り替えられますし、1つのサーバーのデータが消失してもほかのサーバーに同じデータが保存されているので、そう考えてしまうのは仕方のないことともいえます。
しかし、そこには大きな落とし穴があります。その落とし穴とは、これらの技術は人的ミスやウイルスの混入などで生じる問題には対応できないことです。例えばレプリケーションは、メインのシステムに保存されたデータの内容をコピーして複数のサーバーやストレージに反映させることで信頼性を向上させています。このため、メインのシステムのデータに問題があった場合には、それが全てのシステムに反映されてしまうのです。 クラスタリングについても、問題のあるデータが存在した場合、分散されえて書き込まれてしまいます。つまり、1つの操作ミスが全てのシステムに反映されてしまい、1つのシステムがウイルスに感染すれば全てのシステムが全て感染してしまうという結果が待っているため、バックアップをより重要視しなくてはならないのです。
バックアップは冗長化とは別物
このような問題が生じたときにバックアップを実施していなかったら、どのような被害が生じるかを想定してみましょうまずシステム保護を実施していない場合の事例として、メインのサーバーがウイルスに感染したとします。このウイルスに感染したサーバーは即座にほかのサーバーにその内容を反映させ、反映されたサーバーはいっせいにウイルスを拡散したり、場合によっては情報を漏洩させたりします。こうなると全てのシステムを停止させて、システムを構築し直す必要がでてきます。冗長構成でなければ、一台の再インストールと設定を実施すればことは済みますが、冗長化しているだけに台数分だけ再インストール作業が必要となります。作業量は台数に比例するので、管理者の負担を増大する結果となるのです。
一方、システム保護を実施していた場合はどうでしょうか? システムをとめるなどの基本的な手順は上と同様ですが、手元にはシステムが正常に稼動していた際のデータが存在するため、リカバリするプロセスに関してはシステム構成の復元する時間×サーバーの台数分の作業時間となります。
上下の計算式を見れば明らかな通り、15時間もの差が出ることになるのです。
一方、データ保護のためのバックアップをしていなかった場合はどうでしょうか? これはもう復元できる可能性はほぼ皆無なので「プライスレス」としかいえません。
ここまで説明してきた通り、レプリケーションやクラスタリングでシステムを構成することは、システムの信頼性や処理速度を向上させることはできますが、決して万能ではありません。システム保護やデータ保護などのバックアップを実施しなくては、有事の際に取り返しが付かないほどの甚大な被害が発生することを念頭に置く必要があります。レプリケーションやクラスタリングと、データのバックアップは、共にシステムのダウンタイムを削減するためのアプローチではありますが、本質は大きく異なるのです。あくまでバックアップを定期的に実施していることが前提にあってこそ、RTOやRPOを極小化できる高いシステムを構築できることをしっかりと認識しておきましょう。


