NFS用于Linux主机访问网络中其他Linux主机上的共享资源。NFS的原理是在客户端上通过网络将远程主机共享文件系统以挂载(Mount)的方式加入本机的文件系统,之后的操作就如同在本机上一样。
NFS服务器(宿主机)
1.安装NFS
Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
$ sudo apt-get installnfs-kernel-server
(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)
这样,宿主机就相当于NFS Server。
2. 配置NFS
1)配置portmap
方法1: 编辑/etc/default/portmap, 将 -i127.0.0.1 去掉.
方法2:
对Should portmap be bound to theloopback address? 选N.
2)配置/etc/hosts.deny
(禁止任何host(主机)能和你的NFS服务器进行NFS连接),加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
3)配 置/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
/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
/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-serverrestart
7)nfs服务器端测试
由于nfs服务器端默认是安装了nfs客户端(nfs-common)的,所以可以在服务器端挂载共享文件夹作测试。
$sudo mount192.168.1.160:/home/lin/NFSshare /mnt
192.168.1.160是nfs服务器端IP地址,可以在服务器端终端通过命令ifconfig获得。
配置可能会出错
$mount192.168.1.160:/home/lin/NFSshare /mnt
mount.nfs: access denied by serverwhile mounting 192.168.1.160:/home/lin/NFSshare
在nfs客户端执行上述命令,出现同样的错误。这个错误的意思是客户端地址不在NFS所允许的地址范围之内,但无论服务器端还是客户端IP都是192.168.1.*啊!
$ sudo /etc/init.d/nfs-kernel-serverrestart
NFS客户端
1.安装NFS
$ sudo apt-get install nfs-commmon
2.nfs挂载
挂载服务器端共享文件夹(假设服务器端IP地址为:192.168.1.160,将/home/lin/NFSshare挂载到/mnt)
$ sudo mount192.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/NFSshare192.168.1.139
$ df 看看结果
使用完NFS后可以卸载NFS挂载。
$ sudo umount /mnt
与NFS相关的几个文件
1, /sbin/exportfs
2, /usr/sbin/showmount
3, /var/lib/nfs/xtab
下面这几个并不直接负责NFS, 实际上它们负责所有的RPC
4, /etc/default/portmap
5, /etc/hosts.deny
6, /etc/hosts.allow
7, /etc/exports
(1)打开“共享的文件件”
(2)要想修改,首先就要“解锁”.
选择“Unix网络(NFS)“。因为这是Linux之间的共享;如果是Linux和Windows之间的共享,选择“Windows网络(SMB)”。
参考资料:
1)在ubuntu7.10下配置nfs并挂载共享目录到目标板上
http://hi.baidu.com/lmzzyw/blog/item/a1582e3552985b1590ef39e1
2)Ubuntu上nfs的安装配置
http://hi.baidu.com/wangy0919/blog/item/79e726c68c1efc199d163d98
3)ubuntu测试本机nfs出错:mount.nfs:accessdenied by server while mounting
http://hi.baidu.com/dsfire/blog/item/100386f0b98b52a7a40f52c6