深入理解Linux文件系统与日志分析

前言:

在处理Linux系统出现的各种故障时,故障的症状是最容易发现的,而导致这一故障的原因才是最终排除故障的关键。

熟悉Linux系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点,“对症下药”,及时解决各种系统问题。

1.inode和block概述:

文件是存储在硬盘上的,硬盘的最小存储叫做扇区,每个扇区512字节
操作系统读取硬盘信息,不会一个一个扇区读取。实际情况一下连续读取
多个扇区,一次性读取多个扇区,叫做块(Block),这种多个扇区组成的“块”
是文件存取的最小单位,最常见的4K,就是8个扇区组成的一个Block块,
512字节*8=4096字节
深入理解Linux文件系统与日志分析篇,冲☞
为什么说要固态盘要4K对齐:
深入理解Linux文件系统与日志分析篇,冲☞
非4K对齐,读写速度就会很慢

1.1Inode包含文件的元信息

文件的字节数

文件的拥有者User ID

文件的Group ID

文件的读 写 执行权限

文件的时间戳

举例:查看文件30.txt的inode的信息
深入理解Linux文件系统与日志分析篇,冲☞

1.2 Linux系统文件有三个主要的时间属性

分别是ctime atime mtime
Ctime:最后一次改变文件或目录(属性)的时间

atime最后一访问文件或目录的时间

mtime最后一次修改文件或目录的时间
深入理解Linux文件系统与日志分析篇,冲☞

1.3inode的内容

文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件

目录文件的结构:

目录也是一种文件

目录文件的结构
深入理解Linux文件系统与日志分析篇,冲☞

每个inode都有一个号码,操作系统用inode号码来识别不同的文件

Linux系统系统内部不使用文件名,而使用inode号码来识别文件

用于用户,文件名只是inode号码便于识别的别称
深入理解Linux文件系统与日志分析篇,冲☞

1.4inode的号码

用户通过文件名打开文件时,系统内部的过程

1.系统找到这个文件名对应的inode号码

2.通过inode号码,获取inode信息

3.根据inode信息,找到文件数据所在的block,读出数据
深入理解Linux文件系统与日志分析篇,冲☞
使用ls -i查看inode号码方法:

ls -i的方法查看i节点号
深入理解Linux文件系统与日志分析篇,冲☞
stat命令查看文件inode信息中的inode号码
深入理解Linux文件系统与日志分析篇,冲☞
硬盘分区结后的结构和访问文件的简单流程
深入理解Linux文件系统与日志分析篇,冲☞

1.5Inode的大小

inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分区成二个区域,

一个数据区、存储文件数据,一个是inode区,存放所有的inode信息。每个inode大小

一般为128字节或者256字节,通常情况下不需要关注单个inode的大小,而是需要重点关注

inode总数,inode的总数在格式化就给定了,执行df -i 命令就可以查看。
深入理解Linux文件系统与日志分析篇,冲☞
深入理解Linux文件系统与日志分析篇,冲☞

2.Inode的特殊作用:

深入理解Linux文件系统与日志分析篇,冲☞
这使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启

因为系统通过inode号码,识别运行中的文件,不通过文件名

更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件

等到下一次运行这个软件的时候,文件名就会自动指向新版文件,旧版文件的inode则被回收。

3.硬链接和软连接:

为文件或目录建立链接文件

链接文件分类:硬链接;软连接
深入理解Linux文件系统与日志分析篇,冲☞
硬链接的查看方式:
深入理解Linux文件系统与日志分析篇,冲☞

3.1软连接:

文件名对文件名
软连接就是创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件名称。
命令格式为:
ln -s 源文件 目标文件

举例:
1.先创建名字为1的文件,在1文件里加点数据
深入理解Linux文件系统与日志分析篇,冲☞
2.创建软链接,块的大小也不一样深入理解Linux文件系统与日志分析篇,冲☞
3.删除源文件1,后查看状态
深入理解Linux文件系统与日志分析篇,冲☞

3.2硬链接:

多个文件名对应一个i节点号
一般情况下,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。但是linux系统允许多个文件名指向同一个inode号码,这意味着,可以不同的文件名访问同样的内容.

创建硬链接命令格式为:
ln 源文件 目标文件
运行该命令以后,源文件与目标文件的inode号码相同,都是指向同一个inode,inode信息中的连接数这时就会增加1

当一个文件拥有多个硬连接时,对文件内容修改,会影响所有文件名,但是删除一个文件名,不会影响另外一个文件名称访问,删除一个文件名,只会inode中的连接数减1,需要注意的是不能对目录做硬连接

举例:

1.创建1的硬链接是3,并且查看状态
深入理解Linux文件系统与日志分析篇,冲☞
2. 删除源文件后,数据还是可以查找回来,因为对应的是索引号
深入理解Linux文件系统与日志分析篇,冲☞
软链接和硬链接对比:
深入理解Linux文件系统与日志分析篇,冲☞
1.删除原始文件后,软链接无法找到原始文件的文件名,所以会报错。硬链接与原始文件inode相同,所以不影响访问,仍旧可用。

