当前位置:网站首页 > 云计算与后端部署 > 正文

nfs客户端怎么访问(nfs客户端开放端口)



一、NFS安装


    $ sudo apt-get install nfs-kernel-server nfs-common portmap



ubuntu nfs服务器端 nfs-kernel-server ;nfs的客户端nfs-common,以及端口映射器portmap


安装nfs-kernel-server时,apt会根据依赖关系自动为我们把其它两个安装好(待测)。



二、NFS配置


2.1 配置/etc/exports文件


    $ sudo vim /etc/exports   在文件最后加入如下内容:


实例1: /rootnfs *(rw,sync,no_root_squash)


实例2: /rootnfs 192.168.1.0/24(rw,sync,no_root_squash)


注:nfs允许挂载的目录及权限在文件/etc/exports中进行了定义。其中:/rootnfs是要共享的目录,*代表允许所有的网络段访问,192.168.1.0/24 代表允许访问的网段,rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squash是nfs客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限。



三、重启服务


nfs是一个RPC程序,使用它前,需要映射好端口,通过portmap设定


$ sudo /etc/init.d/portmap restart


$ sudo /etc/init.d/nfs-kernel-server restart



四、测试


    4.1 显示出共享出来的目录


    $ showmount -e



    4.2 将nfs的rootnfs共享目录挂载到本地磁盘上。


$ sudo mount -t nfs localhost:/rootnfs /mnt


注:localhost为本机linux的IP地址



在嵌入式设备上挂载时加-o nolock


$sudo mount -t nfs 192.168.10.129:/home/jeffery /mnt/nfs/ -o nolock


  


4.3 查看挂载情况


    $ df



    4.4 卸载挂载


    $ sudo umount /mnt



4.5   通过查看网络端口状态可以判断服务器是否成功开启:


   $:sudo netstat -tlunp


若发现有针对111端口及2049端口的监听,则说明服务器开启成功了。


查看RPC相关信息的命令如下:


    $:sudo rpcinfo -p localhost


或者查看文件 /etc/rpc



五、NFS简介(网络文件系统)



1、NFS就是Network File System的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(share files)——可以通过NFS挂载远程主机的目录,访问该目录就像访问本地目录一样,所以也可以简单的将它看作一个文件服务器(File Server)。



注意:一般而言,使用NFS服务能够方便地使各unix-like系统之间实现共享,但如果需要在unix-like和windows系统之间共享,那就得使用samba了。



2、NFS是通过网络进行数据传输,那么NFS使用哪些端口呢,答案是……不知道,因为NFS传输数据时使用的端口是随机的,唯一的限制就是小于1024,客户端怎么知道服务器使用的是哪个端口,此时就要用到远程过程调用RPC。



其实,NFS运行在SUN的RPC(Remote Procedure Call,远程过程调用)基础上,RPC定义了一种与系统无关的方法来实现进程间通信,由此,NFS Server也可以看作是RPC Server。正因为NFS是一个RPC服务程序,所以在使用它之前,先要映射好端口——通过portmap设定。比如:某个NFS Client发起NFS服务请求时,它需要先得到一个端口(port),所以它先通过portmap得到port number(不仅是NFS,所有的RPC服务程序启动之前,都需要先设定好portmap)。



注意:在启动RPC服务(比如NFS)之前,需要先启动portmap服务。



3、NFS允许系统将其目录和文件共享给网络上的其他系统。通过NFS,用户和应用程序可以访问远程系统上的文件,就像它们是本地文件一样。那么NFS最值得注意的优点有:


(1)本地工作站可以使用更少的磁盘空间,因为常用数据可以被保存在一台机器上,并让网络上的其他机器可以访问它。


(2)不需要为用户在每台网络机器上放一个用户目录,因为用户目录可以在NFS服务器上设置并使其在整个网络上可用。


(3)存储设备如软盘、光驱及USB设备可以被网络上其它机器使用,这可能可以减少网络上移动设备的数量。



六、与NFS相关的几个文件和命令



1、/etc/exports


对NFS服务的访问是由exports来批准,它枚举了若干有权访问NFS服务器上文件系统的主机名。



2、/sbin/exportfs


维护NFS的资源共享,可以通过它重新设定/etc/exports的共享目录,卸载NFS Server共享的目录或者重新共享等。



3、/usr/sbin/showmount


上面的文件主要用在NFS Server端,而showmount则主要用在Client端,showmount可以用來查看NFS共享的目录资源。



4、/var/lib/nfs/xtab


NFS的记录文档:通过它可以查看有哪些Client连接到NFS主机的记录。



下面这几个并不直接负责NFS,实际上它们是负责所有的RPC。



5、/etc/default/portmap


实际上,portmap负责映射所有的RPC服务端口,它的内容非常非常之简单。



6、/etc/hosts.deny


设定拒绝portmap服务的主机,即禁止访问的客户端IP列表。



7、/etc/hosts.allow


设定允许portmap服务的主机,即允许访问的客户端IP列表。



七.NFS配置详解



1. 配置/etc/exports



