NFS 在文件传送或信息传送过程中依赖 RPC(Remote Procedure Call)协议,即远程过程调用,NFS的各项功能都必须向 RPC 来注册,如此一来 RPC 才能了解 NFS 这服务的各项功能 Port,PID,NFS 在服务器所监听的 IP 等,而客户端才能透过 RPC 的询问找到正确对应的端口,所以 NFS 必须要有 RPC 存在是才能成功的提供服务,简单的理解二者关系:NFS 是一个文件存储系统,而 RPC 是负责信息的传输。
通过上面的简介,我们知道 NFS 服务需要依赖 RPC 服务,所以这里 NFS 服务端需要安装 rpcbind 和 nfs-utils ,客户端只需要安装 nfs-utils 即可,由于我们选用 CentOS 系统,所以可以使用 yum 快速的安装。
然后安装 NFS 服务
另:Ubuntu 16.04 安装命令
我们在服务端创建一个共享目录 /data/share ,作为客户端挂载在远端入口,然后设置权限
然后,修改 NFS 配置文件 /etx/exports
说明一下,这里配置后边有很多参数,每个参数有不同的含义,具体可以参考下边。此处,我配置了将 /data/share 文件目录设置为允许IP为 192.168.0.0/24 区间的客户端挂载。然后,如果客户端IP不在该区间也想要挂载的话,可以设置IP区间更大或者设置为 * 即允许所有客户端挂载,例如: /home *(ro, sync,insecure,no_root_squash) 设置 /home 目录允许所有客户端只读挂载。
接下来,我们先启动 RPC 服务
我们发现,启动了 NFS 服务后,RPC 注册的端口列表明显增多。现在服务端都启动起来了,在服务端看下是否正确加载了设置的 /etc/exports 配置
最后,在另一台Linux虚拟机上测试一下,是否能够正确挂载。首先,我们可以在客户端查看下NFS服务端设置可共享的目录信息
然后,在客户端创建挂载目录/share
最后,挂载远端目录到本地 /share 目录
可以看到,可以正确将远端 NFS 目录挂载到本地。注意:挂载点 /share 目录必须已经存在,而且目录中没有文件或子目录
最后,我们在 NFS 服务端 /data/share 目录下创建一个文件,看下客户端能否正确读取并修改
都可以了,这里因为上面设置了 NFS 远端目录权限为 rw 拥有读写权限,如果设置为 ro ,那么客户端只能读取,不能写入。根据实际应用场景合理配置。
NFS 默认使用 UDP协议进行挂载,为了提供 NFS 的稳定性,可以使用 TCP 协议挂载,那么客户端挂载命令如下:
最后,卸载命令
在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。\x0d\x0a1、Solaris系统NFS服务端配置方法如下:\x0d\x0a (1)修改 /etc/dfs/dfstab, 增加共享目录\x0d\x0ashare -F nfs -o rw /export/home/sunky\x0d\x0a (2)启动nfs服务\x0d\x0a# /etc/init.d/nfs.server start\x0d\x0a (3)NFS服务启动以后,也可以使用下面的命令增加新的共享\x0d\x0a# share /export/home/sunky1\x0d\x0a# share /export/home/sunky2\x0d\x0a 注:/export/home/sunky和/export/home/sunky1是准备共享的目录\x0d\x0a\x0d\x0a2、linux系统NFS服务端配置方法如下:\x0d\x0a (1)修改 /etc/exports,增加共享目录\x0d\x0a/export/home/sunky 10.140.133.23(rw)\x0d\x0a/export/home/sunky1 *(rw)\x0d\x0a/export/home/sunky2 linux-client(rw)\x0d\x0a 注:/export/home/目录下的sunky、sunky1、sunky2是准备共享的目录,10.140.133.23、*、 linux-client是被允许挂接此共享linux客户机的IP地址或主机名。如果要使用主机名linux-client必须在服务端主机 /etc/hosts文件里增加linux-client主机ip定义。格式如下:\x0d\x0a 10.140.133.23 linux-client\x0d\x0a (2)启动与停止NFS服务\x0d\x0a /etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)\x0d\x0a /etc/rc.d/init.d/nfs start 启动NFS服务\x0d\x0a /etc/rc.d/init.d/nfs stop 停止NFS服务\x0d\x0a 注:若修改/etc/export文件增加新的共享,应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用。使用命令exportfs -rv也可以达到同样的效果。\x0d\x0a3、linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享\x0d\x0a # mkdir _p /mnt/nfs\x0d\x0a 注:建立一个目录用来作挂接点(mount point)\x0d\x0a #mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs\x0d\x0a 注:这里我们假设10.140.133.9是NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/etc/hosts文件里增加服务端ip定义。/export/home/sunky为服务端共享的目录。\x0d\x0a如此就可以在linux客户端通过/mnt/nfs来访问其它linux系统或UNIX系统以NFS方式共享出来的文件了。以上 *** 作在 redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86&sparc环境下测试通过。\x0d\x0a权限问题:\x0d\x0a假设 server 端的使用者 jack, user id 为 1818, gid 为 1818, client 端也有一个使用者 jack,但是 uid 及 gid 是 1818。client 端的 jack 希望能完全读写 server 端的 /home/jack 这个目录。server 端的 /etc/exports 是\x0d\x0a这样写的:\x0d\x0a /home/jack *(rw,all_squash,anonuid=1818,anongid=1818)\x0d\x0a这个的设定档的意思是,所有 client 端的使用者存取 server 端 /home/jack 这\x0d\x0a目录时,都会 map 成 server 端的 jack (uid,gid=1818)。我 mount 的结果是\x0d\x0a1. client 端的 root 可以完全存取该目录, 包括读、写、杀??等\x0d\x0a2. client 端的 jack (uid,gid=1818) 我可以做:\x0d\x0a rm -rf server_jack/*\x0d\x0a cp something server_jack/\x0d\x0a mkdir server_jack/a欢迎分享,转载请注明来源:内存溢出
评论列表(0条)