市面上常见的文件系统及其数据结构和目录结构概述

1. ext4 文件系统

  • 数据结构

    • 超级块:包含整个文件系统的元信息,如块总数、空闲块数、inode总数等。
    • inode:每个文件或目录都有一个inode,包含文件的元数据,如文件大小、权限、时间戳等。
    • 块位图:记录哪些块已被使用,哪些块是空闲的。
    • inode位图:记录哪些inode已被使用,哪些是空闲的。
    • 块组:文件系统被划分为多个块组,每个块组包含一组连续的块。
    • 目录项:目录文件包含目录项,每个目录项指向一个文件或子目录的inode。
  • 目录结构示意图

    /
    ├── bin
    ├── boot
    ├── dev
    ├── etc
    ├── home
    ├── lib
    ├── media
    ├── mnt
    ├── opt
    ├── proc
    ├── root
    ├── run
    ├── sbin
    ├── srv
    ├── sys
    ├── tmp
    ├── usr
    └── var
    

2. XFS 文件系统

  • 数据结构

    • 超级块:包含文件系统的全局信息,如UUID、块大小等。
    • 分配组(AG):XFS文件系统被划分为多个分配组,每个AG管理自己的inode和数据块。
    • inode:动态分配,包含文件的元数据。
    • B+树:用于索引inode和数据块,提高查找效率。
    • 日志:记录文件系统操作的日志,用于崩溃恢复。
  • 目录结构示意图

    /
    ├── bin
    ├── boot
    ├── dev
    ├── etc
    ├── home
    ├── lib
    ├── media
    ├── mnt
    ├── opt
    ├── proc
    ├── root
    ├── run
    ├── sbin
    ├── srv
    ├── sys
    ├── tmp
    ├── usr
    └── var
    

3. NTFS 文件系统

  • 数据结构

    • 主文件表(MFT):包含文件和目录的元数据,每个文件或目录都有一个MFT记录。
    • MFT镜像:MFT的备份,用于数据恢复。
    • 日志文件:记录文件系统操作的日志,用于崩溃恢复。
    • 位图文件:记录哪些簇已被使用,哪些是空闲的。
    • 目录项:目录文件包含目录项,每个目录项指向一个文件或子目录的MFT记录。
  • 目录结构示意图

    /
    ├── $Mft
    ├── $MftMirr
    ├── $LogFile
    ├── $Volume
    ├── $AttrDef
    ├── $Root
    ├── $Bitmap
    ├── $Boot
    ├── $BadClus
    ├── $Secure
    ├── $UpCase
    ├── $Extend
    │   ├── $UsnJrnl
    │   ├── $ObjId
    │   ├── $Quota
    │   └── $Reparse
    └── 用户文件和目录
    

4. FAT32 文件系统

  • 数据结构

    • 文件分配表(FAT):记录文件数据在磁盘上的位置和顺序。
    • 根目录:包含文件和目录的目录项,每个目录项指向一个文件或子目录。
    • 数据区:存储实际的文件数据。
    • 保留区:包含引导记录和FAT副本。
  • 目录结构示意图

    /
    ├── 文件和目录
    

5. HFS+ 文件系统

  • 数据结构

    • 超级块:包含文件系统的全局信息。
    • 目录树:B+树结构,用于索引文件和目录。
    • 扩展溢出文件:当目录树的索引项超过一定数量时,溢出到这个文件。
    • 属性树:用于存储文件和目录的扩展属性。
  • 目录结构示意图

    /
    ├── .HFS+ Private Directory Data
    ├── .journal
    ├── .Trashes
    ├── .VolumeIcon.icns
    ├── .hidden
    ├── Applications
    ├── Library
    ├── System
    ├── Users
    └── Volumes
    

6. APFS 文件系统

  • 数据结构

    • 容器:包含一个或多个卷,每个卷可以包含文件和目录。
    • :APFS中的基本存储单位,可以包含文件和目录。
    • 对象存储:APFS使用对象存储来管理数据,每个对象都有一个唯一的标识符。
  • 目录结构示意图

    /
    ├── System
    ├── Data
    ├── Preboot
    ├── Recovery
    └── VM
    

7. ZFS 文件系统

  • 数据结构

    • 存储池:由一个或多个虚拟设备(vdev)组成,vdev可以是单个磁盘或RAID阵列。
    • 数据集:存储池中的逻辑分区,可以独立管理。
    • zvol:ZFS卷,可以像块设备一样使用。
    • 快照:文件系统状态的历史记录,用于数据恢复。
  • 目录结构示意图

    /
    ├── dataset1
    ├── dataset2
    └── dataset3
        ├── subdataset1
        └── subdataset2
    

