Skip to content

Linux的文件系统

文件系统概览

  • 常见的文件系统
    1. FAT
      • FAT(File Allocation Table)
      • FAT16、FAT32等,微软Dos/Windows使用的文件系统
      • 使用一张表保存盘块的信息
    2. NTFS
      • NTFS(New Technology File System)
      • WindowsNT环境的文件系统
      • NTFS对FAT进行了改进,取代了旧的文件系统
    3. EXT2/3/4
      • EXT(Extend file system): 扩展文件系统
      • Linux的文件系统
      • EXT2/3/4数字代表第几代

Ext文件系统

  • ext逻辑结构示意图
    ext逻辑结构示意图
    • Boot Sector:启动扇区,安装开机管理程序
    • Block Group:块组,存储数据的实际位置
  • Block Group拆分后的细节
    Block Group拆分后的细节
    1. Inode Table
      • 存放文件Inode的地方
      • 每一个文件(目录)都有一个Inode
      • 是每一个文件(目录)的索引节点
    2. Inode
      • 文件类型
      • 文件权限
      • 文件物理地址
      • 文件长度
      • 文件连接计数
      • 文件存取时间
      • 文件状态
      • 访问计数
      • 连接指针
      • ...
    3. 文件名称不是存放在Inode节点上的,而是存放在目录的Inode节点(列出目录文件的时候无需加载文件的Inode)
    4. Inode bitmap
      • Inode的位示图
      • 记录已分配的Inode和未分配的Inde
    5. Data block
      • Data block是存放文件内容的地方
      • 每个block都有一个唯一编号
      • 文件的block记录在文件的Inode上
    6. Block bitmap
      • 功能与Inode bitmap类似
      • 记录Data block的使用情况
    7. Superblock
      • 记录整个文件系统相关信息的地方
      • Block和node的使用情况
      • 时间信息、控制信息等

