ext

💰元素

2⃣⏩block

💰ext2数据结构

2⃣block group

♻分类

3⃣ext4

💥其他 常规应用,如视频下载,流媒体,数据库,小文件业务都ok的

⚠Centos6.x默认文件系统

1⃣ext2

💥CDN公司蓝讯用ext2做缓存的文件系统

🔥没有日志

2⃣ext3

💥常规应用

🔥1⃣日志功能 2⃣CentOS5.x默认文件系统 3⃣只支持32,000个子目录

1⃣superblock

⭐特点

1⃣boot block

💥在整个文件系统的最前面,记录整个文件系统的信息

💰⏩图文解说

💥一个文件系统中有很多inode和block,为了更好地管理他们,就把他们分成block group

⚠尽管每个block group几乎都有一个super block,但只有第一个是真实记录整个文件系统的inode和block信息的,而后面的block group是副本

💰block/inode大小,使用和未使用的数量,总数量;上次mount的时间,最近写入数据的时间等

1⃣dumpe2fs前面部分都是superblock

2⃣大小为1025Bytes,具体可以看图文

3⃣位于block group的开头1024字节

🗡dumpe2fs可以查看所有信息

💥可以通过dumpe2fs看是否有Backup superblock

2⃣GDT

💥Group Descriptor.存储一个块组的描述信息

💰从哪里开始是inode表,从哪里开始是数据块;这个块组里空闲的inode/block数量等

💰⏩图文解说

3⃣块位图

💥描述整个块组中哪些块已经被使用,哪些块空闲

⭐本身占1个block

4⃣inode位图

💥描述整个块组中哪些inode已经被使用,哪些inode空闲

⭐本身占1个block

5⃣inode table

💥多个inode组成的就是inode表

⭐inode表由所有块组的inode table组成

6⃣数据块

⚠缓存服务的时候,要禁用ext3和ext4的日志功能(因为写日志会导致效率慢)

💰新增文件的原理

1⃣检查用户所在目录是否对用户有w和r的权限

2⃣根据inode bitmap找到空闲的inode,并写入文件属性

3⃣根据block bitmap找到空闲的block,并写入数据,并更新inode的block指向数据

4⃣将刚刚写入的inode和block数据同步更新到inode bitmap和block bitmap中,并更新superblock的内容

⚠意外情况=>(早期ext2)一致性检查/(现在ext3/ext4)日志

⭐效率高(不过ext3禁止日志后其实效率也差不多)

⭐ext3,ext4都是向下兼容的

⭐1⃣支持1EB(=1024PB=1024*1024TB)容量 2⃣接近无限数量的子目录

1⃣inode

💥index node(索引节点).在许多"类Unix文件系统"中使用的存放文件属性信息和指向文件的指针的数据结构

⚠1⃣inode不存储文件名信息,但存储指向文件的指针. 2⃣文件名存放在上一个目录的block里面

‼文件访问属性:文件名=>inode(权限检查)=>block编号

⭐特点

1⃣有默认大小,比如256字节

⚠在格式化(mkfs)的时候指定

2⃣一个文件至少有一个inode和一个block

3⃣引导分区的inode和block大小为128和1k,其他分区的inode和block大小为256和4k

4⃣删除文件后inode会自动回收

❓1⃣怎么查看某个文件系统的inode大小和数量 2⃣怎么查看某个文件系统的block的大小和数量

💥dumpe2fs命令

✏查看/dev/vda1下inode的大小数量和block的大小数量

sudo dumpe2fs /dev/vda1 | egrep -i 'inode count|inode size|block size|block count'

💡less命令的话允许分屏查看,上下回滚.但more只能向下

💡查看inode的使用量使用df -i

💰块指针

1⃣12个直接块指针

2⃣一次/二次/三次间接块指针