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.mzph.cn/pingmian/3745.shtml

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

相关文章

走向大规模应用之前,DePIN 如何突破技术、数据与市场之网

近期,随着分布式物理基础设施网络(DePIN)的快速演变,一个旨在利用区块链技术彻底改造传统基础设施模型的新兴生态系统正在逐渐浮现。2024 年 4 月,以 peaq 为代表的 DePIN 项目成功筹集了 1500 万美元用于生态系统的扩…

mac配置maven

在 macOS 上配置 Maven 也相对简单。以下是一种常用的方法: 1. 安装maven **下载 Maven:**首先,你需要从 Maven 官网(https://maven.apache.org/download.cgi)下载最新版本的 Maven。你可以选择二进制压缩包&#xf…

02.Scala简单演示

Scala创建对象的方法与Java有所不同 class可以直接传入形参; 形式为 变量名称:变量类型 逗号隔开 ** ** 方法定义也比较特殊 ** ** def方法名():返回值 { } 其中返回值Unit 等价于Java中的void

系统服务(22年国赛)—— 磁盘管理(压缩去重)

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! 系统服务(22年国赛)—— 磁盘管理(压缩&&去重)https://myweb.myskillstree.cn/90.html 目录 StorageSrv 安装并创建vdo 将…

多输入多输出 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机多输入多输出预测

多输入多输出 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机多输入多输出预测 目录 多输入多输出 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现WOA-LSSVM鲸鱼算法优化…

STL_vector源码剖析

STL vector STL2.91源码地址: https://github.com/lewischeng-ms/sgi-stl 侯捷老师用的是 2.91,不同版本的STL差异很大,靠后版本的STL用了太多typedef以及继承关系,导致可读性很差。 本文参考博客: https://blog.csdn.net/weixin_45389639/article/detai…

记账本React案例(Redux管理状态)

文章目录 整体架构流程 环境搭建 创建项目 技术细节 一、别名路径配置 1.路径解析配置(webpack) ,将/解析为src/ 2.路径联想配置(vsCode),使用vscode编辑器时,自动联想出来src文件夹下的…

python-excel自动化-openpyxl

openpyxl学习笔记 创建或打开表格存储和遍历数据设置单元格风格过滤器和排序更改工作表的背景颜色合并单元格冻结窗口数字格式公式图像图表条形图折线图散点图 创建或打开表格 # 创建 import datetime from openpyxl import Workbook # 实例化 wb Workbook() # 激活 work…

使用Excel生成sql脚本(insert/update/delete)

目录 前言 一、Excel文件脚本变量 二、操作示例 前言 在系统使用初期,存在某种原因,需要对数据库数据进行批量处理操作。往往都是通过制定Excel表格,通过Excel导入到数据库中,所以就弄一个excel生成sql的导入脚本,希…

探索设计模式的魅力:AI赋能分层模式,解构未来,智领风潮

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 探索设计模式的魅力:AI赋能分层模式,解构未来,智领风潮 ✨欢迎…

【网络安全】安全事件管理处置 — 安全事件处置思路指导

专栏文章索引:网络安全 有问题可私聊:QQ:3375119339 目录 一、处理DDOS事件 1.准备工作 2.预防工作 3.检测与分析 4.限制、消除 5.证据收集 二、处理恶意代码事件 1.准备 2.预防 3.检测与分析 4.限制 5.证据收集 6.消除与恢复 …

【Leetcode】vector刷题

🔥个人主页:Quitecoder 🔥专栏:Leetcode刷题 目录 1.只出现一次的数字2.杨辉三角3.删除有序数组中的重复项4.只出现一次的数字II5.只出现一次的数字III6.电话号码的字母组合 1.只出现一次的数字 题目链接:136.只出现一…

linux 编译opencv遇到问题

linux编译opencv4.8的时候遇到问题 Error: suffix or operands invalid for vpand看到很多说法是升级as这个工具的版本,自测是从2.20升级到2.27就可以了

python提取date的月份和天数

在Python编程中,经常需要从日期中提取月份和天数。这在数据处理、分析和可视化等领域都是非常常见的操作。 本文将介绍如何使用Python提取日期中的月份和天数,并通过代码示例展示具体的实现方法。 1.使用datetime模块获取日期信息 要提取日期的月份和天…

安卓手机连接电脑实用技巧:实现文件传输与共享

在手机使用过程中,我们常常需要将手机中的文件传输到电脑,或者将手机与电脑进行共享。为了实现这一需求,掌握一些实用的安卓手机连接电脑技巧就显得尤为重要。本文将为您详细介绍2种简单、高效且安全的方法,让您轻松实现安卓手机与…

【Python系列】受保护属性

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Scala 04 —— Scala Puzzle 拓展

Scala 04 —— Scala Puzzle 拓展 文章目录 Scala 04 —— Scala Puzzle 拓展一、占位符二、模式匹配的变量和常量模式三、继承 成员声明的位置结果初始化顺序分析BMember 类BConstructor 类 四、缺省初始值与重载五、Scala的集合操作和集合类型保持一致性第一部分代码解释第二…

VIO外参标定方法总结

一、前言 VIO外参标定是指相机和IMU之间的转移矩阵的确定,包括33的旋转矩阵和3维平移向量。整体上分为离线标定和在线标定两类方法,这篇文章做一个总结,主要是经典的方法,记录其思想。 二、博文链接 1、离线标定方法 最基本的…

安装svn网络有问题怎么办?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

2024最新Nessus 免费安装 附详细安装教程

免责声明 请勿利用文章内的相关技术从事非法测试。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,请遵守网络安全法律。本次仅用于测试,请完成测试后24小时之…