ext文件系统分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件系统为 1 EB(1000 PB)。支持最大 16 TB 的文件 (假设由 4KB 的块组成),扩展了子目录的容量,将其从 32KB 扩展到几乎无穷大,因为它的最大存储容量为 1 EB。 此外,目录索引也优化为类似于散列 B 树结构,支持更快 的查找。
ext4 采用区段(extent)表示存储空间,采用区 段方法高效地表示小文件和大文件。例如,单个
ext2普通文件inode操作表: struct inode_operations ext2_file_inode_operations={ truncate : ext2_truncate, setattr : ext2_setattr, permission : ext2_permission, };
ext2目录文件inode操作表: struct inode_operations ext2_dir_inode_operations = { create: ext2_create, lookup: ext2_lookup, link: ext2_link, unlink: ext2_unlink, symlink: ext2_symlink, mkdir: ext2_mkdir, rmdir: ext2_rmdir, mknod: ext2_mknod, rename: ext2_rename, };
ext2 super操作表: static struct super_operations ext2_sops ={ read_inode: ext2_read_inode, write_inode: ext2_write_inode, put_inode: ext2_put_inode, delete_inode: ext2_delete_inode, put_super: ext2_put_super, write_super: ext2_write_super, statfs: ext2_statfs, remount_fs: ext2_remount, }
第九讲 文件系统
文件系统目录结构(所有信息在磁盘中)
目录项
分量名 Inode号
根目录
inode
根目录文件 目录项| 目录项| 目录项
inode A 目录项|目录项 inode inode a1 a2 c1 inode b inode C 目录项|目录项 inode inode
inode
c2 目录项|目录项 inode inode c21 c22
2.4增加此操作函数表,函数源自普通文件的 inode操作表: struct address_space_operations ext2_aops={ readpage: ext2_readpage, writepage: ext2_writepage, sync_page: block_sync_page, prepare_write: ext2_prepare_write, commit_write: generic_commit_write, bmap: ext2_bmap, direct_IO: ext2_direct_IO, };
一致性
COW方式事务处理;支持SSD 分离存放的checksum
高可用
chunk可以镜像及striping 快照、克隆(可写快照)等
其它:空间延迟分配;inline文件;数据压缩
所有需要查找的信息组成B+树
超级块
Root Tree Pointer Chunk Tree Pointer
17.6盘空间管理
.分配原则 Inode的分配原则:如果是目录文件,则在有最 多空闲数据块的组中分配;如果是一般文件,即 从其目录文件inode所在组开始分配inode,没有 空闲inode则按变步长挑选组。 数据块分配原则:先选该文件最后分配块的最 近后续空闲块,若无再选包含文件inode的组中 的空闲块,若无再选其它组空闲块。
ext4 inode 有足够的空间来引用 4 个区段。对大文件,采 用多级索引。
延迟(真正写盘时)、批量分配连续空间及预保留 文件连续空间
17.9Btrfs文件系统介绍
可扩展性
基于extent进行文件数据存储 B+树方式信息索引(如查找目录项等) 动态inode分配,元数据也可以独立分区存放 多Subvolume(可以作为卷进行安装);多chunk(对应 逻辑卷);多分区(对应物理卷)
Chunk Tree B+ Tree of items
Extent Tree B+ Tree of items
Dev Tree B+ Tree of items
FS Tree B+ Tree of items
Dev Tree B+ Tree of items
Data Reloc Tree B+ Tree of items
ext2 file操作表: struct file_operations ext2_file_operations = { llseek: generic_file_llseek, read: generic_file_read, write: generic_file_write, ioctl: ext2_ioctl, mmap: generic_file_mmap, open: generic_file_open, release: ext2_release_file, fsync: ext2_sync_file, };
Root Tree Extent Tree Root Pointer Dev Tree Root Pointer FS Tree Root Root Tree Directory inode root inode inode ref pointer ref item item item item dir item Checksum Data Reloc Tree Root Tree Root Pointer Pointer
17.5 ext2与VFS层的接口函数 ext2_sops指针数组存放了super_operations 结构类型的一组操作函数指针;
ext2_file_inode_operations/ext2_dir_inod e_operations指针数组存放了inode_operations 结构类型的一组操作函数指针;(2.4版后将 ext2_file_inode_operations的大部分函数移到 ext2_aops中) ext2_file_operations指针数组存放了 file_operations结构类型的一组file操作函数 指针;
Inode及数据块区的bitmap表因为太大不可能同 时存于内核空间,需要部分缓冲处理;
17.4文件系统分区建立
利用/sbin/mke2fs实用程序建立ext2文件系统分 区。生成盘上相关数据结构、建根目录文件等。
如果系统断电等突然停机,e2fsck实用程序必须 在系统重启时运行以保证磁盘数据一致性。
ห้องสมุดไป่ตู้
Group 0
...
Group k
...
Group n
超级块ext2_super_block结构,含有inode个数, 数据块数,块长,组相关信息。 组描述符ext2_group_desc结构,说明该组数据 块bitmap表块号和inode区bitmap表块号,inode 区首块号,有关空闲块计数信息等。 Inode是ext2_inode结构,其中含一个数据块索 引表。 目录文件数据由ext2_dir_entry_2结构的项组 成,该结构含分量名和inode号等。 Inode区的第一个inode是本分区根目录的inode
日志文件系统配置 Journal:将元数据和数据写操作涉及数据都写 入日志。 Ordered(省缺模式):日志只记录元数据写。 系统确保文件数据写盘后才进行元数据写操作, 减少文件数据损坏的机会 。 Writeback(最快模式):日志只记录元数据写。
17.8Ext4文件系统新特性
ext4 支持更大的文件系统、文件和子目录。最大
文件分区
第十七章 EXT2文件系统 17.1特点 创建文件分区时可以选择分配空间块大小(1024 -4096B)以充分利用空间; 将文件分区分成多段,同一文件数据块尽可能在 同一段内,节省寻道时间; 在分区创建时可调整inode区与数据块区比例; 预留连续磁盘数据块给文件,但是实际分配数据 块在第一次读写时进行; 短于60B的符号连接存于inode中; 精心设计盘数据写盘次序,保证中途死机的可恢 复性;
17.2盘数据结构 文件分区Layout:
Same for every group
Super Block Group Descript ors Block Bitmap
Distinct for every group
Inode Bitmap Inode Table Data Blocks
Boot block
数据块寻址(ext2_bmap函数) 采用如下索引结构定位文件逻辑块与磁盘数据 块的对应关系。 00 文 01 02 件 03 字 04 节 05 06 流
…
0 直接 1 直接 2 直接 11 12一次间接 13二次间接 14三次间接
17.7 Ext3文件系统 特点: 日志文件系统 尽可能与Ext2文件系统兼容 日志原理: 二阶段写操作: 1、块同步写日志; 2、块写文件系统(且在文件系统相关块写到盘 成功后作废日志记录)。 二种恢复情形: 1、日志记录未写完整,则丢弃; 2、日志记录已完整,但是日志记录没作废,则 利用日志记录重写文件系统。
17.3外存数据结构在内核空间的表示
盘上的数据在使用时都必须保存在内存; 盘上元数据在使用时必须存于系统 cache中, 内核有对应VFS数据结构存放盘元数据在cache中 的地址或元数据副本: 如VFS的super_block结构中的u域存放 ext2_sb_info结构信息,其中s_sbh域指向存 放盘超级块的buffer头
ext4 采用区段(extent)表示存储空间,采用区 段方法高效地表示小文件和大文件。例如,单个
ext2普通文件inode操作表: struct inode_operations ext2_file_inode_operations={ truncate : ext2_truncate, setattr : ext2_setattr, permission : ext2_permission, };
ext2目录文件inode操作表: struct inode_operations ext2_dir_inode_operations = { create: ext2_create, lookup: ext2_lookup, link: ext2_link, unlink: ext2_unlink, symlink: ext2_symlink, mkdir: ext2_mkdir, rmdir: ext2_rmdir, mknod: ext2_mknod, rename: ext2_rename, };
ext2 super操作表: static struct super_operations ext2_sops ={ read_inode: ext2_read_inode, write_inode: ext2_write_inode, put_inode: ext2_put_inode, delete_inode: ext2_delete_inode, put_super: ext2_put_super, write_super: ext2_write_super, statfs: ext2_statfs, remount_fs: ext2_remount, }
第九讲 文件系统
文件系统目录结构(所有信息在磁盘中)
目录项
分量名 Inode号
根目录
inode
根目录文件 目录项| 目录项| 目录项
inode A 目录项|目录项 inode inode a1 a2 c1 inode b inode C 目录项|目录项 inode inode
inode
c2 目录项|目录项 inode inode c21 c22
2.4增加此操作函数表,函数源自普通文件的 inode操作表: struct address_space_operations ext2_aops={ readpage: ext2_readpage, writepage: ext2_writepage, sync_page: block_sync_page, prepare_write: ext2_prepare_write, commit_write: generic_commit_write, bmap: ext2_bmap, direct_IO: ext2_direct_IO, };
一致性
COW方式事务处理;支持SSD 分离存放的checksum
高可用
chunk可以镜像及striping 快照、克隆(可写快照)等
其它:空间延迟分配;inline文件;数据压缩
所有需要查找的信息组成B+树
超级块
Root Tree Pointer Chunk Tree Pointer
17.6盘空间管理
.分配原则 Inode的分配原则:如果是目录文件,则在有最 多空闲数据块的组中分配;如果是一般文件,即 从其目录文件inode所在组开始分配inode,没有 空闲inode则按变步长挑选组。 数据块分配原则:先选该文件最后分配块的最 近后续空闲块,若无再选包含文件inode的组中 的空闲块,若无再选其它组空闲块。
ext4 inode 有足够的空间来引用 4 个区段。对大文件,采 用多级索引。
延迟(真正写盘时)、批量分配连续空间及预保留 文件连续空间
17.9Btrfs文件系统介绍
可扩展性
基于extent进行文件数据存储 B+树方式信息索引(如查找目录项等) 动态inode分配,元数据也可以独立分区存放 多Subvolume(可以作为卷进行安装);多chunk(对应 逻辑卷);多分区(对应物理卷)
Chunk Tree B+ Tree of items
Extent Tree B+ Tree of items
Dev Tree B+ Tree of items
FS Tree B+ Tree of items
Dev Tree B+ Tree of items
Data Reloc Tree B+ Tree of items
ext2 file操作表: struct file_operations ext2_file_operations = { llseek: generic_file_llseek, read: generic_file_read, write: generic_file_write, ioctl: ext2_ioctl, mmap: generic_file_mmap, open: generic_file_open, release: ext2_release_file, fsync: ext2_sync_file, };
Root Tree Extent Tree Root Pointer Dev Tree Root Pointer FS Tree Root Root Tree Directory inode root inode inode ref pointer ref item item item item dir item Checksum Data Reloc Tree Root Tree Root Pointer Pointer
17.5 ext2与VFS层的接口函数 ext2_sops指针数组存放了super_operations 结构类型的一组操作函数指针;
ext2_file_inode_operations/ext2_dir_inod e_operations指针数组存放了inode_operations 结构类型的一组操作函数指针;(2.4版后将 ext2_file_inode_operations的大部分函数移到 ext2_aops中) ext2_file_operations指针数组存放了 file_operations结构类型的一组file操作函数 指针;
Inode及数据块区的bitmap表因为太大不可能同 时存于内核空间,需要部分缓冲处理;
17.4文件系统分区建立
利用/sbin/mke2fs实用程序建立ext2文件系统分 区。生成盘上相关数据结构、建根目录文件等。
如果系统断电等突然停机,e2fsck实用程序必须 在系统重启时运行以保证磁盘数据一致性。
ห้องสมุดไป่ตู้
Group 0
...
Group k
...
Group n
超级块ext2_super_block结构,含有inode个数, 数据块数,块长,组相关信息。 组描述符ext2_group_desc结构,说明该组数据 块bitmap表块号和inode区bitmap表块号,inode 区首块号,有关空闲块计数信息等。 Inode是ext2_inode结构,其中含一个数据块索 引表。 目录文件数据由ext2_dir_entry_2结构的项组 成,该结构含分量名和inode号等。 Inode区的第一个inode是本分区根目录的inode
日志文件系统配置 Journal:将元数据和数据写操作涉及数据都写 入日志。 Ordered(省缺模式):日志只记录元数据写。 系统确保文件数据写盘后才进行元数据写操作, 减少文件数据损坏的机会 。 Writeback(最快模式):日志只记录元数据写。
17.8Ext4文件系统新特性
ext4 支持更大的文件系统、文件和子目录。最大
文件分区
第十七章 EXT2文件系统 17.1特点 创建文件分区时可以选择分配空间块大小(1024 -4096B)以充分利用空间; 将文件分区分成多段,同一文件数据块尽可能在 同一段内,节省寻道时间; 在分区创建时可调整inode区与数据块区比例; 预留连续磁盘数据块给文件,但是实际分配数据 块在第一次读写时进行; 短于60B的符号连接存于inode中; 精心设计盘数据写盘次序,保证中途死机的可恢 复性;
17.2盘数据结构 文件分区Layout:
Same for every group
Super Block Group Descript ors Block Bitmap
Distinct for every group
Inode Bitmap Inode Table Data Blocks
Boot block
数据块寻址(ext2_bmap函数) 采用如下索引结构定位文件逻辑块与磁盘数据 块的对应关系。 00 文 01 02 件 03 字 04 节 05 06 流
…
0 直接 1 直接 2 直接 11 12一次间接 13二次间接 14三次间接
17.7 Ext3文件系统 特点: 日志文件系统 尽可能与Ext2文件系统兼容 日志原理: 二阶段写操作: 1、块同步写日志; 2、块写文件系统(且在文件系统相关块写到盘 成功后作废日志记录)。 二种恢复情形: 1、日志记录未写完整,则丢弃; 2、日志记录已完整,但是日志记录没作废,则 利用日志记录重写文件系统。
17.3外存数据结构在内核空间的表示
盘上的数据在使用时都必须保存在内存; 盘上元数据在使用时必须存于系统 cache中, 内核有对应VFS数据结构存放盘元数据在cache中 的地址或元数据副本: 如VFS的super_block结构中的u域存放 ext2_sb_info结构信息,其中s_sbh域指向存 放盘超级块的buffer头