文件系统-inode-block

▶ inode区、block区域、super block

硬盘格式化后,操作系统会将硬盘分成两块区域,block区域【数据区】inode区域

同时文件系统还有一个用于记录文件系统的整体信息包含inode与block区域总量、使用量、剩余量的区域,该区域称为 super blcok


▷ inode号码

系统通过不同的inode号码来区分不同的文件,每个文件都会占据一个 inode值,inode内存放 block 文件的号码。

  • 系统找到文件名对应的inode号码
  • 通过 inode 号码来,获取 inode 的信息
  • 根据 inode 的信息,找到文件数据所在的 block 读取数据。

▷▷ 查看文件 inode 的值

  • 通过 ll -i
[root@server ~]# ll -i
total 4
34275168 -rw-------. 1 root root 895 Aug 15 09:20 anaconda-ks.cfg
17278417 drwxrwxrwt. 2 root root   6 Aug 26 10:56 testdir

34275168 17278417 就是对应文件 anaconda-ks.cfg文件 和 testdir目录文件对应的 inode 值。

  • 通过 stat
[root@server ~]# stat testdir/
  File: testdir/
  Size: 6               Blocks: 0          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 17278417    Links: 2
Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2024-08-26 10:57:10.947291268 +0800
Modify: 2024-08-26 10:56:14.201166928 +0800
Change: 2024-08-26 10:56:58.172985796 +0800
 Birth: 2024-08-26 10:56:14.201166928 +0800

Inode 部分就是 testdir/ 对应的 inode 值。

▶ block

操作系统读取硬盘的时候,不会以扇区为单位进行读取,而是一次性读取多个单位的删除,这些多个单位就被称为 block 。

也就是说 block 就是 多个扇区的总和。block 就是文件读取的最小单位,是真正存储数据的地方。

在 Linux 中是 block,而在 Windows 中是

▷ block 大小与速度

格式化 后,block 指定的大小就已经确定了,现在一般是 4KB 也就是物理磁盘上的 8 个扇区。

将block区域的调大可以加快系统询址的速度,但是也会照成有些空间的浪费,而将 block 区域调小不会有前者的空间浪费但是寻址的速度对比前者就会下降。

▷ 查看分区 block 的信息

由于 block 与文件系统有关,所以在查看blcok的时候就需要知道当前分区的文件系统是什么。

redhat7 和之后,用的就是 xfs 文件系统,所以使用查看 xfs 文件系统的命令是 xfs_info,而 6 版本 的则是 ext4,使用的是 dump2fs

▷▷ xfs文件系统-红帽7后的默认文件系统

[root@server ~]# cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)

[root@server ~]# xfs_info /dev/mapper/rl_192-root
meta-data=/dev/mapper/rl_192-root isize=512    agcount=4, agsize=1113856 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0
data     =                       bsize=4096   blocks=4455424, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=16384, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
英文 内容
isize 每个inode 的容量大小
agcount 存储群组
agsize 存储群组占用的块的个数
sectsz 扇区
bsize 块的大小
blocks 总过块的大小
internal bsize 操作系统的登陆区块
internal blocks 操作系统的负责登陆区块的大小

▷▷ ext4文件系统-红帽6的默认文件系统


[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)

[root@localhost ~]# dumpe2fs /dev/sda1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          /boot
Filesystem UUID:          4aecf15c-017a-4715-840e-4a6cae9fcf95
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_ineeds_recovery extent flex_bg sparse_super huge_file uninit_bg dir_ize
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              128016
Block count:              512000
Reserved block count:     25600
Free blocks:              463185
Free inodes:              127978
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         2032
Inode blocks per group:   254
Flex block group size:    16
Filesystem created:       Wed Aug 21 17:48:59 2024
Last mount time:          Thu Aug 29 12:39:27 2024
Last write time:          Thu Aug 29 12:39:27 2024
Mount count:              4
Maximum mount count:      -1
Last checked:             Wed Aug 21 17:48:59 2024
Check interval:           0 (<none>)
Lifetime writes:          46 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               128
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      7660af06-244f-4408-8bb7-aa5ee96b2183
Journal backup:           inode blocks
Journal features:         (none)
Journal size:             8M
Journal length:           8192
Journal sequence:         0x0000000d
Journal start:            0


Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
  Checksum 0x408b, unused inodes 2015
  Primary superblock at 1, Group descriptors at 2-3
  Reserved GDT blocks at 4-259
  Block bitmap at 260 (+259), Inode bitmap at 276 (+275)
  Inode table at 292-545 (+291)
  3820 free blocks, 2015 free inodes, 2 directories, 2015 unused i
  Free blocks: 4373-8192
  Free inodes: 18-2032

--snip--
posted @ 2024-08-28 10:00  takenika  阅读(100)  评论(0)    收藏  举报