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⃣一次/二次/三次间接块指针