Skip to content

LV005-文件系统简介

一、文件系统

1. 什么是文件系统

文件系统(File System)是 操作系统用于管理存储设备(如硬盘、SSD、U 盘)上数据存储和访问的逻辑机制,核心功能包括:

  • 数据组织:定义文件和目录的结构,管理元数据(如文件名、大小、权限、时间戳)。
  • 存储分配:决定数据在物理存储介质上的分布方式(如块分配、碎片整理)。
  • 访问控制:通过权限机制限制用户或程序对文件的读写操作。
  • 容错与恢复:提供日志、冗余校验等机制确保数据一致性(如断电恢复)。

简单来说就是:操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统 决定着从存储设备中对文件进行 命名存储检索 的方式。

2. 为什么要文件系统

如果没有文件系统,存储设备会将大量数据简单地堆积存储,如此一来数据间便无法区分。

文件系统的命名源于过去的纸质数据管理系统。纸质系统中,我们将文档保留为纸质文件,然后将其存放在各个目录中。试想如若没有分类,存放文件的房间便到处都会堆着杂乱无章的文件。

image-20260112192211139

然而,有了文件系统之后,一切便会全然不同:

image-20260112192224484

但也不能说文件系统的功能仅限于整理数据。空间管理,元数据,数据加密,文件访问控制和数据完整性同样是文件系统所具备的功能。

3. 文件系统的分类

文件系统可按不同维度分类,以下是常见分类方式:

3.1 按存储介质分类

类型描述示例
磁盘文件系统用于传统硬盘(HDD)或固态硬盘(SSD)NTFS、Ext4、XFS、ZFS
闪存文件系统针对闪存设备(U 盘、SD 卡、SSD)优化,减少写入磨损FAT32、exFAT、F2FS、JFFS2
网络文件系统允许通过网络访问远程存储资源NFS、SMB/CIFS、GlusterFS
内存文件系统数据存储在内存中,重启后丢失,用于临时文件或加速访问tmpfs、ramfs

3.2 按设计用途分类

类型描述示例
通用文件系统适用于多种日常场景,支持标准文件操作NTFS、Ext4、APFS
日志文件系统通过日志记录操作,确保崩溃后快速恢复数据一致性Ext4、XFS、ReiserFS
分布式文件系统数据分散在多个节点,提供高可用性和扩展性HDFS、Ceph、GlusterFS
数据库文件系统专为数据库设计的存储结构,优化随机读写性能Oracle ASM、MySQL InnoDB

3.3 按操作系统分类

类型描述示例
Windows 文件系统微软生态专用,兼容性强NTFS、FAT32、exFAT、ReFS
Linux 文件系统开源系统主流选择,支持高级功能Ext4、XFS、Btrfs、ZFS
macOS 文件系统苹果生态优化,强调数据安全和快照APFS、HFS+

二、常用文件系统

1. 本地文件系统

文件系统特点应用场景
NTFSWindows 默认系统,支持大文件(> 4GB)、ACL 权限、加密、日志Windows 系统盘、大容量存储
FAT32兼容性强(跨设备),但单文件最大 4GB,无权限控制U 盘、SD 卡、旧设备兼容
exFATFAT32 升级版,支持大文件(16EB),适合闪存设备大容量移动硬盘、相机存储卡
Ext4Linux 主流系统,日志功能完善,稳定性高Linux 系统盘、服务器存储
XFS高性能,支持超大容量(8EB)和高并发,适合海量数据数据中心、视频编辑存储
Btrfs支持快照、压缩、RAID、数据校验,功能丰富但成熟度待提升需要高级功能的 Linux 环境
APFS苹果专用,优化 SSD 性能,支持加密、快照、空间共享macOS 系统盘、Time Machine

2. 网络与分布式文件系统

文件系统特点应用场景
NFS基于网络的 UNIX 协议,支持多客户端共享访问Linux/Unix 跨服务器文件共享
SMB/CIFSWindows 原生协议,跨平台共享(Windows/Linux/macOS)企业文件共享、打印机共享
GlusterFS分布式存储,横向扩展,无元数据服务器云计算、大数据存储
Ceph统一存储架构(块/文件/对象),高可用性和强一致性云平台、容器存储后端
HDFSHadoop 生态核心组件,适合流式大数据处理大数据分析(如 Hadoop 集群)

3. 特殊用途文件系统

文件系统特点应用场景
ZFS集成卷管理、快照、压缩、数据完整性校验,资源占用高企业级存储、NAS 设备
tmpfs数据存储在内存中,读写极快,重启后丢失临时文件缓存、Docker 容器
F2FS专为闪存设计,减少写入放大,延长寿命Android 手机存储、SSD 优化

三、文件系统的发展

文件系统由一套数据结构、连接电路、抽象概念和 API 构成。它们协同工作,步调一致地管理任何类型存储设备上的任何类型文件。每种操作系统会使用特定的文件系统来管理文件。

过去,Microsoft 曾在 MS-DOSWindows 9x 家族系统中使用过 FAT (FAT12,FAT16 和 FAT32)。但自 Windows NT 3.1 开始,Microsoft 研发了 新技术文件系统(NTFS)。比起 FAT32,NTFS 具有诸多多优势,如支持更大的文件,更长的文件名,数据加密,访问管理,日志记录等等。

从那时起,NTFS 就一直是 Window NT 家族(2000,XP,Vista,7、10 等)的默认文件系统。不过,NTFS 并不适用于非 Windows 环境。例如,在 Mac OS 上,我们 只能读取 NTFS 格式存储设备(如闪存)上的内容,但无法写入任何内容,除非安装具有写入支持的 NTFS 驱动程序。

2006 年,Microsoft 创建 扩展文件分配表(exFAT) 文件系统,exFAT 堪称 NTFS 的精简版。exFAT 的设计面向对象是大容量可移动设备(例如外部硬盘,USB 驱动器和存储卡)。它也是 SDXC 使用的默认文件系统。与 NTFS 不同,exFAT 在非 Windows 环境(包括 Mac OS)上也支持 读写 ,这也使其成为最佳的高容量可移动存储设备跨平台文件系统。因此基本上可以这么说,如果想同时在 Windows、Mac 和 Linux 上使用同一块可移动磁盘,就需要将其格式化为 exFAT 格式。

多年以来,Apple 也在研发利用自己的各种文件系统,这就包括 分层文件系统(HFS), HFS+ 以及后来推出的 苹果文件系统(APFS)。和 NTFS 类似,APFS 也是一个日志文件系统。自苹果在 2017 年推出 OS X High Sierra 以来,APFS 一直使用至今。

文件系统中的 扩展文件系统(ext) 家族是专门为 Linux 内核(即 Linux 操作系统的核心)创建的。ext 的第一版发布于 1991 年,但不久便在 1993 年被 第二代扩展文件系统ext2) 取代。进入 21 世纪,针对 Linux 开发的具有日志功能的 第三代扩展文件系统ext3)第四代扩展文件系统 (ext4) 也相继出现。如今,ext4 成为Linux的许多发行版本中的默认文件系统,这就包括 DebianUbuntu

参考资料:

简直不要太硬了!一文带你彻底理解文件系统 - 程序员 cxuan - 博客园

文件系统详解:概念、分类与常用系统 - LeeHang - 博客园

文件系统是什么?介绍几种计算机文件系统及其运行原理

Linux 根文件系统(rootfs 原理详解)-腾讯云开发者社区-腾讯云