2.删除一个文件,实际上并不清除inode节点和block的数据,只是在这个文件的父目录里面的block中,删除这个文件的名字

3.Linux是通过link的数量来控制文件的删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除

4.恢复误删除的文件:

4.1EXT类型文件恢复
实验使用 extundelete 工具如何恢复误删除的文件

1.安装两个依赖包,下载恢复工具
深入理解Linux文件系统与日志分析篇,冲☞
2.解压恢复软件包
深入理解Linux文件系统与日志分析篇,冲☞
3.编译恢复工具的安装路径深入理解Linux文件系统与日志分析篇,冲☞
4.创建软链接深入理解Linux文件系统与日志分析篇,冲☞
5.安装编译工具,并且查看磁盘分区状况
深入理解Linux文件系统与日志分析篇,冲☞
6.创建主分区
深入理解Linux文件系统与日志分析篇,冲☞
7.挂载磁盘,并删除sdb1深入理解Linux文件系统与日志分析篇,冲☞
8.可以使用“extundelete /dev/sdb1 --inode 2”查看文件系统/dev/sdb1 下存在哪些文件
深入理解Linux文件系统与日志分析篇,冲☞
9.删除a b文件,卸载挂载,防止数据被覆盖,恢复删除数据
深入理解Linux文件系统与日志分析篇,冲☞
10.发现数据已经恢复
深入理解Linux文件系统与日志分析篇,冲☞
4.2xfs 类型文件备份和恢复实验:
1.新建分区,并且格式化
深入理解Linux文件系统与日志分析篇,冲☞
2.先挂载硬盘,再拷贝文件
深入理解Linux文件系统与日志分析篇,冲☞
3.查看data目录tree,安装备份工具
深入理解Linux文件系统与日志分析篇,冲☞
4.使用备份命令备份分区
深入理解Linux文件系统与日志分析篇,冲☞
5.查看备份内容信息
深入理解Linux文件系统与日志分析篇,冲☞
6.切换到data目录下,删除所有文件
深入理解Linux文件系统与日志分析篇,冲☞
7.利用恢复命令恢复data目录下的文件,发现恢复成功
深入理解Linux文件系统与日志分析篇,冲☞

5.日志文件的分类:

日志的功能:用于记录系统,程序运行中发生的各种事件;通过阅读日志,有助于诊断和解决系统故障
深入理解Linux文件系统与日志分析篇,冲☞
日志文件的分类:内核及系统日志 用户日志 程序日志
深入理解Linux文件系统与日志分析篇,冲☞

日志保存位置
深入理解Linux文件系统与日志分析篇,冲☞
主要日志文件介绍
深入理解Linux文件系统与日志分析篇,冲☞

5.1内核及系统日志

内核及系统日志功能主要由默认安装的rsyslog-7.4.7-16.el7.×86 64
深入理解Linux文件系统与日志分析篇,冲☞
日志消息的级别:
受rsyslogd服务管理的日志文件都是Linux系统中最重要的日志文件,它们记录了Linux系统中内核,用户认证,邮件,计划任务等最基本的系统消息

在Linux内核中,根据日志消息的重要程度不同,将其分为不同的优先级(数字等级越小,优先级越高,消息越重要)
深入理解Linux文件系统与日志分析篇,冲☞
内核及大多数系统消息都被记录到公共日志文件/var/log/messages中,而其他一些程序消息被记录到各自独立的日志文件中

日志消息还可以记录到特定的存储设备中,或者直接发送给指定用户

日志记录的一般格式:
深入理解Linux文件系统与日志分析篇,冲☞

5.2用户日志

1.保存目录
深入理解Linux文件系统与日志分析篇,冲☞
2.分析工具
深入理解Linux文件系统与日志分析篇,冲☞

查询当前登录的用户登录情况-users who w命令
深入理解Linux文件系统与日志分析篇,冲☞
who命令用于报告当前登录到系统中的每个用户信息
深入理解Linux文件系统与日志分析篇,冲☞
w命令显示当前系统中的每个用户及其所运行的进程信息
深入理解Linux文件系统与日志分析篇,冲☞
查询用户登录的历史记录——last、lastb 命令 last 命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。

通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。
深入理解Linux文件系统与日志分析篇,冲☞
lastb 命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都 将记录在案。
深入理解Linux文件系统与日志分析篇,冲☞

5.3程序日志分析

深入理解Linux文件系统与日志分析篇,冲☞
由相应的应用程序独立进行管理

分析工具
深入理解Linux文件系统与日志分析篇,冲☞

日志管理策略:

及时做好备份和归档

延长日志保存期限

控制日志访问权限
深入理解Linux文件系统与日志分析篇,冲☞

相关文章: