深入理解Linux文件系统与日志文件
- block与inode
- 未完待续
- 未完待续
- 未完待续
- 未完待续
- 未完待续
- 硬链接与软链接
- 恢复误删除的文件
- Linux主要包含的日志文件
- Linux系统的日志消息级别
- Linux系统中用户日志的查询命令
block与inode
inode和block概述
- 文件数据包含元信息与实际数据,元信息存储inode,实际数据存储在block
- 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
- inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。
- 每个inode都有一个号码,操作系统用inode号码来认别不同的文件。Linux系统内部不使用文件名,而使用inode号码来认别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。
- 所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码。通过inode号码,获取inode信息,根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据
- block(块)
- 连续的八个扇区组成一个block(4k)
- 是文件存取的最小单位
操作系统在读取硬盘时,是一次性连续读取多个扇区,即一个块一个块的读取
- inode(索引节点)
- 中文译名为“索引节点”,也称“i节点”
- 用于存储文件元信息
inode的内容
- inode包含文件的元信息
- 文件的字节数
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳
- 但不包含文件名
-
用stat命令可以查看某个文件的inode信息
例如:stat qz.txt - Linux系统文件三个主要的时间属性
- ctime(change time)
最后一次改变文件或目录(属性)的时间 - atime(access time)
最后一次访问文件或目录的时间 - mtime(modify time)
最后一次修改文件或目录(内容)的时间
- ctime(change time)
- 每个indoe都有一个号码,操作系统用inode号码来识别不同的文件
- Linux系统内部不使用文件名,而使用Indoe号码来识别文件
- 对于用户,文件名只是indoe号码便于识别的别称
- 目录也是一种文件
inode的号码
- 用户通过文件名打开文件时,系统内部的过程
- 系统先找到这个文件名对应的inode号码
- 通过indoe号码,获取inode信息
- 根据inode信息,找到文件数据所在的block,读出数据
- 查看inode号码的方法
- ls -i(查看文件名对应的inode号码)
例如:ls -i qz.txt - stat(查看文件inode信息中的inode号码)
例如:stat qz.txt
- ls -i(查看文件名对应的inode号码)
inode的大小
- inode也会消耗硬盘空间,每个inode的大小一般为128字节或256字节
- 格式化文件系统时会确定inode的总数
- 格式化的时候,操作系统会自动将硬盘分成两个区。一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息
- df -i(可以查看每个硬盘分区的inode总数和已经使用的数量)
inode的特殊作用
-
由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
1.当文件名包含特殊字符,可能无法正常删除文件,这时直接删除inode,能够起到删除文件的作用
2.移动或重命名文件时,只改变文件名,不影响inode号码
3.打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
4.文件数据被修改后,会生成一个新的inode号码 -
使用find命令可以删除inode号
find ./ -inum 52201242 -exec rm -i {} ;
find ./ - inum 55156844 -delete
inode节点耗尽故障处理
fdisk /dev/sdb
使用fdisk创建分区/dev/sdb1,因为实验用,所以分区大小30M即可
mkfs.ext4 /dev/sdb1
格式化(使用ext4文件类型,因为更准确)
mkdir /test
创建目录
mount /dev/sdb1 /mnt
挂载
df -i
查看
for ((i=1; i<=7680; i++));do touch /test/file$i;done
使用for命令通过循环的方式创建目录
touch {1…7680}.txt
或者使用touch命令创建目录
df -i
df -hT
查看还有多少空间
rm -rf /test/*
删除该文件后即可恢复
df -i
df -hT
查看