NFS是一种基于TCP/IP传输的网络文件系统协议,最初由SUN公司开发。通过使用NFS协议客户机可以向访问本地目录一样访问远程服务器中的共享资源。对大多数负载均衡群集来说,使用NFS协议来共享数据存储比较适用。
NFS服务的实现依赖于RPC(remote process call,远端过程调用)机制,以完成远程到本地的映射过程,在centos6中,需要安装nfs-utils,rpcbind软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。
- 1 安装nfs-utils,rpcbind,提供NFS共享的服务为nfs,完成安装以后建议调整两个服务的自启动状态,以便每次开机后自动启动。手动加载NFS共享服务时,应该先启动rpcbind,然后在启动nfs。(因为NFS要向RPC注册端口信息)
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
- 2 设置共享目录
NFS的配置文件为/etc/exports,文件内容默认为空(无任何共享),在exports文件中设置共享资源时,记录格式为:”目录位置 客户机地址(权限选项)”。例如要将文件夹
/backup共享给192.168.152.0网段使用,允许读写操作。
[root@localhost ~]# mkdir /backup
[root@localhost backup]# cat /etc/exports
/backup/ 192.168.88.0/24(rw,sync,no_root_squash)
解释一下:
其中客户机地址可以是主机名、ip地址、允许使用“*”等通配符,多个时空格隔开即可;权限选项中的rw表示允许读写;rw为只读;sync表示同步写入,no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)
- 3启动NFS服务
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# ss -ntlp | grep rpcbind
LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=40188,fd=4),("systemd",pid=1,fd=45))
LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=40188,fd=6),("systemd",pid=1,fd=47))
在客户机中访问NFS共享资源:
NFS协议的目标是提供一种网络文件系统,因此对NFS共享的访问也使用mount命令来进行挂载,对应的文件系统类型为nfs。
若要正常访问NFS共享资源,客户机中也需要安装rpcbind软件包,并启动rpcbind服务,另外为了使用showmount查询工具,最好将nfs-utils软件包也装上。
-
- 安装
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
-
- 查看NFS服务器端共享目录
[root@localhost ~]# showmount -e 192.168.88.8
Export list for 192.168.88.8:
/backup 192.168.88.0/24
-
- 手动挂载NFS共享目录:
以root用户身份执行mount操作,将NFS服务器共享的/usr/local/nginx/html目录挂载到本地目录的/usr/local/nginx/html。与挂载不同的是,设备位置应该指出服务器地址。
- 手动挂载NFS共享目录:
[root@localhost ~]# mount 192.168.88.8:/backup /backup
-
- 查看挂载结果:
[root@localhost ~]# tail -1 /etc/mtab
192.168.88.8:/backup /backup nfs4 rw,relatime,vers=4.1,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.88.88,local_lock=none,addr=192.168.88.8 0 0