今から約1 年前、Dropbox は名の知れたテクノロジー企業として初めて、自社のストレージ ドライブに 高密度 SMR(シングル磁気記録方式)テクノロジーを導入しました。
しかし、ある問題に直面しました。SMR は従来型の PMR(垂直磁気記録方式)ドライブよりもコストを大幅に節約できる反面、従来型ドライブよりも書き込み速度が遅いという欠点がありました。
そこで、SMR が持つコスト削減というメリットを維持したまま、パフォーマンスにも妥協しないという道を模索することになります。
それから 1 年が経ち、ついに目的を達成するに至った今、これまでの経過をご紹介したいと思います。
目次
1. 期待を裏切るスムーズな導入
9 月から順次、初めての実稼働マシンが到着し始めました。不安がよぎるのは当然です。「ちゃんと動作するのだろうか。壊れてしまうのでは?」と考えたのも無理はありませんでした。生まれたばかりの、まったく新しい技術を恐る恐る試したのです。その結果は、ごく順調でした。つまり問題は起きず、スムーズに稼働できたのです。
しかしこれは、驚くべきことではありません。なぜなら、ここに至るまでの経緯には Dropbox らしいストーリーがあったのです。細部にまで気を配り、徹底的にバグを取り除いて確証を高めていくこと。その後にプロジェクトを大々的に展開するという流れです。
この 3 年間、SMR への移行に関わった Dropbox の各チームは、数々のイノベーションを起こすと同時に、気の遠くなるほど多くのテストも行ってきました。ハードウェア チームは Magic Pocket ソフトウェア チームと密接に連携し、あらゆるエッジ ケースを想定し、考え得るすべてのシナリオを検証しました。SMR へのスムーズな移行の背景には、こうした徹底した作業があったのです。
2. ソフトウェアの改良
SMR の導入にあたっては、ソフトウェア レイヤーに大幅な変更を加える必要がありました。まず、ネットワーキング スタックからディスクへのスループットを高めることで、ソフトウェアを最適化しました。また、SSD キャッシュも追加しました。これは、SMR ディスクでは固定サイズ領域にしか書き込めず、書き込みも必ずシーケンシャルになるためです。
そこで、書き込み操作をステージングできる領域が必要になりました。ソフトウェアに追加したこの SSD のステージング レイヤーは、SMR への移行を意図してのことでしたが、それ以外のケースでもレイテンシの短縮に効果を発揮することになりました。
幸運なことに、シーケンシャルな書き込みに必要なソフトウェアの変更作業は、大部分が予定より早く進み、既存の PMR ディスクのテストを実施することができました。新しいアーキテクチャの構築を始める前にもかかわらず、PMR と SMR の両方をサポートできるようにしたのです。言い換えれば、SMR のマシンを実稼働させる以前から、数十万もの設置済みディスクを使ってスタック全体を徹底的にテストできたということです。
こうした事前の作業によって、予想されるリスクの多くを取り除くことができました。新しいマシンが到着したときにすべきことは、書き込み先となる実際のディスクを交換するだけという状態になっていたのです。
Dropbox の当初の設計の一部が、結果的には SMR へのスムーズな移行に役立ちました。一般的な Dropbox インフラストラクチャでは、データを最大 4 MB までの不変ブロックで処理します。
ディスクへのランダムな書き込み操作を新しいブロックにシーケンシャルに記録する SMR にとって、これは都合の良い仕様でした。加えて、Magic Pocket で設定されている 1 GB という書き込み領域のサイズは、SMR ドライブの分割に使用される 256 MB の領域とちょうど良い対応関係にありました。
3. ハードウェア
SMR は当初、概念実証のケースでした。つまり、「SMR は Dropbox での実用に耐えうるのだろうか」という問いを実証しようとしたのです。ハードウェアの観点から見ると、PMR から SMR に移行することで、データ ストレージの高密度化が速まりました。また、SMR のユースケースは、すでに構築していた Magic Pocket と非常に相性が良いということもわかりました。
Dropbox が開発した SMR 用ソフトウェア スタックに対する十分な制御とは対照的に、ハードウェア チームはバックグラウンドで行われているあらゆる動作を理解するために膨大な作業が必要でした。Dropbox で SMR を導入する際の大きな課題の 1 つが、データセンター分野において SMR が新しいテクノロジーだったという点です。プロジェクトの成功を支えたのは、ハードウェア チームと Magic Pocket チームの良好な協力関係だったと言えるでしょう。
SMR 用にソフトウェアのチューニングを実施している大手のテクノロジー企業は Dropbox だけではありませんが、私たちが迅速な移行を実現できた背景には、このユースケースが非常に自然なものだったという点があります。
それでも、初めての試みを達成するには困難がつきものです。扱っているデータの膨大さを考えればなおのことです。SMR への対応について、ハードウェア チームが得られたサポートはごくわずかでした。Dropbox の現在のテスト用クラスタはおよそ 6 ラックで、そこに 48 システム、約 5,000 ドライブを格納しています。
しかしドライブを販売しているベンダーは、こうしたシャーシ構成を扱っていなかったのです。そこで自ら調整を繰り返したところ、その過程で良い情報を収集でき、それが強力なテスト プロセスを生み出していきました。
結果として、Dropbox は技術の最先端を切り開くことになりました。SMR に真剣に投資を行っている企業はほとんど存在しません。そのため、ベンダーに代わって多くのテストを行うこともよくありました。結果的に、Dropbox の技術は一歩先を行くことになったのです。
4. 密度を高める
昨年、SMR 導入の取り組みをはじめたときの目標の 1 つは、2019 年にはデータ ストレージ容量のうち 25 % を SMR ドライブが担うというものでした。
そして 9 月以降、ストレージ サーバーに導入する新しいドライブはすべて、SMR になりました。同時に、データ増加のスピードを超えるペースで、ディスク容量の密度を継続的に高めることにも成功しました。このペースが維持されれば、2019 年の終わりまでには Dropbox のデータのうち、当初の目標を超える 40 % 近くが SMR ドライブに保存されることになります。
5. コスト削減
データ ストレージの目標と同様、SMR 導入によるコスト削減もまた、期待どおりとなりました。同じ容量の PMR ドライブと比較した場合、同等のコストで SMR ドライブにはおよそ 10 ~ 20 % も多くのデータを保存することに成功しました。他にも、現在使用している高容量の SMR ドライブに移行することで、前世代のストレージ設計と比べ、全体で 20 % 以上のコスト削減が見込めることがわかりました。それ以外にも、コストを抑えた新しいハードウェアの導入がコスト削減を後押ししています。
一方、SMR ドライブを扱う複数のベンダーと取引することで、Dropbox のサプライ チェーン全体にも、Dropbox の将来的なストレージ コスト構造にもプラスの効果を生み出します。
6. エネルギー節約
SMR への移行で、Dropbox のエネルギー消費は一段と効率的になりました。SMR ドライブは電力消費が少なくて済むため、それまでの 8 TB ドライブに代わって 14 TB ドライブを新たに導入し、さらなるコスト削減を実現しました。
つまり、ラックの密度は劇的に高まったのに対し、消費電力の増加はわずかに抑えることができました。また、同一の CPU とメモリを維持したまま、1 台のマシンでストレージ ディスクを 60 台から 100 台へと増やすことにも成功しました。
効率性を高められたことで、最終的にはドライブの容量を 18、21、そして 24 TB まで増やして電力消費をさらに削減できると見込んでいます。
7. オープンソース
SMR ドライブへの書き込みに使用しているのは、オープン ソースの libzbc です。このライブラリを使用して開発を進める中で問題が発生することがあり、Dropbox はこのライブラリに 13 件のコントリビューションを行うことになりました。
さらに、独自のテスト ツール SMRtest を開発しました。このツールは擬似的なワークロードを生成して、SMR ドライブでの書き込み/読み取りの検証を行い、読み取り/書き込みのスループット パフォーマンスのベンチマークを計測するものです。Dropbox はすでに、エコシステムを構成するパートナー、サプライヤー、ベンダーにこのツールを共有し、彼らが SMR の導入に必要な条件を整えられるようにしています。
そして今後数か月のうちに、この SMRtest をオープン ソース ソフトウェアとして公開し、より大きなコミュニティで活用できるようにしようと考えています。
8. 固有の課題
ソフトウェアの観点からお話しすると、Dropbox は、容量、パフォーマンス、柔軟性を高めるために、ファイル システムを使わずにディスクに直接書き込むという方法を選びました。現在は一部の OS でファイル システムからの書き込みがサポートされつつありますが、この取り組みを行っていた当時にそうした選択肢はありませんでした。
そこで、ディスクとやり取りするために libzbc を使用することにしました。このライブラリは端的に言うと、Linux デバイスやブロック デバイスのスタックを経由せずに、ディスクに直接コマンドを送信するためのラッパーです。
しかしテスト中に、ディスクでエラーが幾度となく発生しました。そこで調査した結果、このエラーの原因がハードコードされたループにあることがわかりました。Linux であればカーネル コードに再試行のロジックが組み込まれていますが、私たちは Linux を使用しないため、ディスクにアクセスする際の再試行ロジックを独自に実装する必要がありました。
既存のプラットフォームに SMR ドライブ技術を導入するうえで、ファームウェアも問題となりました。各種のコンポーネントを提供するベンダーが多岐にわたっていたことが主な理由です。複数のドライブを 1 つのシステムに接続するため、ホスト バス アダプタなどのさまざまな仲介技術に加えて、ハード ドライブを提供する複数のベンダーと連携しました。各ベンダー、そしてサーバー シャーシ自体も、基盤となるファームウェアは独自のものでした。
多くの要素が複雑に絡み合っていたため、さまざまなパートナーやベンダーが互いにやり取りできるようにすることが、ハードウェア面での最初の取り組みとなりました。
次に、個々のベンダーと協力して早い段階で問題を見つけ、解決していくことにしました。こうした取り組みの甲斐もあって、すべてのベンダーがプロジェクトをスムーズに進め、Dropbox と前向きに協力してくれることになりました。
こうした取り組みは必ず、長期的な成果となって現れてきます。コンポーネント全体で複数の調達元を確保することのメリットとして、単一障害点を排除できること、サプライ チェーンの観点から単独のサプライヤーへの過剰な依存を防ぐことなどが挙げられます。
9. コールド ストレージと SMR
近年、Dropbox が開発した技術に、新しいコールド ストレージ層との統合があります。コールド ストレージ層とは、アクセス頻度の低いデータを念頭に設計されている層です。レプリケーション スキームによっては、エンドユーザーが体感できるような違いを生まずに、ディスク使用量を 25 ~ 33 % も削減することができました。同様に、稼働しているコールド ストレージ システムでは SMR ドライブと PMR ドライブの最新の構成を採用しており、パフォーマンスを変えずにさらにコストが削減されます。
コールドストレージ層の導入について詳しくは、プレスラフ・リーによる最近のブログ記事をご覧ください。
10. 将来の展望
インフラストラクチャがシンプルであるということは、データ ストレージ テクノロジーにおける今後のイノベーションにおいても、Dropbox が強みを発揮できるということです。私たちが考えるこのアプローチの利点は、将来の技術も SMR と同じか類似する API を使用する可能性が高いという点です。
この方法で、常にディスク内の一定数の領域に連続的に書き込むことで、ディスクの高密度化が実現します。これがマイクロ波アシスト記録(MAMR)ドライブにせよ、熱アシスト記録(HAMR)ドライブにせよ、どちらも同じインターフェースを持ち同じソフトウェア アーキテクチャを使用できるでしょう。
2020 年のストレージ設計ではすでに、さらに密度を高めるための取り組みを開始しています。SMR を導入したことで、次世代のあらゆる技術を受け入れられる扉が開かれたと考えています。Dropbox にとってこれは、信頼性やパフォーマンスを犠牲にすることなく、エネルギー フットプリントを削減し、よりコスト効率に優れたストレージを獲得できることを意味しています。業界全体にとっては、HDD テクノロジーのさらなる強化のために基盤となるアーキテクチャが採用され、Dropbox の取り組みが成果を生むことになるでしょう。