1. NFS 工具包

  • centos:nfs-utils
  • ubuntu:nfs-kernel-server

    2. 配置文件

    2.1 配置文件路径

  • /etc/exports

  • /etc/exports.d/*.exports

    2.1 配置文件格式

    ```bash 共享目录路径 共享目标主机名或IP(共享权限选项) /dir IP(选项参数)

主机名支持通配符等

*.wuvikr.com server?.wuvikr.com server[0-9].wuvikr.com

IP支持网段

10.0.0.0/24 10.0.0.0/255.255.255.0

共享选项参数

默认选项:(ro,sync,root_squach,no_all_squash) ro 只读(默认) rw 读写 async 异步 sync 同步(默认) root_squash 远程root用户映射为UID&GID=65534的匿名用户(默认) no_root_squash 与上面相对,远程root用户直接映射为本机的root用户 all_squash 所有远程用户映射为UID&GID=65534的匿名用户 no_all_squash 保留使用远程用户的UID和GID(默认) anonuid 指明映射的特定用户UID,默认UID=65534 anongid 指明映射的特定用户GID,默认GID=65534 subtree_check 如果共享/data/test之类的子目录时,强制NFS检查父目录的权限 no_subtree_check 和上面相对,不检查父目录权限(默认) hide 在NFS共享目录中不共享其子目录(默认) no_hide 共享NFS目录的子目录 wdelay 如果多个用户要写入NFS目录,则归组写入(默认) no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

举例:

/data/dir1 10.0.0.10(sync,wdelay,hide,no_subtree_check,sec=sys,ro,root_squash,no_all_squash)

使用默认参数,等同于上面括号中的参数。

/data/dir2 *.wuvikr.top()

自定义选项参数,未定义的参数则使用默认参数。

/data/dir3 10.0.0.0/24(rw)

启动nfs服务

systemctl start nfs-server.service

  1. **注意: 修改配置文件后,要使修改后的文件生效,需使用**`**exportfs -rv**`**命令或重新启动 nfs 服务。**
  2. <a name="QX55n"></a>
  3. # 3. exprotfs 命令
  4. 常用选项:
  5. ```bash
  6. -v 查看NFS共享
  7. -r 重新加载配置文件并生效
  8. -a 开启所有共享
  9. -au 暂停所有共享

4. showmount 命令

常用选项:

-e        显示NFS服务器所有共享目录
-d        仅显示已被客户端加载的目录

5. 客户端 NFS 挂载

使用mount命令可以将 NFS 服务挂载到本机目录使用,可以使用 -o 选项指定相关参数:

fg                    前台挂载
bg                    后台挂载
hard                如果没有挂载成功,持续请求挂载
intr                配合hard选项,请求可被中断(ctrl+c)
soft                如果没有挂载成功,就中断挂载
_netdev            系统联网后再执行挂载操作,即如果没有网络连接则不挂载
vers                指定版本

范例:

# 临时挂载
[root@centos7 dir1]# mount -o rw,nosuid,fg,hard,intr 172.16.1.100:/data/dir1 /mnt/dir1

# 配置开机自动挂载
[root@centos7 dir1]# vim /etc/fstab
172.16.1.100:/data/dir1        /mnt/dir1    nfs        defaults,_netdev    0 0

# 如果NFS服务没有开启rw权限的话,进行读写操作的时候会有以下报错。
[root@centos7 dir1]# touch aa.txt
touch: cannot touch ‘aa.txt’: Read-only file system

# NFS服务给了rw权限,读写还是报错,但错误变为权限不允许。
[root@centos7 dir1]# touch 222.txt
touch: cannot touch ‘222.txt’: Permission denied

# 这是因为本地账号读写文件时会被映射为 NFS 服务器上的匿名账户
# 查看下/data/dir目录可以发现,远程用户对本目录来说属于其他用户
[root@centos7 ~]# ll /data/
total 2
drwxrwxr-x 3 root    root    18 Nov  5 15:15 dir1

# 最简单的方法就是将该目录的权限设为777,但是这样不是很安全,建议使用setfcl命令精准授权
[root@centos7 ~]# chmod -R 777 /data/dir1
[root@centos7 ~]# setfacl -R -m u:nfsnobody:rwx /data/dir1

6. autofs自动挂载服务

配置文件:/etc/auto.master

6.1 配置自动挂载

例:将**172.16.1.100:/data/dir1**挂载到本机的**/data/dir1/dir2**路径下

  • 方法一:相对路径式
    ```bash [root@centos7 ~]# vim /etc/auto.master

    文件格式

    挂载点的dirname 该dirname的子配置文件路径 /data/dir1 /etc/auto.dir1

[root@centos7 ~]# vim /etc/auto.dir1

文件格式

挂载点的basename 文件类型 设备路径 dir2 -fstype=nfs 172.16.1.100:/data/dir1


-  方法二:绝对路径式  
```bash
vim /etc/auto.master
# 文件格式
/-                      子配置文件路径
/-                      /etc/auto.dir1

vim /etc/auto.dir1
# 文件格式
挂载点绝对路径        文件类型            设备路径
/data/dir1/dir2        -fstype=nfs        172.16.1.100:/data/dir1