Yahoo!メールのアクセス障害告知ページ

これは、Yahoo!だけで起きうる問題ではない ~Yahoo!メールで大規模アクセス障害発生~

  • このエントリーをはてなブックマークに追加

by [2014年10月03日]

Yahoo!メールのアクセス障害告知ページ

9月30日、Yahoo!メールで大規模アクセス障害が発生しました。

記事執筆時点で足かけ4日に渡ってYahoo!メールに登録しているユーザー中およそ8パーセントに相当する3,794,777のユーザーIDでメールサービスの利用ができない状態が続いているというものです。

そこで今回はメールサービスのトラブルと対策について考えてみたいと思います。

何が起こっているのか

Yahoo!による公式発表(第5報まで)では、「9月30日(火)午前9時20分頃より、Yahoo!メールのシステムにおいて、システムの冗長性やデータの保全性を維持できないレベルのハードウエア障害が発生」したとのことで、しかも「現在も原因は特定できておりません」とあり、メールの送受信を司るサーバ群の一部で何らかの大規模な故障が発生し、しかもそれが何故起きたのか判然としない状況にあることが示唆されています。

冗長性の確保

ここでそもそも「システムの冗長性」ってどうやって確保するんだろう?と思われた方がおられるかも知れません。

通常、メール送受信サーバのような重要度が高く固有性の高いデータを扱うサーバでは、例えばディスクをRAID構成としています。

RAIDはいくつかの種類があるのですが、複数のハードディスクなどを組み合わせて各ドライブにディスクアレイと呼ばれる仮想的な1台の大容量ディスクの分割されたデータと、他のドライブに保存された分割データの差分情報を保存することで、仮にこの1台のディスクアレイを構成する1台か2台のディスクドライブが故障しても故障が検出されたディスクを同容量の新品ディスクと入れ替え、「リビルド」というディスクアレイ再構築作業を行えば、アレイを構成する残りの各物理ドライブに重畳して保存されていたXOR演算によって生成される差分情報を元に故障したディスクに含まれていた情報を復元できる=データの保全性を保てる、RAID 5あるいはRAID 6と呼ばれるタイプのものが利用されるのが一般的となっています。

今回の発表では「システムの冗長性やデータの保全性を維持できないレベルのハードウエア障害」とアナウンスしていることから、恐らくこのディスクアレイシステムのどこかでリビルドによって補完できる許容上限を超える台数の物理ドライブの故障や異常動作が同時に発生する、ディスクアレイを制御するRAIDコントローラそのものが故障する、あるいはそもそもサーバマシンそのもののCPUやメモリ周りなどに異常が発生する、といった致命的トラブルが(単独あるいは複合的に)起きた可能性が高いと考えられます。

Adaptec RAID 6805(ASR-6805)
SAS RAIDカードの一例。カード上にCPU内蔵のコントローラとメモリを搭載し、ディスクアレイで冗長性を確保するのに必要なパリティデータを専用ハードウェアでXOR演算し生成する機能をはじめ、冗長性や高信頼性を実現するため、一般的なパソコン用ディスクインターフェイスには無い特別な機能を備える。

ちなみに、ハイエンドの基幹サーバ向けマシンなどでは拡張カード形式のRAIDカードそのものを複数挿しておき、ディスクの方も2chの多重接続ができる特別なインターフェイス接続のものとすることなどにより、動作中のRAIDカードのハードウェア故障が検出(※通常、この種のRAIDカードでは、コントローラそのものの健全性を常時監視するプログラムがRAIDコントローラ内蔵のCPU上で実行されており、異常が検出された際にはそのプログラムが何らかの形でアラートを発令する仕組みになっています)されてもその場で予備のRAIDカード経由に切り替えてアレイの読み書きを続行させ、その間に故障カードを(通電状態のまま)抜き取って健全な「予備の予備」カードに交換する(※これをホットスワップと言います)、といったインターフェイスレベルでの冗長性を確保できる構成のものもあり、金融機関などの本当にミッションクリティカルかつ予告なき停止が絶対許されない分野では、こうした多重構成により無停止対策のとられた特別な設計のマシンが利用されるのが一般的であったりします。

Yahoo!のメールサーバを構成するマシンが果たしてどのような機種で、どのような構成となっていたのかは公表されていないため判然としませんが、公式発表で特に冗長性や保全性について言及していることから、少なくともディスクアレイを構成していたことは見て取れます。

なお、Yahoo!が「原因が特定できておりません」と明言する一方で影響を受けるユーザーID数をやけに具体的に示していることから、何が起きているのかはわからないもののトラブルの起きているサーバ群そのものの特定は既にできている、という状況にあることも容易に推定できます。

なぜこんなトラブルが起きるのか

それでは、この手のトラブルは何故起きるのでしょうか。

筆者の見聞きした範囲で言えば、

