日期:2014-05-16  浏览次数:20789 次

Linux NFS配置

转载 : http://www.cnblogs.com/cabin/archive/2010/10/26/1861286.html

NFS:Network File System,linux中共享文件的服务。

使用NFS需要启用RPC(remoteprocedure call),RPC可以指定每个NFS功能所对应的端口号,重启RPC后,RPC所管理的所有NFS功能服务都需重新向RPC注册。

设置NFS需要安装nfs-utils和portmap程序,使用rpm –q可以查看是否安装

Nfs-utils 提供rpc.nfsd和rpc.mountd两个daemon与其他document说明文件。

rpc.nfsd 管理client是否能够登入主机,及对登入者ID的辨别。

rpc.mountd 管理NFS文件系统,读取/etc/exports对比client取得相应的权限。

Portmap :端口映射;在启动rpc之前做好端口映射工作。

NFS的配置文件有两个:

/etc/exports :NFS配置文件

/var/lib/nfs/*tab :NFS服务器日志放置路径;etab记录共享出来的目录完整权限设置值;xtab记录曾经连接到此NFS主机的相关客户端数据

两个命令:

/usr/sbin/exportfs :维护NFS共享资源;重新共享/etc/exports变更目录或将NFSserver共享目录卸载或重新共享

/usr/sbin/showmount :在客户端查看NFS服务器共享出来的目录资源

/etc/exports 配置文件

首先需要手动编辑/etc/exports配置文件

共享目录 必须使用绝对路径,权限部分依照不同的权限共享给不同的主机,括号内是设置权限参数的位置,权限不止一个时,使用,隔开,主机名和括号连在一起。

主机名设置 可以使用网段:192.168.1.0/24或完整IP:192.168.1.23也可以使用主机名称,但此主机名称需要存在于/etc/hosts中或使用DNS可以找到,找到IP即可,主机名支持通配符,如*?

/mnt/sda4/share/a??????192.168.23.129(rw)

设置共享目录/mnt/sda4/share/a,仅192.168.23.129主机允许访问此共享目录,具有读写权限

/mnt/sda4/share/b??????192.168.23.129(rw) *(ro)

设置共享目录/mnt/sda4/share/b,192.168.23.129可以读写该共享目录,其他主机只可以读取该共享目录

/mnt/sda4/share/c ??????192.168.23.129(no_root_squash)

设置共享目录/mnt/sda4/share/c,仅192.168.23.129可以访问和读写,root登录时拥有root权限

/mnt/sda4/share/d??????192.168.23.0/24(rw)

设置共享目录/mnt/sda4/share/d,仅有192.168.23.0/24网段的主机才可访问和读写此目录文件

/mnt/sda4/share/e??????*(rw,all_squash,anonuid=500,anongid=500)

设置共享目录/mnt/sda4/share/e,所有主机都允许访问此共享目录,具有读写权限,但他们访问该共享目录时,已将其UID、GID设置成500。NFSserver主机中UID、GID=500的权限已经设置好

权限参数说明如下:

Rw :read-write可读写的权限

Ro :read-only只读权限

no_root_squash :登入NFS主机使用共享目录的用户,如果是用户root,对于此共享目录具有root权限,不建议使用。

root_squash :登入NFS主机使用共享目录的用户,如果是用户root,此用户权限将被压缩为匿名用户,其UID和GID都会被压缩为nobody(nfsnobody)系统账号的身份。

all_squash :不论登入NFS的用户身份为何,其身份都被转换成为匿名用户,即nobody。

Anonuid :anonymous;即nobody,可以自行设定此UID值,但此UID必须存在于/etc/passwd中。

Anongid :同anonuid,变成group ID即可。

Sync :数据同步写入到内存与硬盘中

Async :数据先暂存于内存中,而非直接写入硬盘

权限说明:

1.NFS server和NFS client具有相同的UID和账号

如果NFSserver和NFSclient具有相同共享文件账号和相同UID,客户端登入NFSserver时,就会拥有/etc/exports设置的权限

2.NFS server和NFS client具有不同的账号

如果NFSclient不拥有NFSserver共享文件账号,或NFSclient的账号在NFSserver不存在,是否可以读写共享目录,需要查看NFSserver的权限而定,其身份会变为匿名用户nobody

3.NFS client的身份为root

默认情况下,客户端的root身份会被压缩成匿名用户nobody

启动NFS

启动NFS只需启动portmap和NFS服务即可。如果需要启动数据一致性检查,则需启动nfslock服务。

使用netstat–tnlu可以查看nfs开放了哪些端口。Portmap的端口为111,nfs的端口为2049

[root@localhost share]# rpcinfo -p

程序????? ?版本 协议?? 端口?????????????? 服务名称

100000??? 2?? tcp???111? ????? portmapper

100000??? 2?? udp??111? ????? portmapper

100024??? 1?? udp??695? ????? status

100003??? 2?? udp??2049? ?? nfs

100021??? 1?? udp? ?46017? nlockmgr

………………………………………………

如果rpcinfo–p的数据无法输出,表示注册的数据有问题,重新启动portmap和nfs即可。

client查看Server有提供哪些NFS服务,可以使用showmount

# showmount -e? 显示某台主机的/etc/exports所共享的目录数据

# showmount -a? 显示当前主机与客户端NFS联机共享状态

# showmount -e

Export list for localhost.localdomain:

/mnt/sda4/share/e *

/mnt/sda4/share/d 192.168.23.0/24

/mnt/sda4/share/c 192.168.23.129

/mnt/sda4/share/b (everyone)

/mnt/sda4/share/a 192.1