NFS介绍
NFS(Network File System)是一种用于在网络上共享文件系统的协议。它允许不同的计算机之间通过网络访问和共享文件和目录,使文件在不同计算机之间的共享变得更加容易。NFS最初由Sun Microsystems开发,现在已经成为许多Unix-like操作系统(包括Linux)中的标准文件共享协议之一。
以下是有关Linux下的NFS的一些重要信息:
NFS版本
有多个版本的NFS,最常用的是NFSv3和NFSv4。NFSv3是较早的版本,广泛用于Linux系统。NFSv4引入了更多的安全性和功能,并在Linux中得到广泛支持。
NFS服务器和客户端
在NFS中,有两个关键的角色:NFS服务器和NFS客户端。NFS服务器是存储文件的系统,而NFS客户端是需要访问这些文件的系统。在Linux上,可以同时配置系统既为NFS服务器又为NFS客户端。
安装NFS
要在Linux上使用NFS,首先需要安装NFS服务器和客户端软件包,通常分别是nfs-kernel-server和nfs-common。你可以使用包管理工具如apt(Debian/Ubuntu)或yum(CentOS/RHEL)来安装这些软件包。
配置NFS服务器
要配置NFS服务器,你需要编辑NFS服务器的配置文件/etc/exports,并指定要共享的目录以及允许访问该目录的客户端。配置后,使用exportfs命令重新加载NFS共享。
启动NFS服务
启动NFS服务器服务,你需要运行systemctl start nfs-server(对于Systemd系统)或service nfs start(对于SysV系统)。
挂载NFS共享
要在NFS客户端上访问共享的文件系统,你需要将NFS共享挂载到本地文件系统。使用mount命令进行挂载,例如:mount -t nfs server_ip:/shared_directory /local_mount_point。
NFS安全性
NFS默认情况下可能不是最安全的,因为它使用基于IP地址的访问控制。你可以配置更复杂的安全性,例如使用Kerberos身份验证来提高安全性。
NFS日志
NFS服务器和客户端都会生成日志,可用于故障排除和监控。你可以查看/var/log/messages(对于SysV)或/var/log/syslog(对于Systemd)以获取有关NFS活动的信息。
NFS是一种方便的文件共享协议,特别适用于局域网中的文件共享需求。但需要注意,安全性配置和网络性能可能需要额外的关注和调整,以确保数据的保密性和可靠性。
开发板配置NFS环境
环境
环境 ubuntu 10.4 vm 7.1
终端
ifconfig 得到 ubuntu资料
INET ADDR 192.168.0.4
BCAST 192.168.0.255
MASK 255.255.255.0
操作前先关闭防火墙
关闭防火墙:
命令:sudo ufw disable
打开防火墙
命令:sudo ufw enable
配置过程
server端的配置
一 安装NFS
$ sudo apt-get install nfs-kernel-server
$ sudo apt-get install nfs-common
二 配置NFS
1 $ sudo dpkg-reconfigure portmap
, 对Should portmap be bound to the loopback address? 选N
2 $ sudo gedit /etc/default/portmap
末行清除 “-i 127.0.0.1”
三 配置hosts.deny
$ sudo gedit /etc/hosts.deny
文本末添加
portmap: ALL
lockd: ALL
mountd: ALL
rquotad: ALL
statd: ALL
四 配置hosts.allow
$ sudo gedit /etc/hosts.allow
文本末加入
### NFS DAEMONS
portmap: 192.168.0.
lockd: 192.168.0.
rquotad: 192.168.0.
mountd: 192.168.0.
statd: 192.168.0.
$ sudo /etc/init.d/portmap restart
重启portmap daemon.
显示如下
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the restart(8) utility, e.g. restart portmap
portmap start/running, process XXXX
五 配置/etc/exports
$ sudo gedit /etc/exports
文本末添加
/home/yuanyi/QT_WORK *(rw,sync,no_root_squash)
chmod 777 -R /home/work
$ sudo showmount -e
显示 clnt-create : RPC : Program not registered
$ sudo exportfs -r
更新
$ sudo showmount 192.168.0.4 -e
显示
Export list for 192.168.0.4:
/home/yuanyi/QT_WORK *
六 启用
$ sudo /etc/init.d/nfs-kernel-server restart
重启nfs服务
显示如下
* Stopping NFS kernel daemon [ OK ]
* Unexporting directories for NFS kernel daemon... [ OK ]
* Exporting directories for NFS kernel daemon...
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/home/work".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
* Starting NFS kernel daemon
[ OK ]
开发板的操作
进入uboot设置环境变量
nugget# setenv gatewayip 192.168.0.1
nugget# setenv netmask 255.255.255.0
nugget# setenv ipaddr 192.168.0.130
nugget# setenv serverip 192.168.0.136
开发板挂载
mount -t nfs 192.168.0.4:/home/yuanyi/QT_WORK /nfsmnt
常见问题
如果提示failed: Connection refused
请使用下面的命令
mount -t nfs 192.168.0.100:/home/yuanyi/QT_WORK /mnt -o nolock
卸载
Umonut /mnt
解决
mount.nfs: mount system call failed;
Mount.nfs: access denied by server while mogunting 192.168.2.1:/home ;
Clnt_create: RPC:Program no registered等问题
NFS不能挂接主要问题:
1、ip设置不正确
2 /etc/hosts.allow没有配置好
3、没关闭防火墙