ニュース
Dropboxは膨大なデータをどうやって運用しているのか?――、自社の取り組みをメディア向けに解説
2019年9月9日 06:00
Dropbox Japan株式会社は、自社の技術をメディア向けに解説する技術勉強会を9月6日に開催した。
この回では、Dropboxが独自開発したエクサバイト(EB)規模のストレージシステム「Magic Pocket」における、利用頻度が低いコールドデータを扱うコールドストレージがテーマ。低コストかつ高信頼で保存するためのレプリケーションの工夫や、SMR方式のディスクの採用について、Dropbox Japanのソリューションアーキテクトである保坂大輔氏が解説した。
世界32カ所にDropboxのデータセンター
保坂氏は、本題であるコールドストレージの説明の前に、Dropboxのインフラについて紹介した。
DropboxはもともとはAmazon Web Services(AWS)上にデータを置いていた。そのインフラをハイブリッド化していき、2014~2015年ごろに自社データセンター上のMagic Pocketを開発してデータを移行した。2016~2018年ごろには、自社のグローバルネットワーク回線を持ってデータセンター間を接続するようになった。
Dropboxは12カ国に32カ所のデータセンターを持つ。この32カ所には、ストレージやサーバーが設置されたCore DCと、バックボーン回線を収容するPOP(Point of Presence:接続点)とがある。
Dropboxに置かれたファイル(の変更差分)は、最大4MBのブロック単位に分け、それぞれのブロックを圧縮して並列に送るようになっている。データを保存するブロックストレージサーバーには、ブロックが圧縮され暗号化された形でばらばらに格納されている。圧縮には、Dropboxが開発してオープンソースで公開されている圧縮技術「Lepton」が使われている。
Magic PocketではOSのファイルシステムを使わない
独自のストレージシステムであるMagic Pocketを開発して、データをAWSから移行したのは、データの増加が理由だ。総データ量が2018年初頭で500PBに達しており、「EB級のストレージが必要」と判断した。「お金の面もあるが、パフォーマンスや信頼性で、パブリッククラウドで構築していると限界があると感じた」と保坂氏。なお、総データ量は現在すでに1EBを超えており、1年で倍になったという。
移行は、ユーザーに影響しないようサービスを止めずに実行され、「飛んでいる飛行機のエンジンを変えるようなもの」だったという。
Magic Pocketでは、データをディスクに格納する部分にOSのファイルシステムは使っておらず、SCSIやATAのデバイスを直接操作するlibzbcを使ってデータを読み書きしているという。メタデータデータベースを別に持っていることや、冗長化の機構など、いわば多数のサーバーにわたるファイルシステム相当の機能を独自に開発しているようなものといえるだろう。
このMagic Pocketにおいて、2018年から、コールドストレージのレイヤーを作って本格運用しているというのが今回のテーマだ。「パフォーマンス改善というポジティブな面もあるが、ユーザーがどんどん増えているので、どこかでやらないと破たんするというのが動機」と保坂氏は語った。
コールドストレージ特有のレプリケーション方式
Dropboxに置かれるファイルは、作成されてから日数がたつほどアクセスされなくなる。統計データを見てみると、作成されてから一度でもアクセスされたファイルの数は、当然時間経過とともに増えるわけだが、その伸びがどんどん鈍化し、対数的な増加となる。
こうした性質から、利用頻度が高いデータの「ウォームストレージ」と、利用頻度が低いデータの「コールドストレージ」の2種類のストレージ層に分けることを決めた。両者はユーザーが意識することなく、自動的に分類される。「どれだけアクセスしていなければコールドストレージとみなすかについては、複雑なアルゴリズムで、私もすべては知らない。推測だが、例えばExcelファイルとPDFファイルのように、変更されやすいファイルとされにくいファイルの違いも考慮しているようだ」と保坂氏。
ここで工夫されたのが、コールドストレージでデータを低コストかつ高信頼で保存するレプリケーションの仕組みだという。Dropboxでは、数千キロ離れたデータセンター間のレプリケーションでファイルを冗長化している。
1つ目の案は、各リージョンに置かれたファイルのパリティ情報を、リージョンを越えて保存する方法だ。当初はこの方法を考えて9カ月ほど構築を実行していたが、中止したという。
「ITの考えとして美しく管理しやすいが、われわれは1つのミスで信用を失うので、もしものことを考えなくてはいけない。管理プログラムにバグがあったら、人がミスをしたらと考えた」と保坂氏は説明した。
2つ目の案は、FacebookのウォームBLOBストレージシステムで採用されている手法だ。別のデータセンターに置かれた2つのデータをペアにして、両者のXOR(排他的論理和)をとったデータを3つ目のデータセンターに置くというものだ。この方法では、データ本体が消えても、ペアのデータとXORデータから、元のデータを復元できる。
「ただし、ペアを作るのに複雑さが出てくる。1つのファイルを消したときにはペアを作り直す必要がある。また、XORを計算しているタイミングでAが消えるとどうなるか。そのほかいろいろなパターンを考えると複雑になりすぎるので、この方法も採用しなかった」と保坂氏。
採用した方法は、2つ目の案の変形といえるものだ。データ(Dropboxの場合はブロック単位)のペアを作るのではなく、1つのブロックを2つに分けて別のデータセンターに保存し、その2つのXORをとって3つ目のデータセンターに置くという方法だ。
データを読み出すときは、1つのデータについて3つのデータセンターにリクエストし、最初の2つの返事を受け取って元データとする。2のデータの1つがXORデータであれば、半分のデータとXORデータから残り半分を復元する。
この方法をとっているコールドストレージと、データをまるごとレプリケーションしているウォームストレージとで読み出しのレイテンシーを比べると、やはりほとんどの場合でウォームストレージのほうが速い。
ただし、ごく一部、1%程度のケースではウォームストレージのほうが遅いことがあったという。「ウォームストレージでは1つのデータセンターから読み出し、タイムアウトがおきると別のデータセンターから読み出す仕組みになっている。調べたところ、そのタイムアウトで遅くなっていたことがわかり、タイムアウトのしきい値を変えて対策した。コールドストレージによってウォームストレージの性能も改善したといえる」と保坂氏は語った。
SMR方式のHDDで記録密度を上げる
コールドストレージのためのもう1つの工夫が、SMR(Shingled Magnetic Recording、シングル磁気記録方式または瓦磁記録方式)のHDDの採用だ。
HDDの各トラックの幅は、読み込みより書き込みのほうが大きくなる。そのため、通常は書き込み幅に合わせてトラック幅を大きくとる。それに対しSMRでは、読み込み幅に合わせ、トラックの一部を重ねるように書き込むことで、記録密度を上げる。
SMRでは1カ所の書き込みでも隣接トラックの書き直しが発生するため、ランダムアクセスには不向きと言われる。そのかわり、コールドストレージの記録密度を上げるのに向いている。
SMR方式のHDDへの置き換えは、2018年に始まった。「HDDは定期的に置き換えているので、新しく置き換えるところではSMRにした」と保坂氏。SSDによるキャッシュなどのソフトを作り、設置済みのPMR(従来型)方式HDDを使ってSMR向けソフトをテストしたという。
SMR導入の効果としては、まず、1ドライブあたり保管するデータ量が10~20%増加した。また、1ドライブあたりの単価も20%以上削減されたという。
現在、ドライブ容量を1ユニット8TBから14TBに拡張している。さらに18TB、21TB、24TBまで拡張することを計画しているという。
また、2019年末にコールドストレージの25%をSMR化する計画だったのを、40%に上方修正したという。そのほか、SMR以外の高密度化技術も調査し必要に応じて採用していくと保坂氏は語った。