在 linux 世界中,一切皆文件,不仅普通的文件和目录,就连块设备、套接字、管道等。更加技术一点语言来说,Linux中一切,I/O设备、套接字等字节序列构成的信息载体,并不局限于普通磁盘文件,都被当作文件,通过文件的方式访问和管理,并挂在文件系统之上,即使它们不是文件,也以文件的形式呈现。
Linux存储系统
Linux存储系统包括两个部分:第一部分是站在用户的角度提供读/写接口,数据以流为表现形式;第二部分是站在存储设备的角度提供读/写接口,数据以块为表现形式。文件系统位于两者中间起到承上启下的作用。见
The Linux Storage Stack Diagram
https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram
应用程序通过系统调用发送读/写请求,最终目的是把数据写到磁盘上,文件系统负责读/写请求的位置并将其转换成块设备需要的块,然后把请求发到设备上。内存在这个过程中扮演了一个磁盘缓存的作用,把前后两个部分分离成异步的两个过程,对于前半部分让数据留在内存是最高效的。对于后一部分数据从内存同步到磁盘,请求被封装成一个个request,每一个request都包含一组bio,每个bio包含需要同步的数据页