文章目录
一、Inode概述
1.1、文件数据包括元信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是"扇区”,每个扇区存储512字节
block(块)
连续的八个扇区组成一个block
是文件存取的最小单位
inode(索引节点)
中文译名为“索引节点”,也叫i节点
用于存储文件元信息
元信息-------------------->inode
数据----------------------->block
一个文件必须占用一个inode,但至少占用一个block
inode包含文件的元信息 (不包含文件名) |
---|
文件的字节数 |
文件拥有者的User ID |
文件的Group ID |
文件的读、写、执行权限 |
文件的时间戳 |
磁盘未满,但无法存放数据,就是inode(元信息)值,block(实际数据)块出现问题
df -i 去看inode的值会发现inode已消耗殆尽
元信息就是文件的属性,1个block大小为4K(512*8)
扩展($i:是前面i的值)
inode节点耗尽故障处理
#使用fdisk创建分区/ dev / sdb1,分区大小30M即可fdisk /dev / sdb
mkfs.ext3 /dev/sdb1
mkdir /test
mount /dev /sdb1 /test
df -i
#模拟inode节点耗尽故障
for ((i=1; i<=5680; i++) ) ;do touch /test/file$i;done
或i=i+1或i+=1
touch { 1…5680 }.txt
df -i
df -hT
#删除文件恢复rm -rf / test/*df -i
df -hT
stat命令查看某个文件的inode信息(文件名与inode有映射关系)
1.2、inode的特殊作用
由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
移动或重命名文件时,只改变文件名,不影响inode号码
复制到另一个目录会生成一个新的inode值
删除了aa.txt文件则释放了inode值,重新创建一个文件时inode值任为12
mv inode值不会变
1.3、Linux系统文件三个主要的时间属性
ctime(change time)
最后一次改变文件或目录(属性)的时间
atime(access time)
最后一次访问文件或目录的时间
mtime(modify time)
最后一次修改文件或目录(内容)的时间
更改文件内容会变时间
1.4、目录文件的结构
目录也是一种文件
目录文件的结构
每个inode都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统内部不使用文件名,而使用inode号码来识别文件
对于用户,文件名只是inode号码便于识别的别称
文件名1------------>inode号码1
文件名2------------>inode号码1
每一行称为一个目录项
1.5、inode的号码
用户通过文件名打开文件时,系统内部的过程
1.系统找到这个文件名对应的inode号码
2.通过inode号码,获取inode信息
3.根据inode信息,找到文件数据所在的block,读出数据
查看inode号码的方法
ls -i命令:查看文件名对应的inode号码
ls -i aa.txt
stat命令:查看文件inode信息中的inode号码
stat aa.txt
文件会对应一个inode,inode在inode表中,通过inode表找到inode然后在找到数据区的该文件的数据
文件存储小结:
硬盘分区后的结构:
访问文件的简单流程:
第二块那里必须加找到对应inode号,然后有inode号找到所对应的block