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 个 inode,inode 数量有限,海量小文件会耗尽 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、RAID6RAID10、RAID01

1、RAID0,只求速度,毫无备份

  • 原理:数据拆分分散存到多块硬盘
  • 优点:读写速度最快,磁盘空间 100% 全部利用
  • 缺点:没有任何备份,坏任意一块盘,所有数据全部丢失

2、RAID1,纯备份

  • 原理:两块硬盘存一模一样的数据,互为备份
  • 优点:安全性高,坏一块盘数据还在
  • 缺点:空间只能用一半,成本高

3、RAID5

  • 原理:至少 3 块盘,数据 + 校验信息分散存放
  • 优点:有数据冗余,空间利用率比 RAID1 高
  • 缺点:最多只能坏 1 块盘;重建硬盘时风险极高,重建期间再坏一块盘,数据全部丢失;大量随机写入性能一般

4、RAID6

  • 原理:至少 4 块盘,保存两份独立校验信息
  • 优点:最多允许同时坏 2 块硬盘,比 RAID5 更安全
  • 缺点:校验计算开销大,读写速度偏弱;空间损耗比 RAID5 多
  • 适合:大容量硬盘、对数据安全要求较高的存储

5、RAID10

  • 原理:先做镜像,再做条带。至少 4 块硬盘
  • 优点:速度快、容错能力强;只要不是同一组镜像两块盘同时损坏,数据安全
  • 缺点:空间只能使用 50%,一半硬盘用来备份
  • 适合:数据库、业务服务器,兼顾性能与数据安全

6、RAID01

  • 原理:先条带、再镜像。至少 4 块硬盘
  • 优点:读写速度快
  • 缺点:容错很差,如果一组条带内坏一块盘,整组失效;更容易全盘故障