终端执行

  • 查看系统内磁盘所挂载的信息

    [root@jartins ~]# df -T
    文件系统       类型        1K-块    已用     可用 已用% 挂载点
    /dev/vda1      ext4     20510332 7386336 12059088   38% /
    devtmpfs       devtmpfs   471516       0   471516    0% /dev
    tmpfs          tmpfs      482172      16   482156    1% /dev/shm
    tmpfs          tmpfs      482172     468   481704    1% /run
    tmpfs          tmpfs      482172       0   482172    0% /sys/fs/cgroup
    tmpfs          tmpfs       96436       0    96436    0% /run/user/0
    

  • 查看磁盘Inode的信息

    [root@jartins ~]# dumpe2fs /dev/vda1
    dumpe2fs 1.42.9 (28-Dec-2013)
    Filesystem volume name:   <none>
    Last mounted on:          /
    Filesystem UUID:          1114fe9e-2309-4580-b183-d778e6d97397
    Filesystem magic number:  0xEF53
    Filesystem revision #:    1 (dynamic)
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
    Filesystem flags:         signed_directory_hash 
    Default mount options:    user_xattr acl
    Filesystem state:         clean
    Errors behavior:          Continue
    Filesystem OS type:       Linux
    Inode count:              1310720  # Inode count Inode数量
    Block count:              5242624
    Reserved block count:     262131
    Free blocks:              3290933
    Free inodes:              1164944
    First block:              0
    Block size:               4096
    Fragment size:            4096
    Reserved GDT blocks:      1022
    Blocks per group:         32768
    Fragments per group:      32768
    Inodes per group:         8192
    Inode blocks per group:   512
    Flex block group size:    16
    Filesystem created:       Thu Jul 11 10:52:00 2019
    Last mount time:          Fri Sep  1 16:10:16 2023
    Last write time:          Sat Sep  2 00:10:11 2023
    Mount count:              12
    Maximum mount count:      -1
    Last checked:             Thu Jul 11 10:52:00 2019
    Check interval:           0 (<none>)
    Lifetime writes:          4199 MB
    Reserved blocks uid:      0 (user root)
    Reserved blocks gid:      0 (group root)
    First inode:              11
    Inode size:           256
    Required extra isize:     28
    Desired extra isize:      28
    Journal inode:            8
    First orphan inode:       1211403
    Default directory hash:   half_md4
    Directory Hash Seed:      0163c9aa-b271-4625-b08d-5a774c70359e
    Journal backup:           inode blocks
    Journal features:         journal_incompat_revoke
    日志大小:             128M
    Journal length:           32768
    Journal sequence:         0x000570ac
    Journal start:            156
    
    
    Group 0: (Blocks 0-32767) [ITABLE_ZEROED]
      Checksum 0xf946, unused inodes 8175
       superblock at 0, Group descriptors at 1-2
      保留的GDT块位于 3-1024
      Block bitmap at 1025 (+1025), Inode bitmap at 1041 (+1041)
      Inode表位于 1057-1568 (+1057)
      19020 free blocks, 8176 free inodes, 2 directories, 8175个未使用的inodes
      可用块数: 9255-9280, 13774-32767
      可用inode数: 14, 18-8192
    Group 1: (Blocks 32768-65535) [INODE_UNINIT, ITABLE_ZEROED]
      Checksum 0x2695, unused inodes 8192
      备份 superblock at 32768, Group descriptors at 32769-32770
      保留的GDT块位于 32771-33792
      Block bitmap at 1026 (bg #0 + 1026), Inode bitmap at 1042 (bg #0 + 1042)
      Inode表位于 1569-2080 (bg #0 + 1569)
      11408 free blocks, 8192 free inodes, 0 directories, 8192个未使用的inodes
      可用块数: 33840-33847, 33851-33919, 36121-40959, 44583-44671, 44797-45055, 48128-53247, 58368-59391
      可用inode数: 8193-16384
    Group 2: (Blocks 65536-98303) [INODE_UNINIT, ITABLE_ZEROED]
      Checksum 0xcbf4, unused inodes 8192
      Block bitmap at 1027 (bg #0 + 1027), Inode bitmap at 1043 (bg #0 + 1043)
      Inode表位于 2081-2592 (bg #0 + 2081)
      11297 free blocks, 8192 free inodes, 0 directories, 8192个未使用的inodes
      可用块数: 65558-66903, 66972-66975, 67115-67135, 67175-67199, 67227-67231, 67258-67263, 67298-67328, 67333-67423, 67453-67455, 67494-67519, 67562-73727, 78229-78239, 78267-78271, 78299-78303, 78335, 78370-78399, 78429-78431, 78458-78463, 78500-78527, 78552-78559, 78585-78591, 78632-78655, 78692-78719, 78747-78751, 78778-78847, 79529-79615, 79744-79871, 80742-80767, 80794-80799, 80826-80831, 80849-80863, 80894-81919, 94208-96255
      可用inode数: 16385-24576
    Group 3: (Blocks 98304-131071) [INODE_UNINIT, ITABLE_ZEROED]
      Checksum 0xe0af, unused inodes 8192
      备份 superblock at 98304, Group descriptors at 98305-98306
      保留的GDT块位于 98307-99328
      Block bitmap at 1028 (bg #0 + 1028), Inode bitmap at 1044 (bg #0 + 1044)
      Inode表位于 2593-3104 (bg #0 + 2593)
      11899 free blocks, 8192 free inodes, 0 directories, 8192个未使用的inodes
      可用块数: 100204-100351, 104223-104447, 114288-114687, 115866-115871, 115887-115903, 116098-116735, 120607-131071
      可用inode数: 24577-32768
    Group 4: (Blocks 131072-163839) [INODE_UNINIT, ITABLE_ZEROED]
      Checksum 0x66e2, unused inodes 8192
      Block bitmap at 1029 (bg #0 + 1029), Inode bitmap at 1045 (bg #0 + 1045)
      Inode表位于 3105-3616 (bg #0 + 3105)
      5931 free blocks, 8192 free inodes, 0 directories, 8192个未使用的inodes
      可用块数: 131072-134634, 134848-137215
      可用inode数: 32769-40960
    Group 5: (Blocks 163840-196607) [INODE_UNINIT, ITABLE_ZEROED]
      Checksum 0xc1fc, unused inodes 8192
      备份 superblock at 163840, Group descriptors at 163841-163842
      保留的GDT块位于 163843-164864
      Block bitmap at 1030 (bg #0 + 1030), Inode bitmap at 1046 (bg #0 + 1046)
      Inode表位于 3617-4128 (bg #0 + 3617)
      24098 free blocks, 8192 free inodes, 0 directories, 8192个未使用的inodes
      可用块数: 164865-164991, 165056-166271, 167397-167423, 167480-167679, 167936-182271, 188416-196607
      可用inode数: 40961-49152
    Group 6: (Blocks 196608-229375) [INODE_UNINIT, ITABLE_ZEROED]
      Checksum 0xa7c8, unused inodes 8192
      Block bitmap at 1031 (bg #0 + 1031), Inode bitmap at 1047 (bg #0 + 1047)
      Inode表位于 4129-4640 (bg #0 + 4129)
      20040 free blocks, 8192 free inodes, 0 directories, 8192个未使用的inodes
      可用块数: 196608-215039, 219136-219553, 219938-220159, 220216-221183
      可用inode数: 49153-57344
    ... 
    

  • 查看文件具体信息

    [root@jartins ~]# stat install.sh 
      文件:"install.sh"
      大小:34925      块:72         IO 块:4096   普通文件
    设备:fd01h/64769d Inode:917520      硬链接:1
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    最近访问:2023-07-26 16:40:51.049263965 +0800
    最近更改:2023-04-28 11:38:22.000000000 +0800
    最近改动:2023-07-26 16:40:51.046263685 +0800
    创建时间:-