【文件系统和系统日志分析】

目录

  • 一、inode和block概述
    • block(块)
    • inode(索引节点)
  • 二、inode内容
  • 三、inode的号码
    • 3.1、查看inode号码的方法
  • 四、inode的大小
    • 磁盘分区后的结构
    • 访问文件的简单流程
  • 五、删除乱码文件
  • 六、inode节点耗尽故障处理
    • 6.1、模拟inode节点耗尽故障
  • 七、恢复误删的文件
    • 7.1、xfs 类型文件备份和恢复
      • 模拟删除
      • xfsdump的常用选项
      • xfsrestore 命令格式
    • 7.2、ext类型文件恢复
      • 使用fdisk创建分区/dev/sdc1,格式化ext3文件系统
      • 下载安装包
      • 安装依赖包
      • 编译安装 extundelete
      • 模拟删除
      • 恢复文件
  • 八、分析日志文件
    • 8.1、日志文件的分类
      • 1、内核及系统日志:
      • 2、计划任务日志
      • 3、系统引导日志
      • 4、邮件系统日志
      • 5、用户登录日志
    • 8.2、日志的级别
    • 8.3、设备字段解释
    • 8.4、用户日志分析
    • 8.5、程序日志分析
    • 8.6、查询用户登录的历史记录 last,lastb 命令
    • 8.7、日志管理策略


一、inode和block概述

文件数据包括元信息与实际数据

文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节

block(块)

·连续的八个扇区组成一个 block(4K)
·是文件存取的最小单位

inode(索引节点)

·中文译名为“索引节点”,也叫 i 节点
·用于存储文件元信息

在这里插入图片描述

block 的作用:用来存真正的数据内容
每个扇区的大小规定是512B,系统在读取硬盘数据时,并不会一个个扇区去读,而是一次性连续性读取多个扇区,即一次性读取一个快,这种多个扇区
组成的块,是文件存取的最小单位,块的大小,最常见的是4kb,即连续8个sector组成一个block

inode 的作用:用来存数据的元信息的,所谓元信息指的就是该数据的一些属性,特性。
那我们的inode可以记录的信息有哪些?
可以是文件权限(rwx)的记录,文件的属主,属组,文件大小,时间戳等,这种存储文件元信息的区域就叫做 inode,中文译名"索引节点”,
也叫i节点,因此,一个文件必须占用一个inode,但至少占用一个block

注:inode中并不包括文件名,其实文件名是存放在目录当中的,linux系统中一切皆文件,因此目录也是一种文件即查看目录中的文件,
cd转目录后通过ls列目录里可以查看文件名,而我们每个inode都有一个号码,系统用inode号码识别不同的文件,系统内部不使用文件名,
而使用inode号码来识别文件。

二、inode内容

inode包含文件的元信息
	文件的字节数
	文件拥有着的USER ID(不包含文件名)
	文件的GROUP ID
	文件的读,写,执行权限
	文件的时间戳
用stat 命令可以查看某个文件的inode信息
	示例: stat aa.txt
Linux系统文件的三个主要的时间属性
ctime(change time ) 改变
	最后一次改变文件或目录 (属性)的时间
atime (access time)访问
	最后一次访问文件或目录的时间
mtime(modify time) 修改
	最后一次修改文件或者目录(内容)的时间)
目录文件的结构
	目录文件也是一种文件
	目录文件的结构
每个inode都有一个号码,操作系统用inode号码来识别不同文件
linux系统内部不使用文件名,而使用inode号码来标识文件
对于用户,文件名只是inode号码便于识别的别称

三、inode的号码

用户通过文件名打开文件时,系统内部的过程(重要)
	1、系统找到这个文件名对应的inode号码
	2、通过inode号码,获取inode获取信息
	3、根据inode信息,找到文件数据所在的block,读出数据

3.1、查看inode号码的方法

ls-i命令: 查看文件名对应的inode号码

ls -i aa.txt

stat命令: 查看文件inode信息中的inode号码

stat aa.txt

四、inode的大小

inode 也会消耗硬盘空间
	1、每个inode的大小
	2、一般是128字节或256字节
	
格式化文件系统时确定inode的总数

使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量

磁盘分区后的结构

