inode和block
概述
文件存储在硬盘上,硬盘的最小存储单位叫做"扇区" ( sector )每个扇区存储512字节。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块" ( block )。这种由多个扇区组成的"块",是文件存取的**最小单位**。"块"的大小 ,最常见的是4KB ,即连续八个扇区组成一个块。
文件数据存储在"块”中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode(索引节点),也叫i节点。
一个文件必须占用一个inode ,至少占用一个block。
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。 Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。
所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码:通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。
查看文件名对应的inode号
ls -i 文件名
stat 文件名
Linux系统的三个时间戳
atime(accesstime):当使用这个文件的时候就会更新这个时间。
mtime(modification time):当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
ctime(status time):当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。
查看当前的时间
执行后,当前访问的时间就变了
重定向后,最近更改的时间变了
赋权后,最近改动的时间变了
进入vim之后,不管修改不修改文件,inode号都会改变
直接echo的时候,inode不会发生改变
查找inode删除
[root@localhost opt]# find /opt -inum 101871280 -exec rm -rf {} \;
实验
实验1:用xfs系统模拟inode号满了
首先新建一个硬盘,进行分区,格式化,以及挂载
df -i //查看可用inode号的数量
可用的inode号的数量为8189
[root@localhost data1]# touch {1..8189}.txt 给data1里面写满
此时inode号已满,但是可用空间未满。这是xfs系统的特点还可以继续创建文件。
实验3:使用xfs系统,进行备份及恢复
xfsdump 命令常用的选项:
-f:指定备份文件目录
-L:指定标签 session label
-M:指定设备标签 media label
-s:备份单个文件,-s 后面不能直接跟路径
xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)
首先创建一块硬盘,进行分区,格式化,挂载
[root@localhost data]# cp /etc/passwd /opt/data 将etc下面的passwd复制到data下面
[root@localhost data]# xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1] //将data下面的内容进行备份
看到success就是代表成功了
[root@localhost data]# rm -rf * //删除data里面所有内容
[root@localhost data]# xfsrestore -f /opt/dump_sdb1 /opt/data //进行内容恢复
实验4:将ssh日志单独存放
首先先关闭防火墙和安全机制
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# vim /etc/rsyslog.conf 进配置文件添加一下
[root@localhost ~]# vim /etc/ssh/sshd_config
修改了配置文件后,一定要重启服务
[root@localhost ~]# systemctl restart sshd
[root@localhost ~]# systemctl restart rsyslog.service
去另一台虚拟机里面,验证一下[root@localhost ~]# ssh root@192.168.3.20
实验5:配置日志服务器来收集日志
配置接收方7-1
配置发送方7-2
发送方发送(7-2)
接收方收到(7-1)