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

目录

一.inode与block

1.inode与block概述

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

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

1.3.block(块)

1.4.inode(索引节点)

2.inode内容

2.1.inode包含文件的元信息

2.2.用stat命令可以查看某个文件的inode信息

2.3.Linux系统文件三个主要的时间属性

2.4.目录文件的结构

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

2.6.查看inode号码的方法

3.文件仓储小结

3.1.硬盘分区后的结构

3.2.访问文件的简单流程

4.inode大小

4.1.inode也会消耗硬盘空间

4.2.格式化文件系统时确定inode的总数

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

5.inode的特殊作用

6.通过inode号删除rm常规方法删除不掉的文件

二.硬链接和软链接

1.链接文件

1.1.硬链接

1.2.软链接

三.恢复误删除的文件

1.恢复EXT类型的文件

1.1.编译安装extundelete软件包

安装依赖包

配置、编译及安装

1.2.模拟删除并执行恢复操作

2.恢复XFS类型的文件

2.1.xfsdump命令格式

2.2.xfsdump备份级别(默认为0)

2.3.xfsdump常用选项

2.4.xfsdump使用限制

四.相关实操

1.示例EXT

1.1.添加并查看新硬盘

1.2.开辟主分区,建立ext3文件系统

1.3.安装extundelete 以及涉及到的工具

1.4.删除ext3文件系统中的文件

创建2个文件ab

查看文件系统/dev/sdb1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录

将两个ext3文件删除

1.5.恢复删除ext3文件系统中的文件

1.6.查看结果

2.示例XFS

2.1.创建xfs系统文件环境

2.2.安装xfsdump

2.3.备份整个分区

2.4.模拟数据丢失

2.5.恢复操作

3.总结:

五.日志文件

1.日志的功能

2.日志文件的分类及其说明

2.1.内核及系统日志

2.2.用户日志

2.3.程序日志

2.4.日志保存位置

2.5.主要日志文件介绍

3.内核及系统日志

3.1.由系统服务rsyslog统一管理

3.2.日志消息级别

3.3.日志记录的一般格式

4.用户日志分析

4.1.日志分析工具的引入

5.程序日志分析

5.1由相应的应用程序独立进行管理

分析工具

文本查看、grep过滤检索、Webmin管理套件中查看

awk、sed等文本过滤、格式化编辑工具

Webalizer、Awstats等专用日志分析工具

6.journalctl日志管理工具

6.1.journalctl 日志管理工具的简介

6.3.查看内核日志(不显示应用日志)

6.4.查看系统本次和上一次启动的日志

6.5.显示尾部指定行数的日志

6.6.查看某个服务的日志

6.7.查看指定进程的日志

6.8.查看指定用户的日志


一.inode与block

1.inode与block概述

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

据存储在block(块)中,存文件元信息(比如文件的创建者、创建日期、文件大小、文件权限

等)的区域就叫做inode。因此,一个文件必须占用一个inode,并且至少占用一个block

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

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

1.3.block(块)

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

1.4.inode(索引节点)

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

2.inode内容

2.1.inode包含文件的元信息

  • 文件的字节数
  • 文件拥有者的USER ID(不包含文件名)
  • 文件的GROUP ID
  • 文件的读、写、执行权限
  • 文件的时间戳
  • 有关文件的其他数据

2.2.用stat命令可以查看某个文件的inode信息

ls  -i    stat  文件路径

2.3.Linux系统文件三个主要的时间属性

  • ctime(change time)

最后一次改变文件或目录(属性)的时间

  • atime(access time)

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

  • mtime(modify time)

最后一次修改文件或目录(内容)的时间

2.4.目录文件的结构

  • 目录也是一种文件
  • 目录文件的结构
文件名1inode号码1
文件名2

inode号码2

............
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不使用文件名,而是用inode号码来识别文件
  • 对于用户,文件名只是inode号码便于识别的别称

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

  1. 系统找到这个文件名对应的inode号码
  2. 通过inode号码,获取inode信息
  3. 根据inode信息,找到文件数据所在block,读出数据

2.6.查看inode号码的方法


ls -i命令:查看文件名对应的inode号码ls -i aa.txtstat命令:查看文件inode信息中的inode号码stat aa.txt

3.文件仓储小结

3.1.硬盘分区后的结构

3.2.访问文件的简单流程

  1. 用户访问文件时
  2. 通过文件名找到对应的inode号
  3. 通过inode号获取inode信息
  4. 根据inode信息判断用户是否有权限
  5. 有则指向对于的数据block并读取数据,无则拒绝访问

4.inode大小

4.1.inode也会消耗硬盘空间

  • 每个inode的大小
  • 一般是128字节或256字节

4.2.格式化文件系统时确定inode的总数

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

df -i

