该文件的访问模式(read/write/excute)
该文件的拥有者与组
该文件的大小
该文件的创建时间改变时间、最近一次读取的时间、最近一次修改的时间
该文件真正的指向
每个inode有128bytes
每个文件只占用一个inode
系统读取文件时需要先找到inode,并分析inode所记录的权限与用户是否相符合,若符合开始读取实际的block内容
inode表需要记录的东西非常多,而每个inode的大小是128bytes。若每个块是4096bytes,每个块才记录32个inode。如果有个文件是500M,记录block需要花4bytes。大概有13万的block号需要记录,系统将inode记录block号码的区域定义了12个直接、1个间接、1个双简介、1个三间接记录区。
6.数据块:用来放置文件的实际数据/目录的内容。支持的大小为1K、2K、4Kblock的大小与数量在格式化后就不可以改变了(除非重新格式化)
每个block中只能存放1个文件数据
当文件数据大于block的大小时,会占用多个block
当文件数据小雨block的大小时,磁盘空间会浪费
使用dumpe2fs命令查看文件系统信息,dumpe2fs - dump ext2/ext3/ext4 filesystem information
语法:dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device
选项:
-b:打印文件系统中的坏块
-f:强制显示所有信息
-h:只显示超级块信息
实例:
[root@www ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 8.0G 2.1G 5.5G 28% /
tmpfs 937M 0 937M 0% /dev/shm
/dev/sda1 194M 27M 158M 15% /boot
/dev/sda2 9.7G 1.5G 7.7G 16% /usr
/dev/sdc4 99M 23M 72M 24% /home
[root@www ~]# dumpe2fs /dev/sda1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: 列出文件系统的名称,/etc/fstab中设备名称可以使用这个。我这里是none没有定义名称,可以使用e2label设置Label。
Last mounted on: /boot 挂载点
Filesystem UUID: 2f2da85e-f8c6-450b-bd82-99217ddc1ca4 设备的UUID,/etc/fstab也可以使用这个挂载
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 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: 51200 inode总量
Block count: 204800 block总量
Reserved block count: 10240 保留块总量
Free blocks: 171502 空闲block总量
Free inodes: 51162 空闲inodes总量
First block: 1
Block size: 1024
Fragment size: 1024
Reserved GDT blocks: 256
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2048
Inode blocks per group: 256
Flex block group size: 16
Filesystem created: Thu Nov 9 23:11:17 2017
Last mount time: Sat Mar 3 05:57:03 2018
Last write time: Sat Mar 3 05:57:03 2018
Mount count: 26
Maximum mount count: -1
Last checked: Thu Nov 9 23:11:17 2017
Check interval: 0 ()
Lifetime writes: 32 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128 每个inode的大小
Journal inode: 8 日志inode号
Default directory hash: half_md4
Directory Hash Seed: 0ccc6f7e-bdae-45d8-9a92-6b72b940045c
Journal backup: inode blocks
Journal features: journal_incompat_revoke
日志大小: 4096k
Journal length: 4096
Journal sequence: 0x0000005c
Journal start: 1
Group 0: (Blocks 1-8192) [ITABLE_ZEROED] 第一个块组
校验和 0x746b,2008个未使用的inode
主 superblock at 1, Group descriptors at 2-2
保留的GDT块位于 3-258
Block bitmap at 259 (+258), Inode bitmap at 275 (+274)
Inode表位于 291-546 (+290)
3785 free blocks, 2010 free inodes, 6 directories, 2008个未使用的inodes
可用块数: 4408-8192
可用inode数: 39-2048
Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]
校验和 0x2a64,2048个未使用的inode
备份 superblock at 8193, Group descriptors at 8194-8194
保留的GDT块位于 8195-8450
Block bitmap at 260 (+4294959363), Inode bitmap at 276 (+4294959379)
Inode表位于 547-802 (+4294959650)
642 free blocks, 2048 free inodes, 0 directories, 2048个未使用的inodes
可用块数: 15743-16384
可用inode数: 2049-4096
Group 2: (Blocks 16385-24576) [INODE_UNINIT, ITABLE_ZEROED] 块组2没有superblock。
校验和 0xd123,2048个未使用的inode
Block bitmap at 261 (+4294951172), Inode bitmap at 277 (+4294951188)
Inode表位于 803-1058 (+4294951714)
2048 free blocks, 2048 free inodes, 0 directories, 2048个未使用的inodes
可用块数: 22529-24576
可用inode数: 4097-6144
Group 3: (Blocks 24577-32768) [INODE_UNINIT, ITABLE_ZEROED]
校验和 0x4d3e,2048个未使用的inode
备份 superblock at 24577, Group descriptors at 24578-24578
保留的GDT块位于 24579-24834
Block bitmap at 262 (+4294942981), Inode bitmap at 278 (+4294942997)
Inode表位于 1059-1314 (+4294943778)
188 free blocks, 2048 free inodes, 0 directories, 2048个未使用的inodes
可用块数: 32581-32768
可用inode数: 6145-8192
仅展示了3个blockgroup块组。
顺便介绍下e2label命令
mane2label后:e2label - Change the label on an ext2/ext3/ext4 filesystem
用法:e2label device label
实例:
再介绍下 文件系统与目录树的关系
目录:
当创建目录时,文件系统会分配一个inode和至少一个block。
inode记录该目录的权限属性等信息;
block记录该目录下文件名称及inode号。
文件:
当创建文件时,首先确定用目录是否有w与x的权限,有才可以新建文件,其次根据文件系统的inode索引节点位图和block数据块位图找到没有使用的inode、block号码,并将新文件的权限与属性写入inode表和文件内容写入block表,并且变更inode的block指向数据,然后将刚才写入的inode和block数据同步更新到inode表和block表,并更新superblock的内容。
inode记录该文件的权限属性等信息;block记录该文件的实际数据。
目录树的读取:
目录树是从根读取的,如读取/etc/passwd文件数据/的inode,通过挂载点的信息找到/dev/sda5的inode号是2,且inode具有权限让我们读取block的内容。
/的block,取得block的号码,找到有etc目录及对应的inode为261123。
根据etc的inode261123找到inode中记录etc的block块,找到passwd文件名及inode为281728
找到了passwd的inode281728,得知我有r的权限,找到passwd实际数据放置的block号
读取passwd数据