NFS简介

概述

1、概述
网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样
在Centos 7系统中,需要安装nfs-utils、 rpcbind 软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。
手动加载NFS共享服务时,应该先启动rpcbind, 再启动nfs。
nfs端口:2049
RPC端口:111
2、特点
采用TCP/IP传输网络文件
安全性低
简单易操作
适合局域网环境

NFS工作原理

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;

1、NFS工作流程
在这里插入图片描述
1.首先服务器端启动RPC服务,并开启111端口
2.服务器端启动NFS服务,并向RPC注册端口信息
3.客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4.服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5.客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

windows搭建NFS

服务端

安装

执行 nfs1169.exe

安装完成后会生成一个快捷图标

在这里插入图片描述

修改配置文件

1、打开《NFS服务器》程序,按下图修

在这里插入图片描述

2、直接修改配置文件

在安装目录下有个export文件

![在这里插入图片描述](https://img-blog.csdnimg.cn/6064dd04be1c4bc8af38b7f1dfc813ab.png

重启 NFS Server

img

查看是否生效

NFS Server重启启动后,再点击NFS的重启服务的按钮,这时中间的配置会发生变化,出现下图所示的配置就说明nfs服务已经开启了,如果你想修改nfs的共享目录为其他什么目录的话,可以按照以上操作,在exports进行修改即可

在这里插入图片描述

客户端

安装客户端

windows win10 挂载NFS

windows win10 挂载NFS

windows win10 挂载NFS

打开控制面板 > 程序 > 启用或关闭 Windows 功能,找到NFS服务打开子目录勾选NFS客户端与管理工具。

NFS客户端:通过界面操作挂在NFS

管理工具:通过命令行挂在NFS

查看远端电脑nfs共享目录

showmount -e 远程电脑的IP

挂载nfs

mount     服务ip:共享路径 盘符名:
mount 192.168.2.158:/e/nfs z:

在这里插入图片描述

取消挂载

net use * /del  #取消所有
umount x: #x盘符名

在这里插入图片描述

解决挂载成功后没有权限

需要读写权限的需要修改注册表

通过修改注册表将windows访问NFS时的UID和GID改成0即可,步骤如下

1、在运行中输入regedit,打开注册表编辑器;

2、进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default条目;

3、选择新建----QWORD值,新建AnonymousUidAnonymousGid两个值,值为0

4、重启电脑 注册表才会生效;

windows win10 挂载NFS

右键查看属性发现读写权限跟隐藏文件都打开了

windows win10 挂载NFS

设置开机自动挂载

1、新建 .bat 文件

2、输入指令保存

# mount nfs服务端IP:/共享磁盘目录 盘符:
mount 192.168.2.158:/e/nfs Z:

3、把.bat文件放入 C:\Users\用户\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-onKrpsUt-1651732504637)(C:\Users\liuhg\AppData\Roaming\Typora\typora-user-images\image-20220424151219737.png)]

Linux搭建NFS

  • 下载安装

    yum -y install nfs-utils
    
  • 是否启动服务

    systemctl status nfs-server
    
  • 启动服务

    #按顺序启动rpcbind和nfs服务:
    systemctl start rpcbind
    systemctl enable nfs  ||  systemctl start nfs-server
    
  • 设置开机启动

    systemctl enable rpcbind
    systemctl enable nfs
    
  • 查看运行端口是否生效

    rpcinfo -p
    
  • NFS配置文件位置

    /etc/exports
    /etc/exports.d/*.exports
    
  • NFS共享配置文件格式

    /dir	主机1(opt1,opt2)	主机1(opt1,opt2)...
    	主机格式
    		(1) *表示同配所有客户端
    	opt参数说明(默认选项:ro,sync,root_squash,no_all_squash)
    		(1) ro 该主机对该共享目录有只读权限
    		(2) rw 该主机对该共享目录有读写权限
    		(3) root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
    		(4) no_root_squash 客户机用root访问该共享文件夹时,不映射root用户
    		(5) all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
    		anonuid和anongid只匿名用户映射为特定用户UID和GID,而非nfsnobody,可配合all_squash使用
    		(6) anonuid 将客户机上的用户映射成指定的本地用户ID的用户
    		(7) anongid 将客户机上的用户映射成属于指定的本地用户组ID
    		(8) sync 资料同步写入到内存与硬盘中
    		(9) async 资料会先暂存于内存中,而非直接写入硬盘
    		(10) insecure 允许从这台机器过来的非授权访问 
    		(11) subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
    		(12) no_subtree_check 和上面相对,不检查父目录权限
    		(13) wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
    		(14) no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
    		(15) hide 在NFS共享目录中不共享其子目录
    		(16) no_hide 共享NFS目录的子目录
    		(17) secure NFS通过1024以下的安全TCP/IP端口发送
    		(18) insecure NFS通过1024以上的端口发送
    
  • 创建共享目录

    mkdir /data/nfs
    
    chmod 777 /data/NFS  #修改权限
    
  • 设置配置文件

    vim /etc/exports
    
    #配置文件示例
    /data/nfs  *(rw,no_root_squash)
    
    #重读配置文件无需重启服务
    exportfs -r   
    
  • 查看服务端是否可连接

    showmount -e IP
    

showmount报错

1、rpc mount export: RPC: Timed out
    1)在**/etc/sysconfig/nfs**配置文件设置固定端口,将下列内容的注释去掉,如果没有则添加:
       vim /etc/sysconfig/nfs
            RQUOTAD_PORT=21500
            LOCKD_TCPPORT=21501
            LOCKD_UDPPORT=21502
            MOUNTD_PORT=21503
            STATD_PORT=21504
            STATD_OUTGOING_PORT=21505

    2)添加完后,重启NFS服务
    	systemctl restart nfs-server


2、clnt_create: RPC: Port mapper failure - Timed out
	1)开放对应端口
		firewall-cmd --zone=public --add-port=21503/tcp --permanent
		firewall-cmd --zone=public --add-port=111/udp --permanent
	2) 重载防火墙
    	firewall-cmd --reload
    3)查看开放的端口
    	firewall-cmd --zone=public --list-ports

mount报错

C:\Users\liuhg>mount 121.37.4.101:/data/nfs X:
网络错误 - 53

有关详细信息,请键入“NET HELPMSG 53”。
  • 解决方法

​ 1)NFS服务器有一个”在非安全模式工作(允许更高的端口号)“的选项。Windows NFS客户端经常使用的是大的端口号。你可以在你的共享项设置中添加insecure选项

/data/nfs  *(rw,no_root_squash,insecure)
#重启 nfs
systemctl restart nfs-server

​ 2)以上还未解决,有可能是端口问题,开放nfs端口

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