目录
1.inode与block详解
1.1 inode和block概述
文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”,每个扇区存储512字节。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个block。
文件数据存储在“块”中,那么还必须找到一个地方存储文件的元信息,这种存储文件元信息的区域就叫做inode,因此一个文件必须占用一个inode,但至少占用一个block。
1.2 inode的内容
inode包含很多的文件元信息,但不包含文件名,例如:
文件的字节数,文件拥有者的UserID,文件的GroupID,文件的读、写、执行权限,文件的时间戳等。
使用start命令即可查看某个文件的inode信息。
Linux系统文件有三个主要的时间属性,分别是ctime、atime、mtime。
ctime是最后一次改变文件或目录(属性)的时间,例如执行chmod、chown等命令。
atime是最后一次访问文件或目录的时间。
mtime是最后一次修改文件或目录(内容)的时间。
1.3 inode的号码
表面上,用户是通过文件名来打开文件,实际上,在系统内部这个过程分为三步:
①系统找到这个文件名对应的inode号码。
②通过inode号码,获取inode信息。
③根据inode信息,找到文件数据所在的block,读出数据。
使用ls -i命令,可以直接查看到文件名所对应的inode号码;使用stat命令,则是可以通过查看文件inode信息而查看到inode号码。
1.4 inode的大小
inode也会消耗硬盘空间,每个inode的大小,一般是128字节或256字节。执行命令“df -i”即可查看每个硬盘分区的inode总数和已经使用的数量。查看每个inode的大小,可以用命令“dumpe2fs -h /dev/mapper/VolGroup-lv_root | grep "Inode size"”查看。
2.inode耗尽故障处理
例:i 节点耗尽故障
新建一个约32MB大小的EXT4文件系统(如/dev/sdb7),将其挂载到/data目录下。并使用带”-i”选项的df命令确认该文件系统中i 节点的使用情况。
[root@localhost ~]#mkdir /data
[root@localhost ~]#mount /dev/sdb7 /data
[root@localhost ~]#df -i /data
当i 节点耗尽以后,在该文件系统中再创建新的文件时,将会出现“设备上没有空间”的错误假象。通过df命令可以查看到该分区中实际上还有可用的剩余空间,但是因为i 节点数已经用完,所以无法创建新的文件。
[root@localhost ~]#