找回密码
 注册
广告投放 虚位以待【阿里云】2核2G云新老同享 99元/年,续费同价做网站就用糖果主机-sugarhosts.comJtti.com-新加坡服务器,美国服务器,香港服务器
查看: 716|回复: 0

在 CentOS 上安装和配置 NFS 4.0

[复制链接]
发表于 2010 年 10 月 2 日 18:40:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×

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 上完成。

安装 NFS 服务器

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

  1. yum install nfs-utils nfs4-acl-tools portmap
复制代码
配置 NFS 共享

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

  1. vi /etc/exports
    /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 在这里表示可读可写。

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

  1. chkconfig nfs on
    chkconfig portmap on
    /etc/init.d/portmap start
    /etc/init.d/nfs start
复制代码

确认 NFSv4 服务器成功运行:

  1. rpcinfo -p
    program vers proto port
    100000 2 tcp 111 portmapper
    100000 2 udp 111 portmapper
    100003 2 udp 2049 nfs
    100003 3 udp 2049 nfs
    100003 4 udp 2049 nfs
    ...
    100005 3 tcp 750 mountd
复制代码

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

  1. exportfs
    /bak 172.16.20.11
    /bak 172.16.20.12
复制代码

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

  1. vi /etc/hosts.deny
    portmap:ALL
    vi /etc/hosts.allow
    portmap:172.16.38.0/255.255.254.0
复制代码
使用 NFS 客户端

首先启动 portmap:

  1. /etc/init.d/portmap start
复制代码

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

  1. showmount -e 172.16.20.1
    Export list for 172.16.20.1:
    /bak 172.16.20.11,172.16.20.12
复制代码

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

  1. mkdir /home/vpsee/bak
    mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/
    df -H
    Filesystem Size Used Avail Use% Mounted on
    ...
    172.16.39.1:/ 232G 23G 198G 11% /home/vpsee/bak
复制代码

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

  1. vi /etc/fstab
    172.16.20.1:/ /bak nfs4 soft,intr,rsize=8192,wsize=8192,nosuid
    chkconfig netfs on
复制代码

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

  1. chown -R vpsee:vpsee /bak
复制代码

注意使用 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/
    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/
    mount: mount to NFS server '172.16.20.1' failed: RPC Error: Program not registered.
    mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/
复制代码



Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2025 年 2 月 3 日 12:43 , Processed in 0.026866 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表