深入理解Linux文件系统与日志分析
文章目录
前言:
在处理Linux系统出现的各种故障时,故障的症状是最容易发现的,而导致这一故障的原因才是最终排除故障的关键。
熟悉Linux系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点,“对症下药”,及时解决各种系统问题。
1.inode和block概述:
文件是存储在硬盘上的,硬盘的最小存储叫做扇区,每个扇区512字节
操作系统读取硬盘信息,不会一个一个扇区读取。实际情况一下连续读取
多个扇区,一次性读取多个扇区,叫做块(Block),这种多个扇区组成的“块”
是文件存取的最小单位,最常见的4K,就是8个扇区组成的一个Block块,
512字节*8=4096字节
block 块
- 连续的8个扇区组成一个block
- 是文件存取的最小单位
inode 索引节点 - 中文译名为“索引节点”,也叫i节点
- 用于存储文件元信息
为什么要固态盘要4K对齐:
非4K对齐,读写速度就会很慢
1.1Inode包含文件的元信息
文件的字节数
文件的拥有者User ID
文件的Group ID
文件的读 写 执行权限
文件的时间戳
举例:查看文件30.txt的inode的信息
1.2 Linux系统文件有三个主要的时间属性
分别是ctime atime mtime
Ctime:最后一次改变文件或目录(属性)的时间
atime最后一访问文件或目录的时间
mtime最后一次修改文件或目录的时间
1.3inode的内容
文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件
目录文件的结构:
目录也是一种文件
目录文件的结构
每个inode都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统系统内部不使用文件名,而使用inode号码来识别文件
用于用户,文件名只是inode号码便于识别的别称
1.4inode的号码
用户通过文件名打开文件时,系统内部的过程
1.系统找到这个文件名对应的inode号码
2.通过inode号码,获取inode信息
3.根据inode信息,找到文件数据所在的block,读出数据
使用ls -i查看inode号码方法:
ls -i的方法查看i节点号
stat命令查看文件inode信息中的inode号码
硬盘分区结后的结构和访问文件的简单流程
硬盘分区后的结构:
访问文件的简单流程:
1.5Inode的大小
inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分区成二个区域,
一个数据区、存储文件数据,一个是inode区,存放所有的inode信息。每个inode大小
一般为128字节或者256字节,通常情况下不需要关注单个inode的大小,而是需要重点关注
inode总数,inode的总数在格式化就给定了,执行df -i 命令就可以查看。
2.Inode的特殊作用:
当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
移动或重名文件时,只改变文件名,不影响inode号码
打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
这使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启
因为系统通过inode号码,识别运行中的文件,不通过文件名
更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件
等到下一次运行这个软件的时候,文件名就会自动指向新版文件,旧版文件的inode则被回收。
3.硬链接和软连接:
为文件或目录建立链接文件
链接文件分类:硬链接;软连接
删除源文件后,软链接失效;硬链接仍旧可以
使用范围:软链接适用于文件或目录;硬链接只可用于文件
保存位置:软链接与原始文件可以位于不同的文件系统中;硬链接必须与原始文件在同一个文件系统
硬链接的查看方式:
3.1软连接:
文件名对文件名,理解为快捷方式
软连接就是创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件名称。
命令格式为:
ln -s 源文件 目标文件
举例:
1.先创建名字为1的文件,在1文件里加点数据
2.创建软链接,块的大小也不一样
3.删除源文件1,后查看状态
3.2硬链接:
多个文件名对应一个i节点号,理解为别名
一般情况下,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。但是linux系统允许多个文件名指向同一个inode号码,这意味着,可以不同的文件名访问同样的内容.
创建硬链接命令格式为:
ln 源文件 目标文件
运行该命令以后,源文件与目标文件的inode号码相同,都是指向同一个inode,inode信息中的连接数这时就会增加1
当一个文件拥有多个硬连接时,对文件内容修改,会影响所有文件名,但是删除一个文件名,不会影响另外一个文件名称访问,删除一个文件名,只会inode中的连接数减1,需要注意的是不能对目录做硬连接
举例:
1.创建1的硬链接是3,并且查看状态
2. 删除源文件后,数据还是可以查找回来,因为对应的是索引号
软链接和硬链接对比:
1.删除原始文件后,软链接无法找到原始文件的文件名,所以会报错。硬链接与原始文件inode相同,所以不影响访问,仍旧可用。
2.删除一个文件,实际上并不清除inode节点和block的数据,只是在这个文件的父目录里面的block中,删除这个文件的名字
3.Linux是通过link的数量来控制文件的删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除
4.恢复误删除的文件:
4.1EXT类型文件恢复
实验使用 extundelete 工具如何恢复误删除的文件
1.安装两个依赖包,下载恢复工具
2.解压恢复软件包
3.编译恢复工具的安装路径
4.创建软链接
5.安装编译工具,并且查看磁盘分区状况
6.创建主分区
7.挂载磁盘,并删除sdb1
8.可以使用“extundelete /dev/sdb1 --inode 2”查看文件系统/dev/sdb1 下存在哪些文件
9.删除a b文件,卸载挂载,防止数据被覆盖,恢复删除数据
10.发现数据已经恢复
4.1xfs 类型文件备份和恢复实验
1.新建分区,并且格式化
2.先挂载硬盘,再拷贝文件
3.查看data目录tree,安装备份工具
4.使用备份命令备份分区
5.查看备份内容信息
6.切换到data目录下,删除所有文件
7.利用恢复命令恢复data目录下的文件,发现恢复成功
5.日志文件的分类:
日志的功能:用于记录系统,程序运行中发生的各种事件;
通过阅读日志,有助于诊断和解决系统故障
日志文件的分类:
内核及系统日志:由系统服务统一管理,日志格式基本相似
用户日志:记录系统用户登录及退出系统的相关信息
程序日志:由各种应用程序独立管理的日志文件,记录格式不统一
日志保存位置
注意内核及公共消息日志在/var/log/messages下
主要日志文件介绍
5.1内核及系统日志
内核及系统日志功能主要由默认安装的rsyslog-7.4.7-16.el7.×86 64
日志消息的级别:
受rsyslogd服务管理的日志文件都是Linux系统中最重要的日志文件,它们记录了Linux系统中内核,用户认证,邮件,计划任务等最基本的系统消息
在Linux内核中,根据日志消息的重要程度不同,将其分为不同的优先级(数字等级越小,优先级越高,消息越重要)
内核及大多数系统消息都被记录到公共日志文件/var/log/messages中,而其他一些程序消息被记录到各自独立的日志文件中
日志消息还可以记录到特定的存储设备中,或者直接发送给指定用户
日志记录的一般格式:
时间标签 主机名 子系统名 消息字段
5.2用户日志
1.保存目录
保存了用户登录,退出系统等相关信息
/var/log/lastlog:最近的用户登录事件
/var/log/wtmp:用户登录,注销及系统开关事件
/var/log/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性事件
2.分析工具
users who w last lastb
查询当前登录的用户登录情况-users who w命令
who命令用于报告当前登录到系统中的每个用户信息
w命令显示当前系统中的每个用户及其所运行的进程信息
查询用户登录的历史记录——last、lastb 命令 last 命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。
通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。
lastb 命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都 将记录在案。
5.3程序日志分析
- 有相应的应用程序独立进行管理
Web服务:/var/log/httpd/
access_log error_log - 代理服务:/var/log/squid/
access.log cache.log - FTP服务:/var/log/xferlog
分析工具:
文本查看,过滤检索,Webmin管理套件中查看
awk sed等文本过滤,格式化编辑工具
Webalizer Awstats等专用日志分析工具
日志管理策略:
及时做好备份和归档
延长日志保存期限
控制日志访问权限
日志中可能会包含各类敏感信息,如账户 口令等