目录
一,inode和block
1,inode和block概述
文件数据包括元数据和实际数据
inode(索引节点)也叫i节点,用于存储文件的元数据
每个文件的属性信息比如:文件的大小,时间,类型,权限等称为文件的元数据
一个文件必须占用一个inode节点,当inode节点耗尽时磁盘上有空间也无法创建文件。
不同分区的inode号是可以相同的。
每一个inode表记录对应的保存了以下信息:
-
inode number 节点号
-
文件类型
-
权限
-
UID
-
GID
-
链接数(指向这个文件名路径名称个数)
-
该文件的大小和不同的时间戳
-
指向磁盘上文件的数据块指针
-
有关文件的其他数据
硬盘上最小的存储单位是扇区(512字节)
连续8个扇区组成一个block块(4K),是文件存储的最小单位。
存储文件数据的实际数据
inode的大小:
inode也会消耗硬盘空间,每个inode的大小,一般是128字节或256字节
inode的总数,在格式化时就确定
inode不是无限的使用df -i 可以查看inode号的使用情况
2,linux中文件的三种时间戳
-
ctime(change time):最后一次改变文件或目录的时间,例如执行chmod、chown
-
atime(access time):是最近一次访问文件或目录的时间
-
mtime(modify time):是最后一次修改文件或目录(内容)的时间
使用stat 文件名 可以显示文件的详细信息
新建文件时三种状态时间是一样的
写内容(echo没有打开文件)最后两种时间改变
修改权限只有最后一种改变
3,目录文件的结构
目录是一种特殊的文件
每个inode都有一个号码,linux操作系统用inode号码来识别不同的文件
linux系统内部不使用文件名,而是使用inode号码来识别文件。对于用户文件名只是inode号码便于识别的别称
一个目录是目录下的文件名和文件inode号之间的映射
cp和inode号
分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联
拷贝数据生成新的文件
rm和inode号
硬链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
注:删除文件时时删除inode号,当硬盘空间不足时会覆盖文件,当硬盘空间充足时,文件有几率一致存在
mv和inode号
如果mv命令的目标和源在同一设备,
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
删除旧的目录对应关系新建目录对应关系
通过find命令查找inode号删除指定文件
4,文件存储
硬盘分区后的结构
访问文件的简单流程
用户访问文件时根据文件名与inode号的映射查找inode号,根据inode表判断用户是否有访问文件的权限
有权限就指向对应的block数据块
无权限就返回
5,硬链接与软链接
对比项 | 硬连接 | 软连接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除新建不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同 | 源文件的路径的长度 |
二,恢复误删除的文件
1,恢复ext3类型的文件
在编译安装 extundelete 之前需要先安装两个依赖包 e2fsprogs-libs 和 e2fsprogs-devel
安装依赖包:
解压软件到/opt下
切换到目录下编译安装
extundelete恢复对ext3类型文件有效
创建文件a,b,c,d
模拟删除恢复
其中--inode 2 代表从 i 节点为 2 的文件开始查看,一般文件系统格式化挂
载之后,i 节点是从 2 开始的,2 代表该文件系统最开始的目录。
注:在恢复前需要先解挂载
模拟删除
解挂载
查看分区的inode
恢复分区的文件
执行命令后,在当前目录下会出现一个/RECOVERED_FILES目录,里面保存了已经恢复的文件
2,恢复xfs类型文件
xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。
xfsdump命令格式
xfsdump -f 备份存放位置 要备份的路径或设备文件
xfsdump备份级别:默认备份级别是0
0表示完全备份
1-9表示增量备份
常用的备份参数:
-f:指定备份文件目录
-L:指定标签 session label
-M:指定设备标签 media label
-s:备份单个文件,-s 后面不能直接跟路径
使用 xfsdump 时,需要注意以下的几个限制:
不支持没有挂载的文件系统备份,所以只能备份已挂载的;
必须使用 root 的权限才能操作;
只能备份 XFS 文件系统;
备份下来的数据只能让 xfsrestore 解析;
不能备份两个具有相同 UUID 的文件系统(可使用blkid查看)。
恢复的是xfs类型文件
文件拷入
安装xfsdump
使用xfsdump备份整个分区并打上标记
数据删除
数据恢复到/data
三,分析日志文件
1,日志文件
日志功能
用于记录系统,程序运行中发生的各种事件
通过如额度日志,有助于诊断和解决系统故障
日志文件的分类:
内核及系统日志
由系统服务rsyslog统一管理,日志格式基本相似,其主配置文件 /etc/rsyslog.conf
用户日志
记录系统用户登录及退出系统的相关信息
程序日志
有各种应用程序独立管理的日志文件,记录格式不统一
2,日志文件保存的位置
日志文件保存的位置/var/log常见的日志文件:
日志文件位置 | 日志文件说明 |
---|---|
/var/log/messages内核和公共日志 | 它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出。 |
/var/log/cron 计划任务日志 | 记录与系统定时任务相关的曰志 |
/var/log/dmesg 系统引导日志 | 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息 |
/var/log/maillog 邮件日志 | 记录邮件信息的曰志 |
用户日志 | |
/var/log/lastlog | 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看 |
/var/log/secure | 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
/var/log/wtmp | 永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看 |
/var/tun/ulmp | 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看 |
3,日志文件的格式
日志文件的格式包含以下 4 列:
事件产生的时间。
产生事件的服务器的主机名。
产生事件的服务名或程序名。
事件的具体信息。
4,日志文件分析
1,内核及系统日志
配置文件位置在/etc/rsysiog.conf
查看配置文件
*.info;mail.none;authpriv.none;cron.none /var/log/messages
表示所有info等级以上的所有等级信息都写到对应的日志文件里
linux内核中日志消息级别(数字越小,优先级越高,消息越重要)
0 EMERG(紧急):会导致主机系统不可用的情况。
1 ALERT(警告):必须马上采取措施解决的问题。
2 CRIT(严重):比较严重的情况。
3 ERR(错误):运行出现错误。
4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。
5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。
6 INFO(信息):一般信息。
7 DEBUG(调试):程序或系统调试信息等
2,用户日志分析
在 wtmp、btmp、
lastlog 等日志文件中,保存了系统用户登录、退出等相关的事件消息。
但是这些文件都是二进制的数据文件,不能直接使用 tail、less 等文本查看工具进行浏览,
需要使用 who、w、users、last 和 lastb 等用户查询命令来获取日志信息
查询当前登录的用户情况users,who,w命令
users 命令只是简单地输出当前登录的用户名称
who 命令默认输出包括用户名、终端类型、登录日期及远程主机
w 命令用于显示当前系统中的每个用户及其所运行的进程信息
查询用户登录的历史记录 last,lastb命令
last命令用于查询成功登录到系统的用户记录
lastb 命令用于查询登录失败的用户记录
l
总结
1,inode与block概述关系,系统查看文件的流程
2,软链接与硬链接的区别
3,恢复误删文件(extundelete,xfsdump)的过程
4,日志文件分析:常见的日志文件位置,事件信息的级别