在这里插入图片描述

访问文件的简单流程

在这里插入图片描述

五、删除乱码文件

由于 inode 号码与文件名分离,导致Linux 系统具备以下几种特有的现象:
1.文件名包含特殊字符,可能无法正常删除。这时直接删除 inode,能够起到删除文件的作用;
2.移动文件或重命名文件,只是改变文件名,不影响 inode 号码;
3.打开一个文件以后,系统就以 inode 号码来识别这个文件,不再考虑文件名。
4.使用 vi 编辑器修改文件数据保存后,会生成一个新的 inode 号码。

 方法一:
 touch a.txt
 ls -i a.txt
 67433578 a.txt
 find ./ -inum 67433578 -exec rm -i {} \;
 解释:意思就是find找到内容作为后面rm删除对象
 
 方法二:
 touch aa.txt
 ls -i aa.txt
 67164213 aa.txt
 find ./ -inum 67164213 | xargs rm -f 
xargs这个参数就是强力的意思, 如果前面的输出结果包含空格或制表符也会被强力执行)

方法三:
 touch aaa.txt
 ls -i aaa.txt
 67433580 aaa.txt
 find ./ -inum 67433580 -delete 

六、inode节点耗尽故障处理

过程:
正常对一块磁盘分区,格式化,挂载(此处是实验所以尽量将分区设置的小一点)
使用fdisk创建分区、dev/sdb1  ,分区大小设置为40M即可
fdisk /dev/sdb    创建分区
mkfs.ext4 /dev/sdb1    格式化
mount /dev/sdb1 /mnt   挂载
df -i

在这里插入图片描述在这里插入图片描述

6.1、模拟inode节点耗尽故障

cd /mnt
 
for ((i=1; i<=10240; i++));do touch /mnt/file$i;done
分行显示:
for ((i=1; i<=10240; i++))
do
touch /mnt/file$i
done  
写入文件
touch {1..10240}.txt
 
df -i
df -hT

当inode号占用满后无法继续写入文件
在这里插入图片描述
在这里插入图片描述
删除文件恢复
在这里插入图片描述

七、恢复误删的文件

7.1、xfs 类型文件备份和恢复

·CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。
·xfsdump 的备份级别有两种:0 表示完全备份;1-9 表示增量备份。
·xfsdump 的备份级别默认为 0。

fdisk /dev/sdb  创建分区
mkfs -t xfs /dev/sdb2 使用xfs格式化
mkdir /data   创建挂载文件
mount /dev/sdb2 /data   挂载文件

在这里插入图片描述

模拟删除

cp /etc/passwd /etc/shadow /data

在目录里创建文件
echo a > a    
echo b > b
echo c > c

