Linux 配置 NFS 文件共享 (Cent OS)

1,340 阅读3分钟

确认服务的安装

$ rpm -qa nfs-utils rpcbind
nfs-utils-1.3.0-0.54.el7.x86_64
rpcbind-0.2.0-38.el7.x86_64

安装 NFS 服务

# 服务端
$ yum install -y nfs-utils rpcbind
# 客户端
$ yum install -y nfs-utils

NFS 的配置和使用

新建共享目录

mkdir -p /data/share

赋权限

chmod 777 /data/share

修改配置文件

$ vim /etc/exports
/data/share 10.222.77.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)

参数列表

  • ro 只读访问
  • rw 读写访问
  • sync 所有数据在请求时写入共享
  • async nfs 在写入数据前可以响应请求
  • secure nfs 通过 1024 以下的安全 TCP/IP 端口发送
  • insecure nfs 通过 1024 以上的端口发送
  • wdelay 如果多个用户要写入 nfs 目录,则归组写入(默认)
  • no_wdelay 如果多个用户要写入 nfs 目录,则立即写入,当使用 async 时,无需此设置
  • hide 在 nfs 共享目录中不共享其子目录
  • no_hide 共享 nfs 目录的子目录
  • subtree_check 如果共享 /usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认)
  • no_subtree_check 不检查父目录权限
  • all_squash 共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录
  • no_all_squash 保留共享文件的 UID 和 GID(默认)
  • root_squash root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)
  • no_root_squash root 用户具有根目录的完全管理访问权限
  • anonuid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID
  • anongid=xxx 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID

启动 RPC 服务

$ service rpcbind start
# 或者使用如下命令亦可
$ /bin/systemctl start rpcbind.service

# 查看 NFS 服务项 rpc 服务器注册的端口列表
$ rpcinfo -p localhost 
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper

启动 NFS 服务

# 启动 NFS 服务
$ service nfs start
# 或者使用如下命令亦可
/bin/systemctl start nfs.service

# 启动 NFS 服务后 rpc 服务已经启用了对 NFS 的端口映射列表
# rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  33745  status
    100024    1   tcp  36980  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  38960  nlockmgr
    100021    3   udp  38960  nlockmgr
    100021    4   udp  38960  nlockmgr
    100021    1   tcp  38362  nlockmgr
    100021    3   tcp  38362  nlockmgr
    100021    4   tcp  38362  nlockmgr

查看是否正确加载了/etc/exports

$ showmount -e localhost
Export list for localhost:
/data/share 10.222.77.0/24

客户端配置

客户端查看服务端可共享信息

# showmount -e 10.222.77.86
Export list for 10.222.77.86:
/data/share 10.222.77.0/2

创建共享目录

mkdir -p /share

挂载远端目录到本地服务器

$ mount 10.222.77.86:/data/share /share
$ df -h | grep 10.222.77.86
Filesystem                 Size  Used  Avail Use% Mounted on
10.222.77.86:/data/share   27G   11G   17G   40%  /share

测试共享目录

...

报错处理

nfs客户端挂载出错 mount.nfs access denied by server while mounting

centos 6 x64 的系统下使用的是NFSv4

修改服务端配置文件

[root@nginx-01 ~]# vim /etc/sysconfig/nfs
# Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
# Turn off v2 and v3 protocol support
RPCNFSDARGS="-N 2 -N 3"
        ----->启用
# Turn off v4 protocol support
RPCNFSDARGS="-N 4"     ---->启用

重启服务

service nfs restart

客户端重新挂载

$ mount 10.222.77.86:/data/share /share
$ df -h | grep 10.222.77.86
Filesystem                 Size  Used  Avail Use% Mounted on
10.222.77.86:/data/share   27G   11G   17G   40%  /share

功能片段

新增共享目录

服务端

# 修改配置文件
vi /etc/exports
# 重启nfs服务
service nfs restart
# 或刷新配置文件
exportfs -a

客户端

# 查看远程可挂载点
showmount -e [服务端地址]
# 挂载
mount [服务端地址]:[服务端挂载目录] [客户端映射挂载目录]
# 查看是否挂载成功
df -h | grep [服务端地址]

删除挂载点

客户端

# 删除挂载点
umount [客户端映射挂载点]

设置开机挂载

待续