当前位置:首页 » 存储配置 » inode表的存储位置

inode表的存储位置

发布时间: 2023-07-10 03:11:06

linux文件管理中VFS使用的inode是什么

在 Linux 系统中,VFS(Virtual File System)是一个抽象层,它使得档缺 Linux 内核能够与多种文件系拿碧统进行交互行敏辩。VFS 使用 inode(Index Node)来管理文件系统中的文件和目录。
inode 是一个数据结构,它存储着文件或目录的元数据信息,如文件大小、创建时间、权限等。每个文件或目录在文件系统中都对应一个 inode,而 inode 又与一个编号相关联,这个编号就是 inode 的编号。
当文件或目录被创建时,VFS 会为它分配一个 inode 编号,并且创建一个 inode 数据结构来存储元数据信息。当文件或目录被访问时,VFS 会根据 inode 编号来查找对应的 inode 数据结构,从而获取文件或目录的信息。
因此,inode 是 VFS 在 Linux 系统中管理文件和目录的一种重要方式。它能够帮助 VFS 快速查找文件或目录的信息,从而提高文件系统的性能。

Ⅱ 文件系统

文件系统的目的就是通过目录查找文件,寻找空闲位置存放文件。

组成:超级块、目录结构、描述文件属性的结构,文件系统相关操作

sysfs:超级块,目录sys_dirent,,属性kset、kobject

vfs:超级块,目录dentry,属性inode

bdevfs:超级块,目录dentry,属性bdevfs_inode(嵌在block_device中)

超级块、空闲表、目录文件(文件控制块FCB)、普通文件、与文件系统有关的操作(查找、读写等)

超级块——文件系统中第一个块被称为超级块。描述文件系统块大小、空闲表相关的属性(比如地址、每一项大小等)、根目录地址

空闲表——磁盘上空闲磁盘块

目录文件——存放文件名、文件属性、文件地址等信息

把目录文件拆分为两部分:与文件查找有关的部分(文件名、文件类型)、文件属性部分(inode、FAT)

顺序存储——把文件存放在连续的扇区上

链式存储——把文件存放在不连续的文件块上,每个文件快的结束端有存放有下一个文件块的地址

索引存储——把存放文件的所有块号集中放在一个索引结构上

优劣:顺序存储,读取速度更快,但容易浪费大量磁盘存储空间;链式存储,可以充分利用内存空间,但是不能随机访问文件内的任意部分,访问速度慢;索引存储,可以随机访问文件的任意部分,可以看作链式存储的优化方案。

linux磁盘文件系统采用ext2

组织方式:超级块、空闲块位图、只有目录名的目录文件、inode位图、inode(含文件属性、文件磁盘地址)、索引存储方式、ext_fIle_operations表、ext_file_inode_operations表

文件存储方式:索引存储。

硬链接目录共享一个inode。由于硬链接是直接将文件名与索引节点号(即inode号)链接,因此硬链接存在以下几个特点: 1、文件有相同的inode号及data block,这使得修改其中一个硬链接文件属性或文件数据时,其他硬链接文件都会发生相应修改;2、只能对已存在的文件进行创建;3、不能跨文件系统(即分区)进行创建;4、不能对目录文件进行创建;5、删除其中一个硬链接文件时,不会对其他硬链接文件产生影响。

软链接则是一个文件,文件内存储有目标文件的路径。创建软链接时,目标文件inode中的链接计数 i_nlink 不会增加。由于软链接有着自己的索引节点号(即inode号)以及用户数据块(data block),因此没有硬链接的诸多限制,它的特性如下:1、软链接有自己的文件属性、inode号和data block,但是编辑文件其实就是编辑源文件;2、可以对不存在的文件或目录进行创建;3、可以跨文件系统(即分区)进行创建,使用ln命令跨文件系统创建时,源文件必须是绝对路径,否则为死链接;4、可以对文件或目录文件进行创建;5、删除软链接并不影响源文件,但源文件被删除,则相关软链接文件变为死链接(dangling link),若源文件(原地址原文件名)重新被创建,则死链接恢复为正常软链接。

