四、文件系统(线上磁盘、日志、存储相关)
⭐⭐⭐⭐⭐ Linux、Java 后端、运维、校招面试高频章节
本章重点:
- 文件与目录
- inode(重点)
- 磁盘块分配
- 空闲磁盘管理
- 位示图(Bitmap)
- 硬链接、软链接
- Linux 文件权限(rwx)
一、什么是文件系统(File System)
文件系统(File System):
操作系统用于管理磁盘上文件和目录的一套组织方式。
简单理解:
没有文件系统,磁盘就只是一堆数据。
例如:
硬盘 ↓↓↓ 照片 视频 Java代码 数据库 日志文件
都是文件系统管理的。
常见文件系统:
Linux:
- ext4(最常用)
- XFS
- Btrfs
Windows:
- FAT32
- NTFS
- exFAT
二、文件(File)
什么是文件?
文件:
存储数据的基本单位。
例如:
hello.txt demo.java movie.mp4 mysql.log
都是文件。
文件包含:
- 文件名
- 文件大小
- 创建时间
- 修改时间
- 权限
- 数据内容
文件组成
逻辑上:
文件 ├── 文件名├── 元数据└── 数据内容
元数据:
就是:
文件的信息。
例如:
权限 大小 创建时间 inode编号
三、目录(Directory)
目录:
就是:
存放文件和子目录的特殊文件。
例如:
/home ├── user │ ├── hello.txt │ ├── java │ └── photo.jpg
目录:
实际上保存的是:
文件名 ↓ inode编号
而不是:
文件内容。
Linux目录结构
/ ├── bin├── boot├── dev├── etc├── home├── lib├── tmp├── usr└── var
常见目录:
| 目录 | 作用 |
|---|---|
| / | 根目录 |
| /home | 用户目录 |
| /etc | 配置文件 |
| /var | 日志文件 |
| /tmp | 临时文件 |
| /usr | 软件安装目录 |
| /bin | 常用命令 |
例如:
日志:
/var/log/
Java:
/usr/local/java
四、inode(★★★★★)
inode:
是 Linux 面试最常考知识点。
什么是 inode?
inode(Index Node):
文件的身份证。
Linux:
每个文件:
都有唯一 inode。
里面保存:
文件大小 权限 创建时间 修改时间 磁盘位置 拥有者 链接数
注意:
inode 不保存文件名。
文件名在哪里?
例如:
hello.txt
目录中:
保存:
hello.txt ↓ inode=1256
inode:
再找到:
真正的数据。
即:
文件名 ↓ inode ↓ 数据块
查看 inode
Linux:
bashls -i
输出:
1256 hello.txt
查看详细信息:
bashstat hello.txt
例如:
Inode:1256 Size:2048 Links:1
为什么这样设计?
优点:
文件改名:
hello.txt ↓ test.txt
inode:
不会变化。
数据:
不用移动。
效率很高。
五、磁盘块(Block)
磁盘:
不会按字节读。
而是:
按块(Block)。
例如:
4KB
一块。
即使:
文件:
10B
也至少占:
1 Block
为什么?
原因:
磁盘:
机械运动慢。
一次读:
一块。
效率更高。
六、磁盘块分配方式(★★★★★)
操作系统:
如何把文件:
放到磁盘?
主要三种方式。
① 连续分配(Contiguous Allocation)
例如:
Block 1 2 3 4 5
文件:
连续存放。
优点:
读取最快。
缺点:
容易产生磁盘碎片。
扩容困难。
② 链式分配(Linked Allocation)
每个块:
保存:
下一块地址。
例如:
1 ↓ 5 ↓ 18 ↓ 40
优点:
没有连续要求。
缺点:
随机访问慢。
③ 索引分配(Indexed Allocation)
Linux:
采用:
类似方式。
inode:
保存:
所有数据块地址。
例如:
inode ↓ 5 18 40 90
优点:
随机访问快。
扩展方便。
三种方式比较
| 分配方式 | 优点 | 缺点 |
|---|---|---|
| 连续分配 | 读取最快 | 碎片多 |
| 链式分配 | 空间利用率高 | 随机访问慢 |
| 索引分配 | 查询快、扩展方便 | 需要索引空间 |
七、空闲磁盘管理
问题:
删除文件后:
磁盘空间:
如何知道:
哪些还能用?
操作系统:
必须管理:
空闲块。
常见方法
- 空闲表
- 空闲链表
- 位示图(Bitmap)
Linux:
多数文件系统:
使用:
位示图。
八、位示图(Bitmap)(★★★★★)
位示图:
就是:
用二进制:
记录:
每个磁盘块:
是否被占用。
例如:
Block 0 1 2 3 4 5
对应:
Bitmap 1 1 0 0 1 0
说明:
1 ↓ 已使用
0 ↓ 空闲
例如:
需要:
一个块。
操作系统:
找到:
第一个:
0
即可。
优点
- 查询快
- 实现简单
- 占用空间少
因此:
现代文件系统:
广泛使用。
九、硬链接(Hard Link)(★★★★★)
Linux:
一个文件:
可以有多个名字。
例如:
hello.txt ↓ inode100
再创建:
test.txt ↓ inode100
两个:
指向:
同一个 inode。
这就是:
硬链接。
创建硬链接
bashln hello.txt test.txt
查看:
bashls -li
会发现:
inode:
相同。
特点
- inode 相同
- 删除一个文件,不影响另一个
- 数据只有一份
- 不能跨分区
- 一般不能链接目录
十、软链接(Symbolic Link)(★★★★★)
软链接:
就是:
快捷方式。
例如:
hello.txt
创建:
hello_link
实际上:
里面保存:
hello.txt路径
而不是:
inode。
创建软链接
bashln -s hello.txt hello_link
查看:
bashls -l
输出:
hello_link -> hello.txt
特点
- 类似 Windows 快捷方式
- 可以跨分区
- 可以链接目录
- 原文件删除后,链接失效
十一、硬链接和软链接区别(★★★★★)
| 项目 | 硬链接 | 软链接 |
|---|---|---|
| inode | 相同 | 不同 |
| 数据 | 同一份 | 保存路径 |
| 删除源文件 | 不影响 | 失效 |
| 跨分区 | 不支持 | 支持 |
| 链接目录 | 一般不允许 | 可以 |
口诀:
硬链接共享 inode,软链接保存路径。
十二、Linux 文件权限(★★★★★)
Linux:
所有文件:
都有权限。
例如:
-rwxr-xr--
权限组成
-rwxr-xr--
第一位:
-
表示:
普通文件。
如果:
d
表示:
目录。
后九位:
分三组。
rwx r-x r--
分别表示:
所有者 所属组 其他用户
rwx含义
r Read 读
w Write 写
x Execute 执行
数字表示法(★★★★★)
| 权限 | 数字 |
|---|---|
| r | 4 |
| w | 2 |
| x | 1 |
例如:
rwx = 4+2+1 = 7
rw- = 6
r-- = 4
r-x = 5
常见权限
| 权限 | 数字 |
|---|---|
| rwxr-xr-x | 755 |
| rw-r–r– | 644 |
| rw------- | 600 |
| rwxrwxrwx | 777 |
例如:
Java项目:
bashchmod 755 run.sh
日志:
bashchmod 644 app.log
十三、修改权限
修改:
bashchmod 755 file
修改拥有者:
bashchown root file
查看:
bashls -l
例如:
-rwxr-xr-x
十四、本章知识关系图(★★★★★)
文件 ↓ 目录 ↓ inode ↓ 数据块(Block) ↓ 磁盘
删除文件:
目录删除 ↓ inode链接数减少 ↓ 链接数=0 ↓ 释放磁盘块
空闲块:
Bitmap ↓ 找到0 ↓ 分配
十五、本章重点总结(必背)
文件组成
文件名 ↓ inode ↓ 数据块
inode
保存:
- 文件大小
- 权限
- 时间
- 数据块地址
- 链接数
不保存:
文件名。
磁盘块分配
| 方式 | 特点 |
|---|---|
| 连续分配 | 快,但易碎片 |
| 链式分配 | 利用率高,随机访问慢 |
| 索引分配 | Linux 常用思想,效率高 |
位示图
1 ↓ 已占用
0 ↓ 空闲
链接
| 类型 | 特点 |
|---|---|
| 硬链接 | 共用 inode |
| 软链接 | 保存路径 |
Linux权限
r=4 w=2 x=1
常见:
755 644 600 777
面试/考试高频问题
Q1:什么是 inode?它保存哪些信息?
答: inode(索引节点)是 Linux 文件系统中用于描述文件元数据的数据结构,保存文件大小、权限、创建时间、修改时间、数据块地址、拥有者、链接数等信息,但不保存文件名。目录负责维护"文件名 → inode"的映射关系。
Q2:为什么 Linux 修改文件名很快?
答: 因为修改文件名只需要更新目录中的文件名映射,不需要修改 inode 和数据块,因此无需移动文件内容,效率很高。
Q3:硬链接和软链接有什么区别?
答: 硬链接共享同一个 inode,删除原文件后仍可正常访问数据;软链接本质上是保存目标文件路径的特殊文件,类似 Windows 快捷方式,删除原文件后软链接将失效。
Q4:Linux 文件权限 755 和 644 分别表示什么?
答:
- 755(rwxr-xr-x):所有者可读、写、执行;组用户和其他用户可读、执行,常用于可执行程序。
- 644(rw-r–r–):所有者可读、写;组用户和其他用户只能读,常用于普通文本文件和日志文件。
Q5:位示图(Bitmap)有什么作用?
答: 位示图使用二进制位记录每个磁盘块是否已被占用,1 表示已使用,0 表示空闲。操作系统可以快速找到可分配的空闲磁盘块,是现代文件系统常用的空闲空间管理方式。

