linux中查看nfs⽇志,NFS服务⽇志分析
NFS服务⽇志分析
在前⾯⼏篇博客中介绍的Apache、Ftp和iptable等⽹络服务,它们的⽇志都可以详细记录客户端的信息,例如IP地址、访问时间和内容等。⽽NFS在Linux的发⾏版中NFS服务的⽇志功能却很弱,例如某个远程IP地址,在什么时间访问了NFS服务器,在服务器端⽆法将其信息记录在⽇志中。但在Unix家族中的Oracle Solaris系统(被Oracle收购前称Sun OS),对NFS⽇志记录功能相对完善⼀些,例如与Kerberos V5完美集成,能够为系统提供更好的保密性。
1 Linux下的NFS⽇志
RedHat Linux发⾏版NFS服务的⽇志记录在/var/log/messages⽂件中。下⾯我们⽤cat命令查看messages ⽂件,内容如下:
# cat /var/log/messages |grep nfs
Dec 29 14:49:59 localhost nfs: untdshutdown succeeded
Dec 29 14:49:59 localhost kernel: nfsd: lastserver has exited
Dec 29 14:49:59 localhost kernel: nfsd:unexporting all filesystems
Dec 29 14:49:59 localhost nfs: nfsd -2succeeded
Dec 29 14:49:59 localhost nfs: rpc.rquotadshutdown succeeded
Dec 29 14:50:09 localhost nfslock: rpc.statdshutdown succeeded
Dec 29 15:57:53 linux-1 nfslock: rpc.statd启动 succeeded
Dec 29 15:58:08 linux-1 nfs:启动 NFS 服务:succeeded
Dec 29 15:58:09 linux-1 nfs: rpc.rquotad启动 succeeded
从以上⽇志可以简单分析出服务启动时间和状态,但缺点是不能单独输出成独⽴的NFS服务⽇志,不便于阅读和查错误。
2Solaris 下NFS服务器⽇志
UNIX平台下NFS服务在虚拟化、中央存储系统、服务器集中应⽤⼴泛,本节主要讲述Solaris平台下的NFS的⽇志。Solaris服务器平台配置好NFS服务后,如果不⼿动设置⽇志⽂件,那么⽇志记录⽅式
与Linux相同,也是放在messages⽂件中,但Solaris下nfslogd daemon提供了⾮常详细的⽇志记录功能,启动该进程后会由NFS内核模块把NFS⽂件系统上的所有操作都记录到⼀个缓存⽂件。记录内容包括时间戳、客户端IP地址、请求UID、访问⽂件和操作类型等信息。
Nfslogd进程的功能有如下四点:
从操作记录中把原始数据转换成ASCII记录。
将IP解析成主机名。
将UID解析成登录名。
将⽂件句柄映射为路径名。
所以Nfslogd进程在NFS服务器中必须启动,Solaris 系统中NFS服务的⽇志记录在配置⽂件/etc/f中定义。下⾯的例⼦使⽤默认值启动NFS⽇志后台进程
#/usr/lib/nfs/nfslogd
1). 配置NFS⽇志(以下配置适合Solaris平台)
Solaris系统下⽤于配置NFS服务的配置⽂件路径为/etc/f,这个⽂件定义了nfslogd必须使⽤的路径、⽇志类型和⽂件名。每个定义类型都有⼀个标签,要配置NFS⽇志就要确认每个共享资源是否都创建了标签。
为了启⽤NFS服务,⾸先我们在/etc/dfs/dfstab配置⽂件中添加⼀个共享⽬录,见图1。
接着编辑/etc/f⽂件,添加global defaultdir=/var/nfs log=nfslog fhtable=fhtablebuffer=nfslog_workbuffer logformat=extended,这句脚本的⽬的是实现⽇志记录到单独的⽂件,路径是/var/nfs/⽬录下的nfslog⽂件。配置⽂件解释见表1。
表1 NFS配置⽂件参数解释区域含义
Default dir主⽬录的路径
Log⽇志⽂件的路径及定义的⽂件名
fhtableFile-handle-to-path数据库⽂件的路径名
Buffer缓存⽂件路径
Logformat=extended创建⽤户可读的⽇志⽂件extended表⽰更多详细内容,最基本的⽤basic表⽰
下⾯的命令可启动NFS服务:
#/etc/init.d/nfs.serverstart
#ps–ef |grep nfs \\*验证NFS服务启动是否成功
下⾯对相关守护进程加以解释:
(1)statd 与lockd为lock manager提供崩溃恢复功能。
(2)nfsd 控制客户端的⽂件系统请求。为那些已经成功地挂载了本地共享资源的客户机提供资源读写服务。
(3)mountd处理远程系统发来的挂载请求,提供访问控制。收到客户机的mount请求时,它检查/etc/dfs/sharetab⽂件以确定该资源是否被共享,以及客户机是否有访问权限。
(4)lockd 在NFS⽂件上记录加锁操作。
(5)nfslogd 操作⽇志。它的⾏为由/etc/default/nfslogd定义。
注意:以上是在服务器端的进程,在客户端有statd和lockd这两个进程。
当启动NFS服务成功后在/var/nfs⽬录下产⽣四个⽂件:
fhtable.0198000500000002.dir
fhtable.0198000500000002.pag
nfslog_workbuffer_log_in_process
nfslog
图2为Solaris系统下NFS服务器产⽣的⽇志信息。
图2 Unix系统中的NFS⽇志
linux查看当前文件夹内容下⾯详细解释其中⼀条⽇志的各个字段含义:
1).访问时间,Sun Dec 30 20:45:41 2012
2).耗时,表⽰读取或写⼊⽂件操作所需要的⼤致时间,他只能精确到秒,所以在本⽰例中是0,意味着它花了⼩于1s。
3).远程访问的IP或主机名,此处为“bjtest”
4).⽂件容量(单位:字节),此处为“0”
5).路径名称 ,/home/cgweb/test
6).数据类型,此字段始终有个“b”,因为NFS始终是以⼆进制传输,b代表了数据传输类型
7).传输选项, “_”由于NFS不执⾏任何特殊操作。值为“_”。
8).操作指令,mkdir表⽰新建⽬录,read表⽰读操作
9).访问模式,此处字段为“r”。
10).⽤户ID,代表⽤户标⽰符,这⾥是60001。我们查看/etc/passwd就知道,nobody的ID是6001
11).服务类型:表⽰客户端访问的服务类型, nfs3-tcp表⽰通过TCP的NFSv3版作为nfs3-tcp的扩展⽇志格式。
12).认证,此项表⽰⽤户是否经过⾝份认证,0代表未通过验证,1代表通过⾝份验证。
13).验证名, * 通过验证的将显⽰名称,如果没有通过验证⼀律显⽰*号
在了解了NFS⽇志格式的含义之后,在⽇常⼯作中要注意观察访问时间、主机(或IP)、路径及执⾏操作这⼏项内容的细节变化。另外,在进⾏NFS服务的调试故障时,使⽤频率较多的还有Solaris⾃带的snoop命令,它可以显⽰NFS客户机和NFS服务器的⽹络通信过程,对于排错特别有效,下⾯举个例⼦。
2)举例说明:
NFS Server IP :192.168.168.0.200
客户端: 192.168.0.201
#snoop 192.168.0.200 192.168.0.201
这⾏命令表⽰抓 192.168.0.200和192.168.0.201之间的数据流。抓取的信息如图3所⽰。
图3 Snoop抓包
从图3中标记⿊体的这条⽇志可以看出客户端(192.168.0.201)在NFS服务器共享中新建了名为chentest的⽬录。上图清晰的记录了客户端访问服务器的详细操作,这⼀过程也⼀同被记录在了nfslog⽇志⽂件中。如果在snoop后⾯加上“-v”参数将显⽰更多底层的Ethernet 帧信息。
本⽂出⾃ 2014年畅销书《UNIX/Linux⽹络⽇志分析与流量监控》第⼀章。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论