一)Linux文件系统

为了规范每个特定的目录下应该要放置什么样子的数据,就有了所谓的Filesystem Hierachy Standard(FHS)标准。FHS一直在持续改版,可以到http://www.pathname.com/fhs 参考官方文件。试试上,FHS针对目录树仅定义出了三层目录下面应该放置什么样的数据,分别是:

/    :root根目录,与开机系统有关
/usr :UNIX software resource缩写,与软件安装/执行有关
/var :variable,与系统运行过程有关。

二)文件系统与磁盘的映射

文件系统中,我们是一个个的目录和文件,那么是通过怎样一种方式与磁盘以及磁盘分区映射起来的呢?实际上是通过“挂载”。我们将一个可被挂载的数据叫做一个文件系统,常见的如磁盘分区或者U盘等。我们在安装系统的时候,必做的一件事就是磁盘分区,然后格式化分区,这实际上就是将磁盘分区改造为一个文件系统。然后,选择将系统安装在某个分区上,针对linux实际上就是指将该分区“挂载”到根目录/。

与Windows不同的是,如果Windows安装到某个分区,那么系统所有文件都会复制到该分区;而Linux在安装时可以将不同分区挂载到不同目录下面(当然有特定的限制一些数据必须放在同一个分区),这样以达到将系统文件放置到不同的分区。


三)Linux文件系统数据读取

Linux系统的数据存储是采用“索引式”的方式存取。针对每个文件或者目录,有一个对应的inode号和实际存储数据的block区。inode号只存储目录或者文件的权限、属性以及存储内容的block号;block才是真正存储数据的地方。

由上节可知,我们的linux根目录是映射到某个分区的,而通常一个文件系统的最顶层inode号码是由2开始。由于目录树是由根目录开始读起,因此实际上是去根目录所在分区读inode号为2的内容,根据inode所提供的block号,去读取该目录下的文件名或目录名,以及各自所对应的inode号,再这样一步步鉴权和读取(如果读到block中某个目录的inode号又为2,说明其属于另一个分区,则根据磁盘分区表定位到该分区,再读该分区的inode号为2所指向的block区)。

https://blog.51cto.com/taoismli/1960945