ストレージメモリの規格は現在、NVMe(Non-Volatile Memory Express)へと急速にシフトしており、Dell EMCやNetAppなど大手ストレージベンダの中にはNVMe SSDを実装したオールフラッシュストレージアレイを市場に投入するところもあらわれてきた。"オールフラッシュ"といいながらSAS/SATAがインタフェースの主流だった2、3年前とは異なり、現在のストレージメモリは3D XPointなどの高速ストレージデバイスをターゲットにしており、レイテンシの低減とパフォーマンスの最大化、つまりリアルタイム性を重視して開発が進められている。ただし、価格性能比からいえばまだNVMeは割高感が強く、しばらくはSAS/SATAも組み合わせたハイブリッドなシステムが取られる傾向が続くとみられる。
こうしたハード側の進化は、当然ながらOSやファイルシステムといったソフトウェアの進化も促すことになる。今回はその一例として、カリフォルニア大学サンディエゴ校(UCSD)のAndiry Xuを中心に進められている次世代ファイルシステム「NOVA(NOn-Volatile memory Accelerated)」を紹介したい。
- GitHub - NVSL/linux-nova
NOVAは3D XPointのようなバイトアドレッサブルな不揮発性メモリと、DRAMなど一般的な揮発性メモリを混載したストレージシステム上で動作するログベースのファイルシステムとして設計されており、パフォーマンスの最大化と強力なデータ一貫性を維持できる点を最大の特徴としている。
もともと、フラッシュメモリではデータのフラグメンテーションが発生しにくいため、ログベースのファイルシステムとの親和性は高い。NOVAはそれに加え、データを記録する際、ログ全体ではなく、ファイル(inode)ごとにログを分けて実行する。ファイルデータはそのものはログとは別に保存され、ログに含まれるのはメタデータだけとなるので、そのサイズはきわめて小さく、ガベージコレクションのコストも最小化できることになる。また、不揮発性メモリの特徴を活かすため、アプリケーションのアドレス空間(ユーザスペース)に直接ストレージをマッピングするDAX-mmapをサポートしている点も特徴のひとつだ。これによりブロックレイヤやページキャッシュへのアクセスをスキップできるため、オーバーヘッドを大幅に低減することが可能になる。
2017年8月、Xuと同じ研究室でプロジェクトに取り組むSteven SwansonがLKML.orgにNOVAを紹介する投稿を行い、今年3月にはXu自身が大量のパッチなどの内容を投稿、フィードバックを呼びかけているが、一部のユーザからは「パッチを送っても反映されない」「バグの指摘をスルーされる」といった声も上がっている。NVMeや3D XPointが実用化の段階に入ったことで、NOVAのようなファイルシステムへの注目度が高まるのは間違いないだけに、コミュニティとしての今後の成長も期待したいところだ。
- [RFC 00/16] NOVA: a new file system for persistent memory : Steven Swanson : LKML
- [RFC v2 00/83] NOVA: a new file system for persistent memory : Andiry Xu: LKML