nfs服务的基本配置

Posted ryzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nfs服务的基本配置相关的知识,希望对你有一定的参考价值。

本文环境:CentOS 7

 

简介

NFS(Network File System)是一个历史悠久的协议,由SUN公司于1984年开发,用于在UNIX-like系统之间共享某些目录,采用C/S架构,NFS服务器是一个大型文件服务器,将自己想要共享的某些目录设置为输出目录,然后客户端将需要的目录挂载到自己文件系统的某个目录下,以后客户端对这个目录内的各种操作(新建、删除、复制等)其实是操作于远程服务器对应的真实目录。

 

RPC协议

RPC(Romote Procedure Call)即远程过程调用,这项协议简单的说就是:编程人员可以像调用本地方法(或函数)一样调用一个位于远程计算机的方法(或函数),而这个方法(或函数)的调用过程对于编程人员是完全透明的,而NFS在通信时需要使用多个端口,而这些端口就是利用RPC进行协商并选定。

 

权限问题

客户端操作已挂载的共享目录内的文件的具体用户身份由主配置文件决定,如果所有用户都被压缩(all_squash)或者仅root被压缩(root_squash),那么被压缩的用户将被映射为nobody用户,这时在这个共享目录下操作文件的身份便是nobody

另外,服务器共享目录中的文件所属的UIDGID会被映射为客户端对应的用户,比如,

服务器有如下文件,

readme.txt UID=1000(Tom) GID=1000(Tom)

install.sh UID=1001(Bob) GID=1001(Bob)

startgui.py UID=1009(Jerry) GID=1009(Jerry)

客户端的passwd文件的部分如下,

Jack:x:1000:1000

Natasha:x:1001:1001

Bob:x:1002:1002

Simoth:x:1003:1003

那么在客户机挂载的共享目录中的文件所属情况如下,

readme.txt UID=1000(Jack) GID=1000(Jack)

install.sh UID=1001(Natasha) GID=1001(Natasha)

startgui.py UID=1009 GID=1009

如果想要访问remove.py文件,要取决于这个文件的其他人权限!

 

配置

1.服务器安装:

这里采用YUM源方式安装,

[root@localhost ~]# yum -y install nfs-utils

在安装时会自动安装rpcbind软件,这个软件正是RPC协议的一种具体实现,用于帮助 NFS选定端口。

 

2.配置主配置文件

NFS的主配置文件是/etc/exports,正如其字面意思,这个文件用于设置NFS的输出目录, 当NFS服务启动或重启时会自动读取此文件,然后根据此文件中设置的参数来输出对应 的目录,此配置文件配置规则比较简单,语法如下,

待输出目录 主机1(选择1,选择2[,...]) 主机2(选择1,选择2[,...]) [...]

常见的选项如下,(共享目录即被输出的目录,在NFS中输出目录也称为共享目录)

ro:共享目录只读,默认选项

rw:共享目录可读可写

root_squash:如果客户机使用root用户访问此共享目录,则被压缩为nobody用户,其 他用户不进行压缩,默认选项

all_squash:对所有访问此共享目录的用户都压缩为nobody

no_root_squash:对所有用户访问此共享目录时都不压缩,包括root也不会被压缩,所 以这个选项比较危险

anonuid:指定被压缩后的用户的UID,默认就是nobodyUID

anongid:指定被压缩后的用户的GID,默认就是nobodyGID

sync:同步更新,客户端将数据写入共享目录时,马上写入到服务器的硬盘中,默认选 项

async:异步更新,客户端将数据写入共享目录时,先将写入的数据留在客户机的内存 中,待空闲时再写入到服务器的硬盘中

insecure:允许客户机使用非保留端口(大于1024)与服务器进行连接

下面是一个简单的配置例子(请自行创建/home/nfsshare,并把权限改为777),

/home/nfsshare 192.168.88.0/24(rw,async)

解释:192.168.88.0/24用于设置这个网段,也可以用192.168.88.*代替,但是并不建议, 因为通配符*多用于匹配主机名。

 

3.验证配置

在重启nfs服务前要确保rpcbind服务已经运行,所以两个服务的启动顺序是:先启动 rpcbind,再启动nfs

