パスワードを忘れた? アカウント作成
26721 story
Google

Google曰く「信頼性は劣るかもしれないハードウェアを2倍の数揃える方がよい」 140

ストーリー by hylom
質より量 部門より

あるAnonymous Coward 曰く、

Googleのデータセンターは全世界に36あると言われているが、その一部を同社のJeff Dean氏がサンフランシスコで開催された同社のI/Oカンファレンスで明らかにしてくれた(本家/.記事より)。


Dean氏は「より信頼できるハードウェアを一定数揃えるより、それより信頼性は劣るかもしれないハードウェアを2倍の数揃える方がよいと我々は考えている」と発言し、「信頼性はソフトウェアのレベルで提供するべきである」との考えを明かした。「1万台のマシンが動いているとすれば、毎日何かがダウンするに決まっている」からである。


(つづく...)

ハードウェアを当てにできないのは、新規にクラスタを稼働させるときの状況をみれば明らかだそうで、Googleのクラスタはおよそ1800台のサーバから構成されているが、稼働開始年度の典型的なケースでは、1,000件の個別のマシン障害が発生し、ハードディスクドライブの障害は何千件という単位になるそうだ。もし配電ユニットが1つダウンすることにより500~1000台のマシンが6時間ほど落ち、20台のラックが駄目になり、40~80台程のマシンがダウン毎にネットワークから消える。5台程のラックは「不安定」になり、ネットワークパケットが半分ほど消滅したりする。クラスタを再配線する必要が1回は発生し、2日間に渡って5%のマシンに影響を及ぼす。また、約50%の可能性でクラスタのオーバーヒートが発生し、発生の際はほぼ全てのサーバが5分以内ダウン、リカバリに1~2日かかるという事態が発生するとのこと。


