linux系统-深入学习文件系统与日志分析

目录

一、inode于block

inode于block概括
inode的内容
inode包含文件的元信息
用stat命令可以查看某个文件的inode信息
Linux系统文件三个主要的时间属性
目录文件架构 
用户通过文件名打开文件时,系统内部的过程
查看inode号码的实操
硬盘分区后的结构 👇
用户访问一个文件的简单流程👇
inode的大小
inode的特殊作用
如何删除特殊符号创建的文件名 

二、硬链接和软连接 

三、恢复误删除的文件

四、磁盘有空间,但是仍然无法写入新文件

 五、恢复XFS类型的文件

xfsdump使用限制👇

XFS类型文件恢复步骤实操👇

          从备份恢复​编辑

六、分析日志文件

日志的功能
日志文件的分类及其说明
日志分类表
日志的主要配置文件 👇
日志分析
Linux系统日志管理(journalctl 日志管理工具)


一、inode于block

1.inode于block概括

在Linux系统中,一切皆文件。文件系统中的两个关键概念是inode和block。每个文件都有一个唯一的inode号码,inode存储了文件的元数据信息,如权限、所有者、大小等,以及指向文件实际数据存储位置的指针。文件的实际数据存储在分配的块中,块是文件系统中分配存储空间的最小单位。因此,文件在文件系统中至少占用一个inode和一个或多个块

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

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

    block(块)

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

    inode(索引节点)

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

2.inode的内容

inode包含文件的元信息

  • inode number 节点号
  • 文件类型
  • 文件的读、写、执行权限
  • 文件属主的UID
  • 文件属组的GID
  • 链接数(指向这个文件名路径名称个数)
  • 该文件的大小和不同的时间戳
  • 指向磁盘上文件的数据块指针
  • 有关文件的其他数据

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

ls -istat  文件路径

 

ll -i     #查看inode号

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

atime(access time):最近访问
最后一次访问文件的时间

mtime(modify):最近更改
最后一次更改文件内容的时间

ctime(change time):最近改动
最后一次改变文件元信息的时间

目录文件架构 

目录也是一种文件

目录文件的结构

文件名1inode号码1
文件名2inode号码2
。。。。。。。。

ps:每一行称为一个目录项 

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

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

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

查看inode号码的实操

ls -i命令     #显示文件或目录的inode号码,以及其名称比如:ls -i abc.txt 输出abc.txt文件的inode号码以及其名称stat命令      #显示文件的详细信息,包括文件的inode号码比如:stat abc.txt  输出abc.txt文件的详细信息,其中包括inode号码

硬盘分区后的结构 👇

用户访问一个文件的简单流程👇

  1. 用户访问文件时,系统首先通过文件名查找对应的inode号码。
  2. 通过inode号码,系统获取文件的元数据信息。
  3. 根据用户的访问权限,系统判断用户是否有权访问该文件。
  4. 如果用户有权访问文件,则系统根据inode中的指针信息找到相应的数据块,并读取文件内容。
  5. 如果用户没有权访问文件,则系统拒绝访问,并返回相应的错误信息。 

inode的大小

inode也会消耗硬盘空间

  1. 每个inode的大小
  2. 一般时128字节或256字节

格式化文件系统时确认inode的总数

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

inode的特殊作用

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

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

如何删除特殊符号创建的文件名 

find ./ -inum  67414967 -deletefind ./ -inum  67414967 -exec rm -rf {} \;find ./ -inum  67414967| xargs rm -rf

  操作前先创建名叫 *12345,12345的文件👇

ls -i查看*12345的inode号 

在当前目录及其子目录中查找inode号为 67414967 的文件 ,然后-delete删除


二、硬链接和软连接 

链接文件👇

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

链接文件分类👇

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

 硬链接

ln 源文件 目标位置

创建符号链接(软链接)

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


三、恢复误删除的文件

恢复EXT类型的文件

编译安装extundelete软件包

安装依赖包👇

EXT类型文件恢复步骤

1.使用fdisk创建分区/dev/sdb1,格式化ext3文件系统;

 

2.安装依赖包 

3.编译安装extundelete 

 4.对extundelete做软连接                     👆        ln -s /usr/local/extundelete/bin/extundelete /usr/local/bin/

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

 

 后面跟着deleted的就是删除的文件👆

四、磁盘有空间,但是仍然无法写入新文件

 原因:

  1. inode号被占满;
  2. 磁盘出现问题的情况又分为:磁盘坏道和文件系统出现问题

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

 五、恢复XFS类型的文件

xfsdump使用限制👇
 

1.只能备份已挂载的文件系统;

2.必须使用root的权限才能操作;

3.只能备份XFS文件系统;

4.备份后的数据只能让xfsrestore解析;

5.不能备份两个具有相同UUID的文件系统

XFS类型文件恢复步骤实操👇

1.fdisk先做/dev/sdc2的分区,然后xfs格式化

2.备份、模拟删除 

从备份恢复

六、分析日志文件

日志的功能

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

日志文件的分类及其说明

Linux 操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log/下

内核及系统日志

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

用户日志

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

程序日志

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

日志分类表

日志种类位置功能描述
内核及公共消息日志/var/log/messages

记录Linux内核消息及各种应用程序的公共日志信息,包括启动、Io错误、网络错误、程序故障等

对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息

