NFS文件共享服务器安装部署


一.NFS概述

1.概述

NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源

NAS存储: NFS服务的实现依赖于RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。

在Centos 7系统中,需要安装nfs-utils、 rpcbind 软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。

手动加载NFS共享服务时,应该先启动rpcbind, 再启动nfs。

nfs端口:2049

RPC端口:111

2.特点

采用TCP/IP传输网络文件

安全性低

简单易操作

适合局域网环境

二.NFS工作原理

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;

2.1NFS工作流程

1.首先服务器端启动RPC服务,并开启111端口

2.服务器端启动NFS服务,并向RPC注册端口信息

3.客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4.服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5.客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

2.2挂载原理

当我们在NFS服务器设置好一个共享目录/opt后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义。

如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/opt的所有数据。

三.守护进程

NFSD:基本的守护进程,管理客户端能否登录服务器
mountd:RPC安装守护进程,管理NFS文件系统
rpcbind:端口映射(服务器将开放的端口告诉客户端,客户端再通过服务器告诉它的端口号去连接服务器 )

四.常用的目录

/usr/sbin/exportfs NFS服务管理命令

/usr/sbin/showmount 客户端查看命令

/var/lib/nfs/etab 记录NFS分享出的目录完整权限

/var/lib/nfs/xtab 记录曾经登陆过的客户端信息

/etc/exports NFS主要配置文件
文件格式:
<输出目录> [客户端1 选项(访问权限 用户映射 其他)]
<输出目录> [客户端2 选项(访问权限 用户映射 其他)]
输出目录:NFS系统中需要给客户端使用的目录
客户端:网络中可以访问NFS输出目录,即谁可以访问NFS输出目录
选项:用来设置输出目录的访问权限

五.常用的命令以及选项

5.1 常用命令

exportfs -v  //查看详细的nfs信息
exportfs -r  //重读配置文件
showmount -e //查看本机发布的NFS共享目录
showmount -e +IP //查看IP地址发布的NFS共享目录
mount -t nfs 192.168.48.6:/opt /mnt //将NFS服务端192.168.48.6下的/opt挂载到/mnt下
rpcinfo -p localhost  //查看rpc注册的端口信息

5.2常用的选项

rw	允许读写
ro	只读
sync	同步写入
async	先写入缓冲区,必要时才写入磁盘,速度快,但会丢数据
subtree_check	若输出一个子目录,则nfs服务将检查其父目录权限
no_subtree_check	若输出一个字目录,不检查父目录,提高效率
no_root_squash	客户端以root登录时,赋予其本地root权限
root_squash	客户端以root登录时,将其映射为匿名用户
all_squash	将所有用户映射为匿名用户

六.NFS服务部署

1 检查并安装软件

[root@centos8 ~]# rpm -qa rpcbind nfs-utils
[root@centos8 ~]# yum install -y rpcbind nfs-utils

2 服务器端配置

2.1 创建共享目录

[root@centos8 ~]# mkdir /root/nfsdir

2.2 编辑配置文件

[root@centos8 ~]# vim /etc/exports    //NFS的配置文件,默认文件内容为空(无任何共享)

/root/nfsdir 192.168.41.0/24(rw,sync)    //设置/root/nfsdir为共享目录,允许192.168.41.0网段的IP地址主机访问

2.3 启动服务

[root@centos8 ~]# systemctl start rpcbind    //一定要先开启rpcbind服务

[root@centos8 ~]# systemctl start nfs-server.service     //如服务已启动,更改完配置信息后需要重启服务

[root@centos8 ~]# showmount -e 192.168.41.132   //查看服务端的共享目录及网段
Export list for centos8:
/root/nfsdir 192.168.41.0/24

[root@centos8 ~]# exportfs -v    //查看服务端的nfs详细信息
/root/nfsdir    192.168.41.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

3 客户端配置

3.1 检查并安装软件

[root@centos7 ~]# rpm -qa rpcbind nfs-utils
[root@centos7 ~]# yum install -y rpcbind nfs-utils

3.2 启动服务

[root@centos7 ~]# systemctl start rpcbind
[root@centos7 ~]# systemctl start nfs-server.service

3.3 将共享目录挂载到本地

[root@centos7 ~]# showmount -e 192.168.41.132   //查看服务器端发布的NFS共享目录
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)    
//查看失败,ping服务器可以平通,说明是防火墙的问题,临时关闭服务器的防火强

[root@centos7 ~]# showmount -e 192.168.41.132    //关闭服务器防火墙后再次查看服务器发布的NFS共享目录
Export list for 192.168.41.132:
/root/nfsdir 192.168.41.0/24

[root@centos7 ~]# mount -t nfs 192.168.41.132:/root/nfsdir /root/nfs    //将服务器共享的目录挂载到客户端的自定义目录下面
[root@centos7 ~]# df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     894M     0  894M   0% /dev
tmpfs                        910M     0  910M   0% /dev/shm
tmpfs                        910M   11M  900M   2% /run
tmpfs                        910M     0  910M   0% /sys/fs/cgroup
/dev/mapper/centos-root       46G  4.8G   41G  11% /
/dev/sda1                   1014M  185M  830M  19% /boot
tmpfs                        182M   12K  182M   1% /run/user/42
tmpfs                        182M     0  182M   0% /run/user/0
192.168.41.132:/root/nfsdir   47G  7.3G   40G  16% /root/nfs

4 测试

4.1 再服务器共享目录中创建新的文件

[root@centos8 nfsdir]# vim a.txt
[root@centos8 nfsdir]# cat a.txt
123
123456
123456789

4.2 再客户端查看文件内容

[root@centos7 ~]# cd nfs/
[root@centos7 nfs]# ls
a.txt
[root@centos7 nfs]# cat a.txt
123
123456
123456789

至此,NFS文件共享服务已搭建完成