Linux 文件系统详解:inode、权限与磁盘管理

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 运维必备的基础知识。

发表评论