之前博客中介绍的Apache、Ftp、iptable等网络服务的日志可以详细记录客户端的信息,如IP地址、访问时间、内容等。然而,在Linux发行版中,NFS服务的日志功能非常弱,例如当一个远程IP地址访问NFS服务器时,其信息无法记录在服务器端的日志中。而Unix家族中的OracleSolaris系统(被Oracle收购前称为SunOS)拥有相对完善的NFS日志功能,比如与KerberosV5的完美集成,可以为系统提供更好的保密性。
1Linux下的NFS日志RedHatLinux发行版的NFS服务的日志记录在/var/log/messages文件中。让我们使用cat命令来查看消息文件。内容如下:
#cat/var/log/messages|grepnfs
12月29日14时49分59秒本地主机nfs:rpc.mountdshutdown成功
12月29日14:49:59本地主机内核:nfsd:lastserver已退出
Dec2914:49:59localhost内核:nfsd:取消导出所有文件系统
12月29日14时49分59秒本地主机NFS:nfsd-2成功
12月29日14时49分59秒本地主机nfs:rpc.rquotadshutdown成功
12月29日14:50:09localhostNFSlock:RPC.statdshutdown成功
12月29日15:57:53Linux-1NFSlock:RPC.statd启动成功
12月29日15时58分08秒linux-1nfs:启动nfs服务:成功
NFS:rpc.rquotad启动成功
从上面的日志中,我们可以简单的分析服务启动时间和状态,缺点是不能作为独立的NFS服务日志输出,不方便阅读和查找错误。
2Solaris下NFS服务器日志UNIX平台下的NFS服务广泛应用于虚拟化、中央存储系统和服务器集群。本节主要讲述Solaris平台下的NFS日志。在Solaris的服务器平台上配置了NFS服务后,如果没有手动设置日志文件,那么日志模式与Linux相同,也放在messages文件中。但是,Solaris下的nfslogd守护进程提供了非常详细的日志记录功能,在进程启动后,NFS内核模块会将NFS文件系统上的所有 *** 作记录到一个缓存文件中。这些记录包括时间戳、客户端IP地址、请求UID、访问文件和 *** 作类型。
Nfslogd过程的功能如下:
将原始数据从 *** 作记录转换成ASCII记录。
将IP解析为主机名。
将UID解析为登录名。
将文件句柄映射到路径名。
因此,Nfslogd进程必须在nfs服务器中启动,Solaris系统中NFS服务的日志记录在配置文件/etc/etc/nfs/nfslog.conf中定义。以下示例使用默认值启动NFS日志守护程序。
#/usr/lib/nfs/nfslogd
1)。配置NFS日志(以下配置适用于Solaris平台)
用于在Solaris系统下配置NFS服务的配置文件的路径是/etc/nfs/nfslog.conf,它定义了nfslogd必须使用的路径、日志类型和文件名。每个定义类型都有一个
为了启用NFS服务,首先我们在/etc/dfs/dfstab配置文件中添加一个共享目录,如图1所示。
然后编辑文件/etc/nfs/nfslog.conf并添加globaldefaultdir=/var/NFSlog=NFSlogFHtable=fhtablebuffer=NFSlog_workbufferlogformat=extended。这个脚本的目的是将日志记录到一个单独的文件中,路径是/var/nfs/目录中的nfslog文件。有关配置文件的说明,请参见表1。
表1NFS配置文件参数说明
的意思是
主目录的路径
日志日志文件的路径和定义的文件名。
fhtable文件句柄到路径数据库文件的路径名
缓冲区缓存文件路径
logformat=extended创建一个用户可读的日志文件,扩展,表示更多的细节,最基本的用basic表示。
以下命令可以启动NFS服务:
#/etc/init.d/nfs.serverstart
#PS–ef|grepNFS\\*验证NFS服务是否成功启动。
相关的守护程序解释如下:
(1)statd和lockd为锁管理器提供崩溃恢复功能。
(2)nfsd控制客户端的文件系统请求。为成功挂载本地共享资源的客户端提供资源读写服务。
(3)mountd处理来自远程系统的装载请求,并提供访问控制。当收到客户机的挂载请求时,它会检查/etc/dfs/sharetab文件,以确定资源是否共享以及客户机是否具有访问权限。
(4)lockd记录对NFS文件的锁定 *** 作。
(5)nfslogd *** 作日志。它的行为由/etc/default/nfslogd定义。
注意:以上进程是服务器端的,客户端有两个进程:statd和lockd。
当NFS服务成功启动时,会在/var/nfs目录中生成四个文件:
FHtable.019800050000002.dir
FHtable.0198000050000002.PAG
nfslog_工作缓冲区_日志_进程
nfslog
图2显示了NFS服务器在Solaris系统下生成的日志信息。
图2UNIX系统中的NFS日志
其中一个日志中每个字段的含义详细解释如下:
1)就诊时间:2012年12月30日20时45分41秒
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可以看到,没有人的ID是6001。
11).服务类型:表示客户端访问的服务类型,nfs3-tcp表示使用tcp的NFSv3版本作为nfs3-tcp的扩展日志格式。
12)认证。此项表示用户是否已经过身份验证,0表示身份验证失败,1表示身份验证通过。
13).验证名称,*验证通过则显示名称,验证失败则显示*。
理解了NFS日志格式的含义后,在日常工作中要注意访问时间、主机(或IP)、路径、执行 *** 作的详细变化。此外,在调试NFS服务时,经常使用Solaris自带的snoop命令,该命令可以显示NFS客户端与NFS服务器之间的网络通信过程,对于调试特别有效。这里有一个例子。
2)例如:
NFS服务器IP:192.168.168.0.200
客户:192.168.0.201
#snoop192.168.0.200
这一行命令意味着捕获192.168.0.200和192.168.0.201之间的数据流。捕获的信息如图3所示。
图3Snoop抓取数据包
从图3中的粗体日志可以看出,客户端(192.168.0.201)在NFS服务器共享中创建了一个名为chentest的新目录。上图清楚的记录了客户端访问服务器的详细 *** 作,这个过程也记录在nfslog日志文件中。如果在snoop之后添加“-v”参数,将会显示底层以太网帧的更多信息。
本文摘自2014年畅销书《UNIX/Linux的网络日志分析与流量监控》第一章。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)