文件系统不适合作为分布式存储后端:来自Ceph演变10年的经验教训 - blogspot


Ceph是于2004年在UCSC开始的研究项目。Ceph核心是一个称为RADOS的分布式对象存储。存储后端是在已经成熟的文件系统上实现的。文件系统有助于块分配,元数据管理和崩溃恢复。Ceph团队将存储后端构建在现有文件系统上,因为他们不想从头开始编写存储层。完整的文件系统需要大量时间(10年)来开发,稳定,优化和成熟。
但是,在存储路径中具有文件系统会增加很多开销。它为实现高效事务带来了问题。它引入了元数据操作的瓶颈。例如,包含数百万个小文件的文件系统目录将成为元数据瓶颈。分页等也会产生问题。为了避免这些问题,Ceph团队尝试通过在用户空间中实现WAL来挂钩FS内部,并使用NewStore数据库执行事务。但是很难与文件系统搏斗。自2010年以来,他们解决问题的方式已经有7年了。
最后,Ceph团队放弃了文件系统方法,并开始编写自己的不使用文件系统的存储系统BlueStore。他们仅用了两年就可以完成并提高存储水平!这是因为小型的自定义后端比POSIX文件系统更快地成熟
与早期版本相比,新的存储层BlueStore实现了非常高的性能。通过避免数据日记,BlueStore能够实现比FileStore / XFS更高的吞吐量。 使用文件系统时,脏元数据的回写会干扰WAL的写操作,并导致高的尾部延迟。相反,通过控制写入并使用直写策略,BlueStore确保没有后台写入会干扰前台写入。这样,BlueStore避免了写入的尾部延迟。

最后,完全控制I / O堆栈可加速新硬件的采用。例如,虽然文件系统很难适应带状的磁记录存储,但作者仍能够为它们添加元数据存储支持到BlueStore,而数据存储正在开发中。总而言之,从分布式存储中汲取的教训是,实现自定义后端比尝试为此目的而尝试增加文件系统更容易,更好。 这是BlueStore,存储后端的体系结构图。所有元数据都在RocksDB中维护,该数据库位于BlueFS(最小的用户空间文件系统)之上。

本文作者卡塔基梅隆大学的Abutalib Aghayev,红帽公司Sage Weil,卡内基梅隆大学的Michael Kuchnik,红帽公司马克·尼尔森,卡内基梅隆大学的Gregory R. (卡耐基梅隆大学)