1、Linux文件系统的详述
在处理Linux系统出现的各种故障时,故障的症状是最容易发现的,但导致这一故障的原因才是最终排除故障的关键。
熟悉Linux系统中的常见日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点、对症下药的及时解决各种系统问题。
注:在Linux系统中通过分区、格式化来创建文件系统,而文件系统的运行又与block和inode有关。操作系统的文件数据除了实际内容之外,通常还含有很多的属性。
例如Linux操作系统的文件权限(rwx)与文件属性(所有者、群组、时间参数等),
文件系统通常会将这两部分内容存放在inode和block中。
1.1 inode概述
文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”,每个扇区存储512字节。
操作系统读取硬盘的时候,不会一个个扇区地去读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。
注:这种由多个扇区组成的块,是文件存取的最小单位,块的大小,最常见的是4KB,
即连续八个sector组成一个block。
补充:在操作系统中,block大小对文件系统的性能具有重要影响。如果block大小设置的过大,可能会导致空间浪费和碎片化问题;
如果设置的过小,则可能会增加文件系统的元数据开销和访问延迟。因此,在选择block大小时,需要根据实际应用场景进行权衡和优化。
文件数据存储在块中,那么还必须找到一个地方来存储文件的元信息,
比如文件的创建者、文件的创建日期、文件的大小等等。
这种存储文件元信息的区域就叫做inode——中文译名为“索引节点”,也叫i节点。
因此,一个文件必须占用一个inode,但至少占用一个block。如下图:
1.2 inode的内容
inode包含很多的文件元信息,但不包含文件名。文件名是存放在目录当中的。
Linux系统中一切皆文件,因此目录也是一种文件。目录文件的结构如下图所示:
每个inode都有一个号码,操作系统用inode号码来识别不同的文件,
Linux系统内部不使用文件名,而使用inode号码来识别文件。
inode包含的元信息有:
- 文件的字节数
- 文件拥有者的UserID
- 文件的GroupID
- 文件的读、写、执行权限
- 文件的时间戳等
可以使用stat命令来查看某个文件的inode信息,如下图:
补充:Linux系统文件有三个主要的时间属性,分别是ctime、atime、mtime
- ctime——是最后一次改变文件或目录(属性)的时间,例如执行chmod、chown等命令。
- atime——是最后一次访问文件或目录的时间
- mtime——是最后一次修改文件或目录(内容)的时间
1.3 inode的号码
用户在访问文件时,表面上是用户通过文件名来打开文件,而实际系统内部的过程分成下面三步:
- 系统找到这个文件名对应的inode号码