💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[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 ``` <details> <summary>dumpe2fs /dev/sda2</summary> ``` ... 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, ``` </details> <br /> ## stat 命令查看文件具体信息 <details> <summary>stat <文件|目录></summary> ``` 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: - ``` </details> <br /> > 文件的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次。