我是靠谱客的博主 贪玩大山,最近开发中收集的这篇文章主要介绍Linux搭建NFS服务0 前言1 安装2 配置3 挂载4 TODO参考资料,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

0 前言

        NFS文件共享无论是在嵌入式开发还是普通办公中都非常实用,本文介绍如何在Ubuntu中搭建NFS服务器。经过测试,本文方法适用于的Ubuntu版本有14.04、16.04、18.04、20.04、22.04。

1 安装

sudo apt-get install -y nfs-kernel-server 

:安装上述服务后,会自动生成“/etc/exports”,第2节就是在该文件中添加共享目录的。

2 配置

2.1 共享目录

    添加要共享的目录:

/home/liyihai/ *(insecure,rw,sync,no_root_squash,no_subtree_check)
# @file: /etct/exports

    各参数的含义如下:

  • /home/liyihai:共享目录,根据实际目录修改;
  • *:允许所有的网络段访问;
  • rw:访问者具有可读写权限;
  • sync:资料同步写入内存和硬盘;
  • async: 资料会先暂存于内存中,而非直接写入硬盘;[8]
  • root_squash:在登入NFS主机使用分享目录的使用者如果是root时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的UID与GID都会变成nobody那个系统账号的身份;[8]
  • no_root_squash:nfs共享目录访问者具有root权限;
  • subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限[4];
  • no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率[4];
  • insecure:允许NFS客户端不使用保留的端口,设置这个可以避免部分客户端挂载失败。[9]

2.2 重启服务

# Ubuntu10.04
sudo /etc/init.d/portmap restart
# > Ubuntu10.4
sudo /etc/init.d/rpcbind restart

sudo /etc/init.d/nfs-kernel-server restart
# Ubuntu18.04.5之后废弃了上面/etc/init.d/nfs-kernel-server,改用下面命令
sudo service nfs-kernel-server restart # [6]

2.3 协议版本

    NFS协议目前已经发展到了4.x版本,它引入了诸如文件锁[12]等新功能,对于部分应用场景可能会有影响,可通过nfsstat命令查看其版本信息[11]:

图2.1

    Ubuntu18.04默认使用的是NFSv3、NFSv4,而有时嵌入式开发板的系统只支持NFSv2,可通过下面配置增加NFSv2的支持[14][15],否则开发板将会无法挂载NFS文件系统:

+# Support Tiny4412 NFS
+RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

# @file: /etc/default/nfs-kernel-server

    配置完毕根据第2.2小节方法重启NFS服务即可生效。

    此外,如果不想改服务端配置,客户端在挂载NFS时也可通过“nfsvers”或“vers”参数指定协议版本:

mount -t nfs -o nfsvers=3 <server_ip>:/home/liyihai /mnt # [17]
# or
mount -t nfs -o vers=4,minorversion=1 <server_ip>:/home/liyihai /mnt # [16]

    例如编译NFSv4上的Android系统源码会遇到失败问题,改用NFSv3可规避[13]。

3 挂载

    客户端可通过下面命令查看服务器共享的目录列表:

showmount -e <server_ip> # 仅显示已被NFS客户端加载的目录[18]
showmount -d <server_ip> # 显示NFS服务器上所有的共享目录[18]

3.1 PC

(1)挂载本地NFS

sudo mount -t nfs localhost:/home/liyihai/ /mnt/

(2)挂载远程NFS

sudo mount -t nfs <server_ip>:/home/liyihai/ /mnt/

3.2 开发板

    嵌入式开发板挂载NFS文件系统和PC是类似的,但有些需要注意的地方:

(1)文件锁

    嵌入式开发板挂载NFS文件系统通常需要加“-o nolock”来关闭文件锁,否则会挂载失败[10]:

mount -t nfs -o nolock <server_ip>:/home/liyihai/ <board_dir>

(2)协议版本

    曾遇到Tiny4412挂载NFS文件系统失败问题,需根据第2.3小节方法增加NFSv2的支持成解决问题。

4 TODO

(1)软链接目录无法共享,需要寻找解决方法;

参考资料

[1]Ubuntu 14.04下NFS安装配置

[2]mount.nfs: requested NFS version or transport protocol is not supported

[3]NFS /etc/exports参数解释

[4]NFS服务基本配置及使用

[5]NFS安装配置及常见问题

[6]ubuntu升级18.04之后nfs出错

[7]Ubuntu18.04LTS搭建NFS及配置详解(修改完善)

[8]*(rw,async,no_root_squash)

[9]nfs挂载出错处理

[10]目标板挂载NFS时 需要nolock参数

[11]查看linux nfs版本

[12]Manage NFS and NIS > NFS and file locking

[13][Loire] [Kugo] Android 9 build does not finish: dex2oat.cc:3118 Failed to process profile file #506

[14]Ubuntu18.10的64位系统,开发板不能挂载NFS

[15]Ubuntu18.04挂载nfs失败....

[16]NFS共享,linux客户端如何挂载nfs v4.1协议版本

[17]nfs挂载不上,指定版本挂载

[18]showmount命令

最后

以上就是贪玩大山为你收集整理的Linux搭建NFS服务0 前言1 安装2 配置3 挂载4 TODO参考资料的全部内容,希望文章能够帮你解决Linux搭建NFS服务0 前言1 安装2 配置3 挂载4 TODO参考资料所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部