您的位置:首页 > 其它

Ubuntu上NFS的安装配置

2013-10-10 10:12 190 查看
Cited from: http://blog.csdn.net/armeasy/archive/2010/08/09/5799837.aspx
NFS 用于 Linux 主机访问网络中其他 Linux 主机上的共享资源。 NFS 的原理是在客户端上通过网络将远程主机共享文件系统以挂载 (Mount) 的方式加入本机的文件系统,之后的操作就如同在本机上一样。

NFS 服务器 ( 宿主机 )

1. 安装 NFS
Ubuntu 上默认是没有安装 NFS 服务器的,首先要安装 NFS 服务程序:

$ sudo apt-get install nfs-kernel-server

( 安装 nfs-kernel-server 时, apt 会自动安装 nfs-common 和 portmap )

这样,宿主机就相当于 NFS Server 。

2. 配置 NFS

1) 配置 portmap


方法 1: 编辑 /etc/default/portmap, 将 -i
127.0.0.1 去掉 .

方法 2:
$ sudo dpkg-reconfigure portmap
对 Should portmap be bound to the loopback address? 选 N.

2) 配置 /etc/hosts.deny
$ sudo gedit /etc/hosts.deny

(禁止任何 host (主机)能和你的 NFS 服务器进行 NFS 连接 ) ,加入:

### NFS DAEMONS

portmap:ALL

lockd:ALL

mountd:ALL

rquotad:ALL

statd:ALL

3) 配 置 /etc/hosts.allow
$ sudo gedit /etc/hosts.allow

允许那些你想要的主机和你的 NFS 服务器建立连接。下列步骤将允许任何 IP 地址以 192.168.1 开头的主机(连接到 NFS 服务器上),也可以指定特定的 IP 地址。

### NFS DAEMONS

portmap: 192.168.1.

lockd: 192.168.1.

rquotad: 192.168.1.

mountd: 192.168.1.

statd: 192.168.1.

蓝色文字可略过

起用保护机制

上面设置了只要在 192.168.1. *这个网段的所有 IP 地址用户都可以访问共享目录,但我只想让一个 IP 地址访问,比如 192.168.1.101 那么就可以这样设置了。

可以通过设定 /etc/hosts.deny 和 /etc/hosts.allow 文件来限制网络服务的存取权限。

***/etc/hosts.deny***

portmap:ALL

lockd:ALL

mountd:ALL

rquotad:ALL

statd:ALL

***/etc/hosts.allow***

portmap:192.168.1.101

lockd:192.168.1.101

mountd:192.168.1.101

rquotad:192.168.1.101

statd:192.168.1.101

同时使用这两个文件就会使得只有 ip 为 192.168.1.101 的机器使用 NFS 服务。你的 target
board 的 ip 地址设定为 192.168.1.101 ,这样就可以了。

/etc/hosts.deny 和 /etc/hosts.allow 设置对 portmap 的访问 . 采用这两个配置文件有点类似 "mask" 的意思 . 现在 /etc/hosts.deny 中禁止所有用户对 portmap 的访问 . 再在 /etc/hosts.allow 中允许某些用户对 portmap 的访问。

4 )重启 portmap daemon
每次对 /etc/hosts.deny 和 /etc/hosts.allow 两文件的修改后都要重启 portmap
daemon 。不然修改无效。
$ sudo /etc/init.d/portmap restart

5 )配置 /etc/exports

NFS 挂载目录及权限由 /etc/exports 文件定义。
$sudo
gedit /etc/exports

比如我要将将我的 home 目录中的 /home/lin/NFSshare 目录让 192.168.1.* 的 IP 共享 , 则在该文件末尾添加下列语句:

/home/lin/NFSshare 192.168.1.*(rw,sync,no_root_squash)
然后保存退出。

/home/lin/NFSshare 就表示共享目录,当然,你可以随便换成自己喜欢的目录。
192.168.1. * : 前面三位是你主机( NFS 客户端)的 ip 地址(本机终端 ifconfig 命令就可以获得本机的 ip 地址)。

rw : 读 / 写权限,只读权限的参数为 ro ;

sync :数据同步写入内存和硬盘,也可以使用 async ,此时数据会先暂存于内存中,而不立即写入硬盘。
no_root_squash : NFS 服务器共享目录用户的属性,如果用户是 root ,那么对于这个共享目录来说就具有root 的权限。

6) 重启 nfs 服务
$ sudo /etc/init.d/nfs-kernel-server restart

执行这个命令的时候可能会提示一些错误,如下:
* Stopping NFS kernel daemon [ OK ]

* Unexporting directories for NFS kernel daemon... [ OK ]

* Exporting directories for NFS kernel daemon... exportfs:
/etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.*:/home/lin/NFSshare".

Assuming default behaviour ('no_subtree_check').

NOTE: this default has changed since nfs-utils version 1.0.x
[ OK ]
* Starting NFS kernel daemon [ OK ]

我不知道具体原因,不用管,不影响后面的使用。

注意: 每次对 /etc/exports 文件的修改,都要重启一下 nfs 服务。

