您的位置:首页 > 其它

nfs服务器安装配置

2012-08-31 17:22 197 查看
1、认识nfs服务

实验系统:rhel5.5

6.0系统的portmap改名rpcbind

nfs为Network File System的缩写,即网络文件系统。nfs是unix或类unix操作系统常用的网络共享文件系统之一,通过nfs,用户可以像访问本机磁盘一样访问网络上的文件系统。

nfs可以提供的服务包括在目录中搜寻文件,列出文件,目录管理,获取文件属性和文件读写,nfs的优点在于,本地计算机可以使用较少的磁盘空间,而将数 据存放于一台机器上并通过网络访问;用户不必在每个网络机器上都有家目录,家目录可以放在nfs服务器上通过网络访问:DVD-ROM,移动硬盘,U盘和 其他存储介质可以通过网络共享访问,这样可以减少网络上的移动存储器的数量。

nfs需要用到RPC(远程过程调用)。那么什么是RPC?nfs与rpc的关系是什么呢?首先我们了解nfs的工作原来,nfs提供了许多小的程序,这 些程序有不同的功能,每启动一个功能就会启用一些端口来传输数据。nfs的这些功能对应的端口并非固定,这些端口号是小于1024的随机端口。这样依赖, 客户端如何才能知道服务器上这些随机端口的端口号呢?RPC就承担了让客户端和nfs通信的作用.rpc的作用就在于指派这些nfs的功能对应的端口号, 并且和客户端通信,让客户端可以顺利的和这些端口连接。nfs的程序会通知rpc相关的程序端口号,然后rpc再通知用户端。因为rpc服务的端口号本身 是固定的(111端口),所以客户端只需要和111端口通信就可以活的所有相关的端口号和信息了。

nfs工作的流程如下:

1>客户端向RPC端口发送请求,要求和NFS程序通信。

2>rpc将nfs程序的端口号发回给客户端。

3>客户端与nfs程序建立连接。

nfs需要至少5个监控程序才可以正常运行。这些监控程序的文件名和作用如下:

~rpc.nfsd。他通过/etc/rc.d/init.d/nfs脚本启动,作用在于判断客户端是否具有登录nfs服务器的权限。

~rpc.mountd。装载nfs文件系统的程序,他可以判断文件的使用权限。

~portmap。portmap的作用在乎定向RPC通信流,是NFS重要组成部分。

~rpc.statd。在NFS服务器和客户端通信中断后,rpc.statd和rpc.lockd可以帮助客户端重新连接至服务器。rpc.statd必须在客户端和服务器都启用时才有效。

~rpc.lockd。当多个用户连接nfs服务器时,有可能试图访问同一文件。这个程序的作用在于锁定文件,以避免文件被不同的更改请求覆盖。rpc.lockd必须在客户端和服务器端都启用时才有效。





2、nfs服务器安装

2.1、在上一节中,提到了nfs服务必须和rpc服务协同工作,所以安装nfs服务至 少需要两个rpm包:nfs-utils*.rpm和portmap*.rpm。在RHEL5安装光盘中,还有一个图形界面的nfs配置工 具:system-config-nfs,这个包是可选安装的。

2.2、配置nfs服务器

首先,这里介绍一个nfs相关的重要文件。

*/etc/exports.这个文件就是nfs的主配置文件,在nfs安装完成后,这个文件的内容为空。nfs的设定只需要编辑到这个文件。

*/usr/sbin/showmount。这个命令是客户端用来查看服务器上的共享资源目录的。

*/usr/sbin/exportf。此命令可以重新共享服务器上的资源。一般在nfs主设定文件/etc/exports变更后,可以用到他。

*/var/lib/xtab。nfs的记录文件,包含客户端的连接记录。

6.0为/var/lib/nfs/etab





下面介绍如何配置/etc/exports这个nfs的主设定文件。该文件内容的格式如下:

目录名称 主机名或ip/(参数1/2...) 主机名或IP(参数1/2...)

这里的目录名称就是共享文件夹的路径;在目录名称后,只可访问此目录的主机名或IP,上面的“参数1/2...”指定了该主机的访问权限和访问策略。下面列出了常用的参数的解释和作用。

rw 可读写权限

ro 只读权限

sync 资料同步写入内存和硬盘

async 资料先写入内存,后写入硬盘

no_root_squash 如果用root登录,则拥有root权限

root_squash 如果用root登录,则身份被压缩成匿名使用者,一般身份为nobody

