Linux-----Linux文件系统解读

📅 2026/8/12 19:49:20
Linux-----Linux文件系统解读
df -h只能查看磁盘 block 空间df -i专门查看 inode 资源使用率inode 存属性block 存内容superblock 管整个分区。一、磁盘满故障排查场景一磁盘块耗尽——大文件占用磁盘空间现象创建占用空间的大备份文件业务写入报错No space left on device执行df -h可见/分区磁盘占用接近100%。先用df -h命令查看服务器磁盘空间使用率再用find / -type f -size 100M找到无用大文件清理释放空间⚠️如果文件还被程序占用不要直接 rm使用 文件路径清空。场景二磁盘还有剩余容量inode 耗尽现象磁盘还有剩余容量新建文件提示 no space left on device原因磁盘存储空间充足但是inode 耗尽。每一个小文件占用 1 个 inode海量小文件把 inode 用光。先用df -i查看 inode 使用情况查找所有空文件find / -type f -size 0 -delete清理无用大量小文件释放 inode长期优化选用 XFS 文件系统场景三rm删除日志磁盘空间不释放进程持有已删除文件句柄现象ls /var/log/app.log文件已经不存在df -h磁盘占用居高不下空间没有释放后台进程仍然不断写入磁盘持续上涨。先用lsof | grep deleted找到已删除但占用空间的文件不要再次 rm 文件直接清空 /文件路径二、inode存储元数据大小、权限、属主等信息不会保存文件名ext4默认大小256字节分区时创建创建后无法修改每个文件占用 1 个 inodeinode 数量有限海量小文件会耗尽 inode硬链接共用同一个 inode三、block数据块磁盘划分成一个个 block文件数据就存在 block 里一个 block 只能属于一个文件若文件太大则一个文件会占用多个block文件读取效率会降低。 若文件很小而block又大则block剩下的空间将会被浪费磁盘利用率会降低。df -h 查看的就是 block 占用情况四、superblock超级块记录整个分区整体信息inode 总数、block 总数、已使用数量、空闲数量。 一旦超级块损坏分区无法正常挂载访问数据。ext4 会保存多份超级块备份防止损坏。stat 命令查看文件详细信息touch /tmp/file stat /tmp/file - Atime打开查看文件就更新 - Mtime修改文件里面内容才更新 - Ctime改权限、改名、创建硬链接、修改内容都会更新五、文件读取流程首先系统找到这个文件名对应的inode号码其次通过inode号码获取inode信息最后根据inode信息找到文件数据所在的block读出数据六、软链接 硬链接1、基础命令# 硬链接ln 源文件 硬链接名# 软链接ln -s 源文件 软链接名2、硬链接保存文件备份源文件和硬链接是同一个inode删除源文件链接仍然可以使用修改任意一个硬链接文件内容所有同名 inode 文件同步变化link count:每新建一个硬 链接计数 1删除一个文件名计数 - 1计数为 0 时数据才真正被释放。❌ 误区硬链接是复制文件 ✅ 正解不复制数据只是多一个入口文件名不额外占用磁盘空间不计数据块仅占用目录项3、软链接独立小文件里面存放源文件路径拥有自己独立 inode内容只是一串路径字符串类似于快捷方式删除源文件链接不可以使用硬链接绑定 inode不能跨分区软链接只记路径支持跨分区硬链接删源文件没事软链接删源文件直接报废七、RAID磁盘阵列常见基础类型RAID0、RAID1、RAID5、RAID6、RAID10、RAID011、RAID0只求速度毫无备份原理数据拆分分散存到多块硬盘优点读写速度最快磁盘空间 100% 全部利用缺点没有任何备份坏任意一块盘所有数据全部丢失2、RAID1纯备份原理两块硬盘存一模一样的数据互为备份优点安全性高坏一块盘数据还在缺点空间只能用一半成本高3、RAID5原理至少 3 块盘数据 校验信息分散存放优点有数据冗余空间利用率比 RAID1 高缺点最多只能坏 1 块盘重建硬盘时风险极高重建期间再坏一块盘数据全部丢失大量随机写入性能一般4、RAID6原理至少 4 块盘保存两份独立校验信息优点最多允许同时坏 2 块硬盘比 RAID5 更安全缺点校验计算开销大读写速度偏弱空间损耗比 RAID5 多适合大容量硬盘、对数据安全要求较高的存储5、RAID10原理先做镜像再做条带。至少 4 块硬盘优点速度快、容错能力强只要不是同一组镜像两块盘同时损坏数据安全缺点空间只能使用 50%一半硬盘用来备份适合数据库、业务服务器兼顾性能与数据安全6、RAID01原理先条带、再镜像。至少 4 块硬盘优点读写速度快缺点容错很差如果一组条带内坏一块盘整组失效更容易全盘故障