inode 和 block概述
文件数据包括元信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
block(块)
连续的八个扇区组成一个block
是文件存取的最小单位
inode(索引节点)
中文译名为“索引节点”,也叫 i节点
用于存储文件元信息
文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在"块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。因此,一个文件必须占用一个 inode,并且至少占用一个 block。
inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。
所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息,根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。
使用stat命令可以查看某个文件indode信息
可以看到上图 有最近访问,最近更改,最近改动三行,释意如下
最近访问(accesstime): 当使用这个文件的时候就会更新这个时间
最近更改(modification time):当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
最近改动(status time): 当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。
使用find 查找超过30天的文件 ,并删除
find ./ - m +30 - exec rm - f {} \;
在文件追加内容,再查看文件最近更改时间
inode 的内容
每个inode 都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统内部不使用文件名,而使用inode 号码来识别文件
inode也会消耗硬盘空间 (一般一个inode占 128字节或256字节)
格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据,另一个是 inode区,存放inode所包含的信息。
通常情况下不需要关注单个inode 的大小,而是需要重点关注inode总数。inode的总数在格式化时就给定了
执行“df -i"命令即可查看每个硬盘分区对应的的 inode总数和已经使用的inode 数量。
由于inode号码与文件名分离,导致Linux系统具备以下几种特有的现象:
1.文件名包含特殊字符,可能无法正常删除。这时直接删除 inode,能够起到删除文件的作用;
find ./ -inum 50464299 - delete ##删除inode号
2.移动文件或重命名文件,只是改变文件名,不影响inode号码;
3.打开一个文件以后,系统就以 inode号码来识别这个文件,不再考虑文件名。
4.vi编辑器修改文件数据保存后 就会形成一个新的inode号
对于用户,文件名只是inode号码便于识别的别称
用户通过文件名打开文件时,系统内部的过程
1.系统找到这个文件名对应的inode号码
2.通过inode号码,获取inode信息
3.根据inode信息,找到文件数据所在额block,读出数据
除了stat命令查看inode号码,还有ls -i命令也能查看对应的inode号码
模拟inode节点耗尽故障处理
- 将虚拟机加入一块磁盘 分区大小为30M ,格式化挂载
2.用for循环写一条命令 来模拟indoe号耗尽
3.可以看到 indoe号已经耗尽
4.删除文件恢复
EXT 类型文件恢复
extundelete是一个开源的 Linux数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)
1.进行分区操作,并格式化
2.挂载目录,下载tar包
3.对下载好的tar包进行解压缩
- 进行yum安装
5.进行make编译安装
6.调用extundelete 移动到 /usr/local/bin/目录中
7.写入文件 ,准备实验
8.查看文件系统 /dev/sdb1 下存在哪些文件, i 节点 是从2 开始的 。2 代表该文件系统最开始的目录。
9.开始模拟 故障 ,恢复文件
10.恢复 /dev/sdb1 文件系统下的所有内容
11.在当前目录中 会出现一个 RECOVERED_FILES/目录,里面保存了已经恢复的文件
xfs 类型文件备份和恢复
xfsdump命令 它的备份级别有两种 分别是 0 :表示完全备份 1-9:表示增量备份
xfsdump的备份级别默认为 0
命令格式为:
xfsdump -f 备份存放位置 要备份的路径或设备文件
常用选项有:
-f: 指定备份文件目录
-L:指定标签session label
-M:指定设备标签media label
-s:备份单个文件,-s后面不能直接跟路径
使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.不能备份两个具有相同UUID的文件系统(可用blkid命令查看)
实验如下
1.先xfs格式化磁盘,进行挂载,备份文件目录
2.指定标签,指定设备标签