一、文件系统基础
1. 定义与作用
- 文件系统(file system,简称fs):Linux内核中用于管理磁盘文件的软件系统,核心功能包括文件的存储、读取、查找、删除等,是操作系统与磁盘硬件之间的中间层。
- 与内核(kernel)的关系:内核是操作系统的核心软件,负责管理CPU、内存、进程、文件系统(关联磁盘)及其他硬件,文件系统的管理是内核的重要功能之一。
- 示例路径 :XFS文件系统内核模块路径为
/usr/lib/modules/5.15.0-136-generic/kernel/fs/xfs
。
二、磁盘分区与引导
1. 分区查看命令
fdisk -l
:列出磁盘分区详细信息(包括分区表类型、大小等)。lsblk
:以树形结构展示块设备(磁盘及分区)的关系。
2. 分区表类型
类型 | 特点 |
---|---|
dos(MBR) | - 基于主引导记录(MBR),仅支持2TB以下磁盘 - 分区表占64字节,最多4个主分区 |
GPT(GUID) | - 支持2TB以上磁盘(最大支持18EB) - 最多128个主分区(不同系统可能有差异) - 具备分区表备份和校验功能 |
3. dos分区表中的分区类型
- 主分区:可安装系统或存放数据,编号1-4,最多4个。
- 扩展分区:突破4个主分区限制,最多1个,不直接存放数据,占用1个主分区编号。
- 逻辑分区:基于扩展分区创建,数量不限,编号从5开始。
4. MBR(主引导记录)
- 位置:硬盘的0柱面、0磁头、1扇区(主引导扇区)。
- 结构(共512字节) :
- 主引导程序(如GRUB):446字节,负责引导操作系统。
- 分区表(DPT):64字节,记录分区信息(每个分区项16字节,共4项)。
- 结束标记:2字节(固定为
0x55AA
)。
三、挂载配置文件(fstab)
1. 参数格式解析
示例:/dev/disk/by-uuid/... /boot ext4 defaults 0 1
- 字段含义:设备标识(UUID)、挂载点、文件系统类型、挂载选项、dump备份标识、fsck检查优先级。
2. 关键参数说明
-
defaults(默认挂载选项):
rw
:读写模式挂载。suid
:允许文件设置SUID/SGID特殊权限。dev
:识别设备文件(如/dev/sda
)。exec
:允许执行分区内的可执行文件。auto
:开机自动挂载。nouser
:仅root用户可执行mount/umount
。async
:异步I/O(数据先入缓存,再批量写入磁盘,提升性能)。
-
其他常用选项:
ro
:只读模式挂载。noexec
:禁止执行分区内的可执行文件(如/tmp
分区常用)。sync
:同步I/O(数据直接写入磁盘,牺牲性能换安全性)。
-
dump备份标识(第一个数字):
0
:不使用dump工具备份(默认)。1
:需要定期备份(通常仅根分区/
可能设置)。
-
fsck检查优先级(第二个数字):
0
:不检查。1
:最高优先级(根分区/
通常设为1)。2
:次高优先级(其他分区通常设为2)。
四、文件系统核心组件
1. 核心概念
- 目录项(dentry):记录目录内的文件/子目录,存储"文件名→inode号"的映射关系。
- inode(索引节点):128字节(或更大),存放文件属性(权限、所有者、大小、修改时间等),每个文件对应唯一inode号。
- block(数据块):真正存储文件内容的空间,大小固定(如4KB),由inode中的指针指向。
2. 文件存取流程
文件名 → 目录项(查inode号) → inode(获取block位置) → block(读取数据)
3. 文件删除原理
- 逻辑删除:删除目录项中"文件名→inode号"的映射,inode和block的位图标记从1(使用中)改为0(空闲),数据仍存于磁盘。
- 物理删除:仅当新数据覆盖原block时,旧数据才真正消失。
- 删除大文件较慢的原因:大文件占用的block更多,需将更多block位图的1改为0。
五、链接文件(软链接vs硬链接)
1. 区别对比
特性 | 软链接(符号链接) | 硬链接 |
---|---|---|
inode号 | 有独立inode | 与源文件相同inode |
block内容 | 存储源文件的路径 | 与源文件共享block(无独立数据) |
源文件删除 | 软链接失效(显示"断链") | 硬链接仍可访问(inode引用计数-1) |
跨文件系统 | 支持 | 不支持(inode仅在同一文件系统内唯一) |
目录支持 | 支持(常用作目录快捷方式) | 不支持(防止目录循环引用) |
2. 示例
- 创建硬链接:
ln 源文件 硬链接文件
,执行ll -i
可看到源文件与硬链接的inode号相同,硬链接计数(第二列数字)增加。 - 注意:目录中的
.
(当前目录)和..
(上级目录)是特殊硬链接,分别指向自身和父目录的inode。
六、常见问题与工具
1. 磁盘空间异常
- 空间未满但无法创建文件 :可能是inode耗尽(
df -i
查看inode使用率),需清理无用小文件释放inode。 - 释放被占用的日志文件 :
直接rm -rf log
无效(程序仍持有inode引用),需用> log
清空内容(释放block)。
2. 分区工具对比
工具 | 适用场景 | 生效方式 |
---|---|---|
fdisk | 2TB以下磁盘,dos分区表 | 执行w 命令后生效 |
parted | 2TB以上磁盘,GPT分区表 | 操作立即生效(需谨慎) |
七、常见文件系统类型
类型 | 特点 |
---|---|
ext4 | 主流文件系统,支持日志功能、大文件(最大16TB),兼容性好。 |
xfs | 高性能日志文件系统,适合大文件和高吞吐量场景(如服务器),支持动态扩容。 |
btrfs | 支持快照、 RAID、动态调整大小,适合需要灵活管理的场景(实验性较强)。 |
swap | 交换分区专用,内存不足时临时存储数据,提升系统稳定性。 |
通过以上内容,可系统掌握Linux文件系统的核心原理、分区管理及常见问题处理,结合实际操作(如mount
挂载、df -h
查看空间、ls -i
查看inode等)可加深理解。