目录
1.4 验证,并查看本机日志记录(实时查看 tail -f /var/log/secure)
一、文件系统
1、inode和block概述
文件数据包括元信息与实际数据
元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。
元信息:每个文件的属性,如:文件大小、时间、权限、inode等
文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
block(块)
- 连续的八个扇区组成一个block,4k
- 是文件存取的最小单位
inode(索引节点)
- 中文译名为“索引节点”,也叫 i 节点
- 用于存储文件元信息
一个文件必须占用一个inode ,至少占用一个block
扩:
inode号:同一个硬件设备上是唯一的,不可以跨设备,inode实际是资源,是可以被用完的,用完后无法创建任何文件。(xargs:读取前面的参数; -n1:一个一个给)
2、 inode表结构
2.1 包含文件的元信息
- 文件的字节数(字节占用多少空间,也称文件大小)
- 文件拥有者的 User ID
- 文件的 Group ID
- 文件的读、写、执行权限
- 文件的时间戳(ctime、atime、mtime)
- 文件类型
- 链接数
- 有关文件的其他数据
- 不包含文件名,文件名在目录结构中
2.2查看inode的方法
- ls -i 命令:查看文件名对应的inode号码
- stat 命令:查看文件的inode信息
2.3 Linux系统文件三个主要的时间属性
- 最近访问atime(access time)最后一次访问文件的时间。使用echo追加内容不会变,因为没有打开文件
- 最近更改mtime(modify):最后一次更改文件内容的时间。更改完内容之后,ctime也会改变
- 最近改动ctime(change time):最后一次改变文件元信息(文件或目录属性)的时间。改变后,mtime不变
2.4目录文件结构
目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系
- inode不包含文件名,文件名是存放在目录文件夹当中的。Linux 系统中一切皆文件,因此目录也是一种文件
- 是通过文件名来引用一个文件
- 每个目录项由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。目录是目录下的文件名和文件inode号之间的映射
- 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
- Linux系统内部不使用文件名,而使用inode号码来识别文件
- 对于系统来说,文件名只是inode号码便于识别的别称
linux通过文件夹中会有一张文件名和inode一一对应关系的表(名字)去找inode号inode指向对应的实际数据
- 用户访问文件时先去查找自己文件夹中的目录项;
- 文件名和inode之间对应的关系;
- 通过 inode号利用指针去指向实际数据直接指针,间接指针
扩:
如果把文件删除并没有做其他设置,此时真实数据并没有真的删除,删除的是inode号。
我的空间足够为什么不能继续键文件?因为inode号用完了
解决方法:1、如果是lvm逻辑卷,可以扩容 2、此时需要删除没有用的文件。
2.5 用户通过文件名打开文件时,系统内部的过程
- 系统找到这个文件名对应的inode号码
- 通过inode号码,获取inode信息
- 根据inode信息,找到文件数据所在的block,读出数据
当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。
扩:vim cat和用户的权限有关
3、inode的大小
- inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
- inode的总数,在格式化时就确定
- 如果磁盘还有空间,但inode号被全部占用,无法创建新文件。
- inode号在同一个文件系统内唯一,在不同的文件系统中可以重复。
- 查看每个硬盘分区的inode总数和已经使用的数量,可以使用命令: df -I
4、inode的特殊作用
由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
(1)当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
删除inode号的方法:
方法一: find 文件位置 -inum inode号码 -exec rm -rf {} \;
方法二: find 文件位置 -inum inode号码 -delete
(2)移动或重命名文件时,只改变文件名,不影响inode号码
(3)打开一个文件后