NFS详解

server
====================================================================================
1.启动服务 
/etc/rc3.d/S15nfs.server start 

2:共享目录 
vi /etc/dfs/dfstab 
# hostname admin 
# cat /etc/dfs/dfstab 
share -F nfs -o ro=db1:app1:app2:app3:app4,anon=0 /usr/js 
share -F nfs -o rw=db1:app1:app2:app3:app4,nosuid /home 
share -F nfs -o ro=pnsgdev1wls2:pnsgdev1wls3:pnsgdev1wls4:pnsgdev1app2,rw=pnsgdev1app3 -d "Portnet Read-Only Directory" /opt/psa/rel


3. 诊断 
查看服务器的已共享资源   dfshares 
查看共享资源被利用的状况 dfmounts 



share /export/home         设置新的共享目录 
showmount -e [hostname|ip] 列出已共享目录

dfshares [hostname|ip] 查看服务器的共享资源
dfmounts [hostname|ip] 服务器上查看资源被利用情况
nfsstat   [hostname|ip] 查看nfs的全部状态





client
====================================================================================
启动服务:/etc/init.d/nfs.client start
基本运行程序是/usr/lib/nfs/statd 和/usr/lib/nfs/lockd

mount sol9b:/export/home /mnt








如果客户端没有mount上,过一段时间可以自动mount一次
====================================================================================
mount -t nfs -o bg server1:/export1 /mnt/server1

或开机自己加载:
#vi /etc/vfstab
sol9b:/export/home - /mnt nfs - yes bg





pnsgsit1wls2:"/etc"#dfshares
nfs dfshares RPC Rpcbind failure   RPC Unable to receive

?????????????????????????????????????????????????????????????????????
pnsgsit1wls2:"/etc"#ps -ef|grep nfs
root   1065     1   0 14:20:02 ?         0:00 /usr/lib/nfs/nfsd
root   1133     1   0 14:20:26 ?         0:00 /usr/lib/nfs/lockd
root   1156 28835   0 14:20:40 pts/2     0:00 grep nfs
?????????????????????????????????????????????????????????????????????

