[Linux入门] Linux 文件系统与日志分析入门指南

目录

[一、深入理解 Linux 文件系统](#一、深入理解 Linux 文件系统)

1️⃣存储的基本单位:扇区与块

[2️⃣文件的 "身份证":inode(索引节点)](#2️⃣文件的 "身份证":inode(索引节点))

[3️⃣文件名与 inode 的关系](#3️⃣文件名与 inode 的关系)

[4️⃣通过 inode 删除特殊文件名的文件](#4️⃣通过 inode 删除特殊文件名的文件)

二、误删文件的恢复技巧

[1️⃣EXT3/EXT4 文件系统(extundelete 工具)](#1️⃣EXT3/EXT4 文件系统(extundelete 工具))

[2️⃣XFS 文件系统(xfs_undelete 与备份恢复)](#2️⃣XFS 文件系统(xfs_undelete 与备份恢复))

[三、Linux 日志分析:系统的 "日记本"](#三、Linux 日志分析:系统的 "日记本")

1️⃣日志的类型与位置

2️⃣日志优先级(重要程度)

3️⃣常用日志查看命令

4️⃣用户登录日志查询

总结


一、深入理解 Linux 文件系统

Linux 文件系统的设计逻辑是高效管理数据的基础,核心在于扇区、块(block)和索引节点(inode) 三者的配合。

1️⃣存储的基本单位:扇区与块

  • 扇区:硬盘的最小存储单位,每个扇区固定为 512 字节,是硬件层面的数据存储单元。
  • 块(block):操作系统读取数据的最小单位,默认大小为 4k(即 8 个扇区)。系统一次至少读取一个块,即使文件小于 4k,也会占用一个块(剩余空间会浪费)。

2️⃣文件的 "身份证":inode(索引节点)

每个文件在 Linux 中都有两个核心部分:数据(存放在 block 中) 和属性信息(存放在 inode 中)。

  • inode 存储的信息:

    • 文件的属性(创建者、权限、大小、创建时间等);
    • 指向文件数据所在 block 的指针(类似 "目录",告诉系统数据存在哪里);
    • 注意:inode 不包含文件名,文件名存放在上级目录的 block 中。
  • inode 的特点:

    • 每个文件至少对应 1 个 inode 和 1 个 block(文件大于 4k 时会占用多个 block);
    • 同一分区中,inode 号相同的文件互为硬链接(可通过多个文件名访问同一份数据);
    • inode 在文件系统格式化时生成,总数固定,可通过df -i命令查看分区的 inode 使用情况。
  • 如何查看 inode 信息:

    • 使用**stat**** 文件名命令,例如stat test.txt,可显示文件的 inode 号、权限、时间戳等详细信息;**
    • 使用****stat -L文件名命令,例如stat -L test.txt,可显示符号链接指向的目标文件信息;
    • 使用**ls -i ****文件名命令,直接查看文件对应的 inode 号,例如ls -i test.txt。**

3️⃣文件名与 inode 的关系

Linux 系统内部通过 inode 号识别文件,文件名只是用户便于记忆的 "别名"。当你访问一个文件时,系统会:

  1. 根据文件名找到对应的 inode 号;
  2. 通过 inode 号获取 inode 信息;
  3. 依据 inode 中的指针找到数据所在的 block,读取数据。

4️⃣通过 inode 删除特殊文件名的文件

当文件名包含特殊字符(如换行符、-开头)难以直接删除时,可通过 inode 号删除:

  • **方法 1(推荐):find /path/to/directory -inum inode号 -delete,**例如find /tmp -inum 12345 -delete
  • 方法 2:ls -i /path/to/directory**| grep inode号 | awk'{print $2}' | xargs rm**
删除多个具有相同inode的文件(硬链接):
  • find /path -xdev -samefile /path/to/file -delete

二、误删文件的恢复技巧

Linux 中误删文件(如**rm -rf**操作)后,若未被新数据覆盖,可通过工具恢复。不同文件系统的恢复方法不同:

1️⃣EXT3/EXT4 文件系统(extundelete 工具)

适用于 EXT 类型分区,步骤如下:

  1. 立即停止操作:避免新数据写入覆盖被删文件;
  2. 卸载分区umount /挂载点(如umount /test);
  3. 恢复文件
    • 恢复单个文件:extundelete /dev/sdb1 --restore-file 文件名
    • 恢复所有文件:extundelete /dev/sdb1 --restore-all
  4. 查看结果 :恢复的文件会存放在当前目录的RECOVERED_FILES文件夹中。

2️⃣XFS 文件系统(xfs_undelete 与备份恢复)

XFS 文件系统恢复难度较高,建议提前备份,常用工具:

  • xfs_undelete:恢复近期删除的文件,例如:
  • xfs_undelete -t -24hour -o /opt /dev/sdb1(恢复 24 小时内的文件到/opt目录,/dev/sdb1表示要恢复的盘符**)****;**
  • xfsdump/xfsrestore(推荐备份方案):
    • 完全备份:xfsdump -f /backup/sdb1_dump /dev/sdb1
    • 恢复备份:xfsrestore -f /backup/sdb1_dump /挂载点

注意:XFS 恢复后文件名可能丢失,需通过文件大小、创建时间识别。

三、Linux 日志分析:系统的 "日记本"

日志是诊断系统问题、追踪安全事件的关键。Linux 日志主要存放在/var/log/目录,按类型可分为内核日志、系统日志、用户日志和程序日志。

1️⃣日志的类型与位置

日志类型 典型文件 / 目录 记录内容
内核日志 dmesg命令、/var/log/kern.log 系统启动信息、硬件错误、内核故障
系统日志 /var/log/syslog/var/log/auth.log 系统事件、登录认证、服务启停
用户日志 /var/log/wtmp/var/log/lastlog 用户登录 / 退出记录、登录失败尝试
程序日志 /var/log/apache2//var/log/mysql/ 应用程序运行状态、错误信息 (如 Web 服务、数据库)

2️⃣日志优先级(重要程度)

Linux 日志按重要性分为 8 个级别(0 级最严重):

  • 0:EMERG(紧急,系统不可用);
  • 1:ALERT(警告,需立即处理);
  • 2:CRIT(严重错误);
  • 3:ERR(普通错误)****;
  • 4:WARNING(警告);
  • 5:NOTICE(注意);
  • 6:INFO(信息);
  • 7:DEBUG(调试信息)。

3️⃣常用日志查看命令

  • 实时查看日志:tail -f /var/log/syslog(实时刷新新日志);
  • 搜索关键词:grep "error" /var/log/syslog(查找包含 "error" 的日志);
  • 内核日志:dmesg(查看启动信息)、dmesg -Tl err(查看错误级别日志);
  • systemd 日志:journalctl(更强大的日志管理):
    • 实时查看:journalctl -f
    • 按服务查询:journalctl -u nginx
    • 按错误级别:journalctl -p err

4️⃣用户登录日志查询

用户登录相关日志为二进制文件,需通过专用命令查看:

  • users:显示当前登录的用户名;
  • who:显示登录用户的终端、登录时间、来源 IP;
  • last:查看用户成功登录的历史记录;
  • lastb:查看登录失败的记录(如密码错误尝试)。

总结

Linux 文件系统的核心是 inode 与 block 的配合,理解它们的工作原理能帮你更好地管理文件;误删文件后,及时卸载分区并使用对应工具恢复是关键;而日志分析则是系统运维的 "火眼金睛",熟练掌握tailgrepjournalctl等命令能让你快速定位问题。

相关推荐
Layux9 分钟前
使用钉钉开源api发送钉钉工作消息
java·spring boot·钉钉
SunTecTec1 小时前
IDEA 类上方注释 签名
服务器·前端·intellij-idea
Reggie_L2 小时前
Stream流-Java
java·开发语言·windows
黑哒哒的盟友2 小时前
JMeter groovy 编译成.jar 文件
java·jmeter·jar
巴伦是只猫2 小时前
Java 高频算法
java·开发语言·算法
超浪的晨2 小时前
Java 实现 B/S 架构详解:从基础到实战,彻底掌握浏览器/服务器编程
java·开发语言·后端·学习·个人开发
Littlewith2 小时前
Java进阶3:Java集合框架、ArrayList、LinkedList、HashSet、HashMap和他们的迭代器
java·开发语言·spring boot·spring·java-ee·eclipse·tomcat
进击的码码码码N4 小时前
HttpServletRequestWrapper存储Request
java·开发语言·spring
果子⌂4 小时前
Kubernetes 服务发布进阶
linux·运维·服务器·云原生·容器·kubernetes·云计算
weixin_lynhgworld4 小时前
旧物回收小程序系统开发——开启绿色生活新篇章
java·小程序·生活