文件系统(File System)是计算机操作系统中用于管理和组织存储设备(如硬盘、SSD、U盘等)上文件和目录结构的核心软件模块.
- 功能
1)数据管理,将存储设备划分为逻辑单元(如文件、目录),替代直接操作物理扇区(如硬盘的0/1磁道)。
2)命名与检索,提供唯一标识符(如文件名+扩展名)和路径系统(如/home/user/file.txt),方便快速定位文件
3)权限管理,控制用户/程序对文件的读、写、执行权限,支持多用户隔离(如不同用户无法直接访问彼此的/home目录)
4)元数据存储,记录文件的大小、创建时间、修改时间、所有者等信息,供系统和用户查询
5)空间分配与回收,管理存储空间的分配策略(如连续分配、链表分配、索引分配),避免碎片化。支持文件的删除与恢复(如回收站机制或日志记录)
2.核心技术
1)日志记录(Journaling),在修改文件前先记录操作日志(如ext4、NTFS),崩溃后可通过日志恢复数据一致性。例:突然断电导致文件损坏时,系统可回滚到日志中的最后正确状态
2)文件分配表(FAT/MFT),
FAT:文件分配表记录每个簇的使用状态(空闲/已占用/坏簇)
MFT(NTFS):主文件表存储所有文件的元数据,类似数据库索引。
3)索引节点(inode,Linux),每个文件对应一个inode,存储文件的元数据和磁盘块指针(直接/间接索引)。
4)碎片整理,长期读写会导致文件碎片化(分散存储),需定期整理(如Windows的defrag命令)以提升性能
3.常见的文件格式
fat16、fat32、ntfs、ext2、ext3、jffs2、yaffs等。
1)FAT16:较早的文件系统,支持较小的分区和文件大小,最多支持 2 GB 的分区和 2 GB 的文件
2)FAT32 兼容性强,最大支持 2 TB 的分区和 4 GB 的单个文件。广泛用于 U 盘、存储卡等设备。适合用于储存小文件,如文档、图片等
2) NTFS 支持超大文件,但是兼容性差。适合windows和存储大文件。
3) exFat 是FAT32的升级版,支持最大 16 TB 的单个文件. 适合U盘
4)ext2(Second Extended File System)主要用于 Linux 系统,较早的 Linux 文件系统。不支持日志记录,恢复能力较差
5)ext3(Third Extended File System)增加了日志功能,提高了数据的可靠性和恢复能力
6)ext4(Fourth Extended File System)Linux 系统的主流文件系统,支持更大的文件和分区,改进了性能和可靠性
7)XFS高性能的日志文件系统,适用于高负载、高并发的环境,支持大文件和大分区
8)Btrfs(B-tree File System)现代的 Linux 文件系统,支持快照、子卷、动态卷管理等高级特性
9)YAFFS,Yet Another Flash File System专为 NAND Flash 存储设备设计的嵌入式文件系统,YAFFS的元数据开销更低,更适合资源受限环境
10)YAFFS2(Yet Another Flash File System 2)是专为NAND Flash存储设备设计的嵌入式文件系统,针对大容量存储、高可靠性及资源受限环境进行了深度优化