linux的多重文件系统,linux之文件系统介绍

该文件的访问模式(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

实例:

e63a014d0736d5f7416f5cda8d04ab0c.png

2f00718c1bbc796583ead859f6f05920.png

再介绍下 文件系统与目录树的关系

目录:

当创建目录时,文件系统会分配一个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数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值