Linux工具篇-NFS 安装部署与使用

1,505 阅读4分钟

这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战

Linux服务端

安装

  1. centos7自带了rpcbind,所以只需执行yum -y install nfs-utils

    当然,如果要执行yum -y install nfs-utils rpcbind同时安装nfs+rpc也没有问题。

  2. 验证是否安装成功rpm -qa nfs-utils
    image.png

  3. 查看当前nfs服务所支持的nfs的版本cat /proc/fs/nfsd/versions
    image.png

配置

  1. 创建一个共享目录 /data/share(目录可自定义)并设置权限

    mkdir /data/share
    chmod -R 777 /data/share
    
  2. 配置编辑NFS默认的配置文件/etc/exports

    // 固定网段所有IP可挂载
    echo "/data/nfs 172.18.30.*(rw,sync,no_root_squash)" >> /etc/exports
    // 固定网段固定IP区间可挂载
    echo "/data/nfs 172.18.30.0/24(rw,sync,no_root_squash)" >> /etc/exports
    // 所有客户端可挂载
    echo "/data/nfs *(rw,sync,no_root_squash)" >> /etc/exports
    

    权限配置的说明:

    • rw:可读写
    • ro: 只读,但最终能不能读写,还是与文件系统的 rwx 及身份有关
    • no_root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
    • root_squash: 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名(nobody)用户
    • all_squash: 不论登入 NFS 的使用者身份为何, 均被映射为匿名用户,通常就是 nobody(nfsnobody)
    • insecure: 允许从客户端过来的非授权访问
    • sync: 数据会同步写入到内存与硬盘中
    • async: 数据会先暂存于内存当中,而非直接写入硬盘
    • anonuid: 指定uid的值,此uid必须存在于/etc/passwd中
    • anongid:指定gid的值
  3. 使nfs配置生效exportfs -r

    exportfs的参数说明:

    • -a:全部mount 或unmount /etc/exports中的内容
    • -r: Reexport all directories: 重新导出所有目录
    • -u:umount目录
    • -v: verbose,输出详情
  4. 查看当前配置为nfs共享的目录及其状态exportfs -v image.png

  5. 检查共享目录是否设置成功showmount -e
    image.png

启动&检查

  1. 启动 RPC 服务
    // 启动rpc 
    systemctl start rpcbind 
    // 设置开机启动 
    systemctl enable rpcbind
    
  2. 启动 NFS 服务
    // 启动nfs 
    systemctl start nfs
    // 设置开机启动 
    systemctl enable nfs
    
  3. rpcinfo -p ,如果显示rpc 服务器注册的端口列表(端口:111),则启动成功。 image.png

Windows & Linux 客户端

安装NFS

Linux

客户端上不需要启动nfs服务,只是为了使用showmount/mount工具

  1. 安装nfs yum -y install nfs-utils
  2. 检测rpc服务 rpcinfo -p
    image.png
  3. 查看服务器端可挂载目录 showmount -e 129.xxx.xx.139 image.png

Windows

参考win7 下设置挂载Linux服务器nfs共享的数据

挂载目录

Linux

  1. 将服务器端目录挂在到本地mount -t nfs 129.xxx.xx.139:/data/share /data/share
  2. 验证:在服务器端 /data/share路径下新建文件后去客户端挂载目录查看是否同步
    • 使用df -hT查看 Linux 系统上的文件系统磁盘使用情况,可以看到挂载盘 image.png
自动挂载

客户端机器启动后能自动加载nfs文件系统:

把mount命令:例如:mount -t nfs 192.168.3.172:/data/share /data/share 写入到 /etc/rc.local

说明:有很多资料建议写入到/etc/fstab
os启动时一般会先加载文件系统后启动网络,在没有网络时nfs是无法加载的,总是出错,所以还是建议放到/etc/rc.local中

Windows7

  1. mount \\file-system-nas.com\data\share y:

    image.png 参考win7 下设置挂载Linux服务器nfs共享的数据

自动挂载

参考=> windows自动挂载NFS文件系统

常见问题

RPC: Port mapper failure

错误提示:RPC:端口映射失败, 既然是端口的问题,那就放行端口。查看rpc正在运行的关于nfs的端口rpcinfo -p

// 防火墙上放行端口
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=20048/udp --permanent
// 重启防火墙
firewall-cmd --reload
// 查看防火墙public端口
firewall-cmd --zone=public --list-ports

windows 挂载报错 NET HELPMSG 53

NFS 服务器有一个在不安全模式下工作的选项(允许更高的传入端口号)。Windows NFS 客户端通常使用更高的端口号。您可以通过向共享添加一个选项来启用此选项 insecure

示例:/share *(insecure,rw)

其他命令

客户端查看nfs服务的版本:

nfsstat -c
image.png

服务端查看 nfs的版本

nfsstat -s
image.png

查看本地centos的版本:

cat /etc/redhat-release
image.png

去掉nfs共享

只需只需卸载命令即可,umount用法如下 image.png

mount 挂载追加参数

通过执行man nfs查看帮助文档,nfs版本不同,对应的挂载参数名不同
示例:mount -t nfs -o vers=4.1,proto=tcp,timeo=60 129.204.4.139:/data/share /data/share

参考阅读

启动和停止 NFS 服务器

常见的 NFS 挂载选项

配置 NFS 服务器