文件系统I/O栈
从系统调用直接调用磁盘设备子系统的是裸I/O;
穿过VFS和文件系统的是文件系统I/O,包括绕过了文件系统缓存的直接I/O;
VFS
虚拟文件系统接口 virtual file system interface 给不同类型的文件系统提供了一个通用的接口。
早起文件系统模型逻辑上吧VFS分为两个接口:VFS和vnode, VFS包括了文件系统界别的操作,如挂载/卸载,vnode接口包括了VFS inode(vnode)文件操作,如打开、关闭、读取和写入。
文件系统缓存
linux
缓冲区高速缓存
最初是在快设备接口缓存磁盘设备块,后续缓冲区高速缓存被存在了页缓存中,功能依然存在,提升了快设备I/O的性能,大小是动态的,
页缓存
缓存了虚拟内存的页面,包括文件系统的页面,提升了文件和目录的性能。
页缓存大小是动态,会不断增长消耗可用的内存,并在应用程序需要的时候释放(和页面换出一起,都收swappiness的控制)。
文件系统使用的内存脏页面由内核线程写回到磁盘上。linux 2