1. 什么是 inode?文件是如何存储的?

🎯 面试要点

  • 经典排障:`No space left on device` 但 df -h 还有空间 → 查 df -i(inode 耗尽)
  • ls -i 看 inode 号;stat 看文件完整信息

2. 硬链接和软链接的区别?

命令对比
ln a.txt b.txt        # 硬链接:ls -i 看 inode 相同
ln -s a.txt c.txt     # 软链接:c.txt 是独立文件指向 a.txt

rm a.txt              # 硬链接 b.txt 仍可读(count 减 1)
# 软链接 c.txt 变成红链(悬空)
# 应用:Linux 下 Java 版本管理(java -> jdk17)

🎯 面试要点

  • 判断:ls -l 首字符 l 是软链接;stat 看 Links 字段
  • 软链接的路径陷阱:相对路径以"链接所在目录"为基准

3. 磁盘 IO 与文件系统基础?

🎯 面试要点

  • fsync 语义:数据库 redo log、Kafka 消息落盘都依赖"强制刷盘"保证持久性
  • iostat 看磁盘:%util、await、iops——磁盘饱和排查

🎤 常见面试追问

  1. inode 是什么?文件满了但 df -h 有空间?——inode 是文件的"身份证"(存元数据和数据块指针)。小文件太多会把 inode 表耗尽(df -i 100%)——"No space left" 但 df -h 正常就是它。
  2. 硬链接和软链接的区别?——硬链接:多个名字指向同一 inode(count+1,删一个不影响,不能跨文件系统/目录);软链接:存目标路径的"快捷方式"(目标删了就失效,可跨文件系统)。
  3. 为什么顺序写比随机写快这么多?——机械盘寻道/旋转延迟是主成本(随机要不停定位),顺序写一次定位连续写。SSD 差距缩小但仍存在。数据库/日志都追求顺序写。
  4. 写文件为什么还要 fsync?——write 先进 PageCache(内存)立即返回,后台异步刷盘——断电可能丢。fsync 强制刷盘(数据库 redo log、Kafka 落盘靠它)。
  5. 文件系统类型怎么选?——ext4 通用默认、xfs 大文件高并发(RHEL 默认)、btrfs 快照特性。云盘场景厂商已优化。

📖 名词解释(本页术语)

术语 大白话解释
inode文件的"身份证":大小/权限/时间戳/数据块位置。文件名只是 inode 的"标签"。inode 耗尽 = 磁盘满但没空间。
目录项(dentry)"文件名 → inode 号"的映射记录,目录就是一张映射表。
硬链接 / 软链接硬链接 = 同一 inode 的别名;软链接 = 存路径的快捷方式。
PageCache(页缓存)内核把磁盘页缓存到内存:读写先走缓存(快),后台异步刷盘。free 里的 buff/cache 就是它。
fsync强制把缓存刷到磁盘的系统调用——持久性保障(防断电丢数据)。
顺序 IO / 随机 IO顺序 IO 连续读写(快);随机 IO 频繁定位(慢)。性能优化追求顺序化。
ext4 / xfsLinux 主流文件系统:ext4 通用默认;xfs 大文件/高并发场景更优。
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。