目录
一.inode和block概述
文件数据包括元信息与实际数据,一个文件必须占有一个inode,但至少占用一个block
1.文件 扇区
文件是存储在硬盘上的,硬盘的最小存储单位是扇区,每个扇区存储512字节
每个分区都有自己的分区节点编号
2.块block
文件存取的最小单位是block,一个block为4KB。八个扇区组成一个block
系统读取数据是多个扇区进行读取,即一个块一个块进行读取
3.inode 索引节点
inode用于存储元信息。
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。
每一个inode表记录对应的保存了以下信息:
-
inode number 节点号
-
文件类型
-
权限
-
UID
-
GID
-
链接数(指向这个文件名路径名称个数)
-
该文件的大小和不同的时间戳
-
指向磁盘上文件的数据块指针
-
有关文件的其他数据
4.查找文件的过程
当一个用户在Linux系统中访问一个文件时,系统会先根据文件名去寻找它的inode号,查找它的inode号。查看该用户是否具有访问文件的权限。如果有就指向对应的数据块。如果没有就返回permission denied
二.inode号
1.stat +文件名
可以查看主要时间属性
ctime(change time)
最后一次改变文件或目录(属性)的时间atime(access time)
最后一次访问文件或目录的时间mtime(modify time)
最后一次修改文件或目录(内容)的时间
新建文件时,三种状态时间是一样的
写内容(echo没打开)后两种状态时间会改变
修改权限,只有最后一种时间状态改变
vim打开,只有第一种时间状态改变
2.inode的大小
每个inode的大小一般是128字节或256字节
使用df -ih可以查看inode的使用情况
3.inode号的查询
1.ls -i
2.stat (更加详细)
4.通过inode号删除文件
find ./ -inum inode号 -exec rm -i {} \;
find ./ -inum inode号 -delete
inode号用完之后就不能再创建文件了
但是系统会比显示的可用inode号多一点点
当硬盘空间是充足的,但是无法创建文件时,就需要考虑一下是不是inode号分配完了
三.模拟inode号用光的情况
touch {1..比inode号多一点}.txt |xargs touch &
如果是在逻辑卷上创建文件的话,当inode号用光后,扩容后会新增一些inode号供继续使用
四.文件恢复-extundelete
在编译安装 extundelete 之前需要先安装两个依赖包 e2fsprogs-libs 和 e2fsprogs-devel。
下载网址:extundelete-0.2.4.tar.bz2
模拟删除
恢复之前需解挂载,恢复的是磁盘内的内容