[root@localhost ~]# systemctl start rpcbind

[root@localhost ~]# systemctl start nfs

使用exportfs命令可以在不重启nfs服务下更新输出目录,

exportfs:不加任何参数将打印当前正被输出的目录

exportfs -a:输出所有列在/etc/exports中的目录

exportfs -r:重新输出所有列在/etc/exports中的目录

exportfs -v:打印正被输出目录的详细信息

 

4.客户机配置

客户机如果需要使用showmount命令也需要安装nfs-utils软件,使用showmount可以 查看远程服务器所提供的输出目录,如在客户机输入如下命令,

[root@localhost ~]# showmount -e 192.168.88.128

Export list for 192.168.88.128:

/home/nfsshare 192.168.88.0/24

如果命令显示如下错误,

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

这是由于防火墙没放行相应的端口,关闭服务器的防火墙即可,

[root@localhost ~]# systemctl stop firewalld

如果命令显示如下错误,

clnt_create: RPC:Program not registered

这是由于rpcbind没启动,请重启nfs服务(因为重启nfs时,nfs会自动启动rpcbind 服务),如果重启无效,请手动按顺序重启这些服务,

[root@localhost ~]# systemctl stop nfs rpcbind

[root@localhost ~]# systemctl start rpcbind

[root@localhost ~]# systemctl start nfs

现在在客户机上挂在这个共享目录,

[root@localhost ~]# mount 192.168.88.128:/home/nfsshare /media

将共享目录挂载到/media目录,查看当前的文件系统,

[root@localhost ~]# df -hT

Filesystem                  Type      Size  Used Avail Use% Mounted on

/dev/mapper/centos-root      xfs       2.4G  1.3G  1.2G  54% /

devtmpfs                   devtmpfs  223M     0  223M   0% /dev

tmpfs                      tmpfs     235M     0  235M   0% /dev/shm

tmpfs                      tmpfs     235M  5.6M  229M   3% /run

tmpfs                      tmpfs     235M     0  235M   0% /sys/fs/cgroup

/dev/sr0                   iso9660   4.3G   4.3G   0 100% /mnt/localyumrepo

/dev/mapper/centos-home    xfs       505M   26M  479M   6% /home

/dev/sda1                  xfs       125M  107M   19M  86% /boot

/dev/mapper/centos-var      xfs       509M  207M  303M  41% /var

tmpfs                      tmpfs    47M     0   47M   0% /run/user/0

192.168.88.128:/home/nfsshare nfs4     505M   26M  480M   6% /media

可以看到远程的这个共享目录已经被挂载,并且文件系统类型是nfs4,现在的mount 命令可以不加-t参数来指定挂在目录的类型,mount命令能够自动区分大部分常用的 文件系统类型,-t参数用法如下,

[root@localhost ~]# mount -t nfs 192.168.88.128:/home/nfsshare /media

 

5.客户机永久挂载

上面挂载文件系统的方法是临时的,当下次系统重启后挂载的nfs共享目录就消失了, 想要永久挂载需要将挂载信息写入到/etc/fstab文件,正如字面意思,fstab全称是file system table,即文件系统表,操作系统每次开机会将这文件中设置的文件系统进行自 动挂载,输入如下代码即可实现nfsshare共享目录的永久挂载,

[root@localhost ~]# echo "192.168.88.128:/home/nfsshare /media nfs defaults 0 0" >>  /etc/fstab

永久挂载需要注意,在客户机启动时确保服务器正在运行,并且能够进行通信(比如服 务器的防火墙已经关闭或者放行了相应的端口),不然系统会因为无法挂载此共享目录 导致启动失败从而进入急救模式。

 

至此,NFS的基础配置已经完成!

 

以上是关于nfs服务的基本配置的主要内容,如果未能解决你的问题,请参考以下文章

53次课( NFS介绍 NFS服务端安装配置NFS配置选项)

五十NFS介绍NFS服务端安装配置NFS配置选项

NFS服务器的安装与配置

搭建nfs共享存储服务之二nfs服务端配置语法及配置实战详解

NFS介绍NFS服务端配置安装配置 NFS配置选项 客户端的配置

NFS服务搭建与配置