元数据服务删除文件unlink流程
2017-03-24 14:50:18 0 举报
元数据服务删除文件的unlink流程是一个用于在分布式系统中安全地删除文件的操作。首先,客户端向元数据服务器发送一个unlink请求,该请求包含要删除的文件的路径。然后,元数据服务器会检查该文件是否存在,如果存在,它会从文件系统的目录结构中移除该文件的元数据信息,但不会立即删除文件的数据块。接下来,元数据服务器会将这个操作的结果返回给客户端,告诉它文件已经被标记为待删除。最后,当文件的数据块被其他进程引用的次数变为0时,它们才会被安全地删除。这个过程确保了在分布式系统中删除文件的安全性和一致性。
作者其他创作
大纲/内容
ClientOPCoordinator收到这个操作上下文之后,将操作上下文的操作状态修改为 OpCtxState::RD_deletedentry,然后重新构造一个操作码为 OpCtx::NS_deletedentry的操作上下文,这是一个写请求,只有NameNode的Mater才能处理
工作线程首先检查该父目录inodeid 所在的unit文件是否就绪
获取目录(文件)inodeid 索引页信息
提交所有的微事务
返回 YFS_EAGAIN 错误码
消息类型为 YfsMessage::YM_astons_unlink
NameNode的网络层收到消息后,首先解析消息包中的信息是否合法
将这个 unlink操作的操作上下文分发到 ClientOPCoordinator去处理
不合理
该NameNode的网络层收到这个回应消息之后,将消息转交AttrnodeHandler对象处理,AttrnodeHandler再转发给 ClientOPCoordinator对象处理
否
检查该 inode id 所属的unit 文件是否处于可用状态
FileSystemWorker删除 inode 属性信息,释放 inode id
通过网络返回AP unlink操作结果
消息类型为 YfsMessage::YM_astons_setattr
AP给NameNode发送unlink消息,消息类型为 YfsMessage::YM_cltoms_unlink
是
AttrNode通过网络向NameNode发送unlink请求的回应消息,消息类型为 YfsMessage::YM_astons_unlink
返回相应的错误码
FileSystem首先检查该inode id所属的unit 文件是否处于changing 状态
AttrNode收到这个消息之后,构造一个操作码为 OpCtx::FSO_setattr 的操作上下文,这个操作上下文被分配到某个工作线程处理,该工作线程首先锁定该inode id 所属的unit 文件,然后设置该inode 最新的属性
提交所有的微事务,提交完成后把操作上下文的操作状态修改为 OpCtx::S_sending_response,给NameNode回应 set attr 请求已经执行完成,消息类型为 YfsMessage::YM_astons_setattr
NameNodeParserDispatcher收到这个操作上下文之后,根据操作上下文的操作码将这个操作上下文转发给 FileSystem对象处理
根据该文件的 inodeid 锁定该文件所在的名字空间
NameNode收到这个回应消息之后,首先从消息中解析出最新的inode 属性信息,然后向AP客户端回应 unlink操作已经执行完成的消息,消息类型为 YfsMessage::YM_mstocl_unlink
ClientOPCoordinator对象构造一个操作码为OpCtx::RD_setattr 的操作上下文,将这个上下文发通过网络发给AttrNode,消息类型为 YfsMessage::YM_nstoas_setattr
合理
将操作上下文的操作状态修改为 OpCtx::S_commiting,提交所有的微事务,然后进入 Remove_SubCtx 状态机,将操作上下文的操作状态修改为OpCtxState::RD_rminode,进入 Remove 状态机
返回错误码
合法
根据操作上下文的操作码:OpCtx::FSO_unlink,此操作必须被分派到固定的工作线程上,选中工作线程后,有这个工作线程开始处理操作上下文
根据要删除的对象是文件还是目录,分别执行不同的流程,这里以文件为例描述
开始
NameNode Master根据父目录的 inodeid 为这个 OpCtx::NS_deletedentry操作上下文分配一个工作线程(FileSystemWorker),然后将这个操作上下文发布到该工作线程的队列里
不合法
在 Remove状态机中构造一个新的操作上下文,该上下文的操作码为 OpCtx::FSO_rminode,操作状态为 OpCtx::OS_start,然后将这个新的操作上下文发布到 AttrCenter的请求队列中
完成
检查要删除目录(文件)的名字和名字长度是否合理
失败
在名字空间中删除该文件名,并将该文件的链接数减一
AttrCenter首先通过该文件的inodeid 找到该 inodeid 所属的unit文件的主副本在哪个 AttrNode上,然后通过网络向该AttrNode发送 unlink消息,消息类型为 YfsMessage::YM_nstoas_unlink
消息类型为 YfsMessage::YM_nstoas_unlink
成功
消息类型为 YfsMessage::YM_nstoas_setattr
AttrNode收到 unlink 消息后,将消息转发给 NameNodeClient 对象处理,NameNodeClient 对象首先构造一个操作上下文对象,操作码为 OpCtx::FSO_unlink,操作状态为 OpCtx::OS_start,然后将这个操作上下文转发给 NameNodeParserDispatcher对象处理
0 条评论
下一页