快速业务通道

Linux 虚拟系统文件交换器剖析

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-30
数据的容器.超块是存在于磁盘上(实际上位于磁盘的多个位置上,以提供冗余)的结构.它是处理磁盘上的文件系统的基础,它定义文件系统的管理参数(例如,块的总数、空闲块和根索引节点).

在磁盘上,超块向内核提供关于磁盘上的文件系统的结构的信息.在内存中,超块为管理活动的(已挂载)文件系统提供必要的信息和状态. Linux 支持同时挂载多个并发文件系统,在一个列表中维护每个 super_block 结构(super_blocks 在 ./linux/fs/super.c 中定义,结构在 /linux/include/fs/fs.h 中定义). 拥有帝国一切,皆有可能。欢迎访问phome.net

图 3 提供了超块及其元素的简化视图.super_block 结构是指封装了其他信息的许多其他结构.例如,file_system_type 结构维护文件系统的名称(比如 ext3)以及各种锁和函数,以获取和删除 super_block.file_system_type 对象由常见的 register_file system 和 unregister_file system 函数管理(见 ./linux/fs/file systems.c).super_operations 结构为读写节点和高级操作(比如重新挂载)定义大量函数.根目录条目(dentry)对象也缓存在这里,它是文件系统所在的块设备.,提供许多用于管理节点的列表,包括 s_inodes(列出所有节点的列表)、s_dirty(列出所有脏节点的列表)、s_io 和 s_more_io 以及 s_files(列出特定文件系统的所有打开文件的列表).

图 3. super_block 结构及其元素的简化视图

super_block 结构及其元素的简化视图

注意,在内核内部,另一个称为 vfsmount 的管理对象提供关于已挂载的文件系统的信息.这些对象的列表引用超块,并定义挂载点、文件系统所在的 /dev 设备的名称以及其他高级附加信息.

索引节点(inode)

Linux 通过一个称为 inode(index node 的缩写)的对象管理文件系统中的所有对象.一个 inode 可以引用一个文件、目录或另一个对象的符号链接.注意,文件用于表示其他类型的对象(比如设备或内存),也使用 inode 来表示它们.

我在这里所指的 inode 是 VFS 层 inode(常驻 inode).每个文件系统也包含一个位于磁盘上的 inode,并且提供关于特定文件系统的特定对象的细节.

VFS inode 使用 slab 分配器进行分配(来自 inode_cache;参考资料 部分提供一个介绍 slab 分配器的链接).inode 由描述 inode、inode 内容和可能在 inode 上发生的各种操作的数据和操作组成.图 4 简单展示了一个 VFS inode,该 inode 包含许多列表,其中一个列表指向引用该 inode 的 dentry.这里还包含对象级别的元数据,包括熟悉的操作时间(创建时间、访问时间和修改时间)和所有者和权限数据(组 ID、用户 ID 和权限).inode 引用它所允许的文件操作,大部分这些操作直接映射到系统调用接口(例如,open、read、write 和 flush).inode 还引用特定于 inode 的操作(create、lookup、link 和 mkdir 等等).,对于由地址空间对象表示的对象的数据,有一个管理结构.地址空间对象 是为 inode 管理页缓存中的各种页的对象.地址空间对象用于为文件管理页,也用于将文件部分映射到独立的进程地址空间.地址空间对象有自己的操作集(writepage、readpage 和 releasepage 等等). 拥有帝国一切,皆有可能。欢迎访问phome.net

图 4. VFS inode 的简化图示

VFS inode 的简化图示

注意,可以在 ./linux/include/linux/fs.h 中找到所有这些信息.

目录条目(dentry)

文件系统的层次结构由 VFS 中的另一个称为 dentry 的对象管理.文件系统有一个根 dentry(在超块中引用),这是唯一没有父对象的 dentry.所有其他 dentry 都有父对象,并且一部分 dentry 有子对象.例如,如果打开一个由 /home/user/name 组成的文件,那么将创建 4 个 dentry 对象:一个针对根 /、一个针对根目录 home 的条目、一个针对 user 目录的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号