EXT文件系统
最后更新于:2022-04-02 04:06:01
[TOC]
## EXT文件系统
```
[Boot Sector]
[Block Group1]
[Block Group2]
[Block Group2]
- Boot sector:启动扇区,安装开机管理程序
- Block Group:块组,存储数据的实际位置
```
每个 Block Group1 都有
```
[Superblock]
[文件系统描述]
[Inode bitmap]
[Block bitmap]
[Inode table]
[Data block]
```
### Inode Table
- 存放文件 Inode的地方
- 每一个文件(目录)都有一个node
- 是每一个文件(目录)的索引节点
#### Inode
- 文件的字节数
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指- 文件上一次打开的时间。
- 链接数,即有多少文件名指向这个inode
- **文件数据block的位置**
> **文件名**不是存放在 Inode节点上的,而是存放在目录的 Inode节点,这样列出目录文件的时候无需加载文件的 Inode
![UTOOLS1600011096213.png](http://img04.sogoucdn.com/app/a/100520146/d593112aa955c1720f449c74c4b584d0)
>[info] 一个文件有一个Inode块与若干个block组成,Inode记录了这个文件占用了哪些block
### Inode bitmap
- Inode的位示图
- 记录已分配的 INode和未分配的 Inode
### Data block(or block)
- Data block是存放文件内容的地方
- 每个 block都有唯一的编号
- 文件的 block记录在文件的 Inode上
> 1个block通常是4K
### Block bitmap
- 功能与 node bitmap类似
- 记录 Data block的使用情况
### Superblock
1. 记录整个文件系统相关信息的地方
2. Block和node的使用情况
3. 时间信息、控制信息等
## dumpe2fs 查看文件系统信息
```
> df -T
> dumpe2fs /dev/sda2
```
## stat 命令查看文件具体信息
> 文件的Inode 才是文件的唯一标识,而不是文件名 ## inode与block的知识小结 1. Linux系统创建文件系统后会生成一定数量的inode和block,系统读取文件是以block为单位读取的。 2. 一个文件会占用1个inode和可能会占用多个block,每读取一次block就会消耗1次磁盘I/O。 4. inode也是磁盘上的一块存储空间,CentOS6.x非启动分区inode默认大小是256字节,CentOS 5.x默认是128字节。 3. 如果要提升磁盘I/O性能,就要一次性读取尽量多的block。 4. inode也是磁盘上的一块存储空间,CentOS6.x非启动分区inode默认大小是256字节,CentOS 5.x默认是128字节。 5. inode在系统中的表现形式是一串数字,具有相同inode编号的文件互为硬链接。 6. 一个block只能存放一个文件的内容,无论文件有多小,剩余空间也不能够使用。比如block的大小是4K,存一个1K大小的文件,那么剩余的3K空间只能够浪费,不能够使用。 7. inode存放文件属性和指向文件实体的指针,但不存放文件名,文件名存放在上一级目录的block中。 10. 有时候也会因为需要获得更高的磁盘性能而选择更大的block。比如大小为10000K的文件,使用4K大小的block,占用2500个block,如果使用1K大小的block,则会占用10000个block,读取同样大小的文件磁盘I/O分别是2500次和10000次。
';
dumpe2fs /dev/sda2
``` ... Filesystem UUID: 0129e496-e368-4daf-9362-c74e1e731378 .. Filesystem OS type: Linux Inode count: 3538944 // Inode 数量 Block count: 14154752 // Block 数量 Reserved block count: 707737 Free blocks: 10491691 // 剩余 blocks Free inodes: 3464601 // 剩余inodes First block: 0 Block size: 4096 //Block 大小 ... Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 Flex block group size: 16 Mount count: 10 Maximum mount count: -1 First inode: 11 Inode size: 256 //Inode 的大小 256字节 ... Group 0: (Blocks 0-32767) csum 0x5d9b [ITABLE_ZEROED] Primary superblock at 0, Group descriptors at 1-7 Reserved GDT blocks at 8-1031 Block bitmap at 1032 (+1032), csum 0xa0fdab3b Inode bitmap at 1048 (+1048), csum 0x57aeedb7 Inode table at 1064-1575 (+1064) 2185 free blocks, 8180 free inodes, 2 directories, 8179 unused inodes Free blocks: 16254-16765, 31095-32767 Free inodes: 13-8192 ... Group 431: (Blocks 32768-65535) csum 0xfc50 [INODE_UNINIT, ```## stat 命令查看文件具体信息
stat <文件|目录>
``` File: ‘a.txt’ Size: 54 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 69682344 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2020-09-13 23:08:56.390184820 +0800 Modify: 2020-09-07 18:19:51.554143736 +0800 Change: 2020-09-07 18:19:51.588145359 +0800 Birth: - ```> 文件的Inode 才是文件的唯一标识,而不是文件名 ## inode与block的知识小结 1. Linux系统创建文件系统后会生成一定数量的inode和block,系统读取文件是以block为单位读取的。 2. 一个文件会占用1个inode和可能会占用多个block,每读取一次block就会消耗1次磁盘I/O。 4. inode也是磁盘上的一块存储空间,CentOS6.x非启动分区inode默认大小是256字节,CentOS 5.x默认是128字节。 3. 如果要提升磁盘I/O性能,就要一次性读取尽量多的block。 4. inode也是磁盘上的一块存储空间,CentOS6.x非启动分区inode默认大小是256字节,CentOS 5.x默认是128字节。 5. inode在系统中的表现形式是一串数字,具有相同inode编号的文件互为硬链接。 6. 一个block只能存放一个文件的内容,无论文件有多小,剩余空间也不能够使用。比如block的大小是4K,存一个1K大小的文件,那么剩余的3K空间只能够浪费,不能够使用。 7. inode存放文件属性和指向文件实体的指针,但不存放文件名,文件名存放在上一级目录的block中。 10. 有时候也会因为需要获得更高的磁盘性能而选择更大的block。比如大小为10000K的文件,使用4K大小的block,占用2500个block,如果使用1K大小的block,则会占用10000个block,读取同样大小的文件磁盘I/O分别是2500次和10000次。