您的位置:首页 > 其它

NFS服务的配置

2013-02-27 15:02 267 查看

基本配置

查询软件是否安装:

[root@rhel2 ~]# rpm -qa | grep nfs

nfs-utils-1.0.9-40.el5

nfs-utils-lib-1.0.8-7.2.z2

[root@rhel2 ~]# rpm -qa | grep protmap

[root@rhel2 ~]# rpm -ivh /misc/cd/Server/portmap-4.0-65.2.2.1.i386.rpm

Preparing... ########################################### [100%]

package portmap-4.0-65.2.2.1.i386 is already installed

这个软件已经安装了。

/etc/exports

这个是NFS的主要配置文件,但没有默认值,空的。

/usr/sbin/exportfs

维护NFS共享资源的命令。

/usr/sbin/showmount

exportfs用在server端,而showmount则用在客户端,这个命令可以查看NFS服务器共享出来的目录资源。

/var/lib/nfs/

这个目录下有两个重要的日志文件,etab:主要记录NFS共享出来的完整权限设定值,xtab:记录曾连接到此主机的客户机相关数据。

exports内的常用权限参数:

rw //可读写的权限

ro //只读权限

sync //数据同步写入到内存与硬盘中

async //数据只会暂存在内存中

no_root_squash //如果使用root用户登录,就有root用户的权限

root_squash //如果使用root用户登录,就会变成匿名用户的权限

all_squash //不管以什么用户登录,都会变成匿名用户的权限

anonuid //匿名用户uid设置值

anongid //匿名用户gid设置值

示例:

[root@rhel2 ~]# vi /etc/exports

/tmp *(rw)

所有人对/tmp目录都有读写权限。

/tmp *(ro) 192.168.100.100(rw)

所有人对/tmp目录二都有只读权限,而192.168.100.100对这个目录有读写权限。

/tmp 192.168.100.0/24(ro) 192.168.100.100(rw)

192.168.100.0/24这个网段人用户对这个目录有只读权限,而192.168.100.100对这个目录有读写权限。

/tmp *(ro,all_aquash,anonuid=100,anongid=100)

所有人对这个目录都会变成服务器中uid为100,gid为100的用户的权限

[root@rhel2 ~]# service nfs restart

挂载

手工挂载:

mount –t nfs 192.168.100.20:/home /tmp

-t //指定文件类型

ip地址是服务器的地址(也可以使用主机名代替),:后是共享目录,

/tmp是挂载到本机的目录

也可以这样:

mount.nfs 192.168.100.20:/home /tmp

开机自动挂载:

[root@rhel3 ~]# vi /etc/fstab

192.168.100.20:/home /mnt nfs defaults 0 0

服务器名称/ip地址:共享目录 挂载点文件类型 挂载选项备份频率检查选项

[root@rhel3 ~]# vi /etc/rc.d/rc.local

mount.nfs 192.168.100.20:/home /mnt

综合配置实例

配置NFS服务器,要求如下

该服务器的IP为:192.168.100.203.

(1)共享/mydata目录,要求

192.168.100.0可以只读访问,

192.168.100.15,192.168.100.16,192.168.100.20,192.168.100.30能写访问,

不允许192.168.100.200和192.168.100.198那两台机器访问,

192.168.100.40和192.168.100.50的机器访问此共享时,可以用root用户登录,可写。

所有客户机同步写磁盘

(2)共享光驱(/misc/cd/),要求

所有人只读访问

不允许192.168.100.200和192.168.100.198那两台机器访问

在客户端自动挂载服务器上/mydata目录,挂载到本地的/nfs/nfs目录中

在客户端自动挂载服务器上光驱目录,挂载到本地的/nfs/cdrom目录中

配置步骤:

配置ip地址:

