四、文件系统

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

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

⭐⭐⭐⭐⭐ Linux、Java 后端、运维、校招面试高频章节

本章重点:

  • 文件与目录
  • inode(重点)
  • 磁盘块分配
  • 空闲磁盘管理
  • 位示图(Bitmap)
  • 硬链接、软链接
  • Linux 文件权限(rwx)

一、什么是文件系统(File System)

文件系统(File System):

操作系统用于管理磁盘上文件和目录的一套组织方式。

简单理解:

没有文件系统,磁盘就只是一堆数据。

例如:

硬盘↓↓↓照片视频Java代码数据库日志文件

都是文件系统管理的。

常见文件系统:

Linux:

  • ext4(最常用)
  • XFS
  • Btrfs

Windows:

  • FAT32
  • NTFS
  • exFAT

二、文件(File)

什么是文件?

文件:

存储数据的基本单位。

例如:

hello.txtdemo.javamovie.mp4mysql.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.txtinode=1256

inode:

再找到:

真正的数据。

即:

文件名inode数据块

查看 inode

Linux:

bash
ls -i

输出:

1256 hello.txt

查看详细信息:

bash
stat hello.txt

例如:

Inode:1256Size:2048Links:1

为什么这样设计?

优点:

文件改名:

hello.txttest.txt

inode:

不会变化。

数据:

不用移动。

效率很高。


五、磁盘块(Block)

磁盘:

不会按字节读。

而是:

按块(Block)。

例如:

4KB

一块。

即使:

文件:

10B

也至少占:

1 Block

为什么?

原因:

磁盘:

机械运动慢。

一次读:

一块。

效率更高。


六、磁盘块分配方式(★★★★★)

操作系统:

如何把文件:

放到磁盘?

主要三种方式。


① 连续分配(Contiguous Allocation)

例如:

Block12345

文件:

连续存放。

优点:

读取最快。

缺点:

容易产生磁盘碎片。

扩容困难。


② 链式分配(Linked Allocation)

每个块:

保存:

下一块地址。

例如:

151840

优点:

没有连续要求。

缺点:

随机访问慢。


③ 索引分配(Indexed Allocation)

Linux:

采用:

类似方式。

inode:

保存:

所有数据块地址。

例如:

inode5184090

优点:

随机访问快。

扩展方便。


三种方式比较

分配方式 优点 缺点
连续分配 读取最快 碎片多
链式分配 空间利用率高 随机访问慢
索引分配 查询快、扩展方便 需要索引空间

七、空闲磁盘管理

问题:

删除文件后:

磁盘空间:

如何知道:

哪些还能用?

操作系统:

必须管理:

空闲块。


常见方法

  • 空闲表
  • 空闲链表
  • 位示图(Bitmap)

Linux:

多数文件系统:

使用:

位示图。


八、位示图(Bitmap)(★★★★★)

位示图:

就是:

用二进制:

记录:

每个磁盘块:

是否被占用。

例如:

Block012345

对应:

Bitmap110010

说明:

1已使用
0空闲

例如:

需要:

一个块。

操作系统:

找到:

第一个:

0

即可。


优点

  • 查询快
  • 实现简单
  • 占用空间少

因此:

现代文件系统:

广泛使用。


九、硬链接(Hard Link)(★★★★★)

Linux:

一个文件:

可以有多个名字。

例如:

hello.txtinode100

再创建:

test.txtinode100

两个:

指向:

同一个 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

表示:

目录。

后九位:

分三组。

rwxr-xr--

分别表示:

所有者所属组其他用户

rwx含义

rRead
wWrite
xExecute执行

数字表示法(★★★★★)

权限 数字
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=4w=2x=1

常见:

755644600777

面试/考试高频问题

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
技术博客作者
2474 字 · 0 评论
2026-07-18

评论 (0)

暂无评论,来写第一条吧

登录后发表评论