我想在 Linux 中编写自己的自定义文件系统。我可以通过标准 NFS 共享它而不对本地 NFS 服务器进行任何更改吗?如果是这样,我的文件系统需要实现哪些 VFS API?这种方法还有其他指导方针/陷阱吗?
答案1
是的。一旦 linux 将其识别为文件系统并安装它,它就可以像任何其他文件系统一样通过 NFS 共享,无论它是硬盘驱动器、CD、USB 记忆棒,甚至是从其他地方共享的另一个 NFS 文件系统。
这就是抽象层为了。
答案2
这是两个独立的任务:
- 为 Linux 编写本地文件系统
- 通过 NFS 导出
第二个实际上(大部分)独立于第一个(如果内核可以安装它,则可以导出它)。辛苦是在第一点。正如远程文件系统的大量经验所表明的那样,只有以完全不可接受的性能为代价才能实现完全的 POSIX 合规性。看看 NFS(各种版本)、远程文件系统、安德鲁文件系统,以及肯定还有其他一些我现在忘记的,因为考虑到权衡(并且大部分被丢弃,如果出于某种原因,NFS 仍然是这Unix 的远程文件系统)。还要看看 CIFS,Windows 世界的远程文件系统。
第一个是一项重大事业。看着那(这大量的Oracle 在 BTRFS 上投入了大量的工作,距离非实验状态还需要几年的时间。考虑一下失败的 ReiserFS 等。当前的 ext4 文件系统是 ext 文件系统的相对简单的开发,ext 文件系统是 Linux 的第一个本机文件系统之一。
我建议您在开始这样的项目之前先加入当前的文件系统开发小组之一,以了解相关知识。