Ubuntu配置NFS服务器

  NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

  环境:Win7_64位+VMware11+Ubuntu1204

  1,下载安装

    sudo apt-get install nfs-kernel-server

  2,创建目录

    sudo mkdir /source/rootfs

    注:nfs只是一种文件目录共享模式,可以是任意目录,建议使用专门目录。

  3,配置共享资源

    sudo vi /etc/exports    #打开配置文件

    格式:<ShareDir> <Host1(args)> <Host2(args)> ...

    解释:ShareDir共享目录,Hostn客户端主机标识,args该客户端访问权限

    示例:/srouce/rootfs *(rw,sync,no_root_squash,no_subtree_check)

        *:允许所有的网段访问,也可以使用具体的IP

        rw:挂接此目录的客户端对该共享目录具有读写权限

        sync:资料同步写入内存和硬盘

        no_root_squash:root用户具有对根目录的完全管理访问权限。

        no_subtree_check:不检查父目录的权限。

    附具体参数说明如下:

参数

说明

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   

  4,启动服务

    重启portmap服务。nfs是一个RPC程序,使用它前,需要映射好端口,通过portmap设定。

      sudo /etc/init.d/portmap restart   

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

    或者

      sudo service portmap restart

      sudo service nfs-kernel-server restart

  5,查看NFS服务器的共享资源

    在客户端可以使用showmount命令查看NFS服务器上都有哪些共享资源,如果使用该命令需要安装nfs-kernel-server软件包。

    格式:showmount -e <nfsIP>

    示例:showmount -e localhost

  6,将NFS共享目录挂载到本地

    sudo mkdir -p /mnt/nfs  #创建本地目录用于挂载,像操作本地目录一样操作共享目录

    sudo mount -t nfs <nfsIP>:/source/rootfs /mnt/nfs #-t 指定文件系统

    在启动脚本/etc/rc.local中写入挂载命令可实现开机启动挂载

  7,卸载共享资源

    sudo unmount -f /mnt/nfs #-f 强制卸载,不推荐使用-f参数