30分で論文流し読みシリーズ 7「File Systems Unfit as Distributed Storage Backends: Lessons from 10 Years of Ceph Evolution」

SOSP 2019で発表される予定の論文。品川先生のブログで見かけたので読んでみた。

utshina.hatenablog.jp

https://www.pdl.cmu.edu/PDL-FTP/Storage/ceph-exp-sosp19.pdf

  • 実際の所要時間

    • 30分。土地勘がある分野なのではじめて30分で読めたぞ!
  • 前提知識

    • Cephはたくさんのノード上にたくさん刺さったストレージを束ねてファイルシステムやブロックデバイスやオブジェクトストレージを提供する分散ストレージシステム
    • 各ノード上ではOSDという単位でローカルストレージを管理している。HDDとかだとOSDとHDDが一対一対応、並列アクセス性能が高いNVMe SSDだと多対一対応。
    • ファイルシステムやブロックデバイスなどのユーザに見せるインターフェースによらず、裏側ではRADOSというオブジェクトストレージが存在していて、すべてのデータはRADOSのオブジェクトのかたまりとして表現される
    • もうちょっと詳しいことは少し前に書いた
  • 課題

    • OSDは従来XFSなどのファイルシステム上をバックエンドとしたFileStoreというものだった。それだといろいろ問題があった
      • トランザクションのしくみをファイルシステムの上に独自実装する必要があって、これの性能が悪かった
      • メタデータアクセスのレイテンシのほとんどがFileStoreのものだった。具体的には次のような問題があった
        • 1オブジェクト1ファイルでファイル名がオブジェクトを一意に識別するハッシュ値、というものだったがディレクトリ走査がファイル名順に並んでいない
        • オブジェクト数が増えるとディレクトリに分けられるのだが、階層が深くなるほどアクセスコストが高くなる
        • と、ここまで書いたけれどもCeph…というかRADOSを実現するためには別にディレクトリ構造なんていらない
      • 新しいデバイスが出てもファイルシステムが対応してないとかいう理由で対応できなかった
  • 解決方法概要

  • 解決方法詳細

    • 4節にけっこう詳しく書いてる。ここで細かいこと書いてもしょうがないので省略
  • 効果

    • レイテンシもスループットもすごく改善した。概要は図3,4,7~11をざっと眺めるとわかる
  • そのほか

    • Cephのデータストアの変遷が2.3にさらっとまとまっている
    • 新規作成されたストレージバックエンドという非常にドラスティックな変更だが、すでにかなり多くの人がBlueStoreを使っている
  • 感想

    • 読み物としてとてもおもしろい。引き続き30分といわずじっくり時間をかけて読みたいし、参考文献も掘っていきたい
  • おまけ(論文そのものとは関係なく単にわたしが知ってることの紹介)