# 遍历查询 ls /root
C 连接 M 发送遍历目录请求,M 检索元数据信息返回至 C,C 展现数据查看文件内容 cat a.txt
C 连接 M 发起查看文件请求,M 检索元数据信息,返回 chunkip port id 至 C
C 连接对应的 chunkserver 的 块,读取数据
删除数据
# 删除 rm filename
C 连接 M 发起删除文件请求
M 删除对应文件的元数据信息,并且将删除真实文件数据块的操作加入的对应节点的异步清除队列中,到达清除时间后,chunkserver负责清除自己的无效块数据,返回成功请求致C
增加数据
# copy
C 连接 M 发送拷贝文件请求,发送目标元数据信息
M 选择最优节点,要求创建新块
chunkserver 创建完新块以后,返回块ID 至 M
M 将新块 ID 返回至 C
C 连接至对应chunkserver 新块写入数据,写入完成后,向 M 发送关闭文件请求
M 连接新块确认数据信息,更新元数据
修改文件(vi xxx)
文件是新文件
C 连接 M 发起创建文件请求,M 选择对应 chunkserver 创建新块
chunkserve 创建新块(临时块) 返回至 M,
M 返回 chunkserver ip port id 至 C,C 连接对应 chunkserver 写入数据
C 向 M 发起关闭文件请求,M 连接 chunkserver 查看块
如果块为空,更新元数据信息,如果块有数据
按照 64 MB 分配原则,创建块拷贝临时块数据至 新块,更新元数据信息
文件是已经存在
C 连接 M 发起修改文件请求
M 连接至 CHUNKSERVER ,通知创建临时块拷贝源块数据
CHunkserver 临时块 IP PORT ID 发送至M
M 将 临时块 IP PORT ID 发送给 C
C 连接至对应的临时块修改数据,修改完成后,通知 M 关闭文件响应
M 连接临时块对比源块数据
如果数据一致,删除临时块,更新元数据信,如果数据不一致
按照 64MB 原则,创建新块,将临时块数据拷贝至新块,删除临时块以及源块,
更新元数据信息