Linux 文件系统详解:inode、权限与磁盘管理
Linux 的文件系统设计是其强大稳定性的基础。深入理解 inode、文件权限、磁盘管理,能帮助运维人员高效排查”磁盘满了但 df 看不出来”等令人头疼的故障。
一、文件系统基础概念
inode:存储文件元数据(权限、所有者、时间戳、数据块指针)的数据结构,每个文件有唯一 inode 号。文件名只是 inode 的指针。
dentry:目录项,维护文件名到 inode 的映射关系。
数据块:实际存储文件内容的磁盘区域。
重要认知:Linux 中删除文件 = 减少 inode 的硬链接数。当链接数为 0 且无进程打开时,文件才真正被删除。这就是为什么”删除了大文件但磁盘没释放”——有进程还在使用该文件。
二、磁盘使用排查
df -h # 查看磁盘空间使用 df -i # 查看 inode 使用(inode 满也会导致无法创建文件!) du -sh /* # 查看根目录各子目录大小 du -sh /var/* | sort -rh | head -20 # 找出最大的目录 lsof | grep deleted # 找出被进程占用但已删除的文件
三、文件权限系统
Linux 文件权限用9位表示:rwxrwxrwx(所有者/所属组/其他人)
chmod 755 file # 所有者可读写执行,组和其他只读执行 chmod +x script.sh # 添加执行权限 chown user:group file # 修改所有者和所属组 chown -R www-data:www-data /var/www # 递归修改目录权限 # 特殊权限 chmod u+s /usr/bin/passwd # SUID:以文件所有者身份执行 chmod g+s /shared/ # SGID:新建文件继承目录所属组 chmod +t /tmp/ # Sticky Bit:只有文件所有者才能删除
四、硬链接与软链接
# 硬链接:同一 inode 的多个文件名,删除其中一个不影响数据 ln /original/file /link/target # 软链接(符号链接):类似 Windows 快捷方式,指向原文件路径 ln -s /original/path /symlink/path ls -la # 查看链接关系
软链接可以跨文件系统,可以指向目录;硬链接不能跨文件系统,不能指向目录。
五、常用文件系统类型
- ext4:Linux 最通用的文件系统,稳定可靠,适合大多数场景
- XFS:高性能,适合大文件和高并发IO,CentOS/RHEL 默认
- Btrfs:支持快照、RAID、压缩,适合需要高级功能的场景
- tmpfs:内存文件系统,/tmp 通常使用,重启后消失
- NFS/CIFS:网络文件系统,用于共享存储
六、LVM 逻辑卷管理
# 不停机扩容根分区(LVM 环境) pvcreate /dev/sdb # 初始化物理卷 vgextend vg0 /dev/sdb # 加入卷组 lvextend -l +100%FREE /dev/vg0/root # 扩展逻辑卷 resize2fs /dev/vg0/root # 扩展文件系统(ext4) xfs_growfs / # 扩展文件系统(XFS)
七、磁盘性能测试
dd if=/dev/zero of=/tmp/test bs=1G count=1 oflag=dsync # 写性能测试 fio --name=test --rw=randread --bs=4k --size=1G # 随机读测试 iostat -x 1 # 实时磁盘IO统计
总结
理解 inode 机制能帮你解决”磁盘满了删不了文件”等奇怪问题;掌握权限系统是安全加固的基础;LVM 技术让磁盘扩容变得灵活。这些都是 Linux 运维必备的基础知识。