ubuntu16 搭建NFS服务
1. NFS
网络文件系统(Network File System),简称NFS,最初是由SUN公司推出的UNIX协议(pressentation layer protocol),用于不同计算机之间通过网络共享各自的资源。NFS最大的优点是NFS客户端可以将NFS服务器的共享目录映射到本地,使得客户端可以以本地磁盘访问的方式透明地访问服务器端共享目录/文件,方便快捷。
1.1 应用场合
嵌入式Linux开发过程中,板级系统挂在到NFS服务器,这样不需将程序固件烧录到板级flash上即可执行调试。节约调试时间和防止板级falsh经常擦写而导致损坏。
2. NFS服务器安装
安装过程必须保证ubuntu能够正常联网。本人在此过程使用的Linux版本是64位 ubuntu16.04.1。
1.1 安装nfs组件
sudo apt install nfs-kernel-server
1.2 编辑共享文件
共享目录配置文件位于“/etc/exports”下,配置格式为:
<共享目录> [客户端1(权限选项)] [客户端2(权限选项)] [...]
【1】共享目录,服务端提供给客户端的共享目录,如“/opt/nfs_temp”
【2】客户端,指定可连接nfs服务器的客户端,多个客户端以空格分隔,有以下几种方式。
- 指定客户端主机:192.168.0.100
- 指定网段主机可:192.168.0.*
- 指定域名的主机:nfs.test.com
- 指定域中的所有主机:*.test.com
- 所有主机可:*
【3】权限选项,设置共享目录权限、用户映射,可通过“man 5 exports”查看各个属性选项。
- ro:共享目录只读权限。
- rw:共享目录可读写权限。
- all_squash:所有访问用户都映射为匿名用户或用户组。
- no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组。
- root_squash(默认):将来访的root用户映射为匿名用户或用户组。
- no_root_squash:来访的root用户保持root帐号权限,此参数不安全,一般不建议使用。
- anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534)。
- anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534)。
- secure(默认):限制客户端小于1024的tcp/ip端口才能连接服务器。
- insecure:允许客户端从大于1024的tcp/ip端口连接服务器。
- sync:数据同步写入内存和磁盘中,效率降低,但可以保证数据的一致性。
- async:数据先暂存在内存中,必要时才写入磁盘。
- wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
- no_wdelay:若有写操作则立即执行,应与sync配合使用。
- subtree_check(默认):若输出目录是一个子目录,nfs服务器需检查其父目录的权限。
- no_subtree_check :nfs服务器也不检查其父目录的权限,即使输出目录为子目录,提高效率。
【4】设置nfs服务器共享目录为“/opt/nfs_temp”,执行“sudo vi /etc/exports”键入内容:
/opt/nfs_temp *(rw,sync,no_subtree_check,no_root_squash)
1.3 重启NFS服务
sudo /etc/init.d/nfs-kernel-server restart
3. NFS常用命令
【1】NFS运行状态
nfsstat
【2】查询nfs共享目录信息
showmount -h #查询相关帮助信息(推荐)
showmount -v #查询版本信息
showmount -e #查询服务器共享目录
showmount -a <ip> #查询指定服务器共享目录连接信息
showmount -d #查询服务器共享目录连接信息
【3】不重启nfs服务应用更新
exportfs -a #全部挂载或卸载 “/etc/exports”中目录
exportfs -r #重新挂载“/etc/exports”中目录
exportfs -u #卸载单一目录
exportfs -v #显示共享目录详细信息
4. 客户端连接
配置好后NFS服务器后,客户端同样需支持NFS服务(如果是板级嵌入式Linux,需下载源码包安装)。在客户端主机ping通服务器主机的前提下,挂载NFS服务器。
mount -t nfs -o nolock,tcp 192.168.50.11:/opt/nfs_temp /usr/local
查看NFS连接状态。
5. 参考