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、RAID6、RAID10、RAID01
1、RAID0,只求速度,毫无备份
- 原理:数据拆分分散存到多块硬盘
- 优点:读写速度最快,磁盘空间 100% 全部利用
- 缺点:没有任何备份,坏任意一块盘,所有数据全部丢失
2、RAID1,纯备份
- 原理:两块硬盘存一模一样的数据,互为备份
- 优点:安全性高,坏一块盘数据还在
- 缺点:空间只能用一半,成本高
3、RAID5
- 原理:至少 3 块盘,数据 + 校验信息分散存放
- 优点:有数据冗余,空间利用率比 RAID1 高
- 缺点:最多只能坏 1 块盘;重建硬盘时风险极高,重建期间再坏一块盘,数据全部丢失;大量随机写入性能一般
4、RAID6
- 原理:至少 4 块盘,保存两份独立校验信息
- 优点:最多允许同时坏 2 块硬盘,比 RAID5 更安全
- 缺点:校验计算开销大,读写速度偏弱;空间损耗比 RAID5 多
- 适合:大容量硬盘、对数据安全要求较高的存储
5、RAID10
- 原理:先做镜像,再做条带。至少 4 块硬盘
- 优点:速度快、容错能力强;只要不是同一组镜像两块盘同时损坏,数据安全
- 缺点:空间只能使用 50%,一半硬盘用来备份
- 适合:数据库、业务服务器,兼顾性能与数据安全
6、RAID01
- 原理:先条带、再镜像。至少 4 块硬盘
- 优点:读写速度快
- 缺点:容错很差,如果一组条带内坏一块盘,整组失效;更容易全盘故障