6.3.?交互

6.3.1. delete
6.3.2. read
6.3.3. write
6.3.4. fsync
6.3.5. mkvol
6.3.6. rmvol
6.3.7. removeReplica

本节说明了UXFS客户端和服务器之间的交互。

6.3.1.?delete

文件将被删除,如下图:

  1. 客户端从VFS接收删除请求。它通过unlink操作删除MRC上的文件元数据,并接收文件凭据是(credentials),其中包含全局唯一的UXFS fileID、删除许可和副本位置列表。

  2. 客户端通过调用首个OSD(即xloclist中的第一OSD)上的unlink操作来删除文件内容。

  3. 直到所有客户端都关闭了文件,即首个OSD已知的所有capabilities都已超时的时候,首个OSD才会进行删除操作。接下来,头部OSD通过unlink操作删除剩余OSD上的文件对象。

6.3.2.?read

读取文件,如下图:

  1. 客户端从VFS接收删除请求。它通过unlink操作删除MRC上的文件,并接收文件凭据,其中包含全局唯一的UXFS fileID,读取许可和副本位置列表。

  2. 客户端发送一个读取请求,从fileID所标识的文件中,从偏移量Z读取Y字节长度的数据。OSD返回包含对象数据的缓冲区,以及一些额外的信息,如校验失败的通知或填充标志等。

  3. 如果发送了多个读取请求,则客户端必须确保在超时之前更新该capability,以保持文件处于打开状态。

  4. 客户端从文件中读取更多数据,例如获取另一个对象。

  5. 客户端接到一个关闭请求。无需显式的在服务器上关闭文件,因为当OSD缓存中的Xcap超时时,这是隐式完成的。

6.3.3.?write

文件的编写方式,如下图:

  1. 客户端收到来自VFS的打开请求。 它打开MRC上的文件进行写入,并接收文件凭据,其中包含全局唯一的UXFS fileID,写入许可和副本位置列表。

  2. 客户端将包含数据的缓冲区发送到存储对象的OSD。OSD发送OSDWriteResponse作为响应,当文件关闭或调用fsync时,必须将其缓存并发送到MRC。 客户端还可以决定在功能保持运行之间不时发送挂起的文件大小更新,因为功能的生命周期可以在几十分钟的范围内。

  3. 如果发送了多个写入请求,则客户端必须确保在超时之前保持Xcap,以保持文件处于打开状态。

  4. 客户端通过发送更多写入请求将数据附加到文件,每个写入请求都使用OSDWriteResponse进行回答。

  5. 客户端接到一个密切的连接。它将任何挂起的OSDWriteResponses发送到MRC,以便更新文件大小。当OSD缓存中的Xcap超时时,无需在服务器上显式关闭文件,这是隐式完成的。

6.3.4.?fsync

文件是fsync(文件同步),如下图:

  1. 该文件已打开并修改。

  2. 客户端从VFS接收fsync请求。 如果文件已打开,则所有待处理数据都将写入OSD。

  3. 客户端将任何挂起的OSDWriteResponses发送到MRC,以便更新文件大小。

  4. 该文件被进一步修改或关闭。

6.3.5.?mkvol

创建新卷,如下图:

  1. 客户端收到mkvol请求。然后它在MRC上创建volume作为返回。

  2. MRC在DIR注册卷。

  3. 如果一切正常,MRC会通过确认响应客户端。

6.3.6.?rmvol

删除卷,如下图:

  1. 客户端从控制台收到rmvol请求。 然后它在删除MRC上的volume作为返回。

  2. MRC取消注册DIR的卷。

  3. 如果一切正常,MRC会通过确认响应客户端。

6.3.7.?removeReplica

将删除文件的单个副本,如下图:

  1. 客户端从控制台收到removeReplica请求。 它向MRC发送请求以使用匹配的首个OSD移除副本。作为响应,它接收文件凭证,其包含全局唯一的UXFS文件ID,能够删除和副本位置列表。

  2. 客户端通过调用头部OSD(即切片的第一OSD)上的取消链接操作来启动副本的文件内容的删除。

  3. 头部OSD延迟删除,直到所有客户端都关闭了文件,头部OSD已知的所有功能都已超时。 反过来,头部OSD通过取消链接启动删除剩余OSD上的文件对象。

  4. 如果客户端发现其文件的副本位置列表已过时,则必须从MRC检索新的副本位置列表。

XML 地图 | Sitemap 地图