all_squash 无论用什么帐号登录,身份均被压缩为匿名使用者

anonuid 匿名使用者的uid值,这个uid值在/etc/passwd中存在

anongid 匿名使用值的GID值,这个GID值在/etc/passwd中存在

下面讲解一个实例:

/tmp/nfs 211.90.88.0/24(rw,no_root_squash)

这里的意思是将/tmp/nfs共享给211.90.88.0网段的主机,权限是可读写,并且对root用户不压缩权限,注意,在这里,网段匹配不可以用*号,如下面的写法就是错误的:

/tmp/nfs 211.90.88.*/24(rw,no_root_squash)

如果需要针对不同的主机开放不同的权限,则需要对不同的主机/网段分开写对应参数,比如:

/tmp/nfs 211.90.88.0/24(rw,no_root_squash) *(ro)

此例表示,除了211.90.88网段之外的所有主机对/tmp/nfs只读,而211.90.88段的主机可读写/tmp/nfs。

下面来看一个综合实例:

/tmp/nfs 211.90.88.0/24(rw,no_root_squash) *(ro)

/tmp/public 192.168.1.1(rw)

/tmp/abc *.abc.com(rw,all_squash,anongid=99)

此例中的第一行在上面已经讲过;第二行中的目录仅对192.168.1.1这一个ip开放;第三行的目录对abc.com域名开放,权限为可读写,并且访问者身份压缩为nobody,GID规定为99

2.3、启动nfs服务

在启动nfs服务之前,需要确保portmap已经启动,之后再启动nfs服务:

service portmap start chkconfig --level 2345 portmap on

service nfs start chkconfig --level 2345 nfs on

如何需要增加nfs服务器的资料一致性功能,则需要启动nfslock服务:

service nfslock start chkconfig --level 2345 nfslock on

nfs启动之后,可以用exportfs命令重新挂载/卸载共享目录。exportfs的参数作用如下:

exportfs [-arvu]

-a 全部挂载/卸载

-r 重新挂载/etc/exports 设定

-u 卸载某一目录

-v 输出分享的目录列表

如果需要重新挂载/etc/export里的设定,可以用exportfs -ar 命令;如需输出目录共享目录和规则,可用export -v 命令;卸载目录可用exportfs -u 命令,关于-u参数的使用,下面以实例讲解、

假定/etc/exports的内容如下:

/tmp/all 211.90.88.0/24(rw,no_root_squash)

*(ro)

/tmp/test *(ro)

如果需要卸载/tmp/all目录的共享,则需要通过下面两个命令来实现:

exportfs -u *:/tmp/all

exportfs -u 192.168.1.0/24:/tmp/all

第一个命令卸载了除192.168.1.0/24之外的网段对/tmp/all的共享;第二个命令则卸载了192.168.1.0/24对/tmp/all的共享。卸载目录共享后,用exportfs -v查看共享情况,则可以发现,对于/tmp/all的共享已经取消。

nfs启动后,会有相关的rpc服务与之对应。那么,如何知道rpc服务的注册情况呢?这里可以使用rpcinfo这个命令。该命令的格式如下:

rpcinfo -p [主机名或ip]

如果需要查看本机情况,可以用rpcinfo -p localhost 。输出结果如下:




2.4、固定nfs服务相关端口

在设定好nfs服务器之后,存在一个问题,就是Nfs相关的程序的端口是随机生成的,如果开启了防火墙,而防火墙策略不好指定,因为端口不固定啊。这里就 需要设定nfs相关服务的端口,将这些端口号固定住。设定nfs端口的配置文件是/etc/sysconfig/nfs。这里需要固定4个端口,也就是 说,需要设定4个参数:MOUNTD_PORT、STATD_PORT、LOCKD_TCPPORT和LOCKD_UDPPORT。设定内容如下:

MOUNT_PORT=892

STATD_PORT=662

LOCKD_TCPPORT=32803

LOCKD_UDPPORT=32769

这样,nfs相关服务的端口就由随机变为固定的了。

2.5iptables的nfs相关设定

由于nfs相关服务的端口已经被固定,所以固定iptables规则就很简单了。由于nfs服务监听TCP/UDP2049端口,portmap监控 TCP/UDP111端口,所以需要在Iptables中打开这些端口。此外,还需要打开mountd、statd和lockd服务的相关端口。根据上一 节的设定,Iptables还需要开放TCP/UDP的892和662端口,以及TCP的32803端口和UDP的32769端口。vim /etc/sysconfig/iptables 。。。。。。

