Bo's Oracle Station

查看: 2228|回复: 4

Linux文件系统元数据保存在哪

[复制链接]

7

主题

29

帖子

117

积分

注册会员

Rank: 2

积分
117
发表于 2019-12-26 19:51:38 | 显示全部楼层 |阅读模式
本帖最后由 765686189 于 2019-12-27 18:20 编辑

唐老师,文件目录只保存内节点号和文件名,文件权限等信息保存在文件元数据,也就是文件系统数据库,类似mysql和Excel之类的数据库,我们可以看到实际文件存储位置,我想请问文件元数据和文件系统数据库的实际存储位置,原本我以为保存在文件头,但是touch了一个文件,发现文件是0字节,所以过来请教下,另外,如果保存在实际文件,可不可以使用其他操作系统取篡改这个文件的权限
另外,硬链接引用计数是否包含在父目录中,之前似乎说过目录只记录文件名和内节点号
回复

使用道具 举报

7

主题

29

帖子

117

积分

注册会员

Rank: 2

积分
117
 楼主| 发表于 2019-12-27 18:27:42 | 显示全部楼层
唐老师,公开课的时候您回答数据元数据保存在超级块当中,但是百科说明元数据保存在超级块后面的index区域,请问哪个是对的,我参考了下面这篇文档https://blog.csdn.net/luyajun97/article/details/88801659
回复 支持 反对

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2019-12-28 12:09:22 | 显示全部楼层
硬链接计数,就是统计本文件系统中所有目录里注册了的该内节点的count(*)次数,需要一些查询结构的支持,比如超级块后头的一些结构(如索引),从本质来看粗略而言,超级块就是元数据这可以说得过去。细节上超级块不够放信息了,它还有处理手段(块链接)。

文件元数据的存储位置:内节点。内节点是有大小的,ext4的128字节,xfs的256字节。文件大小为0也有内节点大小。
文件系统数据库的实际存储位置:文件系统本身就是数据库。任何数据库都有数据字典,而文件系统的数据字典存在超级块中。
同机上的其他操作系统是不大可能读得懂Linux的文件系统超级块结构,因此不存在篡改的可能性。


另外,不存在哪个是对的问题,我们只是不研究“内节点表”这个细节而已(如果纠结下去,课程会没有时间,也没有必要)。但是文章中提到的其他信息,比如“目录项”是和我们完全一致的。

QQ图片20191228122254.png


回复 支持 反对

使用道具 举报

7

主题

29

帖子

117

积分

注册会员

Rank: 2

积分
117
 楼主| 发表于 2019-12-28 13:58:39 | 显示全部楼层
botang 发表于 2019-12-28 12:09
硬链接计数,就是统计本文件系统中所有目录里注册了的该内节点的count(*)次数,需要一些查询结构的支持,比 ...

因为硬链接计数需要查询结构的支持,所以,硬链接计数保存在内节点当中,可以这样理解吗?
回复 支持 反对

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2019-12-28 22:47:22 | 显示全部楼层
765686189 发表于 2019-12-28 13:58
因为硬链接计数需要查询结构的支持,所以,硬链接计数保存在内节点当中,可以这样理解吗?

它知道硬链接计数的过程大致是:

1. 通过超级块和超级块后面的索引等结构汇总到所有目录文件里注册该内节点号的信息。
2. 把这个信息存入到该文件的内节点内容中。
3. 不同的文件系统处理手法还有差异。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-5-9 15:47 , Processed in 0.037759 second(s), 27 queries .

快速回复 返回顶部 返回列表