Linux-linux分区中,比如第一块硬盘的分区上已经有一个挂载点/test,在第二块硬盘的分区上还可以继续挂载同名的挂载点,系统之后怎么来区分/test
我们在ls -ld /test的时候,是查看sda上的/test,还是查看sdb上的/test
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我们在ls -ld /test的时候,是查看sda上的/test,还是查看sdb上的/test
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
系统是不根据名称来区分你的文件,是根据inode
打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
我琢磨着这个题目的意思是想问,如果我两个分区/dev/sda5和/dev/sda6,先后挂载在/test目录的情况下,/test目录下面的内容到底是/dev/sda5分区的还是/dev/sda6分区的。
那我直接给出答案吧,谁最后挂载,访问该目录下的内容就是谁的分区上的内容。比如,我先mount /dev/sda5 /test;然后再/mount /dev/sda6 /test。那我在/test目录下看到的内容是/dev/sda6分区上的内容。当我执行umount /dev/sda6之后,这个时候/test目录下的内容就是/dev/sda5分区上的内容了。
首先,Linux是允许多个设备挂载到同一个目录的,该目录的目录项对象dentry结构体中有个d_mounted变量来表明这个目录上挂载了多少个文件系统,同时有个d_vfsmnt表明了挂载了哪些文件系统。(我觉得是这样,但也不是很确定,期待对VFS比较熟悉的人来完善)
想知道当前的 /test 挂载信息,直接敲 mount | grep test 就很清晰的说明问题喽,不用挣得的这么复杂,其他跟 冷阳 说的一样。
我们也可以抽象的认为挂载同一个路径的逻辑是一个栈,先进后出。
也就是说先前挂载到 /test 的内容,会因为之后其他挂载进来的内容而被压栈
待栈顶的内容被 umount,也就是出栈之后,最先被挂载的内容就成为了栈顶显示出来了
祝好,
斑驳敬上