沙滩星空的博客沙滩星空的博客

NFS文件共享服务的安装与使用

NFS简介

NFSNetwork File System,网络文件系统。客户端将服务器端共享的目录远程挂载到本地。

为了搭建顺利,可暂时先关闭iptables和selinux、firewall。

RPC使用 111端口 来监听来自NFS客户端的请求.

FTP, NFSSamba(SMB/CIFS) 并称为Linux文件共享三大服务

NFS服务端

CentOS7

  1. 安装 rpcbindnfs-utils:
# 查看NFS是否安装:
rpm -qa rpcbind nfs-utils

# 安装NFS
# debian: apt-get install nfs-utils
yum install rpcbind nfs-utils
  1. 启动 rpcbindnfs:
# 启动rpcbind
systemctl start rpcbind.service

# 启动nfs服务
systemctl start nfs.service

查看rpc服务是否自动启动

# 查看rpc服务是否自动启动
    ss -tnulp | grep 111
或
    rpcinfo -p
    rpcinfo -p <your_ip or 127.0.0.1 or localhost>

设置开机启动:

systemctl enable rpcbind
systemctl enable nfs
  1. 配置/etc/exports
    mkdir /data
    vim /etc/exports
    /data   192.168.1.2(rw,no_root_squash,sync,insecure)
    exportfs -rv

参数:
•ro:目录只读
•rw:目录读写
•sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
•async:将数据先保存在内存缓冲区中,必要时才写入磁盘
•all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
•no_all_squash:与all_squash取反(默认设置)
•root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
•no_root_squash:与rootsquash取反
•anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
•anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户
注:添加no_root_squash参数,表明此时客户端root用户的身份等同于NFS server上面的root用户,否则客户端只能同步到服务器的数据,无建立文件或文件夹等权限。

Alpine

安装:

apk add nfs-utils

添加开机启动

rc-update add nfs

启动

rc-service nfs start


NFS客户端

Linux

客户端只需要安装 rpcbind 服务即可,无需安装nfs和开启nfs服务。

# 安装rpcbind
    yum install -y rpcbind

# 启动 rpcbind
    systemctl start rpcbind.service

# 调试
调试远程NFS是否可用
    showmount -e <your_nfs_ip>

# 挂载远程NFS系统至本地/home/nfsdir目录
    mount -t nfs <your_nfs_ip>:/data /home/nfsdir
    df -h

使用密码认证:

mount -t nfs -o username=<username>,password=<password> <NFS_server_IP>:<NFS_shared_directory> <mount_point>
  • :NFS 共享的用户名
  • :NFS 共享的密码
  • <NFS_server_IP>:NFS 服务器的 IP 地址
  • <NFS_shared_directory>:NFS 共享的目录
    <mount_point>:本地挂载点,即在本地系统中挂载 NFS 共享的目录

设置开机自动挂载:

    vim /etc/fstab
    10.10.33.38:/data       /mnt/data/              nfs     defaults       0  0

NFS远程文件系统的挂载和卸载:

    mount -a
    umount  /mnt/nfs

Windows

从控制面板开启 Windows功能 中的 NFS服务 - NFS客户端

    showmount -e 192.168.3.15
    导出列表在 192.168.3.15:
    /mnt/nfs_service                   192.168.3.8

    mount 192.168.3.15:/mnt/nfs_service X:
    X: 现已成功连接到 192.168.3.15:/mnt/nfs_service

    命令已成功完成。

阿里云安全组

网上查找到的教程都没有用。最后发现阿里云安全组,要手动开放NFS需要的所有端口,才可正常使用

问题:

    showmount -e <your_aliyun_ip>

以上命令,会长时间无响应,然后直接超时断开!无任何报错。所以不好排查。

解决方式( rpcinfo 命令):

    rpcinfo -p <your_aliyun_ip>

以上命令,会列出 NFS 使用的 tcp/udp 端口。把这些端口加入安全组列表。我这里是5个端口:

  • 111 portmapper tcp udp
  • 20048 mountd tcp udp
  • 2049 nfs tcp udp
  • 55660 nlockmgr udp
  • 34582 nlockmgr tcp

报错

  1. 客户端mount请求端口大于1024,导致挂载失败.报错:
    mount.nfs:access denied by server while mounting <remote_ip>:/remote_dir

解决:在 /etc/exports 目录的客户端列表选项中,加 insecure 选项:

    /home/nfs    client_ip(rw,no_root_squash,sync,insecure)

查看mount挂载的使用端口:

    cat /var/log/messages | grep mount
  1. 提示 mount: 文件系统类型错误、选项错误、:/dir 上有坏超级块
    mount: 文件系统类型错误、选项错误、xxx.xxx.xxx.xxx:/nfs 上有坏超级块
    
    缺少代码页或助手程序,或其他错误
    (对某些文件系统(如 nfs、cifs) 您可能需要
    一款 /sbin/mount.<类型> 助手程序)
    有些情况下在 syslog 中可以找到一些有用信息- 请尝试
    dmesg | tail  这样的命令看看。

解决:安装nfs-utils

    yum -y install nfs-utils
    systemctl start nfs-utils
    systemctl enable nfs-utils
https://blog.csdn.net/qq_27070443/article/details/86135384

centos7之NFS使用 https://www.cnblogs.com/lei0213/p/8570785.html
centos7下搭建nfs服务器与连接详解 https://blog.csdn.net/dengyadeng/article/details/79549632
linux 磁盘管理:mount挂载,/etc/fstab配置文件 https://www.cnblogs.com/along21/p/7410619.html
mount.nfs:access denied by server while mounting **原因 https://www.xuebuyuan.com/2110924.html
NFS /etc/exports参数解释 https://blog.csdn.net/qq_36357820/article/details/78488077

alpine NFS服务搭建 https://wiki.alpinelinux.org/wiki/Setting_up_a_nfs-server
Windows10配置NFS服务端和客户端 https://www.cnblogs.com/xuxy03/p/6232378.html

未经允许不得转载:沙滩星空的博客 » NFS文件共享服务的安装与使用

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址