当前位置: 首页 > news >正文

Linux 文件系统与日志分析(补充)

1、linux文件系统

        硬盘的最小存储单位为扇区,每个扇区大小为512字节。而操作系统在读取硬盘数据的时候,一次性最小读取一个块(block),默认一个block大小为4k,即8个扇区。

1.1 文件的存储
  • 文件数据信息存储在block
  • 文件的属性等信息存储在inode(索引节点),存储block的指针信息,inide存放文件的属性信息。
  • 系统或程序通过inode 号寻找正确的文件数据块
  • 每个文件至少对应一个inode和一个block,如果此文件超过4k,则会对应1个inode和多个block
  • 使用 stat /ls -l 文件名/df -i   命令即可查看某个文件的 inode 信息

1.2 inode和block的关系:

  • 系统找到这个文件名对应的 inode 号码;

  • 通过 inode 号码,获取 inode 信息;

  • 根据 inode 信息,找到文件数据所在的 block,并读出数据。

  • inode 也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域:一个是数据区,存放文件数据;另一个是 inode 区,存放 inode 所包含的信息。

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

  • xargs 的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。

  • 通过inode删除文件是处理特殊文件名问题的有效方法,但应谨慎使用。

  • 磁盘读取数据时按照block为单位读取,每读一次消耗一次磁盘I/0

2、备份和恢复文件

2.1 误删文件恢复(可能恢复也可能不恢复)

        在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区的数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载。

extundelete 数据恢复工具

extundelete 是一个开源的 Linux 数据恢复工具, 支持 ext3、ext4 文件系统。
步骤:
  • apt install extundelete(安装)

  • 某块磁盘分区的文件误删,解挂载

  • extundelete /dev/sdb1 --restore-all 立刻卸载该文件系统,然后使用

  • 再恢复挂载,文件恢复可能成功可能失败

2.2 备份与恢复

xfsdump 按照inode顺序备份一个 xfs 文件系统。xfsdump 的备份级别有两种:0:完全备份;1-9 :增量备份。pxfsdump 的备份级别默认为 0。

常用的备份参数包括以下几种:

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

xfsdump 与 xfsrestore 备份恢复步骤:

  • 准备测试分区 ,vm虚拟机添加一块盘,格式化、分区
  • 创建文件系统,挂载
  • 在挂载目录内创建文件和目录等
  • 开始备份数据,使用 xfsdump 命令备份整个分区,xfsdump -f 备份存放位置 要备份路径或设备文件
  • 删除挂载目录的内容
  • 使用xfsrestore 命令恢复文件,xfsrestore -f 恢复文件的位置 存放恢复后文件的路径

3、日志文件分析

        日志文件是用于记录 Linux 操作系统中各种运行消息的文件,相当于Linux 主机的“日记”。不同的日志文件记载了不同类型的信息,如 Linux 内核消息、用户登录事件、程序错误等。

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

3.1 日志数据主要包括以下三种类型
  • 内核及系统日志:这种日志数据由系统服务 rsyslog 统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置。系统中有相当一部分程序会把自己的日志文件交由 rsyslog 管理,因而这些程序使用的日志记录也具有相似的格式。 
  • dmesg命令:显示内核环形缓冲区的内容,这对于查看启动过程中的信息特别有用
  • kern.log:在Ubuntu系统中,/var/log/kern.log访问,或者通过dmesg命令或/var/log/syslog访问。
  • syslog:这是Ubuntu中最主要的系统日志文件,位于/var/log/syslog。大多数系统事件和消息都会记录在这里。
  • auth.log:位于/var/log/auth.log,专门记录认证相关的信息,如登录尝试、sudo使用情况等
  • dpkg.log:位于/var/log/dpkg.log,记录了dpkg软件包管理器的操作,如安装、升级和移除软件包。
  • apt:与软件包管理相关的日志,在/var/log/apt/目录下
  • 用户日志:这种日志数据用于记录 Linux 操作系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。
  • user.log 或 utmp 和 wtmp:这些文件记录了用户的登录和登出活动。utmp记录当前登录的用户,而wtmp记录所有登录和登出活动。/var/run/utmp和/var/log/wtmp。
  • lastlog:位于/var/log/lastlog,记录了系统中每个用户的最后登录信息。
  • 程序日志:有些应用程序会选择由自己独立管理一份日志文件(而不是交给 rsyslog服务管理),用于记录本程序运行过程中的各种事件信息。由于这些程序只负责管理自己的日志文件,因此不同程序所使用的日志记录格式可能会存在较大的差异。
  • 在 wtmp、btmp、lastlog 等日志文件中,保存了系 统用户登录、退出等相关的事件消息。
