Ubuntu上NFS的安装配置

来源:互联网 发布:电脑端口怎么设置 编辑:程序博客网 时间:2024/04/23 19:03
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

原创粉丝点击