mkdir 123   创建一个目录
cp  /etc/yum.repos.d/* 123/ -r  
复制一个内容到123目录里,加个r递归复制

在这里插入图片描述

使用 rpm -q xfsdump  查看有没有安装xfsdump
没有安装的话,用yum install -y xfsdump

xfsdump -f /opt/dump_sdb2 /dev/sdb2
opt:备份的位置
dump_sdb2:指定名称
dev/sdb2 : 设备名称

在这里插入图片描述在这里插入图片描述

设置好后就可以看见在opt目录里有这个dump_sdb2的文件在这里插入图片描述把data目录里的文件删除

在这里插入图片描述

cd /opt/   进入opt目录
xfsrestore -f /opt/dump_sdb2 /data/  将之前备份的文件,放入data目录里

在这里插入图片描述使用xfsrestore命令后,删除的文件又回来了
在这里插入图片描述

xfsdump的常用选项

选项作用
-f指定备份文件目录
-L指定标签 session label
-M指定设备标签media label
-s备份单个文件,-s后面不能直接跟路径

xfsrestore 命令格式

xfsrestore -f 恢复文件的位置 存放恢复后文件的位置

xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.xfsdump是透过文件系统的uuid来分辨各个备份档的,所以不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)

7.2、ext类型文件恢复

·extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)

使用fdisk创建分区/dev/sdc1,格式化ext3文件系统

fdisk /dev/sdc
mkfs.ext3 /dev/sdc1   格式化分区为ext3
mkdir /data      创建挂载文件
mount /dev/sdc1 /data      挂载
df -hT

下载安装包

tar xf extundelete-0.2.4.tar.bz2  解压

在这里插入图片描述

安装依赖包

yum  install -y e2fsprogs-devel e2fsprogs-libs

在这里插入图片描述

编译安装 extundelete

cd /test
 
#下载包
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
 
#解压包
tar jxvf extundelete-0.2.4.tar.bz2
 
#编译 安装
cd extundelete-0.2.4/
./configure --prefix=/usr/local/extundelete && make && make install
 
#优化执行路径(软链接到系统path路径中,以便cmd中直接使用)
ln -s /usr/local/extundelete/bin/* /usr/bin/

模拟删除

cd /test
echo a>a
echo a>b    ##创建文件
echo a>c
ls          
 
extundelete /dev/sdc1 --inode 2   
#查看文件系统/dev/sdc1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录。
 
rm -rf a b        #删除文件
extundelete /dev/sdc1 --inode 2
 
cd ~         #立刻解挂 避免进一步损失
umount /test

恢复文件

extundelete /dev/sdc1 --restore-all
恢复/dev/sdc1 文件系统下的所有内容

在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED_FILES/

八、分析日志文件

日志的功能
	用于记录系统,程序运行中发生的各种事件
	通过阅读日志,有助于诊断和解决系统故障
	
日志保存位置
	默认位于:/var/log目录下

主要日志文件介绍:

内核及公共消息日志/var/log/messages
计划任务日志/var/log/cron
系统引导日志/var/log/dmesg
邮件系统日志/var/log/maillog
用户登录日志/var/log/lastlog,/var/log/secure,/var/log/wtmp,/var/run/btmp

8.1、日志文件的分类

1、内核及系统日志:

由系统服务rsyslog统一管理进行,日志格式基本相似
日志记录的一般格式:
时间标签,主机名,子系统进程名,进程的消息字段

在这里插入图片描述

2、计划任务日志

/var/log/cron:记录crond计划任务产生的事件信息

在这里插入图片描述

3、系统引导日志

/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。
在这里插入图片描述

4、邮件系统日志

/var/log/maillog:记录进入或发出系统的电子邮件活动。

5、用户登录日志

/var/log/secure:记录用户认证相关的安全事件信息。

/var/log/lastlog:记录每个用户最近的登录事件。二进制格式

/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。二进制格式

/var/run/btmp:记录失败的、错误的登录尝试及验证事件。二进制格式

8.2、日志的级别

Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要):

级号消息级别说明
0EMERG紧急会导致主机系统不可用的情况,如系统崩溃
1ALERT警告必须马上采取措施解决问题,如数据库被破坏
2CRIT严重比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能
3ERR错误运行出现错误。不是非常紧急,尽快修复的
4WARNING提醒可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等
5NOTICE注意不会影响系统但值得注意
6INFO信息一般信息,正常的系统信息
7DEBUG调试程序或系统调试信息等。包含详细开发的信息,调试程序时使用

8.3、设备字段解释

选项作用
auth用户认证时产生的日志
authprivssh、ftp等登录信息的验证信息
daemon一些守护进程产生的日志
ftpFTP产生的日志
lpr打印相关活动
markrsyslog服务内部的信息,时间标识
news网络新闻传输协议(nntp)产生的消息。
syslog系统日志
uucpUnix-to-Unix Copy 两个unix之间的相关通信
console针对系统控制台的消息。
cron系统执行定时任务产生的日志。
kern系统内核日志
local0~local7自定义程序使用
mail邮件日志
user用户进程

8.4、用户日志分析

分析工具
	users, who, w, last, lastab

在这里插入图片描述

8.5、程序日志分析

由相应的应用程序梳理进行管理
web服务:/var/log/httpd/
	access_log  记录客户访问事件
	error_log   记录错误事件
代理服务:/var/log/squid/
	access.log, cache.log,
FTP服务 : /var/log/xferlog
分析工具
	文本查看,grep过滤检索,webmin管理套件中查看
	awk,sed等文本过滤,格式化编辑工具
	Webalizer, Awststs等专用日志分析工具

8.6、查询用户登录的历史记录 last,lastb 命令

查询用户登录的历史记录
	last 查看成功登录到系统的用户记录
	lastb查看登录失败的用户记录

在这里插入图片描述

在这里插入图片描述

8.7、日志管理策略

及时做好备份和归档
延长日志保存期限
控制日志访问权限
	日志中可能会包含各类敏感信息,如账户,口令等
集中管理日志
	将服务器的日志文件发到统一的日志文件服务器
	便于日志信息的统一收集,整理和分析
	杜绝日志信息的意外丢失,恶意篡改或删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/12999.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SSM整合的基本思路梳理

SSM整合的简单思路流程 基本思路 我在整合的时候一般习惯从MyBatis开始向上构建&#xff0c;也就是在开始一个项目的时候先将DAO层搭建起来&#xff0c;再向上整合Spring以及SpringMVC。按照这个流程&#xff0c;可以做出一个比较简单的大致流程作为参考&#xff0c;帮助我们…

[MySQL]基本数据类型及表的基本操作

一、常用的数据类型 1.1 数据库表的列类型 数值 1 2 3.14 tinyint 十分小的数据 1个字节smallint 较小的数据 2个字节mediumint 中等大小的数据 3个字节int 标准的整数 4个字节big 较大的数据 8个字节float 浮点数 4个字节double 浮点数 小数 8个字节&#xff08;精度问题&am…

JSON的用法和说明

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式。 JSON建构于两种结构&#xff1a; "名称/值"对的集合。理解为对象 值的有序列表。理解为数组 JSON具有以下这些形式&#xff1a; 对象是一个无序的“ ’名称/值‘ 对”集合。一个…

【排序】快速排序(递归和非递归)

快速排序 前言图解大致思路对于hoare版本对于挖坑法对于前后指针法 实现方法递归非递归 快排的优化&#xff08;基于递归的优化&#xff09;三数取中法小区间优化 时间复杂度和空间复杂度 前言 快速排序&#xff0c;听名字就比较霸道&#xff0c;效率根名字一样&#xff0c;非…

永久免费内网穿透不限制速度

市面上的免费内网穿透大都有格式各样的限制&#xff0c;什么限制流量啊&#xff0c;每个月要签到打卡啊&#xff0c;还有更改域名地址等&#xff0c;只有神卓互联内网穿透是永久免费没有限制的&#xff0c;白嫖也可以。 这篇文章分享了3个方案&#xff0c;按照性能和综合指标排…

项目驱动的编写

驱动代码直接使用nfs传输,设备树直接在开发板中修改设备树文件 1、修改好设备树&#xff0c;在内核顶层make dtbs &#xff0c;然后替代tftp目录中的设备树文件 2、使用内核源码编译生成驱动程序&#xff0c;然后传送到开发板中&#xff0c;使用insmod动态加载 LCD驱动 1、初始…

从零学习SDK(7)如何打包SDK

打包SDK的目的是为了方便将SDK提供给其他开发者或用户使用&#xff0c;以及保证SDK的兼容性和安全性。打包SDK可以有以下几个好处&#xff1a; 减少依赖&#xff1a;打包SDK可以将SDK所需的库、资源、文档等打包成一个文件或者一个目录&#xff0c;这样就不需要用户再去安装或…

ArduPilot开源飞控系统之简单介绍

ArduPilot开源飞控系统之简单介绍 1. 源由2. 了解&阅读2.1 ArduPilot历史2.2 关于GPLv32.3 ArduPilot系统组成2.4 ArduPilot代码结构 3. 后续4. 参考资料 ArduPilot是一个可信赖的自动驾驶系统&#xff0c;为人们带来便利。为此&#xff0c;提供了一套全面的工具&#xff0…

读SQL进阶教程笔记12_地址与三值逻辑

1. SQL和数据库都在极力提升数据在表现层的抽象度&#xff0c;以及对用户隐藏物理层的概念 2. 关系模型是为摆脱地址而生的 2.1. “地址”不仅包括指针操作的地址&#xff0c;还包括数组下标等 3. 一个优雅的数据结构胜过一百行杂耍般的代码 3.1. 精巧的数据结构搭配笨拙的…

Spring MVC 的调用(12)

目录 SpringMVC流程 源码分析 第一步:用户发起请求到前端控制器&#xff08;DispatcherServlet&#xff09; 第二步&#xff1a;前端控制器请求处理器映射器&#xff08;HandlerMappering&#xff09;去查找处理器&#xff08;Handle&#xff09;&#xff1a;通过xml配置或者…

高效部署Redis Sentinel模式(哨兵模式),手把手教学

Redis Sentinel模式部署 前言一、服务器部署同版本的redis1、换软件源在yum拉取包的时候启用remi源 二、修改配置文件1.修改/etc/redis.conf2.配置/etc/redis/sentinel.conf 三、启动redis服务1、启动服务2、连接redis3、检查redis 前言 这里就不过多的解释高可用的好处了&…

CRM系统是什么?它有什么作用?

CRM系统是什么&#xff1f; CRM是Customer Relationship Management&#xff08;客户关系管理&#xff09;的缩写&#xff0c;是一种通过对客户进行跟踪、分析和管理的方法&#xff0c;以增加企业与客户之间的互动和联系&#xff0c;提高企业与客户之间的互信&#xff0c;从而…

基于 VITA57.4 标准的 8 路 500MSPS/1GSPS/1.25GSPS 采样率 14 位 AD 采集 FMC 子卡模块

板卡概述 FMC148 是一款基于 VITA57.4 标准的 JESD204B 接口 FMC 子卡模块&#xff0c;该模块可以实现 8 路 14-bit、500MSPS/1GSPS/1.25GSPS ADC 采集功能。该板卡 ADC 器件采用 ADI 公司的 AD9680 芯片,全 功率-3dB 模拟输入带宽可达 2GHz。该 ADC 与 FPGA 的主机接口通 …

Revit相关问题:符号线,转转问题,生成三维视图

一、Revit符号线如何画粗一些?如何自定义符号线子类别? 1、Revit在族里面符号线的粗细、显示颜色、显示线型为符号线的子类别控制! 你可以通过&#xff0c;管理选项卡新建子类别&#xff0c;然后在画符号线的时候应用该子类别! 新建符号线对象样式 应用子类别 二、Revit三维模…

背包问题——01背包|完全背包

目录 前言&背包问题的历史 01背包 1、题目 2、暴力解01背包 Ⅰ、代码 3、动态规划解01背包 Ⅰ、二维dp数组解01背包 1&#xff09;dp数组的含义 2&#xff09;递推公式 3&#xff09;dp数组的初始化 4&#xff09;遍历顺序的讨论 5、代码 Ⅱ、一维数组解01背包 1&…

C#调用C++封装的SDK库(dll动态库)——上

C#调用C封装的SDK库(dll动态库)——上 一、C封装库 通过前几篇文章&#xff0c;我们封装了C的动态DLL库&#xff0c;有Qt版的&#xff0c;有C版的&#xff0c;当然还有介绍了Pimpl模式在SDK封装中的使用&#xff1a; Qt创建SDK VS创建SDK Pimple在SDK封装中的应用 但是&a…

RabbitMQ入门

AMQP AMQP(Advanced Message Queuing Protocol,高级消息队列协议) 是进程之间传递异步消息的网络协议。 AMQP工作过程 发布者(Publisher)发布消息(Message),经过交换机(Exchange)&#xff0c;交换机根据路由规则将收到消息分发给交换机绑定的队列(Queue)&#xff0c;最后AM…

二维数组的总结

一、时间复杂度和空间复杂度 时间复杂度和空间复杂度是衡量算法效率的两个重要指标。时间复杂度是指算法执行所需的时间&#xff0c;而空间复杂度是指算法执行所需的内存空间。 计算时间复杂度和空间复杂度需要分析算法中各个操作的执行次数和内存使用情况。具体的计算方法可以…

亚马逊、ebay、temu如何提升产品点击率?测评自养号解析

产品点击率对于店铺销售额的影响至关重要&#xff0c;尤其是在竞争越来越激烈的市场环境中&#xff0c;想要有销量和转化&#xff0c;提高产品listing点击率成为了非常关键的一环。 1. 产品主图 顾客浏览产品时&#xff0c;第一眼看到的就是主图&#xff0c;一张优质的主图更容…

CSDN博客编写教程

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…