深入理解Linux文件系统与日志分析
文章目录
前言:
在处理Linux系统出现的各种故障时,故障的症状是最容易发现的,而导致这一故障的原因才是最终排除故障的关键。
熟悉Linux系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点,“对症下药”,及时解决各种系统问题。
1.inode和block概述:
文件是存储在硬盘上的,硬盘的最小存储叫做扇区,每个扇区512字节
操作系统读取硬盘信息,不会一个一个扇区读取。实际情况一下连续读取
多个扇区,一次性读取多个扇区,叫做块(Block),这种多个扇区组成的“块”
是文件存取的最小单位,最常见的4K,就是8个扇区组成的一个Block块,
512字节*8=4096字节
为什么说要固态盘要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则被回收。
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.2xfs 类型文件备份和恢复实验:
1.新建分区,并且格式化
2.先挂载硬盘,再拷贝文件
3.查看data目录tree,安装备份工具
4.使用备份命令备份分区
5.查看备份内容信息
6.切换到data目录下,删除所有文件
7.利用恢复命令恢复data目录下的文件,发现恢复成功
5.日志文件的分类:
日志的功能:用于记录系统,程序运行中发生的各种事件;通过阅读日志,有助于诊断和解决系统故障
日志文件的分类:内核及系统日志 用户日志 程序日志
日志保存位置
主要日志文件介绍
5.1内核及系统日志
内核及系统日志功能主要由默认安装的rsyslog-7.4.7-16.el7.×86 64
日志消息的级别:
受rsyslogd服务管理的日志文件都是Linux系统中最重要的日志文件,它们记录了Linux系统中内核,用户认证,邮件,计划任务等最基本的系统消息
在Linux内核中,根据日志消息的重要程度不同,将其分为不同的优先级(数字等级越小,优先级越高,消息越重要)
内核及大多数系统消息都被记录到公共日志文件/var/log/messages中,而其他一些程序消息被记录到各自独立的日志文件中
日志消息还可以记录到特定的存储设备中,或者直接发送给指定用户
日志记录的一般格式:
5.2用户日志
1.保存目录
2.分析工具
查询当前登录的用户登录情况-users who w命令
who命令用于报告当前登录到系统中的每个用户信息
w命令显示当前系统中的每个用户及其所运行的进程信息
查询用户登录的历史记录——last、lastb 命令 last 命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。
通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。
lastb 命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都 将记录在案。
5.3程序日志分析
由相应的应用程序独立进行管理
分析工具
日志管理策略:
及时做好备份和归档
延长日志保存期限
控制日志访问权限