2.6 nfs图形配置工具system-config-nfs

在安装了system-config-nfs的rpm包之后,就可以使用这个图形配置工具了。在Gnome菜单中选择“系统-管理-服务器设置-nfs”命令,可以看到下面所示:

这个就看着操作吧。。。

3、nfs客户机的使用

3.1、访问nfs共享资料

首先,确保nfs客户机已经启动了portmap服务。由于nfslock功能必须在服务器端和客户端均启用才能够工作,所以为了增加兼容性,建议在客户端也开启nfslock服务。

1.列出共享目录

使用showmount命令可以列出服务器上开放的共享目录,其用法如下:

showmunt [-ae] 主机名或IP

-a 所有与主机连接的客户端使用的目录状态

-e 显示服务器主机上/etc/exports 内的分享目录列表




假设nfs服务器的主机为nfsserver,则使用下面的命令可以查看服务器的共享目录列表:

showmount -e nfsserver

2、挂载nfs共享目录

假定nfs服务器nfsserver上的共享目录是/tmp/test,则客户端可以使用mount命令将这个目录挂接至本地目录:

mount -t nfs nfsserver:/tmp/test /tmp

3.2自动挂载nfs共享目录

1、开机自动挂载nfs共享目录

如果要让系统在开机时自动挂载nfs共享目录,则需要修改/etc/fstab文件、假设在nfsserver上共享目录为/tmp/test,挂载点为/mnt,使用soft挂载,并且超时为5秒,挂载过程可被中断。则在/etc/fatab中加入的内容为:

nfsserver:/tmp/test /mnt nfs soft,intr,timeo=50 0 0

2、使用autofs挂载nfs共享目录

开机自动挂载nfs共享目录有个缺点,就是如果客户端挂载不成功或nfs访问不顺利,会占用较长的启动时间。如果在客户机启动机器后再手动挂载共享目录, 则客户端用户必须具有root权限。那么有没有更好的、更灵活的挂载方式呢?或者说,在需要访问nfs资源时去挂载目录?autofs就可以做到这一点。 使用autofs,可以让非root用户在系统启动后访问nfs共享目录,并且挂载目录的工作是在用户请求nfs资源时自动完成的。用户甚至不需要建立挂 载点。现在用一个例子来说明autofs的大致工作流程。当用户访问一个在autofs里配置过的挂载目录(这个目录可以不是实际存在的) 时,autofs自动挂接相应的nfs资源到这个目录(若目录不存在则自动建立目录),然后用户就可以直接访问挂载在此目录下的nfs资源了。对于用户而 言,就像是 进入了一个特定的目录,这个目录里就包含相应的nfs共享目录的内容,而完全感觉不到挂接工作的存在。

下面讲述autofs的配置。autofs有一个主设定文件/etc/auto.master,内容如下:

# $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $

#

# Sample auto.master file

# This is an automounter map and it has the following format

# key [ -mount-options-separated-by-comma ] location

# For details of the format look at autofs(5).

#

/misc /etc/auto.misc

#

# NOTE: mounts done from a hosts map will be mounted with the

# "nosuid" and "nodev" options unless the "suid" and "dev"

# options are explicitly given.

#

/net -hosts

#

# Include central master map if it can be found using

# nsswitch sources.

#

# Note that if there are entries for /net or /misc (as

# above) in the included master map any keys that are the

# same will not be seen as the first read key seen takes

# precedence.

#

+auto.master

其中,/misc /etc/auto.misc这一行描述了挂载目录/misc对应的配置文件是/etc/auto.misc。这个配置文件内容的格式如下:

挂载目录 挂载参数 nfs共享目录位置

下面将举例说明/etc/auto.misc这个文件。在下面的例子中,如果用户访问/music/linuxnfs这个目录,则autofs自动挂载 nfsserver:/tmp/test的内容至/misc/linuxnfs,并且使用软挂载,挂载过程可中断。挂载后的nfs资源只读:

linuxnfs -ro,soft.intr nfsserver:/tmp/test

这样用户只要访问/misc/linuxnfs目录,就可以实际上访问nfsserver上的/tmp/test的内容了。

autofs服务在RHEL5安装时默认被安装,并且开机默认启动的。如果autofs被停止,则额可以手动启动他

service autofs start chkconfig --level 2345 autofs on

本文出自 “大風” 博客,请务必保留此出处http://lansgg.blog.51cto.com/5675165/978735
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: