云网牛站
所在位置:首页 > Linux云服务器 > 在CentOS 7上配置NFSv3和NFSv4的步骤

在CentOS 7上配置NFSv3和NFSv4的步骤

2019-02-26 21:41:22作者:李群稿源:云网牛站

本文介绍在CentOS 7上配置NFSv3和NFSv4的具体步骤,唯一的条件是你应该安装CentOS 7服务器和数据目录以通过NFS导出到其它服务器,安装请参考在VMware中安装CentOS操作系统教程

在CentOS 7上配置NFSv3和NFSv4的步骤

 

第1步:安装NFS服务器

使用以下命令在CentOS 7上安装nfs-utils软件包:

# yum -y install nfs-utils

 

第2步:配置用于NFS的域(可选)

# vim /etc/idmapd.conf

Domain = computingforgeeks.com

 

第3步:配置NFS导出

NFS导出在文件/etc/exports下配置,/etc/exports文件控制将哪些文件系统导出到远程主机并指定选项,它遵循以下规则:

注释以井号(#)开头。

默认情况下会忽略空行。

每个主机的选项必须直接放在主机标识符后面的括号中,而主机和第一个括号之间没有任何空格。

每个导出的文件系统都应该在各自的行上。

授权主机列表需要用空格字符分隔。

长行可以用反斜杠(\)包装。

导出的文件系统的条目具有以下结构:

export host(options)

使用的变量是:

export - >正在导出的目录

host - >共享导出的主机或网络

options - >用于主机的选项

对于具有不同选项的多个主机,语法为:

export host1(options1) host2(options2) host3(options3)

NFS导出默认选项是:

ro:导出的文件系统是只读的,远程主机不能对文件系统上共享的文件进行任何更改,要允许主机同时进行读取和写入,请指定rw选项。

sync:对于此选项,NFS服务器不会在先前请求所做的更改写入磁盘之前回复请求,要改为启用异步写入,请指定选项async。

root_squash:这可以防止远程连接的root用户拥有root权限,相反,NFS服务器将为它们分配用户ID nfsnobody,这有效地“压缩”远程root用户对最低本地用户的能力,防止在远程服务器上可能的未授权写入,要禁用root压缩,请指定no_root_squash。

要压缩每个远程用户(包括root用户),请使用all_squash,要指定NFS服务器应从特定主机分配给远程用户的用户和组ID,请分别使用anonuid和anongid选项,如下所示:

export host(anonuid=uid,anongid=gid)

uid和gid分别是用户ID号和组ID号。

wdelay:如果它怀疑另一个写请求即将发生,则通过延迟写入磁盘来减少磁盘写入开销,启用默认同步时,可以使用no_wdelay禁用此功能。

subtree_check:此选项启用子树检查,可以使用no_subtree_check禁用它。

配置行的示例如下:

/mnt/data 192.168.1.0/24(rw,no_root_squash)

其中/mnt/data是导出的目录,192.168.1.0/24是允许以读/写权限访问它的网络,并且没有root压缩,指定的网络可以替换为单个IP地址,也可以使用*进行全局访问。

请注意,你必须显式覆盖每个导出的文件系统的每个默认值,例如,如果未指定rw选项,则导出的文件系统将以只读方式共享。

有关导出选项的更多信息,请参阅man exportfs。

 

第4步:为NFS配置防火墙

下一步是在防火墙上打开NFS服务所需的端口。

对于NFSv4,请使用以下命令:

# firewall-cmd --add-service=nfs --permanent

# firewall-cmd --reload

参考:CentOS 7下使用FirewallD构建动态防火墙

对于NFSv3,需要通过定义xml文件来添加额外的端口,这需要放在/etc/firewalld/services/目录下:

运行:cat  /etc/firewalld/services/nfs.xml

<?xml version="1.0" encoding="utf-8"?>

<service>

<short>NFS

<description>NFS service

<port protocol="tcp" port="111"/>

<port protocol="udp" port="111"/>

<port protocol="tcp" port="662"/>

<port protocol="udp" port="662"/>

<port protocol="tcp" port="892"/>

<port protocol="udp" port="892"/>

<port protocol="tcp" port="2049"/>

<port protocol="udp" port="2049"/>

<port protocol="tcp" port="32803"/>

<port protocol="udp" port="32803"/>

<port protocol="tcp" port="38467"/>

<port protocol="udp" port="38467"/>

<port protocol="tcp" port="32769"/>

<port protocol="udp" port="32769"/>

</service>

然后在防火墙上添加服务:

# firewall-cmd --add-service=nfs --permanent

# firewall-cmd --reload

 

第5步:启动并启用NFS服务

现在一切都已配置好,你应该已准备好启动该服务:

# for i in rpcbind nfs-server; do

systemctl start $i

systemctl enable $i

done

当你启动nfs服务时,/usr/sbin/exportfs命令启动并读取此文件,将控制权传递给实际安装过程的rpc.mountd(如果是NFSv3),然后传递给rpc.nfsd,然后文件系统可用于远程用户,它将导出的文件系统写入/var/lib/nfs/etab,可以使用以下命令查看:

# cat /var/lib/nfs/etab

 

第6步:发现NFS导出

有两种方法可以发现NFS服务器导出的文件系统,首先,在任何支持NFSv3的服务器上,使用showmount命令(showmount命令_Linux showmount命令使用详解:显示NFS服务器加载的信息):

$ showmount -e server

例如:

$ showmount -e localhost

Export list for localhost:

/mnt/test *

/mnt/data 192.168.1.0/24

对于仅支持NFSv4的服务器,请mount /并检查内容:

# mount  serverip:/ /mnt/

# cd /mnt/

# ls

 

第7步:在客户端上挂载导出的文件系统

客户端可以是支持NFSv3或NFSv4的任何操作系统,对于Debian/Ubuntu,请安装以下打包的:

$ sudo apt-get install rpcbind nfs-common

对于CentOS 7,安装nfs-utils:

$ sudo yum -y install nfs-utils

$ sudo systemctl start rpcbind 

$ sudo systemctl enable rpcbind

要执行非持久性安装,可以使用mount命令(mount命令_Linux mount命令使用详解:用于加载文件系统到指定的加载点):

mount -t 192.168.1.10:/mnt/data /data

要指定NFS版本,请使用-o选项

# mount -t nfs -o vers=4 192.168.1.10:/mnt/data /data

或者:

# mount -t nfs -o vers=3 192.168.1.10:/mnt/data /data

要使此持久化,需要修改/etc/fstab文件,NFSv3的安装如下所示在/etc/fstab上:

192.168.1.10:/mnt/data  /data nfs defaults,vers=3 0 0

你可以看到vers=3选项用于指定我们要挂载NFSv3,也可以指定其他支持的选项,如下所示:

192.168.1.10:/mnt/data /data nfs vers=3,proto=tcp,hard,intr,rsize=32768,wsize=32768,noatime 0 0

创建一个挂载点并挂载它:

# mkdir /data

# mount -a

# df -hT | grep /data

192.168.1.10:/data nfs 200G 175G 26G 88% /data

 

相关主题

第12章 使用Samba或NFS实现文件共享

精选文章
热门文章