3.2.?FUSE

xtfs_mount通过FUSE为应用程序提供文件系统接口,FUSE是一个在用户空间中实现文件系统的库。应用程序使用POSIX接口操作系统内核,如打开和读取。FUSE内核模块将这些调用转换为消息(即RPC),然后通过管道将其传递给FUSE文件系统。FUSE文件系统作为无限循环的守护程序运行,从管道读取和处理消息并将响应发送回内核。FUSE库的用户空间处理了大部分内核至用户空间交互的细节,以便开发人员可以专注于实现文件系统逻辑。这通常通过实现一组FUSE回调来完成,每个回调对应于POSIX系统调用。FUSE库将消息转换为请求,供开发人员回调使用,并将回调中包含的返回值转回FUSE内核模块的消息。这些FUSE回调是xtfs_mount的主要接入点。

例如mkdir的FUSE回调中,客户端通过上图所示的各个阶段发出一系列请求(消息)。客户端通过xtfs_mount实例连接到服务器的代理,典型的服务器配置是由单个DIR服务器和单个MRC服务器以及多个OSD服务器组成。在mkdir的情况下,客户端将向MRCProxy发送请求以创建指定的目录。因为FUSE回调是同步的,所以在发送请求时也必须是同步的,即发送者必须在进行任何处理之前等待响应。但是,这并不意味着整个系统是同步的:只有FUSE回调在请求上同步阻塞,允许客户端中的各个阶栋拿庞蜗菲教ㄗ⒉嵬眷步地进行通信(从而提高性能)。此外,由于FUSE回调可以是多线程的并且可重入,因此服务端(例如MRCProxy)可以同时处理来自多个FUSE回调的请求。换句话说,客户端的并发性不受FUSE前端和处理FUSEmessages的线程数的限制。

XML 地图 | Sitemap 地图