3.2 日志优先级别
  • 数字等级越小,优先级越高,消息越重要
  • Ø 0 EMERG(紧急):会导致主机系统不可用的情况。
  • Ø 1 ALERT(警告):必须马上采取措施解决的问题。
  • Ø 2 CRIT(严重):比较严重的情况。
  • Ø 3 ERR(错误):运行出现错误。
  • Ø 4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。
  • Ø 5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。
  • Ø 6 INFO(信息):一般信息。
  • Ø 7 DEBUG(调试):程序或系统调试信息等。
3.3 dmesg命令

dmesg命令用于显示Ubuntu系统内核环缓冲区的信息,包括系统启动时的各种消息和错误信息。

常用选项:
  • Ø-c:清除内核环缓冲区的内容。
  • Ø-H:使用可读格式输出信息。
  • Ø-L:显示本地时间。
  • Ø-l:显示指定级别的信息,如-l err只显示错误消息。
  • Ø-n:设置显示的信息级别,如-n 3表示只显示警告级别以上的信息。
3.4 Journal

Journal是Systemd的一部分,主要负责收集和存储日 志数据。

  • 分页输出journalctl
  • 不分页输出 journalctl --no-pager
  • 按时间倒序查看所有日志: journalctl -r
  • 查看最新的10条日志: journalctl -n 10
  • 实时查看新添加的日志条目:journalctl -f
3.5 用户日志查看

需要使用 who、w、users、last 和 lastb 等用户查询命令来获取日志信息

注意:

  • 用户在非常规的时间登录,或者用户登录系统的 IP 地址和以往的不一样。
  • 用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录。
  • 非法使用或不正当使用超级用户权限。
  • 无故或者非法重新启动各项网络服务的记录。
  • 不正常的日志记录,如日志残缺不全,或者是诸如 wtmp 这样的日志文件无故缺少了中间的记录文件。
http://www.dtcms.com/a/268800.html

相关文章:

  • 报错 400 和405解决方案
  • 海外短剧系统开发:PC端与H5端的全栈实践与深度解析
  • Day07- 管理并发和并行挑战:竞争条件和死锁
  • 在bash shell 函数传递数组的问题2
  • 【DeepSeek实战】17、MCP地图服务集成全景指南:高德、百度、腾讯三大平台接入实战
  • PCIE Ack/Nak机制详解
  • Unity 实现与 Ollama API 交互的实时流式响应处理
  • ES 压缩包安装
  • socket接口api的深度探究
  • 初识Neo4j之Cypher
  • 【Unity笔记】Unity 粒子系统 Triggers 使用解析:监听粒子进入与离开区域并触发事件
  • 在 macOS 上安装和测试 LibreOffice
  • 深入解析TCP:可靠传输的核心机制与实现逻辑(三次握手、四次挥手、流量控制、滑动窗口、拥塞控制、慢启动、延时应答、面向字节流、粘包问题)
  • 借助HarmonyOS SDK,《NBA巅峰对决》实现“分钟级启动”到“秒级进场”
  • 【7】PostgreSQL 事务
  • SRAM与三级缓存(L1/L2/L3 Cache)的关系
  • 芯谷科技--高性能双运算放大器D358
  • 第二届云计算与大数据国际学术会议(ICCBD 2025)
  • 火山引擎Data Agent全面上线售卖!以企业级数据智能体,重构数据应用范式
  • PostgreSQL中的HASH分区:原理、实现与最佳实践
  • 查看WPS Ofice是64位还是32位
  • 腾讯云 CDN 不支持 WebSocket 的现状与华为云 CDN 的替代方案-优雅草卓伊凡
  • 缺乏项目进度追踪工具,如何选择适合的工具
  • 中电金信 :十问高质量数据集:金融大模型价值重塑有“据”可循
  • 案例分享:应用VIC-3D High-Speed FFT进行吉他拨弦振动的工作变形ODS测量
  • QML中的Item
  • 【银行测试】手机银行APP专项项目+测试点汇总(二)
  • RESTful API概念和设计原则
  • C++之string类的实现代码及其详解(中)
  • 软件之禅(十二)面向对象和市场经济---平等性原理