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