42 FreeBSD连载:NFS客户支持( 二 )


通常使用/etc/amd.map用作amd的映射文件,这个文件就用于告诉amd子目录与文件系统的对应关系 。下面是一个最简单的映射文件amd.map:
# cat /etc/amd.map/defaultstype:=host;fs:=${autodir}/${rhost};rhost:=${key}nfssrvtyps:=nfs;rhost:=nfssrv;rfs:=/exports第一行使用/defaults定义缺省的设置,type参数用于定义维护的文件系统的类型,host类型为通过NFS安装远程服务器中直接在exports文件中输出的目录,fs参数为amd安装文件系统使用的安装位置,变量autodir为amd维护安装文件系统的目录,而rhost变量为远程计算机的名字,需要进行设置 。缺省的rhost变量设置为${key}的值,当用户访问amd监视目录的子目录时,key就被设置为这个子目录的名字 。通过这个缺省设置,当用户访问amd监视目录的任意一个子目录时,这个子目录名就被转换为远程NFS服务器的名字,amd就自动将这个服务器共享的目录安装到fs定义的安装位置上 。
第二行设置一个专有的映射关系,第一列也是amd设置的key值,当访问对应的子目录时就启动这个设置,这一个安装点为nfs类型,nfs类型与host略有不同,host类型只需要rhost定义,而查询服务器上的共享出的目录来自动安装,而nfs类型则要配置者手工指定远程主机共享的目录,这就需要设置rfs参数 。通常在自动维护的计算机数量较少时,使用nfs类型更明确,否则可以使用host类型以简化配置工作 。
设置好映射文件之后,就可以运行amd守护进程了 。
# amd -a /net -c 1800 /host /etc/amd.map# ls /host# cd /host/nfssrv# ls -l /hostnfssrv上面的amd的命令参数为,第一个-a参数告诉amd将真实的文件系统安装到/net这个临时目录下,在执行amd之前必须建立这个空目录,这个目录将被amd作为autodir变量设置映射关系;-c参数用于指明超时参数,经过这个时间间隔内没有访问这个文件系统上的内容,就卸载已安装的文件系统,设置为1800秒;而/host目录为amd监视用户访问的目录,访问这个目录中的子目录,就会触发amd守护进程,例如上例中使用cd /host/nfssrv访问nfssrv子目录,那么amd就将启动,将nfssrv设置为key值,因此amd就读取/defauts设置的缺省参数和nfssrv这个key值对应的参数,然后执行自动安装过程 。最后一个参数就是指定映射文件为/etc/amd.map 。
因此,amd的处理过程可以总结为:用户首先访问/host目录下的子目录,触发amd;amd使用子目录的名字作为key值,读取相应映射文件中的设置,将文件系统安装到/net目录下的相应目录上(fs定义的目录);最后amd在/host目录下以key值建立符号连接,指向已经安装到/net目录下的真实文件系统,使得用户访问子目录的操作能够正常完成 。
amd主要是和NFS结合使用,用于维护多台服务器的用户和文件目录的一致性,然而amd不仅仅能用于维护NFS文件系统,同样也可以用于维护其他种类的文件系统,如CD9660、本地文件目录的连接,以及扩展到运行一个程序等方式自动安装相应的文件系统,对于这些非NFS文件系统,就需要使用不同的type参数定义不同的类型 。例如可以使用amd将所有用户的个人目录维护在同一个路径下,而不是事实上分布在不同目录和主机上,等等 。此时,amd.map应为:
/defaultsopts:=rw,grpid,nosuid,nodev
wbhost==wb;type:=link;fs:=/home/wb
【42 FreeBSD连载:NFS客户支持】cdopts:=ro;host==wb;type:=cdfs;dev:=/dev/wcd0c

推荐阅读