1、已有一只硬盘,装一 centos 6.5,在 /dev/sda,并且有 /opt,里面有文件,
2、加了个硬盘,成为 /dev/sdb1,格式化成 ext4
3、白痴(我本人)用 mount /dev/sdb1 /opt。
4、mount -l,/dev/sdb1 是挂载成功的。
5、ls /opt,依然是原来 sda 上 /opt 的内容。
请问,这样是一种什么状态? 盘挂上了? 那么往后在 /opt 里写东西,是写在 /dev/sda 上,还是 /dev/sdb1 上?
很是妖异的事情,做完操作后,理论上 /opt 是挂载了 /dev/sdb1 的,我当时 ls 了,也确定了 pwd 的当前路径是没错的,里面的确还是 /dev/sda 储存的文件状态,我然后就来发了帖子,然后歇了一会,抽了根烟,
然后 umount 了一下 /dev/sdb
然后再 mout /dev/sdb1 /opt
再 ls /opt,/opt 里有个 lost+found 出现,成功了。。。
什么鬼。。。
根据我之前的经验,如果将一个分区挂到一个已经有目录或文件的目录下,那么,原来文件和目录将不再可见,后续读写将是在新的分区上,umount 之后,之前的目录和文件又可见了。
mount 一般要挂载到空目录,从新 mdir 一个文件夹再 mount 试试?
mount -l 挺长,你用 df 看看?
读写都是原路径,我理解是挂载点只是影响接入路径
有点危险,/opt 可能非空
如果 mount /dev/sdb1 /opt 后,/opt 的 inode 是会变的,会指向 /dev/sdb1 文件系统里的内容。
如果你在 mount 之前已经进入了 /opt 目录,那么在 mount 之后,不重新读取 /opt 的 inode 是看不到文件夹内容变化的;这时候 ls 会有些情况:
1. 直接 `ls`,因为`.`的 inode 没有刷新,你会看到 /dev/sda 的内容
2. `ls /opt`,因为 ls 读取了新的`/opt`inode,你会看到 /dev/sdb1 的内容
感谢各位热心解答,,,,,
@tatsuteng,想了一下,您的解答也许接近情况,因为我当时可能还在 /opt 的目录里做这个操作。。。。冏,再 ls 的时候,并没有更新 /opt....
/optls
和
/ls /opt
是两个操作……
哪个后执行,哪个“现在”起作用
多次 mount 是一层层叠起来的