mount过程分析之六——挂载关系(图解)

本文详细分析了Linux系统中挂载过程,探讨了file_system_type、super_block和mount实例之间的关系,以及父子挂载点、多文件系统单挂载点和单文件系统多挂载点的挂载关系。通过实例解释了如何理解这些概念,并为后续的mount操作和路径名解析做了铺垫。
摘要由CSDN通过智能技术生成

引言

写到这里我们已经从mount文件系统调用的入口开始,分析到内核的mount,通过VFS层进入到具体文件系统实现的mount函数,最终得到具体文件系统的super block信息后构建出一个新的struct mount结构,返回给do_add_mount继续下面的操作。本来在这节我想从do_add_mount的代码开始把mount最后一部分——加入全局文件系统树讲完。但是写到一半我发现自己写不下去了,因为单纯的对代码进行注释没有办法解释很多基本的问题,到底挂载实例和文件系统有什么关系?我觉得不把这个说一下没有办法往下写,所以插入这样一节,我们来看一下挂载实例(struct mount/ struct vfsmount)和super block, dentry, inode, file_system_type的关系,以及一个文件系统挂载到另一个文件系统下时到底是怎么样的关系。

为了说明的方便,我们下面以这样的场景为例进行描述:

1. 系统中有xfs, ext2和minix等若干文件系统模块

2. 现有/dev/sda1和/dev/sdb1上存在xfs文件系统,/dev/sda2上为ext2文件系统,/dev/sdc1上为minix文件系统

3. 将/dev/sda1挂载到/mnt/a上,将/dev/sdb1挂载到/mnt/b上,将/dev/sdc1不挂载

4. 在第三步之后,将/dev/sda2也挂载到/mnt/a上。再将/dev/sda1同时挂载到/mnt/x上

file_system_type + super block + mount的关系

从file_system_type到super_block到mount实例的角度来看,上述关系大致是这样的:

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值