文件系统可以把 XX文件放到 YY目录,也可以把 DD目录 放到 YY目录。当我们像访问某个文件 或者 目录的时候,必须知道其路径才可以,比如
Windows C:\Program Files\Application Verifier\helo.txt
Linux /user/someone/hello.txt
Linux 不像 Windows有盘符(C、D、E等等),这完全是设计问题。
Windows默认以各个分区为总入口,然后再入口下建立一级一级目录。
Linux默认以全局为总入口,各个分区被挂到某个目录。
如果Linux也想跟Windows一样,可以把分区挂载到 / 目录下。例如 sda1分区挂载到/sda1,sda2分区挂载到/sda2,以此类推。
既然Linux可以做出类似于WIndows盘符的行为,那么Windows可以像Linux一样,把某个分区挂载到某个目录下吗?? 可以。 这种目录叫做 虚拟目录(Virtual Directory,即目录中存放的不是属于这个目录的文件或者目录,而是另一个存储空间的目录树。
在一个多点集群环境中,每个节点都有各自的虚拟目录,这个虚拟目录会记录其他节点上存储空间的目录树。
其实虚拟目录,本质上就是另一个存储空间的目录树。就像幼儿园小朋友打架,打架的是小盆友,但是出问题是找家长,因为家长知道小朋友在哪。虚拟目录的本质是另一存储空间的目录树,抓住这个 目录树 ,一切就清晰明了了。
集群内各个节点都有自己的文件系统以及Mount Point,每个节点都可以向外部Export所有节点上的Mount Point。例如:节点A将自己的分区sda1挂载到/user/zq/temp路径下,然后这个路径被NFS Export出去给客户端访问。那么节点A会通知其他节点生成这条Mount Point,这样其他节点会知道这个路径/user/zq/temp的实际存储空间并不在本地所管理的存储空间上,而位于节点A上。一旦其他节点收到针对这个路径的访问请求,由于他知道要访问的数据不再自己身上,当然肯定也不知道在哪取数据。但是他知道A知道数据在哪,所以针对节点后端不共享存储,节点后端共享存储,又有2种获得访问数据的方法。
在一个集群环境中,是不允许出项2个同名路径的,这就是Single Name Space (全局统一命名空间)