转载:
原理说明
https://www.cnblogs.com/me80/p/7464125.html
http://www.cnblogs.com/whych/p/9196537.html
NFS(Network File System)即网络文件系统。
对于Linux而言,文件系统是在内核空间实现的,即文件系统比如ext3、ext4等是在Kernel启动时,以内核模块的身份加载运行的。
一、启用linux内核中的nfs服务
进入内核源码文件目录
1、配置内核,使用如下命令配置内核
make menuconfig
2、开启nfs配置,找到如下配置并将其编译进内核:
Networking support
File systems
---->[*]Network file system
二、原理
-
本地用户要访问nfs服务器中文件,先向内核发起请求,内核处理调用nfs模块及rpc client
-
rpc client向rpc server发起连接
-
在连接之前,NFS服务除了启动nfsd本身监听的端口2049/tcp和2049/udp,还会启动其它进程(如mountd,statd,rquotad等)以完成文件共享,这些进程的端口是不固定的;是每次NFS服务启动时向RPC服务注册的,RPC服务会随机分配未使用的端口
-
完成连接,接受访问请求
-
nfs应用程序向内核发起请求
-
内核调用文件系统
然后client端通过获取的NFS端口来建立和server端的NFS连接并进行数据的传输。
三、服务配置
虚拟机,终端上操作如下命令
安装NFS服务器
apt-get install nfs-kernel-server
建立一个nfs服务的专有的文件夹
比如/opt/freescale/nfs_share
gedit /etc/exports
添加:
/opt/freescale/nfs_share *(rw,sync,no_root_squash,no_subtree_check)
/opt/freescale/nfs_share:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!
*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限。
no_subtree_check:不检查父目录的权限。
启动服务
/etc/init.d/portmap restart 重启portmap服务。nfs是一个RPC程序,使用它前,需要映射好端口,通过portmap设定。
/etc/init.d/nfs-kernel-server restart 启nfs服务。
目标机挂载
mount -t nfs -o nolock 192.168.3.177:/opt/freescale/nfs_share /mnt/nfs
(虚拟机配置桥接,也可设置静态IP,目的和目标机同个网段)