(1)共享的NFS目录在/etc/exports中列出,这个文件控制对目录的共享(NFS挂载目录及权限由该文件定义),书写规则是每个共享为一行)。



格式:[共享目录] [主机名或IP](参数,参数...)


第一个参数是要让客户机访问的目录,第二个是你允许的主机IP,最后的()内是访问控制方式。



注意:客户端可以使用主机名或者IP地址指定,在主机名中可以使用通配符(*),IP地址后也可以跟掩码段(/24),但出于安全原因这种情况应该尽量避免。客户端的说明后可在圆括号中加入一系列参数。很重要的一点,不要在最后一个客户端声明的后面留下任何空白或者没关闭括号,因为空白都被解释成客户端的分隔符。



例如我要将/opt/FriendlyARM/mini2440/root_nfs目录让用户的IP共享,则在该文件末尾添加下列语句:


/opt/FriendlyARM/mini2440/root_nfs *(rw,sync,no_root_squash)



其中:


/opt/FriendlyARM/mini2440/root_nfs 表示NFS共享目录,它可以作为开发板的根文件系统通过NFS挂接;


* 表示所有的客户机都可以挂接此目录;


rw 表示挂接此目录的客户机对该目录有读写的权力;


sync 表示所有数据在请求时写入共享,即数据同步写入内存和硬盘;


no_root_squash 表示允许挂接此目录的客户机享有该主机的root身份。



注意:可以用主机名来代替*,尽量指定主机名以便使那些不想其访问的系统不能访问NFS挂载的资源。另外,最好加上sync, 否则$ sudo exportfs -r时会给出警告,sync是NFS的默认选项。



(2)下面是一些NFS共享的常用参数:


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



(3)查看NFS Server的export list:


$ sudo showmount -e



若更改了/etc/exports,运行以下命令进行更新:


$ sudo exportfs -r



然后重启NFS服务:


$ sudo /etc/init.d/nfs-kernel-server restart



2、配置portmap


方法1:编辑/etc/default/portmap,将"-i 127.0.0.1"去掉;


方法2:$ sudo dpkg-reconfigure portmap,出现“正在设定portmap”软件包设置界面,对Should portmap be bound to the loopback address?选择“否(No)”。



3、配置/etc/hosts.deny


禁止任何host(主机)能和你的NFS服务器进行NFS连接。在该文件中加入:



NFS DAEMONS


portmap:ALL


lockd:ALL


mountd:ALL


rquotad:ALL


statd:ALL



4、配置/etc/hosts.allow


允许那些你想要的主机和你的NFS服务器建立连接。



下列步骤将允许任何IP地址以192.168.1开头的主机连接到NFS服务器上,具体要看你目标板的端口地址,也可以指定特定的IP地址。在该文件中加入:



NFS DAEMONS


portmap: 192.168.1.


lockd: 192.168.1.


rquotad: 192.168.1.


mountd: 192.168.1.


statd: 192.168.1.



通过/etc/hosts.deny和/etc/hosts.allow设置对portmap的访问,采用这两个配置文件有点类似"mask"的意思。先在/etc/hosts.deny中禁止所有用户对portmap的访问,再在/etc/hosts.allow中允许某些用户对portmap的访问。



然后重启portmap daemon:


$ sudo /etc/init.d/portmap restart




八、NFS客户端配置(NFS测试)



1、在NFS服务器启动后,还需要检查Linux服务器的防火墙设置(一般需要关闭防火墙服务),确保没有屏蔽 NFS使用的端口和允许通信的主机,主要是检查Linux服务器iptables、ipchains等选项的设置,以及/etc/hosts.deny, /etc/hosts.allow文件。通常都是在内部局域网中进行开发,再安装系统时最好不要安装防火墙等网络安全软件,以方便使用时的配置。



如果你有防火墙,请确保32771、111和2049端口保持开放。



2、手动挂载


使用mount命令来挂载其他机器共享的NFS目录。



格式:$ sudo mount [Server IP]:/[share dir] [local mount point]



例如:


$ sudo mount -t nfs [-o nolock] localhost:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs 或


$ sudo mount -t nfs -o nolock 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs



其中,localhost可以是具体的IP地址,同时挂载点/mnt/root_nfs目录必须已经存在,而且在/mnt/root_nfs目录中没有文件或子目录。



3、自动挂载



(1)另一个挂载其他机器的NFS共享的方式就是在/etc/fstab文件中添加一行,该行必须指明NFS服务器的主机名、服务器输出的目录名以及挂载NFS共享的本机目录,同时必须是根用户才能修改/etc/fstab文件(目标板上可能没有fstab,需要自己创建一个)。



格式(参考PC上的fstab):host_ip:/nfs_path /target_path nfsrsize=8192,wsize=8192,timeo=14,intr,nolock 0   0



注意:可以根据实际情况修改NFS服务器共享文件夹"servername.mydomain.com:/usr/local/pub"和在本机的挂载点"/pub",同时挂载点/pub在客户端机器上必须存在。



(2)NFS常见挂载参数:



intr 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。



timeo 如果超时,客户端等待的时间,以十分之一秒计算