[root@rhel3 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.100.203

NETMASK=255.255.255.0

[root@rhel3 ~]# service network restart

[root@rhel3 ~]# mkdir /mydata //创建共享目录

[root@rhel3 ~]# rpm -qa |grep nfs //查询nfs安装情况

nfs-utils-lib-1.0.8-7.2.z2

nfs-utils-1.0.9-40.el5

[root@rhel3 ~]# vi /etc/exports

/mydata 192.168.100.15(rw,sync) 192.168.100.16(rw,sync) 192.168.100.20(rw,sync) 192.168.100.30(rw,sync) 192.168.100.40(rw,no_root_squash,sync) 192.168.100.50(rw,no_root_squash,sync)
192.168.100.0/24(ro,sync)

/misc/cd *(ro)

[root@rhel3 ~]# service nfs restart

[root@rhel3 ~]# ll /

drwxr-xr-x 2 root root 4096 Apr 15 02:13 mydata //更改这里的权限,因为这里没有写的权限。

[root@rhel3 ~]# chmod a+w /mydata/

[root@rhel3 ~]# ll /

drwxrwxrwx 2 root root 4096 Apr 15 02:13 mydata

[root@rhel3 ~]# vi /etc/hosts.deny //拒绝以下两台主机访问。

mountd:192.168.100.198,192.168.100.200

接下来实现自动挂载:

方法有三种:第一种修改/etc/fstab文件,第二种修改/etc/rc.d/rc.local文件,第三种实现自动挂载和自动缷载。这里就以第三种为例:

[root@rhel2 /]# vi /etc/auto.master

/nfs /etc/autonfs.conf //添加这一行

[root@rhel2 /]# vi /etc/autonfs.conf //在这之前这个文件是没有的,当编辑好保存之后就有了。

nfs 192.168.100.203:/mydata

cdrom 192.168.100.203:/misc/cd

[root@rhel2 /]# service autofs restart

配置完成,测试:

[root@rhel2 nfs]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:0C:29:FD:44:C8

inet addr:192.168.100.15 Bcast:192.168.100.255 Mask:255.255.255.0

[root@rhel2 ~]# cd /nfs/nfs/ //第一次进入时/nfs下并没有nfs这个目录,需要手动输入这个目录。

[root@rhel2 nfs]# touch a //这个地址是有写入权限的。

[root@rhel2 nfs]# mkdir abc

[root@rhel2 nfs]# ll

-rw-r--r-- 1nfsnobody nfsnobody 0 04-16 14:13 a

drwxr-xr-x 2nfsnobody nfsnobody 4096 04-16 14:13 a

[root@rhel2 nfs]# whoami

root

这里的文件所属用户和所属组都是nfsnobody,当前是root用户。

[root@rhel2 ~]# ifconfig eth0 192.168.100.40 netmask 255.255.255.0

[root@rhel2 ~]# cd /nfs/nfs

[root@rhel2 nfs]# touch rhel

[root@rhel2 nfs]# ll

-rw-r--r-- 1 nfsnobody nfsnobody 0 04-16 14:13 a

drwxr-xr-x 2 nfsnobody nfsnobody 4096 04-16 14:13 abc

-rw-r--r-- 1root root 0 04-16
14:15 rhel

因为这个地址是允许root用户登录的,所以这里的所属用户和所属组都是root。

更多有关权限的测试就省略了,还可以使用不同的用户进行测试,如当客户端和服务器用户不同时和相同时的文件所属问题。

简介

NFS,全称Network File System。网络文件系统,最早由Sun公司开发,它的功能是在不同的机器、不同的操作系统之间实现文件的共享。NFS传输数据时使用的端口是一个随机端口。
RPC,远程过程调用。它的功能是指定每个NFS功能对应的端口号,当NFS服务器启动时会随机启用数个端口号,并主动向RPC注册,这样RPC就知道每个端口号对应的功能了,RPC使用111号端口来监听客户机的请求并回应正确的端口号。
启动NFS之前要先启动RPC,否则NFS无法向RPC注册,当RPC重新启动后,原来注册的端口数据会丢失,这时,它管理的所有程序都必须重新向RPC注册。

工作原理

1) 客户机发送RPC请求到远程NFS服务器中。
2) NFS服务器利用PORTMAP服务查询NFS的工作端口。
3) 客户机联系要装载的分区,同时服务器会验证客户机是否有权加载。
4) 客户机更新MTAB文件,表示加裁成功。

自动挂载和自动缷载

当使用NFS共享文件时,需要首先挂载,挂载后用户又不是一直在线,只要任一方离线,都会造成另一方等待超时,那么,有没有一个方法能让用户使用时自动挂载,不使用时自动缷载?当然有。使用autofs这个服务。在客户端配置:

[root@rhel3 ~]# vi /etc/auto.master
/nfs /etc/autonfs.conf //添加这一行

/nfs //挂载的主目录。
/etc/autonfs.conf //挂载文件的配置。
[root@rhel3 ~]# mkdir /nfs //添加目录
[root@rhel3 ~]# vi /etc/autonfs.conf //编辑并创建自动挂载文件
home 192.168.100.20:/home

home //本地目录
192.168.100.20:/home //远程挂载的共享目录
中间可以添加一引些挂载选项。
[root@rhel3 ~]# service autofs restart

[root@rhel3 ~]# ls /nfs/home //第一次使用时是没有这个目录的,当访问这个目录时就会自动挂载了。当5分钟没有使用就会自动缷载。
a abc

常用命令

exportfs //查看已共享的目录(服务器端使用)
exportfs选项:
-a //全部mount或umount
/etc/exports中的内容
-u //umount内容
-r //重新mount /etc/exports中的内容
-o //共享选项
-v //在exports的时候,将共享的目录显示到屏幕上

客户端查询:
[root@rhel3 ~]# showmount -a 192.168.100.20
All mount points on 192.168.100.20:
192.168.100.30:/home
192.168.100.30:/root

[root@rhel3 ~]# showmount -e 192.168.100.20
Export list for 192.168.100.20:
/home *
/chen 192.168.100.30

常见故障

如果发现挂载不了,出现如下提示:
[root@rhel3 ~]# mount.nfs 192.168.100.20:/home /mnt
mount: mount to NFS server '192.168.100.20' failed: System Error: No route to host.
这很可能是防火墙的问题。

如果还有人在使用NFS,这时服务器需要关机的话,是不能关机的,系统会等到没有用户使用时再关机,如果关机时间很长,看看是不是还有用户在线。

如果使用的是服务器名挂载,要确保服务器名是能解析的。如果没有DNS服务器,可以在/etc/hosts中添加。

from:

/article/4227551.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: