喵♂呜 的博客

一个刚毕业就当爹的程序猿 正在迷雾中寻找道路...

NFS安装与使用

NFS 是一个网络文件系统 用于共享文件

安装 NFS

  • 执行 yum install nfs-utils
  • 编辑 vi /ect/exports
    • 格式为 本地目录 允许的地址(参数)
    • 地址用 * 代表所有
      • 如果只允许本地局域网 192.168.1.0/24 具体根据你所在的网段
    • 参数支持多个 用 , 分割参数
      • ro - 只读
      • rw - 可读写
      • sync - 同步
      • async - 异步
      • no_root_squash - 忽略root权限
      • insecure - 允许使用保留端口
  • 添加目录 /home/app/nfs *(rw,sync,no_root_squash,insecure)

启动 NFS 服务器

  • 执行 service rpcbind start && service nfs-server start
  • 查看状态 rpcinfo -p
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    [root@sz ~]$ rpcinfo -p
    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 33665 status
    100024 1 tcp 59459 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 39214 nlockmgr
    100021 3 udp 39214 nlockmgr
    100021 4 udp 39214 nlockmgr
    100021 1 tcp 41547 nlockmgr
    100021 3 tcp 41547 nlockmgr
    100021 4 tcp 41547 nlockmgr

添加防火墙规则

1
2
3
4
5
6
7
8
9
10
11
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=2049/tcp --permanent
firewall-cmd --zone=public --add-port=2049/udp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --zone=public --add-port=20048/udp --permanent
firewall-cmd --zone=public --add-port=33665/udp --permanent
firewall-cmd --zone=public --add-port=40933/tcp --permanent
firewall-cmd --zone=public --add-port=51119/udp --permanent
firewall-cmd --zone=public --add-port=59459/tcp --permanent
firewall-cmd --reload

客户端查看 NFS 服务器目录

  • 执行 showmount -e nfs.yumc.pw 查看目录
    1
    2
    3
    C:\Users\Administrator>showmount -e nfs.yumc.pw
    导出列表在 nfs.yumc.pw:
    /home/app/nfs *

客户端挂载 NFS 目录

  • Linux 下执行 mount -t nfs nfs.yumc.pw:/home/app/nfs /nfs
    • 如果提示命令未找到 请先安装 nfs-utils
  • Windows 下执行 mount -t nfs nfs.yumc.pw:/home/app/nfs N:
    • 如果提示命令未找到 需要安装 NFS 客户端
      • 我的电脑 > 控制面板 > 程序 > 程序和功能
      • 打开 启用或关闭 Windows 功能
      • 勾选 NFS 服务
      • 确定即可

        注意: Windows下挂载只能用cmd不能用powershell之类的其他命令行

挂载常见错误

  • 提示 mount: mounting nfs.yumc.pw:/home/app/nfs on /mnt failed: Permission denied

    这个情况 有可能是 域名限制的问题

    修改 /ect/exports 去掉域名 改为 /home/app/nfs *(rw,sync,no_root_squash,insecure)

  • 提示 mount: mounting nfs.yumc.pw:/home/app/nfs on /mnt failed: Connection refused

    由于NFS有文件锁 所以导致链接被拒绝 添加 -o nolock 参数挂载 例如 mount -t nfs -o nolock nfs.yumc.pw:/home/app/nfs /nfs

挂载后使用常见错误

  • 进入目录后 无法新建文件 提示 xxx: Permission denied

    检查 /ect/exports 是不是少了 no_root_squash 参数

  • Windows 下无法写入文件 提示 你需要权限来执行此操作

    • 查看挂载信息 mount
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      C:\Users\Administrator>mount

      本地 远程 属性
      -------------------------------------------------------------------------------
      N: \\nfs.yumc.pw\home\app\nfs UID=-2, GID=-2
      rsize=1048576, wsize=1048576
      mount=soft, timeout=10.0
      retry=1, locking=no
      fileaccess=755, lang=GB2312-80
      casesensitive=no
      sec=sys
    • 如果 UID 和 GID 是 -2 则按照下列方法修改
      • 打开注册表 Win+R regedit
      • 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
      • 新建 DWORD 键值 AnonymousUidAnonymousGid
      • 重启计算机
      • 重新挂载

欢迎关注我的其它发布渠道