retrans 超时尝试的次数


bg 后台挂载(很有用)


hard 如果server端没有响应,那么客户端一直尝试挂载


rsize 读块大小


wsize 写块大小



4、使用autofs来挂载NFS



(1)挂载NFS共享的第三种方法是使用autofs,它使用automount守护进程来管理挂载点,只在文件系统被访问时才动态地挂载。



autofs访问主映射配置文件/etc/auto.master来决定要定义哪些挂载点,然后使用适用于各个挂载点的参数来启动automount守护进程。主映射配置中的每一行都定义一个挂载点,一个分开的映射文件定义在该挂载点下要挂载的文件系统。如/etc /auto.misc文件可能会定义/misc目录中的挂载点,这种关系在/etc/auto.master文件中会被定义。



(2)/etc/auto.master文件中的每个项目都有3个字段,第1个字段是挂载点;第2个字段是映射文件的位置;第3个字段可选,可以包括超时数值之类的信息。



例如:要在机器上的/misc/myproject挂载点上挂载远程机penguin.example.net中的/project52目录。


在/etc/auto.master文件中添加以下行:


/misc /etc/auto.misc --timeout 60


在/etc/auto.misc文件中添加以下行:


myproject -rw,soft,intr,rsize=8192,wsize=8192 penguin.example.net:/proj52



/etc/auto.misc中的第1个字段是/misc子目录的名称,该目录被automount动态地创建,它不应该在客户端机器上实际存在;第2个字段包括挂载选项,如rw代表读写访问权,第3个字段是要导出的NFS的位置,包括主机名和目录。



(3)autofs是一种服务,要启动这项服务,在shell提示下键入以下命令:


$ sudo /sbin/service autofs restart


要查看活跃的挂载点,在shell提示下键入以下命令:


$ sudo /sbin/service autofs status


如果在autofs运行时修改了/etc/auto.master配置文件,则必须在shell提示下键入以下命令来通知automount守护进程重新载入配置文件:


$ sudo /sbin/service autofs reload



5、可以运行df命令查看是否挂载成功:


$ sudo df



取消挂载的命令如下:


$ sudo umount /mnt/root_nfs



九、目标板NFS配置操作



主机IP:192.168.1.101


目标板IP:192.168.1.230



将USB转串口连接上,在终端输入minicom与板子连起,作为“超级终端”使用。



启动目标板并连通网络后,首先查看目标板kernel自身是否支持NFS,在minicom中输入cat /proc/filesystems命令查看其中是否有NFS一行,若没有则表示内核不支持NFS,就需要重新编译和烧写内核;有则OK,接下来就可以直接进行mount操作了。



具体命令是:


# mount -t nfs -o nolock 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs



无任何提示表示成功,这时可以进入/mnt/root_nfs目录,对文件进行cp、mv等操作。



但是如果使用命令mount -t nfs 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs,则会有如下的错误提示(也就是省去了"-o nolock"):


# mount -t nfs 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs /mnt/root_nfs


portmap: server localhost not responding, timed out


RPC: failed to contact portmap (errno -5).


portmap: server localhost not responding, timed out


RPC: failed to contact portmap (errno -5).


lockd_up: makesock failed, error="-5"


portmap: server localhost not responding, timed out


RPC: failed to contact portmap (errno -5).



这时如果使用ls /mnt/root_nfs命令查看该目录内容时,你会发现此时NFS确确实实已经挂载成功了。



然后取消挂载的时候会出现如下的错误提示:


# umount /mnt/root_nfs/


lockd_down: no lockd running.



而成功取消挂载时没有任何提示,同样此时NFS也确实已经取消挂载了。



那么出现上面错误提示的可能原因是:


nfs mount默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。



简单的解决方法:kill文件锁(lockd)或者使用mount -o nolock命令。



上面说的文件锁具体是什么原因,目前还没有找到更好的解决办法。不过,如果主机防火墙有设置时,也可能导致目标板无法正常访问。



到此这篇nfs客户端怎么访问(nfs客户端开放端口)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!















































































































































































































































































版权声明


相关文章:

  • 达梦客户端安装 linux(linux安装达梦创建实例)2025-07-06 09:36:09
  • 与服务器断开连接是什么意思(与服务器的连接已中断,请稍后再试)2025-07-06 09:36:09
  • 服务器部署操作系统(服务器的部署原则)2025-07-06 09:36:09
  • redis端口号被耗尽(redis-cli 端口)2025-07-06 09:36:09
  • rediscli连接集群(redis集群客户端连接ip配置)2025-07-06 09:36:09
  • windows nfs客户端(windows2012 nfs客户端)2025-07-06 09:36:09
  • Redis端口号(redis端口号及其占用的主要资源是什么)2025-07-06 09:36:09
  • onnx模型部署到手机(onnx安卓部署)2025-07-06 09:36:09
  • 服务器的部署(服务器的部署和搭建)2025-07-06 09:36:09
  • 苹果软件后缀名是啥(苹果手机软件的后缀名是什么)2025-07-06 09:36:09
  • 全屏图片