(如果按本文操作后,仍不能正常的访问, 请关闭 Selinux 和
关闭防火墙 )
简介:
1. NFS是SUN开发的,用于Unix机器之间的资源共享。目前被广泛应用于Linux系统之间的资源共享。
2. NFS 是系统间进行文件共享的一种网络协议。
3. 在NFS 的应用结构中有服务器和客户机两种角色。
4. NFS 客户端通过挂载NFS文件系统的方式访问NFS服务器中输出的共享目录。
5. 在同一台主机中既可以是NFS 服务器也可以作为NFS客户机。
安装NFS服务器:
1. rpm -qnfs-utils ——查询是否安装nfs-utils
2. rpm -ivhnfs-utils-**.rpm —— 安装软件包
(如果配置好了yum数据源,推荐使用yum install nfs-utils 来安装nfs-utils)
3. nfs-utils :提供了NFS服务器的启动脚本和管理维护工具
主机中NFS服务配置:
“exports” 文件用于配置NFS 服务器中输出的共享目录
# cat /etc/exports
/home/share *(sync,ro,no_root_squash)
分别对应如下:
nfs共享目录名 客户端主机地址 设置选项
字段 | 说明 |
nfs共享目录名 | 需要进行输出的NFS共享目录名称 |
客户端主机地址 | 能够访问共享目录的主机地址 |
设置选项 | 设置共享目录的属性 |
exports文件中“客户端主机地址”字段可以使用多种形式表示主机地址
实例 | 说明 |
192.168.152.13 | 指定IP 地址的主机 |
nfsclient.test.com | 指定域名的主机 |
192.168.1.0/24 | 指定网段中的所有主机(192.168.1.1-192.168.1.254) |
*.test.com | 指定域下的所有主机 |
* | 所有主机(在局域网中最常使用) |
exports文件中的“配置选项”字段放置在括号对 “( )” 中,多个选项间用逗号分隔
sync:设置NFS服务器同步写磁盘,这样不会轻易丢失数据,建议所有的NFS共享目录都使用该选项
ro :设置输出的共享目录只读,与rw不能共同使用
rw:设置输出的共享目录可读写,与ro 不能共同使用
no_root_squash:
此参数用来要求服务器允许远程系统以它自己的root特权存取该目录。就是说,如果用户是root,那么他就对这个共享目录有root的权限。很明显,该参数授予了targetboard很大的权利。安全性是首先要考虑的,可以采取一定的保护机制,在下面会讲一下保护机制。如果使用默认的root_squash,targetboard自己的根文件系统可能有很多无法写入,所以运行会受到极大的限制。在安全性有所保障的前提下,推荐使用no_root_squash参数。
起用保护机制
可以通过设定/etc/hosts.deny和/etc/hosts.allow文件来限制网络服务的存取权限。
***/etc/hosts.deny***
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
***/etc/hosts.allow***
portmap:192.168.1.100
lockd:192.168.1.100
mountd:192.168.1.100
rquotad:192.168.1.100
statd:192.168.1.100
同时使用这两个文件就会使得只有ip为192.168.1.100的机器使用NFS服务。你的targetboard的ip地址设定为192.168.1.100,这样就可以了。
配置NFS 服务器输出的共享目录
实例:
输出”/home/share”目录,对所有主机可读,对地址为192.168.1.220的主机可读可写
输出“/home/pub ”目录,对192.168.1.0子网内的所有主机可读
# cat /etc/exports
/home/share *(sync,ro) 192.168.1.220(sync,rw)
/home/pub 192.168.1.0/24(sync,ro)
NFS 服务器的相关操作
1. NFS 服务器的启动和停止
l service nfs status
或者 /etc/init.d/nfs status —— 查看服务器的状态
l service nfs start ——启动服务器
l service nfs stop ——停止服务器
l service nfs restart ——重启服务器
2. 利用exportfs 命令修改设置
l exportfs –ra ——使得/etc/exports文件中所有设置生效
l exportfs –v ——查看当前主机中NFS服务器的所有目录输出
3. 查看NFS 服务器的共享目录
l # showmount -e 192.168.1.131(showmount –e localhost 显示本机的,类同exportfs -v)
4. 挂载NFS 服务器中的共享目录
l # mount –t nfs 192.168.1.131:/opt/share/ /mnt/share
‐t 选项指定需要挂载的文件系统类型为nfs
NFS服务器的主机地址
NFS共享目录名称
挂载点目录名称
主机地址与共享目录之间用冒号分隔
5. 系统启动时自动挂载NFS 文件系统
将NFS 的共享目录挂载信息写入“/etc/fstab”文件,可实现对NFS 共享目录的自动挂载
# tail -1/etc/fstab ;查看/etc/fstab 文件中最后一行
192.168.1.131:/opt/share /mnt/share nfs defaults0 0
NFS服务器地址及共享目录名称 挂载点目录名称文件系统类型 挂载选项
6. 显示当前主机挂载的NFS 共享目录
使用mount命令查看
# mount | grep nfs
192.168.1.131:/home/share/ on /mnt type nfs (rw,addr=192.168.1.131)
7. 卸载系统中已挂载的NFS 共享目录
使用umount命令卸载NFS文件系统
# umount /mnt/
主机 NFS 服务器设置步骤:
1. 建立共享文件夹
mkdir /home/student/share
2. 设置共享目录
vim /etc/exports加入:
/home/student/share *(sync,rw,no_root_squash)
3. 使设置生效
exportfs -ra
4. 检查共享目录设置是否生效
exportfs –v
客户机 NFS 服务设置步骤:
嵌入式linux内核应该支持NFS客户端。
内核配置时,选择如下:
File system--> Network FileSystems-->
选中NFS System support和Provide NFSvs client support,然后保存退出,重新编译内核,将生成的zImage重新下载到target board。
1. 启动NFS服务:service nfs start
2. 新建挂载点
mkdir /mnt/nfsfolder
3. 挂载共享目录
mount -t nfs localhost:/home/share /mnt/nfsfolder
4. 访问共享目录
cd /mnt/nfsfolder
ls -l
5. 卸载挂载点
cd ../ 一定要切出挂载的目录,否则会提示当前目录忙
umount /mnt/nfsfolder
常见问题
1. 嵌入式开发中,目标板不能正常挂载主机的共享目录。
尝试使用 -onolock 选项
2. 挂载出错提示:mount.nfs:access denied by server while mounting
考虑主机上用来挂载的目录 是否有足够的权限
修改这两个文件或许相应的权限 /etc/hosts.deny和/etc/hosts.allow
加上红色的部分 /home/cf/rootfs *(insecure,rw,async,no_root_squash), 允许使用大于1024的端口号 (挂载不成功时, 可以查看日志文件查看什么原因造成的不成功。
cat /var/log/messages | grep mount)
小结:
l NFS是进行文件共享的网络协议
l 在RHEL系统中NFS服务器程序和管理工具是默认安装的
l NFS服务器通过exports文件配置共享目录输出和目录的访问权限
l showmount 命令用于查询显示NFS服务器的相关信息
l exportfs命令用于对“exports”文件设置的共享目录进行管理