8. Btrfs 文件系统

  • 数据结构

    • 超级块:包含文件系统的全局信息。
    • B树:用于索引文件和目录,以及管理数据块。
    • inode:包含文件的元数据。
    • 块组:文件系统被划分为多个块组,每个块组包含一组连续的块。
  • 目录结构示意图

    /
    ├── bin
    ├── boot
    ├── dev
    ├── etc
    ├── home
    ├── lib
    ├── media
    ├── mnt
    ├── opt
    ├── proc
    ├── root
    ├── run
    ├── sbin
    ├── srv
    ├── sys
    ├── tmp
    ├── usr
    └── var
    

9. GFS2 文件系统

  • 数据结构

    • 超级块:包含文件系统的全局信息。
    • inode:包含文件的元数据。
    • 块位图:记录哪些块已被使用,哪些块是空闲的。
    • 日志:记录文件系统操作的日志,用于崩溃恢复。
  • 目录结构示意图

    /
    ├── sharedfs1
    ├── sharedfs2
    └── sharedfs3
    

10. ReiserFS 文件系统

  • 数据结构

    • 超级块:包含文件系统的全局信息。
    • B+树:用于索引文件和目录。
    • inode:包含文件的元数据。
    • 日志:记录文件系统操作的日志,用于崩溃恢复。
  • 目录结构示意图

    /
    ├── bin
    ├── boot
    ├── dev
    ├── etc
    ├── home
    ├── lib
    ├── media
    ├── mnt
    ├── opt
    ├── proc
    ├── root
    ├── run
    ├── sbin
    ├── srv
    ├── sys
    ├── tmp
    ├── usr
    └── var
    

11. JFS 文件系统

  • 数据结构

    • 超级块:包含文件系统的全局信息。
    • inode:包含文件的元数据。
    • B+树:用于索引文件和目录。
    • 日志:记录文件系统操作的日志,用于崩溃恢复。
  • 目录结构示意图

    /
    ├── bin
    ├── boot
    ├── dev
    ├── etc
    ├── home
    ├── lib
    ├── media
    ├── mnt
    ├── opt
    ├── proc
    ├── root
    ├── run
    ├── sbin
    ├── srv
    ├── sys
    ├── tmp
    ├── usr
    └── var
    

12. VMFS 文件系统

  • 数据结构

    • 虚拟机目录

      • 包含虚拟机的配置文件和数据文件。

      • 共享资源目录:包含共享文件夹和文件。

      • 系统目录:包含系统配置文件和日志文件。

      • 存储目录:包含数据存储和日志存储。

  • 目录结构示意图

    /
    ├── VMs
    │   ├── VM1
    │   │   ├── config.vmx
    │   │   ├── nvram
    │   │   ├── disk1.vmdk
    │   │   ├── disk2.vmdk
    │   │   └── snapshot1.vmsn
    │   └── VM2
    │       ├── config.vmx
    │       ├── nvram
    │       ├── disk1.vmdk
    │       ├── disk2.vmdk
    │       └── snapshot1.vmsn
    ├── Shared
    │   ├── Folder1
    │   └── File1
    └── System
        ├── Config
        └── Log
    

13. UFS 文件系统

  • 数据结构

    • 超级块:包含文件系统的全局信息。
    • inode:包含文件的元数据。
    • B树:用于索引文件和目录。
    • 位图:记录哪些块已被使用,哪些块是空闲的。
  • 目录结构示意图

    /
    ├── bin
    ├── boot
    ├── dev
    ├── etc
    ├── home
    ├── lib
    ├── media
    ├── mnt
    ├── opt
    ├── proc
    ├── root
    ├── run
    ├── sbin
    ├── srv
    ├── sys
    ├── tmp
    ├── usr
    └── var
    

14. VxFS 文件系统

  • 数据结构

    • inode:包含文件的元数据。
    • B树:用于索引文件和目录。
    • 位图:记录哪些块已被使用,哪些块是空闲的。
  • 目录结构示意图

    /
    ├── home
    │   └── user
    ├── root
    └── other
    

15. ReFS 文件系统

  • 数据结构

    • 超级块:包含文件系统的全局信息。
    • inode:包含文件的元数据。
    • B+树:用于索引文件和目录。
    • 日志:记录文件系统操作的日志,用于崩溃恢复。
  • 目录结构示意图

    /
    ├── System Volume Information
    ├── Users
    ├── Windows
    └── ProgramData
    

这些文件系统的目录结构和数据结构各有特点,适用于不同的应用场景和操作系统。希望这些信息能帮助您更好地理解各种文件系统的结构和工作原理。

你可能感兴趣的:(教程,大Big数据Data,数据结构,java,服务器,linux,云计算,openstack)