7 ) nfs 服务器端测试
由于 nfs 服务器端默认是安装了 nfs 客户端 (nfs-common) 的,所以可以在服务器端挂载共享文件夹作测试。
$sudo mount 192.168.1.160:/home/lin/NFSshare
/mnt

192.168.1.160 是 nfs 服务器端 IP 地址,可以在服务器端终端通过命令 ifconfig 获得。




有可能会出现错误
$mount 192.168.1.160:/home/lin/NFSshare /mnt

mount.nfs: access denied by server while mounting 192.168.1.160:/home/lin/NFSshare
在 nfs 客户端执行上述命令,出现同样的错误。这个错误的意思是客户端地址不在 NFS 所允许的地址范围之内,但无论服务器端还是客户端 IP 都是 192.168.1.* 啊!

解决办法
重新 $sudo gedit /etc/exports ,将 “
192.168.1. * ” 换成 “ * ” ,要注意就这一个星星哦!修改完之后不要忘了重启一下 nfs 服务
$ sudo /etc/init.d/nfs-kernel-server restart

这样修改之后,就可以看到 /mnt 文件下共享了 /home/lin/NFSshare 文件夹里的内容。测试完毕,要卸载nfs 的挂载
$sudo umount /umt

NFS 客户端
1. 安装 NFS
客户端需要安装 n fs 客户端程序 (nfs-common)
$ sudo apt-get install nfs-commmon

2.nfs 挂载
挂载服务器端共享文件夹 ( 假设服务器端 IP 地址为: 192.168.1.160 ,将 /home/lin/NFSshare 挂载到 /mnt)
$ sudo mount 192.168.1.160:/home/lin/NFSshare /mnt

查看 NFS server 的 export
list
$ showmount -e 192.168.1.160
Export list for 192.168.1.160:
/home/lin/NFSshare 192.168.1.139





$ df 看看结果

打开文件夹 /mnt ,可以看到实际访问到了服务器端的 /home/lin/NFSshare 文件夹



使用完 NFS 后可以卸载 NFS 挂载。
$ sudo umount /mnt

与 NFS 相关的几个文件

1, /sbin/exportfs

维护 NFS 的资源共享 . 可以通过它重新设定 /etc/exports 的共享目录 , 卸载 NFS
Server 共享的目录或者重新共享等 .

2, /usr/sbin/showmount

用在 NFS Server 端,而 showmount 则主要用在 Client 端 .
showmount 可以用來查看 NFS 共享的目录资源 .

3, /var/lib/nfs/xtab

NFS 的记录文档 : 通过它可以查看有哪些 Client 连接到 NFS 主机的记录 .

下面这几个并不直接负责 NFS, 实际上它们负责所有的 RPC

4, /etc/default/portmap

实际上 , portmap 负责映射所有的 RPC 服务端口 , 它的内容非常非常之简单 ( 后面详述 )

5, /etc/hosts.deny

设定拒绝 portmap 服务的主机

6, /etc/hosts.allow

设定允许 portmap 服务的主机

7 , /etc/exports

对 NFS 卷的访问是由 exports 来批准 , 它枚举了若干有权访问 NFS 服务器上文件系统的主机名。/etc/exports 实际上就是 nfs 服务器的核心配置文件了 . 鸟哥的 Linux私房菜 列举了一些 exports 文件的写法。
除了编辑 /etc/exports 文件这种方法外, Ubuntu 还提供图形管理工具 ——“ 共享的文件件 ” ,可以用它来进行 NFS 服务器的维护和设置工作。
( 1 )打开 “ 共享的文件件 ”
第一种方法: “ 系统 ”——“ 系统管理 ”——“ 共享的文件夹 ” (我的 Ubuntu8.10 没有)
第二种方法:终端 $
shares-admin



( 2 )要想修改,首先就要 “ 解锁 ” 。



( 3 )可以看到之前 /home/lin/NFSshare 在列表内,其实 “ 共享的文件夹 ” 不过是 /etc/exports 图形化。



(4) 点 “ 添加 ” 添加一个新的共享文件夹



选择 “Unix 网络 (NFS)“ 。因为这是 Linux 之间的共享;如果是 Linux 和 Windows 之间的共享,选择“Windows 网络 (SMB)” 。

( 5 )再点 “ 添加 “ ,可以设置 ” 指定主机名 ”,“ 指定 IP 地址 ” , “ 指定网络 ” 。



(6) 设置完毕之后就可以关闭 “ 共享的文件夹 ” ,打开 /etc/exports 可以看到,相应的语句加入到了文件里。




参考资料:
1) 在 ubuntu7.10 下配置 nfs 并挂载共享目录到目标板上
http://hi.baidu.com/lmzzyw/blog/item/a1582e3552985b1590ef39e1.html
2)Ubuntu 上 nfs 的安装配置
http://hi.baidu.com/wangy0919/blog/item/79e726c68c1efc199d163d98.html
3)ubuntu 测试本机 nfs 出错: mount.nfs:access
denied by server while mounting
http://hi.baidu.com/dsfire/blog/item/100386f0b98b52a7a40f52c6.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: