CentOS NFS配置详解

网络 网络管理
下面我们主要讲解了CentOS NFS服务器的一些设置情况。首先是服务器的安装,之后对于客户端的设置进行了说明和讲解。

我们知道在Linux上运行NFS会有很多不同的情况。随着环境以及相应版本和硬件的改动,它的一些性能会有很大的差异。那么今天我们来看一下CentOS NFS的一些安装和测试情况。在 CentOS 上安装和配置 NFS 4.0。NFS 网络文件系统协议最早是于1984年由 SUN 公司开发的,NFSv4 是最新的修订版本,2003年4月发布(RFC 3530)。由于 NFS 是一个开放的协议和标准,所以各个系统上的实现不同,所表现出来就是稳定性和性能差异,VPSee 的经验是 NFS 在 Solaris 上最稳定、功能最丰富;在 FreeBSD 上的性能最好,但是缺少一些功能,比如 FreeBSD 8.0 内核才增加了 NFS 文件锁的支持;NFS 在 Linux 上表现最一般了,所以我们至今仍有部分服务器低调地运行着古老的 Solaris 2.5 和 NFSv3,相比 NFSv3 来说 NFSv4 做了一些重大改进,比如:性能的提升、安全性的增强和 ACL,更容易与防火墙集成等。下面地操作在 CentOS 5.5 上完成。

安装CentOS NFS 服务器

安装CentOS NFS 服务器所需的软件包:

  1. # yum install nfs-utils nfs4-acl-tools portmap 

配置CentOS NFS 共享

和安装任何其他服务器软件一样,安装完 NFS 服务后就需要对 NFS 服务进行配置。输出服务器端的某个目录,以便 NFS 客户端能挂载和访问到这个目录

  1. # vi /etc/exports  
  2. /bak              172.16.20.11(rw,sync,fsid=0) 172.16.20.12(rw,sync,fsid=0

172.16.20.11 和 172.16.20.12 上面的用户可以挂载 NFS 服务器(172.16.20.1)上的 /bak 目录到自己文件系统里;rw 在这里表示可读可写。

把CentOS NFS服务加入系统启动脚本并且手动启动 NFS 服务:

  1. # chkconfig nfs on  
  2. # chkconfig portmap on  
  3.  
  4. # /etc/init.d/portmap start  
  5. # /etc/init.d/nfs start 

确认 NFSv4 服务器成功运行:

  1. # rpcinfo -p  
  2.    program vers proto   port  
  3.     100000    2   tcp    111  portmapper  
  4.     100000    2   udp    111  portmapper  
  5.     100003    2   udp   2049  nfs  
  6.     100003    3   udp   2049  nfs  
  7.     100003    4   udp   2049  nfs  
  8.     ...  
  9.     100005    3   tcp    750  mountd 

检查CentOS NFS服务器是否输出我们想共享的目录 /bak:

  1. # exportfs  
  2. /bak           172.16.20.11  
  3. /bak           172.16.20.12 

注意 NFS 使用 portmap,而且新版本的 portmap 使用 hosts.deny 和 hosts.allow 文件来控制访问源,修改这2个配置文件以便 NFS 客户端能正常连接到服务器:

  1. # vi /etc/hosts.deny  
  2. portmap:ALL  
  3.  
  4. # vi /etc/hosts.allow  
  5. portmap:172.16.38.0/255.255.254.0 

使用 NFS 客户端

首先启动 portmap:

  1. # /etc/init.d/portmap start 

检查 NFS 服务器端是否有目录共享:#p#

  1. # showmount -e 172.16.20.1  
  2. Export list for 172.16.20.1:  
  3. /bak 172.16.20.11,172.16.20.12 

使用 mount 挂载服务器端的目录 /bak 到客户端某个目录下:

  1. # mkdir /home/vpsee/bak  
  2. # mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/  
  3.  
  4. # df -H  
  5. Filesystem             Size   Used  Avail Use% Mounted on  
  6. ...  
  7. 172.16.39.1:/        232G    23G   198G  11% /home/vpsee/bak 

在 /etc/fstab 中挂载 nfs 文件系统:

  1. # vi /etc/fstab  
  2. 172.16.20.1:/    /bak  nfs4   soft,intr,rsize=8192,wsize=8192,nosuid  
  3.  
  4. # chkconfig netfs on 

在成功挂载服务器端的 /bak 后就可以在客户端里操作了,这时候写文件或者拷贝文件的时候会遇到一个权限问题报错 : Permission denied,这是因为上面我们在服务器端建立了 /bak 但是 /bak 的 owner 是 root:root,而客户端的正在访问 NFS 的用户是 vpsee,NFS 要求服务器端和客户端的 UID 和 GID 必须一致,所以要在 NFS 服务器端修改 /bak 的权限和所属:

  1. # chown -R vpsee:vpsee /bak 

注意使用CentOS NFS 的时候,客户端的用户 UID 和 GID 必须和服务器端的 UID 和 GID 完全符合,否则会造成权限错误。在小规模用户的情况下,我们可以偷懒通过在客户和服务器两端同时建立相同的用户和组来解决这个问题,但是在大规模用户情况下最好的办法是利用 NIS 或者 OpenLDAP 来统一管理用户,做到一次登录,到处访问。

Troubleshooting

1、在上面的操作过程中,如果你不幸遇到下面这个问题的话,可以尝试更新 Linux kernel 或通过打开 IPv6 来解决这个问题,这是1个 bug:

  1. # mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/  
  2. mount.nfs4: Cannot allocate memory 

2、如果遇到如下问题,可能是因为你的 mount -t nfs 使用的是 nfsv3 协议,需要明确指出使用 nfsv4 协议挂载 mount -t nfs4:

  1. # mount -t nfs 172.16.20.1:/ /home/vpsee/bak/  
  2. mount: mount to NFS server '172.16.20.1' failed: RPC Error: Program not registered.  
  3.  
  4. # mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/ 

 

责任编辑:佟健 来源: IT168
相关推荐

2010-08-06 13:42:21

CentOSNFS

2010-04-06 16:56:14

CentOS系统

2010-08-03 15:23:29

CentOS 5.3

2010-08-06 12:29:17

Linux NFS服务

2009-09-10 11:24:16

NFS服务器

2010-07-28 15:10:21

NFS配置

2009-11-30 09:09:21

Suse 10安装nf

2010-08-05 14:36:07

NFS服务

2010-08-05 11:21:58

NFS共享

2010-08-03 17:26:13

NFS端口

2010-08-04 15:01:00

2010-07-30 13:51:23

NFS配置

2010-08-05 10:18:19

Solaris nfs

2010-08-03 15:53:07

CentOSNFS服务器

2010-07-27 10:15:38

NFS网络文件系统

2010-08-02 17:16:10

Fedora10 NF

2010-08-05 10:00:18

NFS服务挂起

2010-01-07 12:46:28

Ubuntu nfs

2009-09-08 13:48:13

NFS服务器

2009-09-17 13:27:30

SolarisNFSNIS
点赞
收藏

51CTO技术栈公众号