挂载文件系统的细节

转载自骏马金龙《ext文件系统机制原理剖析》

1、挂载文件系统的细节

挂载文件系统到某个目录下,例如"mount /dev/sda8 /media/haypin/Test",挂载成功后/media/haypin/Test/目录中原来的文件全都暂时不可见了,且挂载后权限和所有者(如果指定允许普通用户挂载)等的都改变了,知道这是为撒么?

在将文件系统/dev/sda8挂载到挂载点/mnt之前,挂载点/media/haypin/Test/是根文件系统中的一个目录,/media/haypin/的data block中记录了/media/haypin/Test/的一些信息,其中包括inode号,而在inode table中,/media/haypin/Test对应的inode记录中又存储了block指针,此时这指针还是普通的指针。

当文件系统/dev/sda8挂载到/media/haypin/Test/上后,/media/haypin/Test/此时就称为另一个文件系统的入口了,因此它需要连接两边文件系统的inode和data block,具体来说是/media/haypin/Test/目录名的inode号"暂时"更改为根文件系统中的另一个inode号(原inode记录被标记为暂时不可用),而这个inode号却指向/dev/sda8文件系统的data block,从而将根文件系统与挂载的/dev/sda8文件系统联系起来:

(图中目录的data block为了图形简洁是将根文件系统中/media/haypin/Test目录的data block单独列在中间,根文件系统所有块组中其他目录的data block"合并"列到顶部,/dev/sda8文件系统所有块组中所有目录的data block列到底部。例如对父目录/media/haypin/,父父目录/media/、自身目录/meida/haypin/、原子目录/media/haypin/Test/、挂载后子目录/media/haypin/Test/中均有指向/media/haypin/的inode指针——文件名项)

在根文件系统的inode_table中,为/media/haypin/Test/重新分配一个inode记录m,该记录的block指针block_m指向文件系统/dev/sda8中的data block。既然为/media/haypin/Test/分配了新的inode记录m,那么在根目录的data block中,也需要修改其inode指针为inode_m以指向m记录。同时,原来inode table中的inode记录n就被标记为暂时不可用。

block_m指向的是文件系统/dev/sda8的data block,所以严格说来,除了/media/haypin/Test/的元数据信息即inode记录m还在根文件系统上,/media/haypin/Test/的data block已经是在/dev/sda8中的了。

这就是挂载新文件系统后实现的跨文件系统,它将挂载点的元数据信息和数据信息分别存储在不同的文件系统上。

挂载完成后,将在/proc/self/{mounts,mountstats,mountinfo}这三个文件中写入挂载记录和相关的挂载信息,并会将/proc/self/mounts中的信息同步到/etc/mtab文件中,当然,如果挂载时加了-n参数,将不会同步到/etc/mtab。

而卸载文件系统,其实质是移除临时新建的inode记录inode_m(当然,在移除前会检查是否正在使用)及其指针,并将指针指回原来的inode记录,这样inode记录中的block指针也就同时生效而找回原来的data block了。由于卸载只是移除inode记录,所以使用挂载点(sudo umount /dev/sda8)和文件系统(sudo umount /media/haypin/Test)都可以实现卸载,因为他们是联系在一起的。

下面是分析或结论。

①挂载点挂载时的inode记录是新分配的。

可以看到,根文件系统中的目录/media/haypin/Test/挂载前的inode号是16515078,目录中仅有一个文件Original.txt。挂载/dev/sda8后"."的inode号是2(这应该是指向的根文件系统根目录/的inode),目录中是/dev/sda8磁盘分区内的文件;注意到不同文件系统(磁盘分区)的inode号是会重复的,/media/haypin/Test/目录中其他文件的inode号就是/dev/sda8文件系统的inode号了,与根文件系统中的inode号可能重复。

②挂载后,挂载点原来的内容将暂时不可见、不可用,卸载后文件又再次可见、可用。

在卸载文件系统后,又会重新启动挂载点原来的inode记录,根文件系统的data block中的/media/haypin/Test的inode指针又重新指向该inode记录。

☂挂载后,挂载点的元数据和data block是分别存放于原文件系统、挂载文件系统上的。

④挂载点即使在挂载后,也还是属于源文件系统的文件。

2、多文件系统操作关联

3、ext3文件系统的日志功能

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值