Linux中NFS的 /etc/exports 文件

NFS 服务器的主要配置是 /etc/exports 文件。
这是用于指定要与 NFS 客户端共享的目录的文件。
该文件的语法是:

Directory      hostname(options)

Directory 的值应替换为我们要共享的目录的名称(例如,/usr/share/doc)。
值 hostname 应该是可以解析为 IP 地址的客户端主机名。
options 值用于指定应如何共享资源。

例如,/etc/exports 文件中的以下条目将与 NFS 客户端 client01(具有读写选项)和 NFS 客户端 client02(具有只读选项)共享 /usr/share/doc 目录):

# vi /etc/exports
/usr/share/doc      client01(rw) client02(ro)

请注意,client01 和 client02 名称/选项之间有一个空格,但主机名与其对应的选项之间没有空格。
新手管理员的一个常见错误是提供如下条目:

/usr/share/doc client01 (rw)

前一行将使用默认选项与 client01 主机共享 /usr/share/doc 目录,并且所有其他主机都可以以读写方式访问此共享。

在 /etc/exports 文件中指定主机名时,允许使用以下方法:

  • 主机名:可以解析为 IP 地址的主机名。
  • netgroup :使用@groupname 名称的 NIS 网络组。
  • domain :使用通配符的域名。例如,*.onecoursesource.com 将包含 onecoursesource.com 域中的任何机器。
  • 网络:由 IP 地址使用 VLSM(可变长度子网掩码)或者 CIDR(无类别域间路由)定义的网络。示例:192.168.1.0/255.255.255.0 和 192.168.1.0/24.

有许多不同的 NFS 共享选项,包括:

  • rw :以读写方式共享。请记住,正常的 Linux 权限仍然适用。 (请注意,这是默认选项。)
  • ro :以只读方式共享。
  • sync :文件数据更改会立即到磁盘,这对性能有影响,但不太可能导致数据丢失。在某些发行版中,这是默认设置。
  • async :与同步相反;文件数据更改最初是在内存中进行的。这会提高性能,但更有可能导致数据丢失。在某些发行版中,这是默认设置。
  • root_squash :将根用户和组帐户从 NFS 客户端映射到匿名帐户,通常是 nobody 帐户或者 nfsnobody 帐户。有关更多详细信息,请参阅下一节“用户 ID 映射”。 (请注意,这是默认选项。)
  • no_root_squash :将 root 用户和组帐户从 NFS 客户端映射到本地 root 和组帐户。

配置 NFS 客户端

挂载 NFS 共享与挂载分区或者逻辑卷没有太大区别。
首先创建一个普通目录:

# mkdir /access

接下来,使用 mount 命令挂载 NFS 共享:

# mount 192.168.1.22:/share /access

我们可以通过执行 mount 命令或者查看 /proc/mounts 文件来验证挂载是否成功。
查看 /proc/mounts 文件的好处是它提供了更多的细节:

# mount | tail -1
192.168.1.22:/share on /access type nfs (rw,addr=192.168.1.22)
# tail -1 /proc/mounts
192.168.1.22:/share /access nfs rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,
timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.22,mountvers=3, 
mountport=772,mountproto=udp,local_lock=none,addr=192.168.1.22 0 0

如果重新启动 NFS 客户端,则系统启动后不会重新建立此挂载。
要使其在重新启动后持久挂载,请在 /etc/fstab 文件中添加如下所示的条目:

# tail -1 /etc/fstab
192.168.1.22:/share      /access  nfs      defaults      0      0

将此条目添加到 /etc/fstab 文件后,卸载 NFS 共享(如有必要)并通过在执行 mount 命令时仅提供挂载点来测试新条目:

# umount /access
# mount /access
# mount | tail -1
192.168.1.22:/share on /access type nfs (rw,addr=192.168.1.22)
更多: zhilu jiaocheng

NFS 服务器命令

可以在 NFS 服务器上使用 exportfs 命令来显示当前共享的内容:

# exportfs
/share          [world]

exportfs 命令也可用于临时共享资源,假设 NFS 服务已经启动:

# exportfs -o ro 192.168.1.100:/usr/share/doc
# exportfs
/usr/share/doc  192.168.1.100
/share          [world]

-o 选项用于指定共享选项。
该参数包括要共享的系统名称以及要共享的目录,以冒号 (:) 字符分隔。

如果我们对 /etc/exports 文件进行更改,则任何新添加的共享都将在重新启动后启用。
如果要立即启用这些更改,请执行以下命令:

# exportfs -a

nfsstat 命令可以显示有用的 NFS 信息。
例如,以下命令显示 NFS 客户端当前挂载的内容:

# nfsstat -m
/access from 10.0.2.15:/share
 Flags: rw,vers=3,rsize=131072,wsize=131072,hard,proto=tcp,timeo=600,
retrans=2,sec=sys,addr=10.0.2.15

showmount 命令显示类似信息:

# showmount -a
All mount points on onecoursesource.localdomain:
10.0.2.15:/share

用户 ID 映射

为了使从 NFS 服务器到 NFS 客户端的资源共享过程尽可能透明,请确保在两个系统上使用相同的 UID(用户 ID)和 GID(组 ID)。

日期:2020-09-17 00:14:32 来源:oir作者:oir