5.inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象

  • 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
  • 移动或重命名文件时,只改变文件名,不影响inode号码
  • 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名 

6.通过inode号删除rm常规方法删除不掉的文件

find /opt  -inum inode号 -deletefind /opt  -inum inode号 -exec rm -rf {} \;find /opt  -inum inode号| xargs rm -rf

二.硬链接和软链接

1.链接文件

  • 为文件或目录建立链接文件
  • 链接文件分类
软链接(符号链接)硬链接
删除原文件后失效仍旧可用
使用范围适用于文件或目录只可用于文件
保存位置与原始文件可以位于不同的文件系统中必须与原始文件在同一个文件系统(如一个Linux分区)内

1.1.硬链接

ln 源文件 目标位置

1.2.软链接

ln [-s] 源文件或目录…… 链接文件或目标文件位置

提示:软硬链接具体可看之前的博客

三.恢复误删除的文件

1.恢复EXT类型的文件

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

版本恢复)

1.1.编译安装extundelete软件包

安装依赖包

配置、编译及安装

1.2.模拟删除并执行恢复操作

2.恢复XFS类型的文件

CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdumpxfsrestore 工具进行备

份恢复

2.1.xfsdump命令格式

xfsdump -f 备份存放位置 要备份的路径或设备文件

2.2.xfsdump备份级别(默认为0)

  • 0:完全备份
  • 1-9:增量备份

2.3.xfsdump常用选项

  • -f:指定备份文件目录
  • -L:指定标签 session label
  • -M:指定设备标签 media label
  • -s:备份单个文件(后面不能直接跟路径)

2.4.xfsdump使用限制

  • 只能备份已挂载的文件系统
  • 必须使用root权限才能操作
  • 只能备份XFS文件系统
  • 备份后的数据只能让xfsrestore解析
  • 不能备份两个具有相同UUID的文件系统

四.相关实操

1.示例EXT

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

centos6版本恢复),本示例模拟ext3文件系统损坏,借助extundelete,修复文件数据

1.1.添加并查看新硬盘

1.2.开辟主分区,建立ext3文件系统

1.3.安装extundelete 以及涉及到的工具

yum -y install e2fsprogs-devel e2fsprogs-libs

cd /xx01

tar xf extundelete-0.2.4.tar.bz2 
cd extundelete-0.2.4/
yum install -y gcc gcc-c++ make