计划任务日志/var/log/cron记录与系统定时任务相关的曰志
系统引导日志/var/log/dmesg记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
邮件系统日志/var/log/maillog记录邮件信息的曰志
用户登录日志/var/log/lastlog记录系统中所有用户最后一次的登录时间的曰志。这个文件是二进制文件.不能直接用 vi 查看,而要使用 lastlog 命令查看
用户验证授权日志/var/log/secure记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录。比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
用户登录注销和系统开机相关日志/var/log/wtmp永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件,不能直接用 vi 查看,而要使用 last 命令查看
当前登录用户信息日志/var/run/utmp记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用 vi 查看,而要使用w、who、users等命令查看

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


内核及系统日志文件中的每一行表示一条信息,每个信息由4个字段的固定格式组成:

时间标签:消息发出的日期和时间

主机名:生成消息的计算机的名称

子系统名称:发出消息的应用程序的名称

消息:消息的具体内容

日志的主要配置文件 👇

日志消息的级别表👇

                                                               

 设备字段说明 👇

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

日志分析

用户日志分析(保存了用户登录、退出系统等相关信息)

/var/log/lastlog::最近的用户登录事件

/var/log/wtmp:用户登录、注销及系统开、关机事件

/var/run/utmp:当前登录的每个用户的详细信息

/var/log/secure:与用户验证相关的安全性事件

 日志分析工具的引入

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

程序日志分析

由相应的应用程序独立进行管理
Web服务:/var/log/httpd/

        access log        //记录客户访问事件

        error log        //记录错误事件

代理服务:/var/log/squid/*access.log、cache.log
分析工具
文本查看、grep过滤检索、Webmin管理套件中查看

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

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

Linux系统日志管理(journalctl 日志管理工具)

journalctl:查看所有日志。默认情况下,仅显示本次启动的日志。
journalctl -r:以倒序方式查看日志,从尾部开始查看,通常用于查看最新的日志记录。
journalctl -k:仅查看内核日志,不显示应用程序日志。
journalctl -b:查看系统本次启动的日志。
journalctl -b -1:查看上一次启动的日志。
journalctl -n 20:显示最后20行日志。
journalctl -f:实时跟踪日志的变化,类似于 tail -f 命令。
journalctl -u nginx.service:查看指定服务(例如 nginx)的日志。
journalctl _PID=1:查看指定进程(例如PID为1的进程)的日志。
journalctl _UID=0 --since today:查看指定用户(例如UID为0的用户,即root用户)在当天产生的日志。
journalctl -xe:查看详细的日志,并在每条错误信息下附加解决问题的网址

举个🌰  journalctl -r:以倒序方式查看日志👇

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

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

相关文章

【golang学习之旅】Go 的基本数据类型

系列文章 【golang学习之旅】报错:a declared but not used 目录 系列文章总览布尔型(bool)字符串型(string)整数型(int、uint、byte、rune)浮点型(float32、float64)复…

【我的Java学习笔记-3】

运算符和表达式 运算符: 对字面量或者变量进行操作的符号。 表达式: 用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。 举例说明: int a10; int b 20; int c a b; …

软件测试报告的用途

软件测试报告的用途十分广泛,主要体现在以下几个方面: 评估软件质量:软件测试报告是对软件进行全面、系统测试后的总结,通过报告中的各项数据和结果,可以评估软件的质量水平,包括功能的完整性、性能的稳定…

linux-进程(2)

1.通过系统调用获取进程标示符 进程id(PID) 父进程id(PPID) 每一个可执行程序运行起来之后都会成为一个进程,每个进程都有一个自己的id,以及一个父进程id,父进程就是创建自己进程的进程&#xf…

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention多变量时间序列预测

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测 目录 SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测预测效果基本介绍…

二叉树-从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7]前序遍历的…

Group Query Attention (GQA) 机制详解以及手动实现计算

Group Query Attention (GQA) 机制详解 1. GQA的定义 Grouped-Query Attention (GQA) 是对 Multi-Head Attention (MHA) 和 Multi-Query Attention (MQA) 的扩展。通过提供计算效率和模型表达能力之间的灵活权衡,实现了查询头的分组。GQA将查询头分成了G个组&#…

分享一个2099试用码!JetBrains 2024 版

程序员痛点: 好用的编程工具收费太贵 无法找到好且免费的编程资料(书或者视频) 今天我们话几分钟分享一个激活方法,一次学习,终身受益 一分钟激活全家桶旗下所有软件 支持更新 Stage 1.下载安装 toolbox-app&…

【论文阅读】《Octopus v2: On-device language model for super agent》,端侧大模型的应用案例

今年LLM的发展趋势之一,就是端侧LLM快速发展,超级APP入口之争异常激烈。不过,端侧LLM如何应用,不知道细节就很难理解。正好,《Octopus v2: On-device language model for super agent》这篇文章可以解惑。 对比部署在…

【小浩算法cpp题解】判断环形链表

目录 前言我的思路思路一 (哈希表记录链表的访问):思路二 (双指针,快指针在前,慢指针在后): 我的代码运行结果 前言 前几天我写的代码,都是把所有的内容写在main函数里&…

GPB | RegVar:基于深度神经网络的非编码区突变功能预测新方法

Genomics, Proteomics & Bioinformatics (GPB)发表了由军事医学研究院辐射医学研究所张成岗研究员、周钢桥研究员和卢一鸣副研究员团队完成的题为“RegVar: Tissue-specific Prioritization of Noncoding Regulatory Variants”的方法文章。我们的“…

Spring事务回滚核心源码解读

记一次Springboot事务超时不回滚的分析过程 在Springboot中,我用的xml进行事务管理,DataSourceTransactionManager作为事务管理器,配置了事务控制在Service层;在事务管理器中,配置了defaultTimeout事务超时时间为5秒&…