pnsgsit1wls2:"/etc"#/etc/init.d/rpc start
starting rpc services: rpcbind done.
pnsgsit1wls2:"/etc"#
pnsgsit1wls2:"/etc"#
pnsgsit1wls2:"/etc"#dfshares
nfs dfshares:pnsgsit1wls2: RPC: Program not registered
pnsgsit1wls2:"/etc"#/etc/init.d/nfs.server stop
pnsgsit1wls2:"/etc"#/etc/init.d/nfs.server start
pnsgsit1wls2:"/etc"#/etc/init.d/nfs.client stop
^[[Anfs umount: /opt/psa/rel: is busy
pnsgsit1wls2:"/etc"#/etc/init.d/nfs.client start
pnsgsit1wls2:"/etc"#ps -ef|grep nfs
root   1065     1   0 14:20:02 ?         0:00 /usr/lib/nfs/nfsd
root   1063     1   0 14:20:02 ?         0:00 /usr/lib/nfs/mountd
daemon   1131     1   0 14:20:26 ?         0:00 /usr/lib/nfs/statd
root   1133     1   0 14:20:26 ?         0:00 /usr/lib/nfs/lockd
root   1156 28835   0 14:20:40 pts/2     0:00 grep nfs
pnsgsit1wls2:"/etc"#dfshares
RESOURCE                                   SERVER ACCESS     TRANSPORT
pnsgsit1wls2:/opt/download             pnsgsit1wls2   -         -
pnsgsit1wls2:/opt/psa/data             pnsgsit1wls2   -         -
pnsgsit1wls2:/spare                   pnsgsit1wls2   -         -








★NFS是什么? 

NFS说白了就是文件共享嘛,和Windows的文件共享没有什么区别,当然这个通用性要强一些,通过NFS,你可以像访问本地资源一样访问远程计算机上的资源。只要是支持NFS的计算机之间都可以共享资源,与硬件系统的体系结构和操作系统类型、版本没有关系。 

★NFS的好处是什么? 

1、多人多计算机共享文件。 
2、共享应用程序可以减少存储的开销。 
3、提高数据的一致性(无需同步)和可靠性(存储设备可靠性高且便于备份)。 
4、广泛支持。 
5、简化管理。 

★NFS是由哪几个部分构成的? 

NFS是C/S结构的应用,所以它的构成应该包括三个部分:客户机实现,服务器实现和连接客户机与服务器的网络。对于这个网络没有特殊的要求,有正确的路由和访问控制就可以了,下面我们重点介绍客户机和服务器的实现。 

★NFS有几个版本? 

NFS包括V1,V2,V3和V4四个版本,目前广泛使用的是V4版,后面的版本在功能,性能和安全性上较前面的版本都有提高。 

★NFS怎么使用,复杂吗? 

非常简单啊,在服务器Host1上,我们用#share /export/rdbms这一条命令就把/export/rdbms共享了,在客户机Host2上,我们用#mount Host1:/export/rdbms /opt/rdbms一条命令就把刚才的共享目录挂接到了/opt/rdbms目录下。 

★NFS服务器上有哪些文件与NFS相关? 

第一个是/etc/dfs/dfstab,配置哪些资源需要在计算机启动时被自动共享(不用手工mount了)。 

第二个是/etc/dfs/sharetab,这个文件中列出的是本地计算机当前正在共享的资源,由系统进行维护,请不要直接对它进行修改。 
# cat /etc/dfs/sharetab 
/export/sys44_data - nfs ro 

第三个是/etc/dfs/fstypes,列出了远程文件系统的缺省文件类型。里面只有这三项内容: 
nfs NFS Utilities (第一行列出的为缺省类型) 
autofs AUTOFS Utilities 
cachefs CACHEFS Utilities 

第四个文件是/etc/rmtab,列出当前远程的客户机挂接的资源,同样由系统来进行维护,不要直接对它进行修改(但是当客户机由于某种原因没有正常卸载一个挂接的共享时,rmtab中会留下垃圾条目,管理员应该定期检查这样的条目并加以删除)。 
cat /etc/rmtab 
sys42:/export/sys44_data 
#ys41:/usr/share/man 
#ys43:/export/sys44_data 
注意:客户机名字的第一行替换为“#”表示该客户机正常卸载了一个挂接的共享,这种条目在mountd守护进程下一次启动时会被删除。 

第五个文件是/etc/nfs/nfslog.conf,配置NFS服务器日志文件的存放位置。 

第六个文件是/etc/default/nfslogd,配置nfslogd守护进程的行为。 

★详细讲一讲/etc/dfs/dfstab文件的格式好吗? 

dfstab文件的每一行都有一个share命令,和我们手工建立共享差不多,其格式如下: 
share [-F fstype] [ -o options] [-d "<text>"] <pathname> 
fstype通常就是nfs了; 
options是设置共享方式的,有ro(只读)和rw(读写)两个选项,可以为不同的客户机设置不同的选项,关于options的详细内容可以通过man share_nfs得到; 
<text>是描述文字,帮助客户机用户理解共享文件夹的用途; 
<pathname>就是要共享的目录的绝对路径了。 
例如:share -o ro /export/sys44_data 
以只读方式共享了/export/sys44_data目录 

★/etc/dfs/dfstab中的内容何时被执行? 

以下三种情况下,dfstab中的内容会被读取并做相应处理: 
1、系统进行级别3(/etc/rc3.d/S15nfs.server); 
2、管理员运行shareall命令; 
3、管理员使用start参数运行/etc/init.d/nfs.server脚本。 

★NFS Server的守护进程有哪些,作用是什么? 

1、mountd 处理远程系统发来的挂接请求,提供访问控制。收到客户机的mount请求时,它检查/etc/dfs/sharetab文件以确定该资源是否被共享,以及客户机是否有访问权限。 

2、nfsd 控制客户端的文件系统请求。为那些已经成功地挂接了本地共享资源的客户机提供资源读写服务。 

3、statd 与lockd一道为lock manager提供崩溃恢复功能。 
4、lockd 在NFS文件上记录加锁操作。 

5、nfslogd 操作日志。它的行为由/etc/default/nfslogd定义。 

★如何对NFS守护进程加以管理? 

启动NFS守护进程的方法: 
#/etc/init.d/nfs.server start 
停止NFS守护进程的方法: 
#/etc/init.d/nfs.server stop 

我们再来看看这个: 
bash-2.05# ls -i /etc/init.d/nfs.server 
4967 /etc/init.d/nfs.server 
bash-2.05# find /etc -inum 4967 
/etc/init.d/nfs.server 
/etc/rc0.d/K28nfs.server 
/etc/rc1.d/K28nfs.server 
/etc/rc2.d/K28nfs.server 
/etc/rc3.d/S15nfs.server 
/etc/rcS.d/K28nfs.server 

明白了吧?rc3.d中的S15nfs.server当我们进入级别3时自动启动NFS守护进程,级别0,1,2和S的K28nfs.server在进入这些级别时自动停止NFS守护进程。也就是说,只有运行级别3支持NFS。 

★NFS Server的管理命令有哪些? 

1、share 两个作用,我们可以用它来共享本地资源,在介绍/etc/dfs/dfstab文件的内容时已经介绍过了,不带参数的share命令会显示/etc/dfs/sharetab中的内容,也就是目前共享的资源。 
bash-2.05# share 
- /test rw "test one" 
2、unshare 取消共享嘛。 

3、shareall 检查/etc/dfs/dfstab文件中的内容,共享当前没有共享的资源。 
4、unshareall 取消所有共享。 

5、dfshares 列出本地或远程计算机中的可用共享资源。 
bash-2.05# dfshares 
RESOURCE SERVER ACCESS TRANSPORT 
server9:/test server9 - - 
6、dfmounts 显示当前被挂接的服务器共享资源以及当前连接的客户端。 
bash-2.05# dfmounts 
RESOURCE SERVER PATHNAME CLIENTS 
- server9 /test client9 

★对于远程用户的访问控制如何实现呢? 

首先要知道的是,远程计算机上的用户mount本地的共享目以后以什么身份访问目录中的资源呢?如果有NIS或LDAP,我们可以实现基于网络的用户身份管理,这时候可以采用统一的身份和授权,但是如果网络中的服务器都是独立工作的,则只能由服务器的本地安全性来实现访问控制了,在这种情况下,用户对资源的访问身份决定于两点: 

第一,如果在共享时使用了root=clientx可选项,则来自clientx的用户都以root身份访问该资源。 
第二,如果没有使用root=clientx可选项,就决于定anon=x可选项了,如果不设置它,那么anon缺省等于nobody的UID,用户以nobody身份访问。如果anon=x中的x设置成了某个用户的UID,则以该用户的身份访问。如果x=0,那么和使用了root=clientx的作用是相同的。 

知道了上面这些,我们就可以通过本地的访问权限来控制远程用户对本地共享资源的访问了。 

★与NFS客户有关的文件有哪些呢? 

1、/etc/vfstab 定义启动时自动挂接的文件系统,这里即有本地的也有远程的。 

2、/etc/mnttab 这里记录的就是当前成功挂接的文件系统了,包括本地的和远程的,它是由/etc/rcS.d/s70buildmnttab.sh这一脚本程序在系统启动时创建的,不要直接编辑它,其实不带参数的mount命令显示出的也就是这个文件的内容,且时间的显示比直接用cat命令查看mnttab要友好得多。 

3、/etc/dfs/fstypes 这个和服务器上一样,记录的是远程分布式文件系统的类型。 
#cat /etc/dfs/fstypes 
nfs NFS Utilities 
autofs AUTOFS Utilities 
cachefs CACHEFS Utilities 

★NFS客户端有哪些守护进程呢? 

只有用于处理文件锁定的两个进程: 
statd和lockd 作用和服务器端的进程一样,两边配合工作。 

★用什么方法管理客户端进程呢? 

启动NFS客户端进程: 
# /etc/init.d/nfs.client start 
停止NFS客户端进程: 
# /etc/init.d/nfs.client stop 
再看看下面的内容: 
bash-2.05# ls -i nfs.client 
4349 nfs.client 
bash-2.05# find /etc -inum 4349 
/etc/init.d/nfs.client 
/etc/rc0.d/K41nfs.client 
/etc/rc2.d/S73nfs.client 
不用我再多解释了吧? 

★客户端可以使用什么命令呢? 

与服务器端相似,有mount/umount,mountall/umountall和dfshares/dfmounts六个命令。 
mount命令的用法: 
mount [ -F nfs ] [ -o options ] server:pathname mount_point 
umount命令的用法: 
umount server:pathname | mount_point 
mountall/umountall命令的用法: 
mountall/umountall -r -l [ -F nfs ] 
其中的-r和-l选项分别表示仅处理远程挂接或仅处理本地挂接。 
dfshares和dfmouts前面介绍过了。 

★在客户端怎么使用/etc/vfstab自动挂接nfs呢? 

很简单,把mount语句中的参数稍加改动写到vfstab里面去就可以了,注意对应关系。 

1、device to mount,远程共享资源,比如:sys44:/export/sys44_data 
2、device to fsck,对于nfs来说,这里永远是“-” 
3、mount point,本地目录,如:/export/remote_data 
4、FS type,文件系统类型,写nfs 
5、fsck pass,对于nfs来说,这里永远是“-” 
6、mount at boot,当然是yes 
7、mount options,就是mount –o的后面写的,一般加个bg,soft就可以了。表示不是必须的挂接,在后台尝试一定次数之后仍然不成功就放弃挂接。 

★nfs的日志记在哪里了,需要配置哪些内容? 

前面说过了,这个是由/etc/nfs/nfslog.conf文件来决定的。 
defaultdir=dir_path指明路径,缺省是/var/nfs 
log=logfile_path 指明文件名,缺省是nfslog 
fhtable=table_path 指明文件句柄与路径对应数据库文件,缺省是fhtable 
buffer=bufferfile_path 指明缓存的位置 
logformat=basic|extended 指明日志的详细程度 

# cat /etc/nfs/nfslog.conf 
global defaultdir=/var/nfs \ 
log=nfslog fhtable=fhtable buffer=nfslog_workbuffer 
public defaultdir=/var/nfs/public \ 
log=nfslog fhtable=fhtable buffer=nfslog_workbuffer 

上面的例子中定义了一套全局配置(global)和一套特殊配置(public),在共享时可以用log=tag指定该共享的日志使用何种配置。 
下面是一个例子: 
share -F nfs -o ro,log /export/sys44_data 
不写log选项是不会有内容被记录到日志中的。 

再来看一下/etc/default/nfslogd,它用来控制nfslog守护进程如何工作的,有五个选项可以配置: 
IDLE_TIME 检查缓冲区和配置文件的周期,缺省为300秒。 
MIN_PROCESSING_SIZE 需要写入log前buffer文件应该达到的最小尺寸,缺省为524,288字节。 
UMASK log权限设置,缺省为0137。 
CYCLE_FREQUENCY 清理日志的周期,缺省为24小时。 
MAX_LOGS_PRESERVE 最大日志文件数量,缺省为10。 

★NFS常见故障排除 

1、The rpcbind failure error 
故障现象: 
nfs mount: server1:: RPC: Rpcbind failure 
RPC: Timed Out 
nfs mount: retrying: /mntpoint 
原因: 
第一,可能因为客户机的hosts文件中存在错误的ip地址、主机名或节点名组合; 
第二,服务器因为过载而暂时停止服务。 

2、The server not responding error 
现象: 
NFS server server2 not responding, still trying 
原因: 
第一,网络不通,用ping命令检测一下。 
第二,服务器关机。 

3、The NFS client fails a reboot error 
现象: 
启动客户机后停住了,不断显示如下提示信息: 
Setting default interface for multicast: add net 224.0.0.0: gateway: 
client_node_name. 
原因: 
在etc/vfstab的mount选项中使用了fg而又无法成功mount服务器上的资源,改成bg或将该行注释掉,直到服务器可用为止。 

4、The service not responding error 
现象: 
nfs mount: dbserver: NFS: Service not responding 
nfs mount: retrying: /mntpoint 
原因: 
第一,当前级别不是级别3,用who –r查看,用init切换。 
第二,NFS Server守护进程不存在,用ps –ef | grep nfs检查,用/etc/init.d/nfs.server start启动。 

5、The program not registered error 
现象: 
nfs mount: dbserver: RPC: Program not registered 
nfs mount: retrying: /mntpoint 
原因: 
第一,当前级别不是级别3。 
第二,mountd守护进程没有启动,用/etc/init.d/nfs.server脚本启动NFS守护进程。 
第三,看/etc/dfs/dfstab中的条目是否正常。 

6、The stale file handle error 
现象: 
stale NFS file handle 
原因: 
服务器上的共享资源移动位置了,在客户端使用umount和mount重新挂接就可以了。 

7、The unknown host error 
现象: 
nfs mount: sserver1:: RPC: Unknown host 
原因: 
hosts文件中的内容不正确。 

8、The mount point error 
现象: 
mount: mount-point /DS9 does not exist. 
原因: 
该挂接点在客户机上不存在,注意检查命令行或/etc/vfstab文件中相关条目的拼写。 

9、The no such file error 
现象: 
No such file or directory. 
原因: 
该挂接点在服务器上不存在,注意检查命令行或/etc/vfstab文件中相关条目的拼写。

你可能感兴趣的:(技术,详解,nfs)