Googleはサーバのハードウェア・コンポーネントには汎用のものを使用しているが、パッケージに関しては独自なものを採用しているそうだ。回路基盤はIntelがGoogleのためにカスタム設計したものを使用しており、各サーバのケースは使用せず、サーバが40台設置されたラックを覆う独自のケースを設計・採用している。Cnet News Blogの元記事にてGoogleデータセンター内の写真が数点紹介されている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by akiraani (24305) on 2008年06月03日 16時08分 (#1355514) 日記
    ためしに、信頼性の高いサーバ10台と信頼性の低いサーバ20台で、MTTR(平均修理時間)が固定の場合に、MTBFの差がどれくらい吸収されるのか簡単に試算してみました。

    ひとまず、MTTRがどちらも1日、信頼性の高いサーバのMTBFが300日であると仮定します。
    このとき、信頼性の高いサーバ10台の故障率は1.63808E-25となります。
    サーバ20台で上記と同等かそれ以下の故障率を実現する場合に、信頼性の低いサーバに必要なMBFTは

    16.4日

    になります。
    つまり、この場合、ハード台数が2倍確保できるのであれば、信頼度は1/18でよいということになりますね。

    #なお、同じ条件でMTTRが2日だったとすると、必要MTBFは22.5日に、逆にMTTRが0.5日だと、11.8日になりました。
    --
    しもべは投稿を求める →スッポン放送局がくいつく →バンブラの新作が発売される
  • なるほど... (スコア:3, おもしろおかしい)

    by Anonymous Coward on 2008年06月03日 13時56分 (#1355392)
    信頼性は劣るかもしれない"技術者"を餌で釣って2倍の数をそろえた方が、結果的に何かいいものが出来上がるのか...
    • Re:なるほど... (スコア:5, すばらしい洞察)

      by Ryo.F (3896) on 2008年06月03日 14時01分 (#1355400) 日記
      一般にそうでないことは、人月だけそろえて突っ込んでもデスマーチが解決しないことで証明済みだ。
      親コメント
    • Re:なるほど... (スコア:5, すばらしい洞察)

      by ots556556 (34248) on 2008年06月03日 15時31分 (#1355480)
      ところがどっこい、クラスタを構成するサーバのうち10%が落ちてる状況のことは「90%のサーバが稼動しています」と言えるけど、
      ソフトウェアのソースコードのうち10%がバグだらけの状態は「このソフトウェアは使い物になりません」としか形容できないわけですよ。
      親コメント
    • by Anonymous Coward on 2008年06月03日 14時19分 (#1355414)
      >「信頼性はソフトウェアのレベルで提供するべきである」

      って言ってるし、それらを束ねる上役の力量が問題になるんじゃないかな?

      #結論は非現実的
      親コメント
    • Re:なるほど... (スコア:4, おもしろおかしい)

      by L.Entis (21733) on 2008年06月03日 15時46分 (#1355496) ホームページ 日記
      この場合の信頼性というのは、「技術者」に例えるなら、離職率(離職しない率)に相当する数量では?
      つまり、技能が同じで離職率の異なる(離職率に応じて初期投資も異なる前提で)技術者を用意するなら、離職率の高い技術者を安く大量に用意したほうがよい、という話になるのでは?

      というわけで、ハードほど技術者は離職率によってお値段が違うとは思えないので、あまり良い例えではないような気もします。
      (逆に、凄く良い例えだ、と思ってる人もいたりして…)

      親コメント
    • Re:なるほど... (スコア:2, すばらしい洞察)

      by phenix (31258) on 2008年06月03日 14時19分 (#1355413)
      コンピュータは思考しませんからね。
      ほかの業界だと、国内に量産工場を1棟建てるより、同じコストで中国に2棟建てた方が、
      不良品を除いてもたくさん作れますね。ってところでしょうか。
      親コメント
    • 信頼性はソフトウェアのレベルで提供するべきである」

      とありますので、

      信頼性は劣るかもしれない"技術者"を餌で釣って2倍の数をそろえた方が、結果的に何かいいものが出来上がる
      というこれが実現するためには、技術者を釣った後、信頼性をもたらすような概念で洗脳する必要があるのです。

      # ちっ、セルゲイとブリンの奴、俺の戦略に気がついたな…
      --
      fjの教祖様
      親コメント
    • by yasudas (5610) on 2008年06月03日 15時03分 (#1355455) 日記
      >信頼性は劣るかもしれない"技術者"

      技術者の信頼性は測定が難しいし、時間もかかる。
      一人優秀なのがいれば、それにやらせたらよいので、多数揃えてアタリを引くまで使い倒す。

      しかし、アタリを引いても使い倒してしまうので、数を揃えても...

      親コメント
  • アプリに依るでしょ (スコア:2, すばらしい洞察)

    by chu-chu (7456) on 2008年06月03日 15時06分 (#1355460)
    検索エンジンなんて、10台に1台壊れても結果に影響ないからなあ。
    そういう「ゆるい」アプリがGoogleのコアビジネスを占めているから、
    Googleはそれで成り立つし、他の業界ではそうはいかない。
    • by attu (959) on 2008年06月03日 15時36分 (#1355487)
      なんで?
      確かにGoogleのサーバの10分の1が故障してもGoogleの検索結果には影響ないでしょう。
      でも10分の1壊れてても全数正常に動いてても出てくる検索結果は同じはずですよ。
      壊れた10分の1だけイイカゲンな結果出してもGoogleなら許されるよね、って言いたい?

      少々ハードウェアが壊れたぐらいでは処理の結果に影響が出ないようにシステムを作った
      方がよいですよ、って話だと思いますが。
      親コメント
    • by 90 (35300) on 2008年06月03日 16時57分 (#1355553) 日記
      検索に使うDBは少なくとも国ごとにひとつまでしか分割できませんし、求められるサービスの
      信頼性は少なくとも内部では銀行並みでしょう。「Googleが落ちた」とか「検索が壊れた」と言う話は
      聞きませんし。
      親コメント
      • by chu-chu (7456) on 2008年06月03日 18時11分 (#1355607)
        別に国ごとに一つのDBを持つ必要は無く、
        埼玉県と千葉県に、適当な頻度で同期する程度のDBを独立に立てても構わないですね。
        商取引のように常に一貫性を維持する必要がないのですから。
        埼玉県と千葉県で検索結果の50位と51位が引っ繰り返って目くじらを立てる人はそうはいませんし、
        インパクトのある1位や2位の結果なんて、同期の間の短い間でそうそう入れ替わるものじゃありません。
        たとえ入れ替わったとしてもその影響はたかが知れてます。

        内部で銀行並みの信頼性があるかなんて私は答えることはできませんが、
        銀行並みの信頼性を実現するのは過剰要求であり、予算の無駄だというのは想像できると思います。
        親コメント
    • Googleが検索だけやってたのはもう何年も前で、
      今は「データ消えちゃった、またクロールしてこよ」
      では済まないデータも抱えていると思います。
      Gmailのデータとか。
      --
      yp
      親コメント
  • 東郷平八郎 [togo.co.jp]提督は百発百中の砲一門 [php.co.jp]は百発一中の砲百門に勝るといっていました。
    • その東郷さんは、百発二中の砲100門に新兵100人、百発一中の砲100門に経験豊かな兵士100人ではどちらを選ぶだろう。

      親コメント
    • by spelunker (34545) on 2008年06月03日 18時20分 (#1355613)
      確率論が意味を持たない戦いの局面というのは存在しますから、
      百発百中の砲の価値というのは確かに存在すると思います。
      冗長性で担保できる問題との区別が戦略というものですよね。
      親コメント
  • スラド編集者曰く (スコア:2, おもしろおかしい)

    by Anonymous Coward on 2008年06月03日 16時21分 (#1355529)
    「コメントの信頼性は劣るかもしれない人間を2倍の数揃えてもただただ面倒なだけだ」
  • by pongchang (31613) on 2008年06月03日 17時04分 (#1355558) 日記
    3の倍数だと阿保 [atsumu-watanabe.laff.jp]になるのが実証されたんだろうか?
  • より信頼できるハードウェアを一定数揃えるより、それより信頼性は劣るかもしれないハードウェアを2倍の数揃える方がよいと我々は考えている
    信頼性が1/2より大きいなら、そんなの当たり前じゃん…と思ったけど、実際はそうではない。

    1万台のマシンが動いているとすれば、毎日何かがダウンするに決まっている
    ので、障害が発生したら、おそらく人手でそれに対処しなければならない。高信頼性ハードウェアを使おうが、「それより信頼性は劣る」ハードウェアを使おうが、いずれにせよ結局障害対応要員が常駐している必要がある。
    障害対応要員が倍になるようでは話にならんでしょうけど、そんなことにはならない、ってことなんだろうね。
    • 障害対応要員が倍になるようでは話にならんでしょうけど

      どうなんでしょう?? Googleを支える技術 [amazon.co.jp]によると、何台かをまとめたクラスターを作っているようです。

      ざくざくと壊れるようならば、とりあえずの信頼性はクラスターで確保しておいて、クラスターが動けなくなったら、障害対策要員はどこが壊れているかなど無視してクラスター単位で生成・撤去すればよいだけ。

      結局、台数に物を言わせて、ソフトで信頼性を確保すると、障害対応要員はそんなに必要ないよ、必要な技術レベルも決して高くないよ…ということに落ち着くのかもしれません。

      .

      しまった。
      それってうちの商売からみて敵だ
      (大抵の大手計算機メーカーにとってもそうでしょうが)。
      --
      fjの教祖様
      親コメント
      • by Anonymous Coward on 2008年06月03日 16時32分 (#1355538)
        18禁の警告に続いて、日本巨乳党 (コミック) [アダルト] が表示されたのですが、
        それこそが「Googleを支える技術」なんでしょうか?

        なんか色々なものが支えられそうな気もしますが・・・

        # 作者の知り合いなので AC
        親コメント
    • 信頼性2倍の製品を2倍の価格で調達できるならいいけどね。価格で倍払っても信頼性2倍にはならないよ、ということだよね? 逆もしかり。信頼性1/2の製品を、1/2の価格で調達できても、管理コストが増える分だけ勿体無いわけで....。 あと、1台で済む用途の場合、無動の予備機と稼動機の2台用意するのと、高信頼性の装置1台用意するのとどっちが良いと思う? 故障する頻度と管理コストの兼ね合いでケースバイケースなんだけどさ。結局。
      親コメント
  • 液晶ディスプレイとか。
    信頼性というよりは性能の話ですが。
    --
    =-=-= The Inelegance(無粋な人) =-=-=
  • 人も・・ (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2008年06月03日 14時25分 (#1355423)
    「より信頼できる技術者を一定数揃えるより、それより信頼性は劣るかもしれない技術者を2倍の数揃える方がよいと我々は考えている」
    「○○人の技術者が働いているとすれば、毎日何人かがダウンするに決まっている」
  • by ksiroi (24990) on 2008年06月03日 15時00分 (#1355453) 日記
    一番ベストなのは信頼できるハードウェアを一定数の二倍揃えることだと思いますけどね。
    現実はそう行かないのでしょうし、そうできるようにソフトウェアの改善も行っているでしょうけど^^;

    // 初期予算、だけでなく保管とか管理の問題があるんですね・・・(:>^
    • by Ryo.F (3896) on 2008年06月03日 16時11分 (#1355520) 日記

      一番ベストなのは信頼できるハードウェアを一定数の二倍揃えること
      なんで「一番ベスト」なのか解らんぞ。どう言う判断基準なんだ?
      親コメント
    • by yasudas (5610) on 2008年06月03日 22時43分 (#1355838) 日記
      >一番ベストなのは信頼できるハードウェアを一定数の二倍揃えることだと思いますけどね

      一番ベスト...ちょっと苦笑。
      信頼できるハードウェアなら二倍揃えるのは無駄だよね。
      信頼に限界があり、信頼できないから冗長にするんですよね。

      「一番でもベストでもないが、完璧な信頼は得られない現状では、冗長化等の対策は必要。
      信頼性が多少高いモノを選ぶとコストが倍以上になるので、冗長化とかやってらんない。
      なので、ちょっと安いのを倍揃えて有事に対処する様にしている。
      それで、なんとかGoogleはやっていけているぞ」
      ということを言っているのだと思う。
      親コメント
  • (T/O)
  • どっかで聞いたことがあるな~とおもったら・・・

    丸山先生のレクチャーシリーズ Podcasting
    http://satellite.wakhok.ac.jp/podcast/xml/maruyamalecture.xml [wakhok.ac.jp]

    ここでした。たしか「Googleの分散処理技術」とかのトピックだったとおもうのですが。
    上記のPodcastでは、その内容を時間を割いてわりと詳しく説明してました。

    Podcastなんで、写真とか現物を見たわけじゃないですし、話だけ出だと「?」な部分もありますけど。

    最初は「見える化」のトピックで聞き始めて、色々面白い内容があるので、たまに聞いてる。

    #すでに紹介されていたら失礼いたしました・・・
  • 「信頼性はソフトウェアで確保するべきもの」…この言葉は、身も蓋もない「ホントウのところ」を突いていると感じました。

    障害、エラー、誤操作などなど、こういった事象に対して対処することを避けていないソフトウェアを生産することに「対価」を支払わないことが問題の根源かもしれません。
    信頼や品質は作りこんでいくもので、なにか良さそうなものをカタログ閲覧して購入・配備すればすむ「保険」ではありませんし、大事なことについては昔と変わらずに作りこんでいくことでこそ利用者は満足を得るものでしょう(一番いいのは、利用者も作りこみのために手と頭を働かせるケースでしょうか)。
    企業や公共が使用しているシステムたちは、損失・損害を保険でカバーすれば許してもらえるような周辺的な存在ではなくなっていますよね?であるならば、利用者がまず作りこみの為に手を動かすのでなければ、ナニをもって「信頼に足る」とするのでしょうか?

    作りこむことの大事さ・高い価値を、ユーザに得心させる(教育する)ことが大切になってきているように思います。
    (そして、システム開発を土木工事同様のフォーマットやフローで管理したいなどという怠惰さ(思い上がりか?)を駆逐できれば…とも)
    • 障害、エラー、誤操作などなど、こういった事象に対して対処することを避けていないソフトウェアを生産することに「対価」を支払わないことが問題の根源かもしれません。

      はて、そうでしょうか??

      Googleはハードウェアを動かせる限り連続して動かしているとは思えません。各機械は、定期的に止めて、ヘルスチェックをかけているはずです。全体がいっせいに停止することはない、というだけで。

      と言うことは、ソフトウェアもその「一定期間」さえ動作すればよい、という風に作っているはずです。ジョブのtakeoverがきちんとデザインされているだけで。つまり長期間運用しないと発生しないようなエラーについては、最初からエラー処理など書いていないはずです。

      その分を分散処理と、冗長化を実装するのに割いているのだと思いますよ。
      --
      fjの教祖様
      親コメント
typodupeerror

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

読み込み中...