首页 Linux正文

CentOS 7搭建NFS服务

王昊 Linux 2019-07-03 1336 0

什么是NFS

NFS就是Network File System的缩写,即网络文件系统。他可以通过网络,让不同的机器,不同的操作系统可以共享彼此的文件

要部署NFS服务,必须要安装两个软件包:nfs-utils:NFS主程序,rpcbind:PRC主程序

服务端配置:

yum install nfs-utils rpcbind

配置NFS服务:

主要配置文件:/etc/exports 默认为空,若没有此文件,则可以手动创建这个文件,例如:

vim /etc/exports

/data/web_data 192.168.11.0/24(rw,sync)

[共享目录] [客户端地址(权限)]

NFS权限设置,即/etc/exports文件配置中小括号内的参数

rw:可读写

ro:只读

sync:同步写入

async:异步写入

root_squash:对于访问NFS server共享目录的用户,如果是root的话会被压缩成为nobody用户身份

all_squash:不管访问nfs server共享目录的用户身份如何 包括root,它的权限都将被压缩成为匿名用户,同时他们的udi和gid都会变成nobody或nfsnobody账户的uid,gid。在多个nfs客户端同时读写nfs server数据时,这个参数很有用,可以确保大家写入的数据的权限是一样的。但不同系统有可能匿名用户的uid,gid不同。因为此处我们需要服务端和客户端之间的用户是一样的。比如说:服务端指定匿名用户的UID为2000,那么客户端也一定要存在2000这个账号才可以

anonuid:anonuid就是匿名的uid,说明客户端以什么权限来访问服务端

anongid:同anongid,就是把uid换成gid

启动NFS服务之前要先启动rpcbind服务

rpcbind安装成功后默认已开启,若没有启动,则手动启动rpcbind服务,并设置为开机自启

systemctl start rpcbind

systemctl enable rpcbind.service

查看RPC的状态

systemctl status rpcbind

RPC服务启动之后再启动NFS服务

默认未启动,要启动NFS服务并设置为开机自启

systemctl start nfs

systemctl enable nfs-server.service

查看NFS的状态

systemctl status nfs

客户端配置:

安装NFS软件包

yum -y install nfs-utils

客户端查看nfs共享状态

showmount -e 服务端IP

客户端挂载:

mount -t nfs 服务端ip:共享目录 挂载点

挂载操作长时间没反应的话请关闭服务端的防火墙和selinux

systemctl stop firewalld
setenforce 0 //临时关闭

查看本机共享的文件或目录

exportfs

关于NFS的共享权限和访问控制

使用客户端的root身份在nfs服务器上创建文件,文件的所有者和所属组是nfsnobody。



使用客户端的普通用户身份在nfs服务器上创建文件,所有者和所属组是nobody或普通用户。

如果设置了all_squash、anonuid、anongid,此时root 身份被压缩为指定用户;如果没有明确指定,此时root用户被压缩为nfsnobody

如果同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组

如果明确设定了普通用户被压缩的身份,那么此时客户端用户的身份转换为指定用户

如果NFS server上面有同名用户,那么此时客户端登录账户的身份转换为NFS server上面的同名用户;如果没有明确指定,也没有同名用户,那么此时 用户身份被压缩成nobody

NFS的开机自动挂载:

如果服务端或客户端的服务器重启之后需要手动挂载,我们可以加入到开机自动挂载

在客户端/etc/fstab里添加

服务端ip:共享目录 挂载点 nfs defaults,_netdev 1 1

注:第1个1表示备份文件系统,第2个1表示从/分区的顺序开始fsck磁盘检测,写0表示不检测,

_netdev 表示主机无法挂载直接跳过,避免无法挂载主机无法启动,可用于系统启动过程中网络不可用时系统自动停止挂载操作

df -h

以可读性较好的方式显示文件系统信息,可查看挂载是否成功

在服务端的共享目录中创建一个txt文件,在客户端的挂载目录中可查看到,可以说明共享目录中的文件可以进行共享了

NFS共享目录的卸载

(1)卸载客户端的挂载目录,在客户端执行以下命令

umount 共享目录

(2)停止服务器端的共享,在服务器端执行以下命令

exportfs -au

重新共享所有目录并输出详细信息,服务器端执行以下命令

exportfs -rv

exportfs命令

-a 全部挂载或卸载 /etc/exports中的内容

-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab

-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)

-v 在export的时候,将详细的信息输出到屏幕上。

例如:

exportfs -au 卸载所有共享目录

exportfs -rv 重新共享所有目录并输出详细信息

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论