NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享存储。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 —– [ 维基百科 ]
NFS 的实现使用了RPC(Remote Procedure Call)的机制,远程过程调用使得客户端可以调用服务端的函数。由于有 VFS 的存在,客户端可以像使用其他普通文件系统一样使用 NFS 文件系统,由操作系统内核将 NFS 文件系统的调用请求通过 TCP/IP 发送至服务端的 NFS 服务,执行相关的操作,之后服务端再讲操作结果返回客户端。
FTP 是一个文件传输的协议,客户端需要使用专门的 ftp 客户端与服务器端进行通信,以完成文件的上传和下载,FTP 协议工作在应用层。它使用两个连接与客户端通信:
FTP 服务器会监听 TCP 21 号端口用于命令连接,而数据连接有两种模式:
略
NFS 只能在 Unix 系统间进行共享,而 Windows 对其支持很有限。因此有人就在 Linux/Unix 系统中实现了 Windows 文件共享所使用的 CIFS 协议,也叫做 SMB(Simple Message Block)协议。这使得 Windows/Linux/Unix 间可以自由的进行文件共享。
服务器系统平台:Ubuntu 16.04
- Server IP:192.168.64.130
- Client IP :192.168.64.129 (Ubuntu)
- Client IP :192.168.6.23 (Windows)
[iceman@ubuntu]$: sudo apt-get install rpcbind nfs-kernel-server
配置NFS比较简单,主要是在/etc/exports文件中添加需要共享的文件目录和相应权限,
[iceman@ubuntu]$: sudo mkdir /home/share
[iceman@ubuntu]$: sudo vim /etc/exports #编辑添加权限配置
/home/share 192.168.64.129(rw,sync,no_root_squash,no_all_squash,no_subtree_check)
/etc/exports配置文件配置比较简单,只需要上面一行即可。该行分为3部分:
访问权限选项:
用户映射选项:
其他选项:
[iceman@ubuntu]$: sudo /etc/init.d/rpcbind restart #重启rpcbind 服务(nfs是通过RPC端口映射)
[iceman@ubuntu]$: sudo /etc/init.d/nfs-kernel-server restart #重启nfs服务。
客户端配置本文主要从Ubuntu和Windows下进行文件系统挂载
[iceman@ubuntu]$: sudo apt-get install nfs-kernel-server
[iceman@ubuntu]$: sudo mount -t nfs 192.168.64.130:/home/share /home/foo #设定nfs版本 -o nfsvers=3
[iceman@ubuntu]$: sudo vim /etc/rc.local #添加如下信息
mount -t nfs 192.168.64.130:/home/share /home/foo
exit 0
在windows中默认NFS客户端服务是关闭的,需要开启服务
开启步骤:
开始挂载:
[iceman@ubuntu]$: sudo umount /home/foo
当出现该问题时,记得在exports 添加insecure,如下:
[iceman@ubuntu]$: sudo vim /etc/exports #编辑添加权限配置
/home/share 192.168.64.129(insecure,rw,sync,no_root_squash,no_all_squash,no_subtree_check)
在windows上配置NFS服务器,目前可以通过开源软件来进行搭建,目前只介绍下开源库,后期再详细分析