[LINUX]高速缓冲区的用户态实现

高速缓冲区的用户态实现:高速缓冲区理论上也是比较好理解的一个数据结构,他的好处是减少对于慢速IO的高频率访问,从单机的内核态来说,慢速和快速主要是内存和磁盘之间的IO瓶颈,对于多机的分布式文件系统来说,主要是磁盘和网络传输之间的IO差异(因为磁盘和内存内核已经有了),比较可行的方式是将文件块建立一个本地的磁盘缓存,这个缓存可以利用高速缓冲的算法,每当有新的没有缓存的文件块下载过来的时候,从磁盘上找一块空闲的区域,将其存储进去,而删除磁盘原来维护的hash表中的对应字段,表示旧的块没有了。每次要获取新的文件块的时候,从磁盘的hash表中先去判断一下是不是有了,有了直接获取,没有的话,再从远程去下载(类似于高速缓冲在磁盘上面的实现)。比如可以分配500g的空间,其中一部分用来存储空闲表文件和hash表文件(metadata),剩下的部分用来存储文件块,至于偏移量等位置信息可以通过文件名称的方式来划分,比如每个文件块20kb,那么就可以按照20kb建立索引,这种基于文件块的缓存相比直接基于文件的缓存,在分布式文件系统场景,可以做成按照内容存储,如果存储过了,就没有必要重复存储,可以直接建立一个硬链接,这样更加容易命中,传输量也小很多,总之,高速缓冲也是完全可以用在多计算机的文件系统上面的缓存技术。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章