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参数