NFS简介
NFS是Network File System的缩写,即网络文件系统。一种使用于分散式文件协定,有SUN公司开发。功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据。
NFS在文件传送或信息传送的过过程中,依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。
NFS服务端、RPC协议、客户端三者可以理解为房源、中介、租客之间的关系:
类似Windows中的文件夹共享,如下有三台机器A, B, C,它们需要访问同一个目录,目录中都是图片,传统的做法是把这些图片分别放到A, B, C。但是使用NFS只需要放到A上,然后A共享给B和C即可。访问的时候,B和C是通过网络的方式去访问A上的那个目录。
在A机上安装 NFS 服务器所需的软件包:
yum install -y nfs-utils
安装的过程中,会自动安装rpcbind。
编辑exports文件,添加客户端主机:
vi /etc/exports
/home/nfs 192.168.222.201(rw,sync,fsid=0) 192.168.222.202(rw,sync,fsid=0) 192.168.12.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
配置说明:
这一行分为三个部分:
第一部分:/home/nfs ,这个是本地要共享出去的目录。
第二部分:允许访问的主机,可以是一个IP:192.168.222.201,也可以是一个IP段:192.168.12.0/24
第三部分:括号中部分
rw表示可读写,ro只读;sync :同步模式,内存中数据时时写入磁盘;async :不同步,把内存中数据定期写入磁盘中;no_root_squash :客户机用root访问该共享文件夹时,不映射root用户,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;root_squash:和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。fsid=0表示将/home/nfs整个目录包装成根目录,insecure 允许从这台机器过来的非授权访问
启动A机上nfs服务
先为rpcbind和nfs做开机启动:
systemctl enable rpcbind.service
systemctl enable nfs-server.service
然后分别启动rpcbind和nfs服务:
systemctl start rpcbind.service
systemctl start nfs-server.service
确认NFS服务器启动成功:
rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 30385 status
100024