・サーバマシンの電源系が経年劣化で出力低下してしまい、電力不足で同時に複数のハードディスクで書き込みエラーやディスクの物理破損が起きた
・RAIDコントローラのファームウェアとディスクアレイを構成する各ドライブのファームウェアの双方あるいは一方に不具合があり、ある特別な条件を満たした場合にだけ誤動作を引き起こす
・サーバマシンのOS上で動作しているメール送受信システムのプログラムに何らかの不具合があり、ソフトウェア的にサーバに蓄積されたメールデータが破壊された
・物理的にサーバマシンが発火してディスクアレイを構成するドライブを道連れにしてしまった

など、基本的に年中24時間止まることを許されない過酷な使用状況故に、サーバ機では一般的なパソコンの使い方では想像もつかないような面倒なトラブルが起きることがあります。

そして、物理的な故障にせよ、ソフトウェア的な不具合にせよ、「一見正常に動作しているように見えるが精査するとおかしな挙動が出る」、というパターンが一番やっかいで、その場合、原因が特定できない場合は疑わしいサーバマシンのハードとソフトを総入れ替えしてトラブルを根本からつぶしてしまう、といった力業の対策を講じる羽目に陥ったりします。

特にメールサーバはミッションクリティカルな分野ですから、おそらくYahoo!でも相応に冗長性の高い、システムとしての並列度の高いサーバマシンを利用していたか、さもなくばサーバ群の構成そのものを冗長化していたものと推測しますが、いくら物理的な冗長性を確保してもソフトウェアレベルでこうした発見しにくいトラブルが起きるとお手上げ(※ソフトウェア的な冗長性を確保するのは本当に大変です)で問題解決まで長期化しがちです。

例えば、OSやその上で動作しているプログラム、あるいはRAIDカードとハードディスクドライブのファームウェアの相互間の組み合わせで、それらをバージョンアップした後に問題が発生した場合(※俗にいう相性問題)などは特にやっかいで、思いつく原因を総当たりでチェックしてようやく不具合の真の原因が判明する、といったことも少なくありません。

今回のケースでも、足かけ4日経っても原因の特定に至らず、「現時点においてシステムは次第に安定化してきておりますが、今後さらに十数時間程度、安定化を確認していく必要があります」とあることから、おそらく担当スタッフは疑わしいハード・ソフトを総当たりで順番に交換しては動作テストを繰り返す、最も過酷な状況に陥っているものと推測できます。

これはYahoo!だけで起きうる事態ではない

以上、今回Yahoo!メールで起きたアクセス障害について考察してきましたが、これはYahoo!メールがいわゆる「フリーメール」、つまり無料で利用可能なメールサービスであることとは(完全に断定はできないものの)無関係なタイプのトラブルである可能性が高いことは特に強調しておきたいと思います。

こうしたトラブルはYahoo!メールに限らず、大なり小なりどのプロバイダ、あるいはどのメールサービスでも起きうるタイプのものなのです。

もちろん、それでもトラブル発生を予防し、あるいは起きたときの被害を局限するための手立ては幾つもあります。

その点でトラブル発生を未然に阻止することができず、さらに不具合によるサービス停止を長期化させてしまっている今回のYahoo!の対応は運営上、決して褒められた物ではありませんし、常用メールアドレスが使えなくなっている「約8パーセント」のユーザー、中でも特に至急の連絡案件を抱えていた人にとっては、全くたまったものではないでしょう。

しかし、だからといって別のフリーメールサービスに乗り換えたらこの問題が完全に解決するというものでもありません。

極端なケースを言えば、乗り換えた先でもっとひどいトラブルになる可能性だってあるのです。

筆者は、かつてとあるローカルなメールサービスで先にも挙げた「サーバが物理的に燃える」という想定外のトラブルによりデータを喪った経験があって、その教訓からメールアドレスは複数、それも異なったサービスのアカウントを取得して保有するようにしているのですが、その後取得した別のアカウントでも大きなトラブルが出たことがあって、どのアカウントなら絶対安心だ、ということはないと考えています。

そのため、今回の件を見る限り、俗に「捨て垢」と呼ばれるフリーメールサービスの「捨ててもかまわない」つもりで取得したメールアドレスでも、一つくらいは緊急用に維持しておいた方が良いと思いますし、今回のトラブルのために急遽他のサービスでメールアドレスを取得した人も、これまで使っていたYahoo!メールのアカウントをわざわざうち捨ててしまうべきではないでしょう。

結局の所、こうした事態に備えて「冗長性」を高める努力、つまりプロバイダの提供するメールサービスやフリーメールサービスを複数組み合わせて利用する=複数のメール送受信手段を持つようにする、といった対策を講じる他に、メールでの連絡不能という最悪の事態を回避する手だてはないのです。

▼参考リンク
Yahoo!メールで発生中のアクセス障害について(10月2日 午後9時30分 第5報) – ヤフー株式会社

コメントは受け付けていません。

PageTopへ