文章目录
深入理解Linux文件系统
一、inode与block详解
崭新的操作系统的文件数据除了实际内容外,通常含有非常多的属性,例如Linux操作系统的文件权限(rwx)与文件属性(属主、属组等)。文件系统通常会将这两部分分别存在inode和block中。
1、inode和block概述
文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区(sector),每个扇区存储512字节。
操作系统读取磁盘时,是一次性读取由多个扇区组成的“块”(block),这种由多个扇区组成的“块”是文件存储的最小单位。最常见的“块”由8个扇区组成,大小为4KB。
文件数据存储在“块”中,而存储文件元信息(文件的创作者、文件的创建日期、文件的大小等,类似于Windows中文件的属性)的区域叫做inode,中文名“索引节点”,也称为“i节点”。
一个文件必须占用一个inode,至少占用一个block。
2、inode的内容
inode包含很多的文件元信息,但不包含文件名,例如:
-
文件的字节数
-
文件拥有着的UserID
-
文件的GroupID
-
文件的读、写、执行权限
-
文件的时间戳
-
等等
使用stat命令可以查看文件inode信息。
Linux系统文件有三个主要的时间属性,分别是ctime(change time),atime(access time)、mtime(modify time。
- ctime是最后一次改变文件或目录(属性)的时间,如执行chmod、chown等命令。
- ctime是最后一次访问文件或目录的时间。
- mtime是最后一次修改文件或目录(内容)的时间。
3、inode的内容
inode并不包括文件名,因为文件名是存放在目录当中的,linux系统中,目录也是一种文件。每个文件名对应一个inode,而每个inode都有一个号码,操作系统通过inode号码来识别不同的文件。对于操作系统,文件名是inode号便于识别的别称。
4、inode的号码
用户通过文件名打开文件在系统内部分为三个过程如下:
1)系统找到这个文件名对应inode号。
2)通过inode号,获取inode信息。
3)根据inode信息,找到文件数据所在的block,读取数据。
在Linux基础命令讲解中,命令“ls -i”可以直接查看到文件名对应的inode号码;stat命令是通过查看文件inode信息而查看到inode号码。
5、inode的大小
inode也会消耗硬盘空间,每个inode的大小,一般为128字节或256字节。inode的总数,在格式化时就给定。执行“df -i”命令可查看每个硬盘分区的inode总数和已使用的数量。