2010年3月16日火曜日

Googleのクラウドストレージ戦略を読む-2
                ・・・ Datacenter as a Computer

少しGoogleのクラウドストレージ戦略から横道に逸れるが、今回はGoogleの目指す“Datacenter as a Computer”について触れてみようと思う。昨年春、発表されたこのレポートは今後のGoolgeのデータセンターの在り方について述べている。

-コンテナー型データセンターの普及-
最先端のデータセンターと言えば、このところの流れはコンテナー型だ。工場でコンテナーの中にサーバーやストレージ、コミュニケーション機器、空調設備を組み込んで、大型トレーラーで搬送し、現地で組み立てる。この方法ならデータセンターの建設は早いし、必要に応じてキャパシティーの増強も自在だ。実際のところクラウドでお馴染みのAmazonやMicrosoft、さらにYahoo!eBayなど多くの大規模データセンターが採用している。勿論、Googleの場合も以前から自社仕様を導入している。

Microsoftの場合はWindows Azure専用のシカゴデータセンターが有名だ。同センターには“Generation 4 Modular Data Center”と呼ばれる仕様のコンテナーが200台以上運び込まれている。これら特別仕様のコンテナーベンダーではスーパーコンピュータを手掛けてきたSGI (旧Rackable Systemsが2009年4月に買収)が有名だが、2005年からはSun Modular Datacenter、2008年にはIBM Portable Module Data CenterやHP Performance Optimized Data Center、Dell Double Deck Containerなども登場している。

-Warehouse-Scale Computer(WSC)とは何か-
さて話を本論の“Datacenter as a Computer”に戻すと、このレポートで述べられている仕様からGoogleの次世代データセンターが見えてくる。Googleでは複数台のコンテナーから構成する現在のデータセンターを進化させ、倉庫大の超大型コンピュータ ”Warehouse Scale Computer(WSC)”を目指している。つまり、データセンターそのものを1台のコンピュータと考え、そのためのハードウェアの構成とは何か、そしてソフトウェアとはどうあるべきかをこのレポートで述べている。WSCの実際の適用場面では、市場に出てくる機器が絶えず進化するため、年毎に作られるデータセンターは必ずしも同じではない。しかしながら、通常私たちが目にする1台のサーバーを効率良く動かすハードウェアやソフトウェアの設計があるように、WSCではデータセンター全体を1台のコンピュータと見立て、そのための設計とは何かが考え抜かれている。

上図はWSCの構成例で、1Uのサーバー(左)を7フィートのラックに搭載(左から2番目)し、それら複数のサーバーラック (右から2番目)をクラスタースイッチ(右)で束ねる。ここで1つのラックは小型のクラスターとなり、ラック中央にはそのためのイーサネットスイッチ(~10Gbps)が見える。それらはさらに大型クラスターとしてクラスタースイッチ/ルターで接続、結果、1万台以上のサーバーがクラスタリングされる。勿論、1Uサーバーとしたのはひとつの事例で、時代と共にブレードであっても構わない。この例示を拡大して、実際に建設したものがWSCだと思えばよいだろう。
ストレージはどうなっているかと言えば、基本的に、ディスクドライブは直接サーバーに接続され、それらは世界規模の分散ファイルシステムGFSで管理される。勿論、ストレージをNAS(Network Attached Storage)のように見立てることも可能だが、WSCでは、GFSが複製化や誤り訂正などを行うために直結方式となっている。

下図はストレージ階層(Storage Hierarchy)の説明として、プロセッサーやサーバー、ストレージの関係を示したものである。個々のサーバーはマルチコアCPUを複数搭載(Multi-Socket)し、キャッシュ(L1/L2)を介してローカルDRAMを共有(16GB)、ディスク(2TB)は直結されている。このようなサーバーが前述のローカルラック(1U)に80台集積され、ひとつのデータセンターを意味するWSCでは30ローカルラックが組み込まれる。つまりサーバー台数は、このWSC当たり2,400台、DRAMは30TB、ストレージは4.80PBとなる。
-WSCを支えるソフトウェア-
データセンターをひとつの倉庫型コンピュータと見立てたWSCは、サーバーをクラスター型に束ねたハードウェア群と、それらを分散並列処理させるソフトウェアからなる。ソフトウェアは3層に分れている。最下層は、①膨大なサーバー群を抽象化して1台のコンピュータに見せる“Platform-level Software”、これにはファームウェアやカーネル、OS Distribution、Libraryなどが含まれる。次の2層目は、②クラスターレベルのリソース管理やサービス提供を担う分散システムソフトウェアの"Cluster-level Software”、これにはリソース利用を単純化するプログラミングモデルDryadやMapReduce、Sawzall、Chubby(その他Apache Hadoop、Amazon Dynamoなど)と同様にGFSやスケジューラ、RPC(Remote Procedure Call)が含まれる。このレイヤーは、言わば“Data Center OS”と言っても良いものだ。そして最上位層は、③特定のサービスを実行する“Application-level Software”である。この層はオンラインサービスとオフラインサービスに分れ、オンラインにはGoogle Search、Gmail、Google Mapsなど、オフラインにはGoolge Mapsのもととなる地図タイルの作成や衛星写真からGoogle Earthのインデックス作成など、大規模なデータ解析が典型的な例である。

-目指すは世界最大のクラウドコンピューティング-
WSCと支えるソフトウェア、それらは一体となって巨大なクラウドコンピュータとなる。
昨秋、ACMで行われたGoogleプレゼンテーション
“Spanner”計画では"Datacenter as a Computer”をベースに、将来的な目標として、世界に散在する100~1000ヶ所のWSC(データセンタ)の106(100万)~107(1,000万台)のコンピュータを1013のディレクトリーで連携させ、最大109(10億)のクライアン トが利用する1 Exabyte (1018)のストレージを実現するという。