Glusterfs下读写请求的处理流程
来源:互联网 发布:国内财经媒体排名 知乎 编辑:程序博客网 时间:2024/05/16 06:25
Glusterfs基于内核的fuse模块,fuse模块除了创建fuse文件系统外,还提供了一个字符设备(/dev/fuse),通过这个字符设备,Glusterfs可以读取请求,并发送响应,并且可以发送notify消息。
下面是在Glusterfs下的一个读/写请求的完整流程:
蓝实线表示一个请求通过系统调用到VFS,然后经由Fuse封装为一个req并发送到等待队列,然后唤醒在该等待队列上阻塞的Glusterfs读进程,读取请求
绿虚线表示Glusterfsd进程读取请求后,处理请求的过程
红虚线表示Glusterfs处理完请求后,封装响应消息并将消息发送到/dev/fuse下,并唤醒相应的请求进程(请求进程在将请求发送后,一直阻塞,直到该请求收到响应并处理完成)。
请求进程被唤醒后,将Glusterfs封装的响应信息返回给用户。
为方便说明问题,下图是一个读请求走到Fuse的完整流程:
下面是上面这些步骤的说明:
①read系统调用,陷入到内核
②vfs通过fd及当前进程维护的打开的文件表找到fd对应的file,然后调用该file被赋值的read函数进行读操作
③因为该file是基于fuse文件系统创建的,因此调用fuse的read函数do_sync_read
④-1.最终调用do_generic_file_read基于读操作的偏移量及该文件的缓存树查找该对应的缓存页,该缓存页存在且是最新的,直接从该缓存中读数据给用户
④-2.如果该缓存页不存在,则申请一个页作为缓存。并调用readpage去读数据。fuse的readpage会封装一个请求到字符设备的等待队列中。收到glusterfs的响应后会将响应写到缓存中并返回
0 0
- Glusterfs下读写请求的处理流程
- Glusterfs下读写请求的处理流程
- Glusterfs下读写请求的处理流程
- Glusterfs下读写请求的处理流程
- Glusterfs下读写请求的处理流程
- glusterFS的部署流程
- struts1处理请求的流程
- SpringMVC处理请求的流程
- SpringMVC处理请求的流程
- DispatcherServlet的请求处理流程
- tomct处理请求的流程
- SpringMVC处理请求的流程
- SpringMVC-请求的处理流程
- springMVC处理请求的流程
- 对比Swift和GlusterFS的读写性能
- zookeeper 读写请求处理
- struts2 中请求的处理流程
- Spring MVC的处理请求流程问题
- Linux添加/删除用户和用户组
- c# winFrom中 dataGridView控件 在列表内直接编辑数据,然后保存到数据库
- 万能头文件#include<bits/stdc++.h>(转)
- 关于数组的问题(连续子数组的最大和、数组中出现次数超过一半的数字、调整数组顺序使奇数位于偶数之前)
- Spring + Springmvc + Mabatis环境搭建
- Glusterfs下读写请求的处理流程
- 优先队列和二叉堆
- 卡特兰数(转)
- log4j使用详解
- Linux的相关简单配置
- 操作系统进程调度算法
- IE8的不能显示
- 面向对象程序设计---16级
- c++ primer 练习 1.23、1.24