NFS中的mount应用(1)(2)
设计实现细节
我们先看一下通用NFS装载系统的基础架构.通用NFS装载工具从内部向服务器发送一个请求,要求访问所有导出项.
图 2. 通用NFS装载工具请求访问所有导出项
收到服务器的回复之后,将执行清单 1 中的算法:
清单 1. 通用NFS装载工具的算法
Start
Create temporary directories for all versions.
Initialize list of mount security flavors.
Embed this list in each internal mount operation.
For each item in the export-list
Do
Mount internally for every NFSv2 and NFSv3 export
Update internal log
End for
Mount internally only once for NFSv4 export.
Update internal log
Stop
security flavors 是一个由逗号分隔的安全方法列表sys、krb5 和 krb5i 等).在装载点的 read/write 操作期间将用到这些方法.这个列表用于匹配服务器支持的安全方法.此外,随后在该装载点下发生系统调用时也用到该列表.相应的导出项的NFS版本也可以使用类似的机制.
当所有内部装载完成时,将使用 UnionFS 合并所有内部目录,如清单 2 所示.
清单 2. 使用 UnionFS 合并所有内部目录
mount -t unionfs -o dirs=<temp_dir1>[:<temp_dir2>...] none <mount-point>
还记得 前一个场景吗?在前面的场景中,客户机上有一个针对 v4 伪树的 NFSv4 装载,两个针对 Tools and Docs 的 NFSv3 装载,一个针对 Binaries 的 NFSv3 装载,并且我们使用通用NFS装载工具 —gennfsmount <NFS server> <mountpoint>— 将它们合并到一个装载中.在这个例子中,将创建以下临时目录:
◆/tmp/NFSv4
◆/tmp/NFSv3/Tools
◆/tmp/NFSv3/Docs
◆/tmp/NFSv2/Binaries
然后使用 unionfs 合并它们,如清单 3 所示:
清单 3. 使用 unionfs 进行合并
mount -t unionfs -o dirs=/tmp/NFSv4:/tmp/NFSv3:/tmp/NFSv2 none /mnt
这会生成以下目录结构:
图 3. unionfs 生成的目录结构
接下来,我们看看如何使用这个系统.
评论暂时关闭