NFS(Network file system)服务器实现了局域网不同主机、不同操作系统的文件共享。
注意,客户端和服务端必须具备相同的账号才能够访问目录或者文件。
图.1 NFS服务器共享目录与client示意图
基本上NFS端口是2049,但它还有其它的程序启动额外端口,功能非常多,所以使用了RPC(Remote Procedure Call)来管理。
RPC
所有NFS服务都会将端口信息注册给RPC,所以RPC起到了中介的作用,在服务端和客户端之间作为一个桥梁。
访问NFS存在一些问题,与用户名、uid等有关,造成一些身份的错乱(NIS服务解决了问题,这里不展开),下面仅假设服务端和客户端有相同的用户名和用户名对应的uid也想同(毕竟是在一个机器上测试,肯定相同啦)。
/etc/exports NFS主要配置文件
/usr/sbin/exportfs 维护NFS的命令,操作/etc/exports文件
/var/lib/nfs/* 包含日志文件etab\xtab
/usr/sbin/showmount 客户端查询服务器共享资源的命令
①/etc/exports
root@jammg:/etc# cat exports ... /tmp 192.168.1.0/24(rw,no_root_squash) *ecu.cn(ro) localhost(rw) ...如上,192.168.1.0这个网段的主机可以读写该目录,但请注意,最终的权限还要看用户在此目录的权限(drwxrwxrwx),no_root_squash代表以root登陆时不会被压缩成匿名用户;可使用通配符,ecu.cn域的主机均可读。还有很多其它参数,这里不介绍。
注意,每个主机限制以空格分开。
启动NFS服务:
#/etc/init.d/rpcbind start [ ok ] Starting rpcbind (via systemctl): rpcbind.service.
showmount [-ae] [hostname|ip] -a 显示当前主机NFS连接共享状态 -e 显示指定主机/etc/exports共享的状态
#showmount -e localhost Export list for localhost: /tmp 192.168.1.115可以看到/tmp目录被共享出来。
另外,如果重新修改了/etc/eaports可不用重启NFS,使用exportfs命令:
exportfs [-aruv] -a 重新挂载(或卸载,因为目录可能是增或是减)/etc/exports -r 重新挂载 -u 卸载某一目录 -v 在屏幕输出共享信息
root@jammg:/etc# exportfs -arv exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.115:/tmp". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x exporting 192.168.1.115:/tm此时,共享的信息就被更新了。
挂载:
#mkdir testnfs #mount -t nfs 192.168.1.115:/tmp /testnfs #cd testnfs;ls -la 总用量 92 drwxrwxrwt 19 root root 4096 3月 31 18:11 ./ drwxr-xr-x 24 root root 4096 3月 30 20:08 ../ -rw------- 1 jammgit jammgit 0 3月 31 10:43 config-err-cyE39x srw------- 1 jammgit jammgit 0 3月 31 10:43 fcitx-socket-:0= .... drwxrwxrwt 2 root root 4096 3月 31 10:43 .X11-unix/ drwxrwxrwt 2 root root 4096 3月 31 10:42 .XIM-unix/可以看到/tmp目录的内容以成功挂载到/testnfs。
卸载:
#umount /testnfs