Linux 文件系统核心概念
1. Linux 文件系统核心概念
1.1 什么是文件系统?
文件系统是操作系统用于 组织、存储和管理文件及目录 的机制,负责:
-
文件的命名、存储位置和访问方式。
-
数据的持久化存储和检索。
-
权限控制和元数据(如创建时间、所有者等)管理。
1.2 Linux 文件系统特点
-
一切皆文件:设备、管道、目录等均以文件形式抽象。
-
树形结构:从根目录
/
开始,分层组织文件和目录。 -
区分大小写:
File.txt
和file.txt
是两个不同的文件。 -
挂载机制:通过挂载(
mount
)将不同设备或分区接入文件树。
2. Linux 目录结构(FHS 标准)
Linux 遵循 Filesystem Hierarchy Standard (FHS),核心目录及其作用如下:
目录 | 用途 |
---|---|
/ | 根目录,所有目录和文件的起点。 |
/bin | 存放基础命令(如 ls , cp , bash ),所有用户可用。 |
/sbin | 存放系统管理命令(如 fdisk , iptables ),需 root 权限。 |
/etc | 系统配置文件(如网络配置、用户账户)。 |
/home | 普通用户的家目录,每个用户拥有独立子目录(如 /home/alice )。 |
/root | root 用户的家目录。 |
/usr | 用户程序资源(如软件安装目录 /usr/bin , 库文件 /usr/lib )。 |
/var | 可变数据(如日志 /var/log , 邮件 /var/mail )。 |
/tmp | 临时文件,系统重启后可能清除。 |
/dev | 设备文件(如硬盘 /dev/sda , 终端 /dev/tty )。 |
/proc | 虚拟文件系统,提供进程和内核信息的接口(如 /proc/cpuinfo )。 |
/mnt | 临时挂载点(如手动挂载U盘或网络存储)。 |
/boot | 启动文件(如内核 vmlinuz , 引导加载程序 grub )。 |
/lib | 系统库文件(如动态链接库 .so 文件)。 |
3. Linux 文件类型
Linux 文件类型通过 ls -l
的第一个字符标识:
类型 | 标识符 | 示例 | 说明 |
---|---|---|---|
普通文件 | - | file.txt | 文本、二进制、压缩包等。 |
目录 | d | /home | 包含其他文件或目录。 |
符号链接 | l | link -> /path/to/file | 指向另一个文件的快捷方式。 |
块设备 | b | /dev/sda | 硬盘等块存储设备(按块读写)。 |
字符设备 | c | /dev/tty | 终端等字符设备(按字节读写)。 |
管道 | p | named_pipe | 进程间通信(FIFO)。 |
套接字 | s | /var/run/docker.sock | 网络通信接口文件。 |
4. 文件权限与所有权
4.1 权限模型
-
用户类别:所有者(
u
)、所属组(g
)、其他用户(o
)。 -
权限类型:读(
r
)、写(w
)、执行(x
)。
通过 ls -l
查看权限:
-rwxr-xr-- 1 alice developers 4096 Jun 10 10:00 script.sh
-
-rwxr-xr--
:所有者可读/写/执行,组可读/执行,其他用户仅可读。 -
alice
:文件所有者。 -
developers
:所属组。
4.2 修改权限
# 数字模式(755 = rwxr-xr-x) chmod 755 script.sh# 符号模式(给所有者添加执行权限) chmod u+x script.sh# 修改所有者 chown alice:developers script.sh
5. 文件系统存储机制
5.1 Inode 和 Block
-
Inode:存储文件的元数据(权限、大小、位置等),唯一标识一个文件。
-
Block:实际存储文件数据的磁盘块(通常 4KB)。
通过 stat
查看 Inode 信息:
stat file.txt
5.2 硬链接 vs 软链接
特性 | 硬链接 | 软链接(符号链接) |
---|---|---|
Inode | 与原文件相同 | 新的 Inode |
跨文件系统 | 不支持 | 支持 |
原文件删除后 | 仍可访问 | 失效(悬空链接) |
创建命令 | ln file.txt hardlink | ln -s file.txt softlink |
6. 常用文件系统操作命令
6.1 查看磁盘和文件系统
# 查看磁盘空间 df -h# 查看目录占用空间 du -sh /path/to/dir# 列出挂载的文件系统 mount
6.2 文件查找与处理
# 按文件名查找 find / -name "*.log"# 按内容查找 grep "error" /var/log/syslog# 文件压缩与解压 tar -czvf archive.tar.gz /path/to/dir # 压缩 tar -xzvf archive.tar.gz # 解压
6.3 文件系统修复
# 检查并修复文件系统(需卸载) fsck /dev/sda1
7. 主流文件系统类型
文件系统 | 特点 |
---|---|
ext4 | Linux 默认,日志式,支持大文件和分区。 |
XFS | 高性能,适合大文件(如数据库、视频)。 |
Btrfs | 支持写时复制(CoW)、快照、压缩等高级特性。 |
ZFS | 集成卷管理、数据校验、快照(需额外安装)。 |
NTFS/FAT | Windows 兼容(通过 ntfs-3g 驱动挂载)。 |
8. 关键场景示例
8.1 挂载新磁盘
# 查看磁盘列表 lsblk# 格式化磁盘为 ext4 mkfs.ext4 /dev/sdb1# 创建挂载点并挂载 mkdir /mnt/data mount /dev/sdb1 /mnt/data# 开机自动挂载(编辑 /etc/fstab) echo "/dev/sdb1 /mnt/data ext4 defaults 0 0" >> /etc/fstab
8.2 解决 "No space left on device"
-
可能原因:Inode 耗尽(即使磁盘有空间)。
-
检查命令:
df -i # 查看 Inode 使用情况 df -h # 查看磁盘空间
掌握 Linux 文件系统是系统管理的核心基础,建议结合实际操作(如挂载磁盘、修改权限)加深理解。遇到具体问题时,可进一步查阅相关命令的手册(man command
)。