./configure --prefix=/usr/local/extundelete && make && make install
ln -s /usr/local/extundelete/bin/* /usr/bin/

1.4.删除ext3文件系统中的文件

echo 123 > a.txt
echo 123 > b.txt
创建2个文件ab

extundelete /dev/sdb1 --inode 2
查看文件系统/dev/sdb1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录
rm -rf a.txt
rm -rf b.txt
将两个ext3文件删除

1.5.恢复删除ext3文件系统中的文件

umount /xx01
extundelete /dev/sdb1 --restore-all

1.6.查看结果

ls
ls RECOVERED_FILES/

2.示例XFS

CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进

行备份恢复,目前市面上并没有开源的xfs文件恢复工具,但是利用备份恢复依旧是最优的选择方

案。本次实验就是模拟对重要的xfs文件进行备份,在误删后,进行恢复

2.1.创建xfs系统文件环境

fdisk /dev/sdb
partprobe
mkfs -t xfs /dev/sdb1
mkdir /date
mount /dev/sdb1 /date/
cd /date
cp /etc/passwd ./
mkdir test
touch ./test/a

2.2.安装xfsdump

rpm -qa | grep xfsdump
yum install -y xfsdump

2.3.备份整个分区

xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]

2.4.模拟数据丢失

cd /data/
rm -rf ./*

2.5.恢复操作

xfsrestore -f /opt/dump_sdb1 /date/

3.总结:

两个实验都展示了重要数据丢失后的恢复手段,但是第二个实验比第一个完成的更加顺利,数据保

存的更加完整

五.日志文件

1.日志的功能

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断和解决系统故障

2.日志文件的分类及其说明

2.1.内核及系统日志

  • 由系统服务 rsyslog 统一进行管理,日志格式基本相似
  • 主配置文件 /etc/rsyslog.conf

2.2.用户日志

  • 记录系统用户登录及退出系统的相关信息

2.3.程序日志

  • 由各种应用程序独立管理的日志文件,记录格式不统一

2.4.日志保存位置

  • 默认位于:/var/log目录下

2.5.主要日志文件介绍

日志种类位置功能描述
内核及公共消息日志/var/log/messages记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息
计划任务日志/var/log/cron记录crond计划任务产生的事件信息
系统引导日志/var/log/dmesg记录Linux系统在引导过程中的各种事件信息
邮件系统日志/var/log/maillog记录进入或发出系统的电子邮件活动
用户登录日志/var/log/secure记录用户认证相关的安全事件信息
/var/log/lastlog记录每个用户最近的登录事件(二进制格式)
/var/log/wtmp记录每个用户登录、注销及系统启动和停机事件(二进制格式)
/var/run/btmp记录失败的、错误的登录尝试及验证事件(二进制格式)

3.内核及系统日志

3.1.由系统服务rsyslog统一管理

  • 软件包:rsyslog-7.4.7-16.el7.x86 64
  • 主要程序:/sbin/rsyslogd
  • 配置文件:/etc/rsyslog.conf

3.2.日志消息级别

级号消息级别说明
0EMEGR紧急会导致主机系统不可用的情况
1ALERT警告必须马上采取措施解决的问题
2CRIT严重比较严重的情况
3ERR错误运行出现错误
4WARNING提醒可能会影响系统功能的事件
5NOTICE注意不会影响系统但值得注意
6INFO信息一般信息
7DEBUG调试程序或系统调试信息等

3.3.日志记录的一般格式

more  /var/log/messages    //以查看message目录为例子

  • 时间标签:消息发出的日期和时间
  • 主机名:生成消息的计算机的名称
  • 子系统名称:发出消息的应用程序的名称
  • 消息:消息的具体内容

4.用户日志分析

4.1.日志分析工具的引入

user查看当前用户名称
who查看当前登录的用户、终端、登录时间、IP地址
W查看当前登录的用户、终端、IP地址、登录时间、占用CPU进程、进程等
last命令用于查询成功登录到系统的用户记录
lastb命令用于查询登录失败的用户记录

5.程序日志分析

5.1由相应的应用程序独立进行管理

Web服务:/var/log/httpd/

  • access_log ——记录客户访问事件
  • error_log ——记录错误事件

代理服务:/var/log/squid/

  • access.log、cache.log
分析工具
文本查看、grep过滤检索、Webmin管理套件中查看
awk、sed等文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具

6.journalctl日志管理工具

6.1.journalctl 日志管理工具的简介

日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从messages这个文件里读取信

息。Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看

所有日志(内核日志和应用日志)

日志的配置文件是/etc/systemd/journald.conf

6.2.查看所有日志(默认情况下,只保存本次启动的日志)

journalctljournalctl -r(-r表示倒序,从尾部看)

6.3.查看内核日志(不显示应用日志)

journalctl -k

6.4.查看系统本次和上一次启动的日志

journalctl -b  [-0]journalctl -b -1(需更改设置,如上次系统崩溃,需要查看日志时,就要看上一次的启动日志)

6.5.显示尾部指定行数的日志

journalctl -n 20 [-f]

6.6.查看某个服务的日志

journalctl -u nginx.service [-f]

6.7.查看指定进程的日志

journalctl _PID=1

6.8.查看指定用户的日志

journalctl _UID=0  --since today

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

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

相关文章

springboot论文格式系统

采用springbootmysqlhtmlvue技术 详细运行视频地址B站运行效果视频地址 (1)系统具备用户管理功能,包括用户注册、登录、权限管理等功能。 (2)系统具备格式规范管理功能,包括格式规范创建、编辑、删除等操…

【Day 8】MySQL 多表查询 + Mybatis 基础

1 多表查询 笛卡尔积:在数学中,两个集合(A集合 和 B集合)的所有组合情况 在多表查询时,需要消除无效的笛卡尔积 select * from tb_emp,tb_dept where dept_id tb_dept.id;多表查询分为: 连接查询 内连接:相当于查…

FTP与SMB深度对比:文件传输协议谁更胜一筹?

在数字化时代,文件传输已成为日常工作中不可或缺的一部分。 FTP(文件传输协议)和SMB(服务器消息块)是两种最为常见的文件传输协议。它们各自在文件传输领域拥有独特的优势和特点,但同时也存在一些差异。 今…

【Linux】动态库与静态库

文章目录 1. 认识静态库与动态库2. 手动创建并测试静态库2.1 生成静态库2.2 打包静态库2.3 使用静态库 3. 库搜索路径4. 手动创建并测试动态库4.1 生成动态库4.2 打包动态库4.3 使用动态库 5. 动静态库优先级 1. 认识静态库与动态库 静态库(.a)&#xf…

基于深度学习网络的十二生肖图像分类matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................... for i 1:16subplot(4,4,…

真的通俗易懂!差分信号电路的解读

目录 一、什么是差分运放电路 二、差分运放电路的工作状态 一、什么是差分运放电路 差分电路是具有对共模信号抑制,对差模信号放大特征的电路。该电路的两个信号输信号的差值是该电路的有效值。将这两信号输入只差进行放大后输出。如果存在干扰信号,会…

H264 编码标准常见术语解释

H264 编码标准 H.264编码标准,也被称作MPEG-4 AVC(Advanced Video Coding),是一种被广泛使用的数字视频压缩标准,由国际电信联盟(ITU-T)和国际标准化组织(ISO)共同开发。…

如何确定IP地址的地理位置

IP地址的地理位置确定是一个复杂而精细的过程,它结合了多种技术与方法来推断或确定设备在网络中的大致物理位置。以下是对IP地址地理位置确定过程的详细解释: 首先,我们要理解IP地址本身并不能直接反映物理位置信息。IP地址主要是用于在网络中…

vscode将本地服务转发到外网地址访问

示例中将本地的5500端口,用vscode进行端口转发,在外网地址访问服务 要转发的端口 转发端口 点击转发端口 输入要转发的端口,按下回车 Enter 点击允许,弹出确认界面后点击打开 转发端口已经成功配置上,右键可见性…

栈和队列-介绍与实现(超级!!!详解-C语言)

目录 栈 栈的介绍 栈的概念 栈的结构 栈的实现 初始化栈 StackInit 销毁栈 StackDestroy 入栈 StackPush 出栈 StackPop 获取栈顶元素 StackTop 检查栈是否为空 StackEmpty 获取栈中有效元素个数 StackSize 队列 队列的介绍 队列的概念 队列的结构 队列的应用 队列的实现 …

建议收藏!网络安全入门知识汇总,自学必看!

计算机网络的广泛应用,为人们的生产、生活、工作、娱乐带来了方便,同时由于技术原因和人为因素,也为人们带来诸多安全隐患。这催发出一个新的职业——网络安全工程师。 目前网络安全工程师变得越来越重要,很多人也开始对网络安全…

jsp实验11 JavaBean

二、实验项目内容(实验题目) 编写代码,掌握javabean的用法。【参考课本 上机实验 5.5.2 】 三、源代码以及执行结果截图: 源代码: Memory.java package sea.water; import java.util.ArrayList; import java.util…

280 Stylized Desert Beach Textures - Sand Cracked Sand Water More v1.1.0

280多种风格化的沙子、破裂的沙子、土壤、沙质岩石和其他沙质纹理的集合,用于沙漠和海滩风格化/幻想/rpg风格的游戏环境。 这款由game Buffs设计的280多种风格化沙漠和海滩纹理系列,为您的游戏锦上添花! 在这个系列中,你会在风格化/幻想/rpg风格的游戏中找到大量适合沙漠、…

python与上位机开发day02

1.常见运算符 1.1 赋值运算符 赋值运算符主要用来对变量进行赋值,包括如下这些: 运算符描述赋值加等于-减等于*乘等于/除等于//整除等于%模等于**幂等于 实例如下: a 10 a 5 # 等价于 a a5 a *2 # 等价于 a a*21.2 比较运算符 比较运算符主要用来比较两个数据的大小…

树莓派驱动开发----iic驱动oled屏幕篇

水一期吧,上效果 有点模糊,我直接说吧,修改设备树,iic1,地址0x3c,然后编写驱动文件,app文件,挂载驱动模块后在终端输入 /*******************************************************…

Ventus(承影):基于RISC V的开源GPGPU

Ventus(承影):基于RVV的开源GPGPU 清华大学集成电路学院dsp-lab的承影RVV GPGPU设计文档。 整体目标 提供一个开源的基于RVV的GPGPU实现方案,并给出软件映射方案、指令集(支持的指令及特性、添加的自定义指令&#xf…

经典的目标检测算法有哪些?

一、经典的目标检测算法有哪些? 目标检测算法根据其处理流程可以分为两大类:One-Stage(单阶段)算法和Two-Stage(两阶段)算法。以下是一些经典的目标检测算法: 单阶段算法: YOLO (You Only Loo…

iOS ------代理 分类 拓展

代理协议 一,概念: 代理,又称委托代理(delegate),是iOS中常用的一种设计模式。顾名思义,它是把某个对象要做的事委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理…

图书租赁系统-借阅图书

图中展示了所有可以借阅的图书&#xff0c;点击“借阅”按钮便可以借阅图书。 借阅成功后&#xff0c;可以到bookorder菜单中阅读该书。 阅读功能待开发。 add.html借阅图书页面 <!DOCTYPE html> <html lang"zh" xmlns:th"http://www.thymeleaf.org…

学习经验分享【33】YOLOv5 / YOLOv7 / YOLOv8 / YOLOv9 / RTDETR 基于 Pyside6 的图形化界面

大论文可以写两章关于算法创新模型&#xff0c;最后一章可以写对前两章提出方法进行封装&#xff0c;利用PyQT5搭建YOLOv5可视化界面&#xff0c;并打包成exe程序&#xff0c;构建检测平台实现简单的应用。用来凑大论文的字数和工作量&#xff0c;是简单又快速的方法&#xff0…