目的:封装好不同文件系统,向上提供统一的接口

组成:超级块superblock、目录项dentry、文件属性inode;文件系统类型file_system_type、描述文件系统安装在哪个父文件系统下vfsmount

如图在vfs中安装ext2和fat文件系统:即置i_ops、i_fops、d_ops为各个文件系统独有的操作,超级块中的s_fs_info指向具体文件系统的超级块;vfsmount中描述有文件系统的安装点。

先把安装点记录在vfsmount中。根据file_system_type中的读超级块方法,读取super_block,再根据super_block中的构造inode方法,构造一inode并初始化;然后根据inode->i_ops构造dentry

Ⅲ Linux文件存储和删除的过程

我们在Linux上创建或删除一个文件或文件夹,都习以为常,但这背后的实现原理是什么呢?

imap:inode map映射表

bmap:block map映射表

假如要存储a.txt到/tmp目录下。

当a.txt文件要存储到/tmp下时:

1) 元数据区分配node id :从元数据区的inode table中找一个空闲的inode号分配给a.txt,如2222。再将imap表中2222这个inode号标记为已使用。

2) 数据区添加记录 :在/tmp的data block中添加一条a.txt文件的记录。该记录中包括一个指向inode号的指针,例如"0x2222"。

3) 元数据区分配data block(每段空间)并写数据到数据区data block :从元数据区bmap中找出空闲的data block,并开始将a.txt中的数据写入到data block中。每写一段空间( ext4每次分配一段空间 )就从bmap中找一次空闲的data block,直到存完所有数据。

4) 元数据区设置inode id的data block point :元数据区在inode table中设置关于2222这条记录的data block point指针,通过该指针可以找到a.txt使用了哪些data block。

当要删除a.txt文件时:

1) 元数据区取消inode id的data block  point :在inode table中删除指向a.txt的data block指针。这里只要一删除,外界就找不到a.txt的数据了。但是这个文件还存在,只是它是被"损坏"的文件,因为没有任何指针指向数据块。

2) 元数据区释放node id :在imap中将2222的inode号标记为未使用。这个inode号就被释放,可以被后续的文件重用。

3) 数据区删除记录 :删除父目录/tmp的data block中关于a.txt的记录。这里只要一删除,外界就看不到也找不到这个文件了。

4) 元数据区释放data block :在bmap中将a.txt占用的block标记为未使用。这里被标记为未使用后,这些data block就可以被后续文件覆盖重用。

考虑一种情况,当一个文件被删除时,但此时还有进程在使用这个文件,这时是怎样的情况呢?外界是看不到也找不到这个文件的,所以删除的过程已经进行到了第(3)步。但进程还在使用这个文件的数据,也能找到这个文件的数据,是因为进程在加载这个文件的时候就已经获取到了该文件占用哪些data block,虽然删除了文件,但bmap中这些data block还没有标记为未使用。

详细分析和df的统计结果为什么不一样

热点内容
爱感大黑牛怎么连接安卓手机 发布:2025-02-04 04:41:31 浏览:218
publicftp 发布:2025-02-04 04:41:26 浏览:71
sqlserver超时 发布:2025-02-04 04:39:58 浏览:70
网络推理算法 发布:2025-02-04 04:37:00 浏览:260
c怎么存储数据 发布:2025-02-04 04:31:12 浏览:63
奥迪q3行驶证如何查配置 发布:2025-02-04 04:28:26 浏览:329
ebay商品上传 发布:2025-02-04 04:23:38 浏览:83
linux嵌入式书籍 发布:2025-02-04 03:44:07 浏览:334
sql分组最后一条 发布:2025-02-04 03:38:24 浏览:272
单宫数字奇门算法 发布:2025-02-04 03:33:57 浏览:865