CentOS上安装和配置NFS 4.0,centos配置nfs4.0由于 NFS 是一个


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

1.安装 NFS 服务器

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

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

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

# vi /etc/exports

/home/iso 203.166.181.64(rw,sync,fsid=0) 211.152.40.171(rw,sync,fsid=0)

203.166.181.64和211.152.40.171上面的用户可以挂载 NFS 服务器上的 /home/iso 目录到自己文件系统里;rw 在这里表示可读可写,sync 资料同步写入到内存与硬盘当中,no_root_squash登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!

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

# chkconfig nfs on

# chkconfig portmap on

# /etc/init.d/portmap start

# /etc/init.d/nfs start

确认 NFSv4 服务器成功运行:

# 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 服务器是否输出我们想共享的目录/home/iso

# exportfs

/home/iso 203.166.181.64

/home/iso 211.152.40.171

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

# vi /etc/hosts.deny

portmap:ALL:deny

# vi /etc/hosts.allow

portmap:127.0.0.1:allow

portmap:203.166.181.64:allow

portmap:211.152.40.171:allow

2.配置NFS服务器的防火墙

NFS 用到的服务有 portmapper,nfs,rquotad,nlockmgr,mountd


通过命令rpcinfo -p可查看nfs使用的端口:

其中 portmapper,nfs 服务端口是固定的分别是 111和2049;

另外 rquotad,nlockmgr,mountd 服务端口是随机的。由于端口是随机的,这导致防火墙无法设置。

这时需要配置/etc/sysconfig/nfs使 rquotad,nlockmgr,mountd 的端口固定。


找到以下几项,将前面的#号去掉。

RQUOTAD_PORT=875


LOCKD_TCPPORT=32803


LOCKD_UDPPORT=32769MOUNTD_PORT=892

service nfs restart

再次查看

设置使 rquotad,nlockmgr,mountd 的端口固定。

vim /etc/services,在文件的最后一行添加:

mountd 892/tcp

mountd 892/udp

rquotad 875/tcp

rquotad 875/udp

nlockmgr 32803/tcp

nlockmgr 32769/udp

重启下nfs服务。service nfs restart


在防火墙中开放这5个端口


编辑iptables配置文件


vim /etc/sysconfig/iptables


添加如下行:

-A INPUT -p tcp -m tcp –dport 111 -j ACCEPT

-A INPUT -p tcp -m tcp –dport 875 -j ACCEPT

-A INPUT -p tcp -m tcp –dport 2049 -j ACCEPT

-A INPUT -p tcp -m tcp –dport 892 -j ACCEPT

-A INPUT -p tcp -m tcp –dport 32803 -j ACCEPT

-A INPUT -p udp -m udp –dport 111 -j ACCEPT

-A INPUT -p udp -m udp –dport 875 -j ACCEPT

-A INPUT -p udp -m udp –dport 2049 -j ACCEPT

-A INPUT -p udp -m udp –dport 892 -j ACCEPT

-A INPUT -p udp -m udp –dport 32769 -j ACCEPT

保存退出并重启iptables


service iptables restart

3.配置NFS客户端

首先启动 portmap:

# /etc/init.d/portmap start

#chkconfig portmap on

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

#showmount -e 211.152.40.162

Export list for 211.152.40.162:

/home/iso 211.152.40.171,203.166.181.64

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

# mount 211.152.39.162:/home/iso /mnt

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

# vi /etc/fstab

211.152.39.162:/home/iso /mnt nfs rw,tcp,intr,nosuid

# mount -a

# chkconfig netfs on

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

相关内容

    暂无相关文章