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

news2024/12/22 23:31:07

目录

  • 一、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、日志管理策略

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Tomcat】Tomcat的安装配置和在Idea中使用Tomcat:

文章目录 一、获取安装包二、配置环境三、验证是否配置成功【法一】通过运行tomcat文件夹下的bin文件夹中的 startup.bat【法二】快捷键【winr】&#xff0c;输入【cmd】&#xff0c;点击【确定】&#xff0c;输入 startup.bat 四、出现乱码和端口号被占用的解决方案【1】出现乱…

Spring概述,IOC,AOP使用

Spring简介 Spring概述 官网地址&#xff1a;https://spring.io/ Spring 是最受欢迎的企业级 Java 应用程序开发框架&#xff0c;数以百万的来自世界各地的开发人员使用Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Java 平台&#xff0c;它最…

OpenStack 面板更替换代:Skyline Dashboard <-- Horizon 面板

~、OpenStack 面板更替换代&#xff1a;Skyline Dashboard <-- Horizon 面板 先决条件 一个至少运行核心组件的 OpenStack 环境, 并能通过 Keystone endpoint 访问 OpenStack 组件 一个安装有容器引擎的 (docker 或 podman) 的 Linux 服务器 一、 &#xff08;一&…

用starter实现api接口的加密与日志功能

一、概述 运用AOP技术实现对api接口的加密及日志功能。 加密&#xff1a; 需要加密的api接口上加注解&#xff1a;Encrypt&#xff08;自定义注解&#xff09;接口返回类型为String时才加密采用对称加密&#xff1a;加密和解密使用相同的密钥 日志&#xff1a; 对所有的api接…

【虚拟仿真】Unity3D打包WEBGL后播放视频(VideoPlayer组件)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 本篇文章实现Unity3D打包WEBGL后播放视频&#xff0c;如下图所…

实现服务器版本的表白墙

目录 初始前端代码 网页初始效果 一、确定接口 二、编写代码 2.1 创建项目七步走 1、创建Maven项目 2、引入依赖 3、构建目录 4、编写代码 5、打包、部署 ​编辑 7、验证代码 三、具体的代码逻辑 3.1 服务器——两个服务接口 3.2 前端页面的代码 3.2.1 前端存档…

Springcloud快速复习

按照个人的习性,分布式我学习完以后一定会忘为此写次笔记自己快速复习 目录 Springcloud介绍注册中心 Springcloud介绍及微服务介绍 为什么学? 也不是以前的单体架构被淘汰而是,当业务足够大型,进行优化 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff…

SystemUI流程

目录 SystemUI类图 SystemUI流程一&#xff1a;SystemUI启动流程 SystemUI流程二&#xff1a;StatusBar创建流程 SystemUI流程三&#xff1a;系统Notification实现流程 源码基于 Android 12。 SystemUI 是 Android 的系统界面&#xff0c;在 Andorid 系统源码中&#xff0c;…

MySQL安装文档

一、下载 点开下面的链接&#xff1a;https://dev.mysql.com/downloads/mysql/ 点击Download 就可以下载对应的安装包了, 安装包如下: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q0gE9C3W-1682005377951)(assets/image-20221020012428839.png)]…

5. VBA消息框(MsgBox)

MsgBox函数显示一个消息框&#xff0c;并等待用户点击一个按钮&#xff0c;然后根据用户点击的按钮执行相关的操作。 5.1 语法 MsgBox(prompt[,buttons][,title][,helpfile,context]) 5.2 参数说明 prompt - 必需的参数。在对话框中显示为消息的字符串。提示的最大长度大约为…

腾讯云4核8G服务器CVM S5和轻量应用服务器性能PK来了

腾讯云4核8G云服务器可以选择轻量应用服务器或CVM云服务器标准型S5实例&#xff0c;轻量4核8G12M服务器446元一年&#xff0c;CVM S5云服务器935元一年&#xff0c;相对于云服务器CVM&#xff0c;轻量应用服务器性价比更高&#xff0c;轻量服务器CPU和CVM有区别吗&#xff1f;性…

ERROR [io.undertow.request] UT005023: Exception handling request 报错处理

1.背景 找了好久&#xff0c;突然灵光乍现是不是因为容器错误问题&#xff0c;本来就是刚从github上下载下来的项目&#xff0c;怎么别人不报错就我报错嘞&#xff0c;我还什么都没改怎么能这样&#xff01;&#xff01;&#xff01;&#xff01; 这就是我的报错&#xff0c;乍…

storm proxies代理服务器IP如何提高安全性?

代理服务器IP可以通过以下方式来提高安全性&#xff1a; 选择可靠的代理提供商&#xff1a;选择经过信誉验证、有良好用户评价的代理提供商&#xff0c;确保代理服务器IP的稳定性和可靠性&#xff0c;减少被黑客攻击的风险。使用加密通信协议&#xff1a;使用支持加密通信协议&…

【网络编程】网络套接字,UDP,TCP套接字编程

前言 小亭子正在努力的学习编程&#xff0c;接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟&#xff0c;如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话&#xff0c;烦请点赞关注支持一波, 感激不尽~~ 特别说明&#xff1a;本文分享的代码运行结果…

RSA大数N分解Pollard_rho和素数测试Tkinter GUI

RSA大数N分解Pollard_rho和素数测试 系统介绍 : 环境要求&#xff1a; 1、python 2、Tkinter GUI 3、rsa RSA大数N分解和素数测试是密码学中非常重要的问题。其中&#xff0c;RSA算法是基于大质数分解的困难性而设计的公钥加密算法&#xff0c;而素数测试则是判断一个数是…

【0190】Unix 域套接字实战(2)

文章目录 1. UNIX套接字通信2. 为什么需要套接字3. 套接字生命周期4. 示例代码1. UNIX套接字通信 套接字提供进程之间的一种通信方式,即它们交换数据的一种方式。它通常的工作方式是process_a has socket_x, process_b has socket_y, 和两个套接字相连。然后每个进程都可以使…

【Java 数据结构】优先级队列 (堆)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

达梦数据库(DM)的安装教程分享

国产数据库现状 关系型数据库 Oracle 21c 银行、电力、运营商&#xff0c;9i&#xff0c;11g Sqlserver 微软&#xff0c;政府 Mysql 开源 分社区版和商业版 社区版免费 PostgreSQL 开源、国产数据二次开发、学术研究 informix Sybase ERP 行业 DB2 邮政、烟草 国内 武汉达梦(自…

前端面试大全全全全

SEO SEO是搜索引擎优化&#xff08;Search Engine Optimization&#xff09;的缩写&#xff0c;它是指通过对网站的优化来提高其在搜索引擎排名中的位置&#xff0c;从而获得更多的有机流量和更好的网站可见度。 SEO主要包括优化网站的内容、结构、代码等方面&#xff0c;使其…

ES6 块级作用域

ES6之前没有块级作用域&#xff0c;ES5的var没有块级作用域的概念&#xff0c;只有function有作用域的概念&#xff0c;ES6的let、const引入了块级作用域。 ​ ES5之前if和for都没有作用域&#xff0c;所以很多时候需要使用function的作用域&#xff0c;比如闭包。 1.1.1 什么…