FUSE,从内核到用户态文件系统的设计之路
FUSE(Filesystem in Userspace)是一个允许用户在用户态创建自定义文件系统的接口,诞生于 2001 年。FUSE 的出现大大降低了文件系统开发的门槛,使得开发者能够在不修改内核代码的情况下实现创新的文件系统功能。JuiceFS 就是基于 FUSE 构建的高性能分布式文件系统,充分发挥了 FUSE 的灵活性和扩展性。 为了更好地理解 FUSE 的设计理念,我们将首先回顾内核文件系统以及网络文件系统(如 NFS)的发展历程,这些技术的演进为 FUSE 实现用户空间文件系统功能奠定了重要基础。 在文章的最后,将介绍 JuiceFS 在使用 FUSE 过程中的实践。由于 FUSE 需要进行用户态与内核态之间的切换,这会带来一定的开销,并可能导致 I/O 延迟,因此许多人对其性能存在顾虑。从我们的实践经验来看,FUSE 在大多数 AI 场景下能能够满足性能需求,相关细节将在文章中阐述。 01 单机文件系统:内核态与 VFS 文件系统作为操作系统中的核心底层组件,负责频繁操作存储设备,因此最初的设计完全在内核空间中进行。"内核"这一概念的提出,是随着计算机硬件和软件日益复杂...

