注意:绑定挂载文件系统是有顺序的,sudo mount --bind source_dir target_dir将source_dir绑定挂载到target_dir,target_dir目录节点的inode将暂时指向source_dir的目录节点,直到sudo umount target_dir,target_dir才会还原成指向其原来的目录节点。
挂载文件系统时,挂载点所在父目录的data block中"挂载点目录名"关联的inode暂时替换为新的inode,该新的inode将指向挂载的文件系统"根目录"的data block,从而实现文件系统间的连接;umount时,挂载点所在父目录的data block中"挂载点目录名"关联的inode将还原为挂载之前的inode;
"绑定挂载"一个目录到另一个目录(可以不为空),也是同样的道理,绑定挂载点所在父目录的data block中"挂载点目录名"关联的inode暂时替换为被挂载目录的inode,但ls -lai显示绑定挂载目录时,显示的绑定挂载目录./temp0/temp1_bind的上层目录仍是./temp0,而不是被绑定目录./temp1的上层目录./,即不是完全按照目录的inode记录的data block中../来输出。
举例:绑定挂载./temp1目录到./temp0/temp1_bind目录。
先查看绑定之前./temp0/temp1_bind的内容:

绑定./temp1到./temp0/temp1_bind目录:
sudo mount --bind ./temp1 ./temp0/temp1_bind
查看上下文节点,以及绑定后./temp0/temp1_bind内容:

ls -lai绑定挂载目录时,显示的绑定挂载目录./temp0/temp1_bind的上层目录仍是./temp0,而不是被绑定目录./temp1的上层目录./,即不是完全按照目录的inode记录的data block中../来输出,./temp1目录的inode的data block中../肯定是指向./的。
sudo umount ./temp0/temp1_bind
解绑之后./temp0/temp1_bind的内容:

此时./temp0/temp1_bind目录名的inode又还原成绑定挂载前的inode了。

本文深入解析了绑定挂载的工作原理,包括如何通过sudomount--bind命令将source_dir绑定到target_dir,以及这一过程对inode和datablock的影响。同时,文章详细介绍了挂载和解绑操作对目录节点的影响,以及ls-lai命令在绑定挂载场景下的特殊表现。
1233

被折叠的 条评论
为什么被折叠?



