[Linux入门] Linux 文件系统与日志分析入门指南
目录
一、深入理解 Linux 文件系统
1️⃣存储的基本单位:扇区与块
2️⃣文件的 "身份证":inode(索引节点)
3️⃣文件名与 inode 的关系
4️⃣通过 inode 删除特殊文件名的文件
二、误删文件的恢复技巧
1️⃣EXT3/EXT4 文件系统(extundelete 工具)
2️⃣XFS 文件系统(xfs_undelete 与备份恢复)
三、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 号识别文件,文件名只是用户便于记忆的 "别名"。当你访问一个文件时,系统会:
- 根据文件名找到对应的 inode 号;
- 通过 inode 号获取 inode 信息;
- 依据 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 类型分区,步骤如下:
- 立即停止操作:避免新数据写入覆盖被删文件;
- 卸载分区:
umount /挂载点
(如umount /test
); - 恢复文件:
- 恢复单个文件:
extundelete /dev/sdb1 --restore-file 文件名
; - 恢复所有文件:
extundelete /dev/sdb1 --restore-all
;
- 恢复单个文件:
- 查看结果:恢复的文件会存放在当前目录的
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 的配合,理解它们的工作原理能帮你更好地管理文件;误删文件后,及时卸载分区并使用对应工具恢复是关键;而日志分析则是系统运维的 "火眼金睛",熟练掌握tail
、grep
、journalctl
等命令能让你快速定位问题。