Dropbox社は最近、ユーザーファイルを大規模に保存する同社の内部不変BlobストアMagic Pocketにおいて、コンパクション戦略を再設計することで、著しく使用率の低いストレージボリュームから容量を回収し、ストレージ効率を向上させた方法を説明した。同システムは現在、有効データを定期的に新しいボリュームへ再編成し、部分的にしか使用されていない古いボリュームを消去して再利用できる。
「Increasing Magic Pocket write throughput by removing our SSD cache disks」と題した記事で説明されているとおり、Dropbox社は昨年、不変Blobストア全体におけるデータ分散方法を変更する新サービスを導入し、バックグラウンド書き込みにおけるライトアンプリフィケーションを削減した。しかし、この変更は意図しないデータ断片化の増加も招いた。
Dropbox社のバックエンドは、ファイルを複数サーバーにまたがる小さなオブジェクトとして保存し、保存データを不変として扱う。この設計は信頼性を向上させる一方で、ファイルが更新または削除された際に古いデータを即座に削除できないという制約がある。Dropbox社のスタッフソフトウェアエンジニアFacundo Agriel氏は、この課題について次のように説明している。
データは不変であるため、削除してもディスク容量は直ちには解放されません。古いデータはストレージボリューム内のディスク上に残ります。ボリュームはいったんクローズされると、再び開かれることはありません。その代償として、削除によって未使用領域が残り、積極的に回収しない限り、その無駄は時間とともに増えていきます。回収を行わなければ、ボリュームは徐々に部分的にしか使用されない状態となり、必要以上に多くのディスクにライブデータが分散します。回収不足による断片化は、ストレージオーバーヘッドを大幅に増加させる可能性があります。
今年初め、Dropbox社は、新しいLive Coderサービスが著しく使用率の低いストレージボリュームを生成していることを発見した。場合によっては容量の5%未満しか使用していなかった。これにより、データはほぼ空の多数のボリュームに分散し、断片化とストレージオーバーヘッドが増大し、既存のコンパクションシステムの限界が露呈した。
Dropbox社の従来のコンパクション戦略は、ほとんどのストレージボリュームがほぼ満杯である状況では有効に機能していたが、多数のボリュームが著しく低充填状態になると非効率となった。この問題に対処するため、Dropbox社は容量回収を担うシステムを再設計した。更新されたアプローチは、もっとも非効率なボリュームを優先し、システムリソースに過度な負荷をかけないようクリーンアップ作業をより慎重に管理する。Agriel氏は次のように付け加えている。
コンパクションは物理的な容量回収を実行します。ボリュームはいったんクローズされると変更できないため、各ボリュームから有効なBlobを収集し、それらを新しいボリュームに書き込み、古いボリュームを廃止します。これが、削除が最終的に再利用可能な領域へと変換される仕組みです。
L2と呼ばれる新しいコンパクション戦略は、多数のストレージボリュームが低充填状態にある場合に、より迅速に容量を回収するために現在使用されている。従来の方法のようにすでに高密度なボリュームを徐々に埋めるのではなく、L2は複数の疎なボリュームを単一のほぼ満杯のボリュームに統合し、より速く容量を回収可能にする。
出典: Dropbox社ブログ
Dropbox社はさらに、従来の手法では効率的に回収できなかった極端に低充填なストレージボリュームに対応するため、L3と呼ばれる第3のコンパクション戦略を導入した。この手法では、これらの疎なボリュームから残存する有効データをLive Coderサービス経由でストリーミングし、徐々に新しいイレイジャーコーディングされたボリュームへ再書き込みする。
コンパクションは、不変ストレージシステムにおいて有効データを新しいボリュームへ再書き込みし古いボリュームを廃止することでディスク容量を回収する。一方、イレイジャーコーディングはデータをパリティ断片付きの複数フラグメントに分割することで、ハードウェア障害による一部損失が発生しても再構築を可能にし、データを保護する技術である。
Hacker Newsのスレッドでは、一部のユーザーが製品の使い勝手について「このように素晴らしいエンジニアリングの成果が、あまりにも多くの不満点を抱えた製品の背後に埋もれてしまっている」と指摘し、価格についても疑問を呈している。また、大企業における「意図しない結果」というシナリオにも疑問が示された。ユーザーnopurposeは次のように書いている。
巨額のインフラ費用を抱える大企業は、手元にある本番データを使ってああした変更を綿密にモデル化しているのだろうと私は思っていました。(中略)実際のところは私と同じで、デプロイして何が壊れるかを見るだけだったのです。
これに対しAgriel氏はスレッド内で、大規模システムはゆっくりかつ不均一に動作するため、インフラ変更の影響を検知することは困難であると述べた。
InfoQが以前報じたとおり、Magic PocketはDropbox社の独自開発による水平方向にスケーラブルなエクサバイト級Blobストレージシステムであり、オブジェクトストアとしてAmazon社のS3を置き換えたものである。99.99%の可用性と極めて高い耐久性を維持している。Agriel氏はQCon Plus 2023でMagic Pocketの実装について発表している。