MENU

Debian 9/Ubuntu 16.04 如何配置使用NFS服务

2019 年 08 月 02 日 • 阅读: 129 • 运维技术阅读设置

说明:网络文件系统(NFS)是一种文件系统协议,允许类Unix系统的用户进行文件传输,通过网络访问文件,就像使用本地存储一样,类似还有WebdavSamba文件传输协议。这对于跨Internet上的多个计算机数据传输或文件共享都很有用。例如,您可以通过访问NFS共享用户或系统配置文件的主目录。今天就来简单的介绍一下如何在 Debian 9 或 Ubuntu 16.04 系统中搭建NFS服务端和NFS客户端。

此教程的环境为:1. 两台服务器(一台作为NFS客户端、一台作为服务端)请最好保证能在同一个局域网内。否者数据传输将占用网络带宽。2. 本教程基于局域网的两台搭载 Debian 9 系统的机器上执行,如果你是 Ubuntu 16.04系统也可以进行参考,同样适用。

NFS服务器设置

在其中一台 Debian 9 机器搭建NFS服务器。按照下面步骤进行操作,首先更新软件源:

sudo apt update

安装 nfs-kernel-serverportmap

sudo apt install nfs-kernel-server
sudo apt-get install portmap

默认情况下,可以添加下面这行命令到/etc/hosts.deny文件中来阻止访问NFS使用的服务。

rpcbind mountd nfsd statd lockd rquotad : ALL

如果要允许访问NFS用于客户端和localhost的服务。将以下行添加到您的/etc/hosts.allow文件中,并替换example_IP为客户端的IPv4地址。

rpcbind mountd nfsd statd lockd rquotad : 127.0.0.1 : allow
rpcbind mountd nfsd statd lockd rquotad : example_IP : allow
rpcbind mountd nfsd statd lockd rquotad : ALL : deny

创建共享

在本地文件系统中创建一个目录,作为NFS共享的根目录:

sudo mkdir /var/nfsroot

为NFS共享的根目录,分配权限:

sudo chown nobody:nogroup /var/nfsroot/

导出共享

将以下命令行添加到/etc/exports主配置文件中,替换example_IP为客户端的IPv4地址。(注意!ip地址和左括号之间没有空格,并且文件末尾有一个空行)

/var/nfsroot     example_IP/(rw,sync,root_squash,subtree_check)

注:/var/nfsroot 为NFS共享根目录;example_IP请替换为预配置客户端的固定IP;rw表示共享文件夹的读写权限;sync表示文件系统的所有更改都会立即刷新到磁盘; 正在等待相应的写操作。

使用以下命令导出共享目录:

sudo exportfs -ra

在服务器上重新启动NFS服务以使更改生效:

sudo systemctl restart nfs-kernel-server

现在本机中的目录/var/nfsroot作为一个基本的NFS服务器根目录能正常使用,NFS服务端的已经完成。

NFS客户端设置

下面开始配置NFS客户端。请按照以下说明进行配置。首先更新软件源:

sudo apt update

安装NFS客户端软件包nfs-common

sudo apt install nfs-common

在客户端的系统中创建一个目录,作为挂载点:

sudo mkdir /mnt/remotenfs

使用nano 或者 vim编辑器将下面这行命令添加到客户端的/etc/fstab文件末尾,并注意替换example_IP为服务器IP地址。

example_IP:/var/nfsroot /mnt/remotenfs nfs rw,async,hard,intr,noexec 0 0

运行命令,挂载文件系统:

sudo mount /mnt/remotenfs

搞定!现在可以访问remotenfs目录来访问NFS服务器托管的文件系统,当然也可以根据之前的步骤,通过修改NFS服务端的 /etc/exports文件在更多的客户端中使用。

要从客户端计算机卸载共享目录,请使用umount命令卸载它。

umount /mnt/remotenfs

高级配置

NFS提供各种挂载选项。本教程我们使用的是读写权限访问,异步文件传输和可中断硬等待的标准行为,但您可以使用以下选项在NFS共享上配置其他行为。

客户端选项

可以fstabmount命令中指定这些选项,也可以使用带有-o开关的命令手动指定这些选项,后跟逗号分隔的挂载选项列表。

  • rw:读/写文件系统;
  • ro:只读文件系统。远程NFS客户端无法修改文件系统。
  • hard:如果服务器出现故障,使用存储在NFS上的文件的应用程序将始终等待。除非intr设置了该选项,否则用户无法终止该过程;
  • softtimeo如果服务器出现故障,使用存储在NFS上的文件的应用程序将等待指定的时间(使用该选项),之后将抛出错误。
  • intr:允许用户中断等待NFS请求的进程。
  • timeo = <num>:用于选项。指定NFS请求的超时。
  • nolock:禁用文件锁。适用于较旧的NFS服务器。
  • noexec:禁用NFS共享上的二进制文件或脚本的执行。
  • nosuid:阻止用户获得NFS共享文件的所有权。
  • rsize = <num>:设置读取块数据大小。NFSv2和NFSv3上默认为8192,NFSv4上默认为32768。
  • wsize = <num>:设置写入块数据大小。NFSv2和NFSv3上默认为8192,NFSv4上默认为32768。

服务器选项

可以在/etc/exports条目中指定这些选项:

  • rw:读/写文件系统。
  • ro:强制客户端仅以只读文件系统模式进行连接。
  • no_root_squash:客户端计算机上的root帐户将具有与服务器计算机上的root相同的权限级别。该选项具有安全隐患; 除非你确定需要,否则不要使用它。另一方面,root_squash导致客户端上的root与服务器上的nobody具有相同的访问类型 - 从而防止客户端上的root将不需要的文件传播到其他文件。
  • no_subtree_check:禁用部分卷导出的文件位置检查。此选项将加快全量导出的传输速度。
  • sync:强制所有传输在同步模式下运行,因此所有客户端都将等待,直到其操作完成。这可以避免在服务器崩溃时数据损坏。
扫码手机看 请喝咖啡 返回首页
本页链接的二维码
打赏二维码