Ubuntu下搭建NFS

NFS介绍

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。详细介绍Linux NFS Overview, FAQ and HOWTO Documents
NFS分服务器和客户机,当使用远端文件时只要用mount命令就可把远端NFS服务器上的文件系统挂载在本地文件系统之下,操作远程文件与操作本地文件没有不同。NFS服务器所共享文件或目录记录在/etc/exports文件中。
嵌入式Linux开发中,会经常使用NFS,目标系统通常作为NFS客户机使用,Linux主机作为NFS服务器。在目标系统上通过NFS,将服务器的NFS共享目录挂载到本地,可以直接运行服务器上的文件。在调试系统驱动模块以及应用程序,NFS都是十分必要的,并且Linux还支持NFS根文件系统,能直接从远程NFS root启动系统,这对嵌入式Linux根文件系统裁剪和集成也是十分有必要的。

安装nfs服务器端和客户端

服务器端:sudo apt-get install portmap nfs-kernel-server
客户机端:sudo apt-get install portmap nfs-common

配置共享文件

编辑/etc/exports,在其中增加要共享的目录
sudo gedit /etc/exports
配置
/ubuntu *(rw,sync,no_root_squash,no_subtree_check)
或者/ubuntu 192.168.0.64/24(rw,sync,no_root_squash,no_subtree_check)
/ubuntu是要共享的目录,*代表允许所有的网络段访问,rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squash是NFS客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限
保存。
sudo exportfs -ra(它可以重新扫描/etc/exports,使用户修改/etc/exports配置文件不必重启NFS服务 )
下面是参数的详细说明:参考http://www.cnblogs.com/Charles-Zhang-Blog/archive/2013/02/05/2892879.html

参数 说明
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async nfs在写入数据前可以响应请求
secure nfs通过1024以下的安全TCP/IP端口发送
insecure nfs通过1024以上的端口发送
wdelay 如果多个用户要写入nfs目录,则归组写入(默认)
no_wdelay 如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置
hide 在nfs共享目录中不共享其子目录
no_hide 共享nfs目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
no_subtree_check 不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID

重启服务

sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-kernel-server restart

服务器安装完之后测试。

showmountehostnamehostname/etc/exportsabc@abcdesktop:/ showmount -e
Export list for abc-desktop:
/ubuntu *

客户机挂载。

  • 创建客户机需要挂载的目录(客户机设置的挂载目录必须已经存在)
    sudo mkdir /mnt/share
    sudo chmod 777 /mnt/share/
  • 挂载客户机目录
    sudo mount 192.168.0.58:/ubuntu /mnt/share

出现问题

  • 服务器权限错误
    reason given by server: Permission denied
    解决:
    服务器端启动一定要sudo启动,不然启动失败,服务拒绝

  • 连接拒绝
    svc: failed to register lockdv1 RPC service (errno 111).
    lockd_up: makesock failed, error=-111
    mount: mounting 192.168.1.101:/home/share on /mnt/hosts failed: Connection refused
    解决:
    加上参数-t nfs -o nolock
    mount -t nfs -o nolock 192.168.1.101:/home/share /mnt/hosts

  • 设备或资源忙
    mount: mounting 192.168.1.101:/home/share on /mnt/hosts failed: Device or resource busy
    解决:
    mount上之后在进行mount命令会出现此提示,设备正在运行,不用再次mount,如果想再次mount可以先umount /mnt/hosts

  • MAC系统挂载
    mount_nfs -P 192.168.2.104:/home/sun/rootnfs /Users/sunchunlei/nfsroot

猜你喜欢

转载自blog.csdn.net/yuelengloulan/article/details/72358652