四、文件系统

2026-07-18wei👁 13 阅读7 分钟阅读📝 3342 字💬 0 评论
四、文件系统

四、文件系统(线上磁盘、日志、存储相关)

⭐⭐⭐⭐⭐ 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:

bash
ls -i 

输出:

1256 hello.txt 

查看详细信息:

bash
stat 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。

这就是:

硬链接。


创建硬链接

bash
ln hello.txt test.txt 

查看:

bash
ls -li 

会发现:

inode:

相同。


特点

  • inode 相同
  • 删除一个文件,不影响另一个
  • 数据只有一份
  • 不能跨分区
  • 一般不能链接目录

十、软链接(Symbolic Link)(★★★★★)

软链接:

就是:

快捷方式。

例如:

hello.txt 

创建:

hello_link 

实际上:

里面保存:

hello.txt路径 

而不是:

inode。


创建软链接

bash
ln -s hello.txt hello_link 

查看:

bash
ls -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项目:

bash
chmod 755 run.sh 

日志:

bash
chmod 644 app.log 

十三、修改权限

修改:

bash
chmod 755 file 

修改拥有者:

bash
chown root file 

查看:

bash
ls -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 表示空闲。操作系统可以快速找到可分配的空闲磁盘块,是现代文件系统常用的空闲空间管理方式。

wei
技术博客作者
3342 字 · 0 评论
2026-07-18

评论 (0)

暂无评论,来写第一条吧

登录后发表评论

分类

友链

关于本站

用 SpringBoot + Nuxt3 搭建的个人技术博客,记录编程之路的思考与收获。

© 2026 好啵博客 · Built with ❤️ & SpringBoot + Nuxt3