三、【NFS服务器】虚拟机nfs服务器搭建

一、NFS服务器简介

1、什么是NFS?

  • NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件
  • NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
  • NFS一般用来存储共享视频图片等静态数据。

2、nfs挂载原理

                                                                 

如上图示:

  当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。挂载后,NFS客户端查看磁盘信息命令:df –h

  既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想对应的网络端口,NFS服务器到底使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了!

二、挂载过程

现在我需要挂载nfs服务器去实现主机和开发板之间共享文件。

1、安装软件包

sudo apt-get update 	
sudo apt-get install nfs-common nfs-kernel-server  

2、配置服务器

打开/etc/export文件去配置服务器

  •  /opt/nfs:要共享的目录
  • * :允许所有的网段访问
  • rw :指客户端拥有读写权限,还是有一个ro选项,代表只读
  • sync:指同步写入资料到内存和硬盘中,与之相反的选项是async.
  • no_subtree_check: 不检测子目录,提高性能。
  • root_squash:如果客户端使用root访问目录,会被当做匿名用户(也就是说,权限比较小,比较安全)。
  • no_root_squash:客户使用root访问共享目录时,还是拥有root权限,极不安全。
  • all_squash:无论客户端使用什么用户访问共享目录都会被当作匿名用户。  

3、重启服务器及查看服务器状态

sudo /etc/init.d/nfs-kernel-server restart 		--重启nfs服务器
sudo /etc/init.d/nfs-kernel-server status   		--查看nfs是否开启
netstat -a | grep nfs                 	                --或用这个查看nfs是否开启 

4、创建共享目录

刚才在/etc/exports文件中我们配置了/opt/nfs目录为共享目录,那我们在opt下创建nfs目录,并修改目录权限。此时我们服务器就安装配置完成了。

5、开发板端挂载虚拟机的nfs共享目录。

挂载之前我们要保证开发板和主机之间时可以ping通的,然后再进行挂载。

开发板挂载命令:

mount -t nfs -o nolock 虚拟机IP:/opt/nfs   share     --其中share是开发板上新建的共享目录

6、挂载成功后我们在虚拟机的/opt/nfs下创建一个test文件  

此时我们开发板的目录下也会出现这个新建的test文件,如此就实现了虚拟机和主板的文件共享。

 

 

原文地址:https://www.cnblogs.com/yuanqiangfei/p/15644850.html