NFS服务日志分析

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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: rpc.mountdshutdown 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服务日志,不便于阅读和查找错误。

Solaris 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/nfs/nfslog.conf中定义下面的例子使用默认值启动NFS日志后台进程

#/usr/lib/nfs/nfslogd

1). 配置NFS日志(以下配置适合Solaris平台)

Solaris系统下用于配置NFS服务的配置文件路径为/etc/nfs/nfslog.conf,这个文件定义了nfslogd必须使用的路径、日志类型和文件名。每个定义类型都有一个<tag>标签,要配置NFS日志就要确认每个共享资源是否都创建了<tag>标签。

为了启用NFS服务,首先我们在/etc/dfs/dfstab配置文件中添加一个共享目录,见图1。

wKioL1TUI1iT2myqAAHvBdgJnyo575.jpg

    接着编辑/etc/nfs/nfslog.conf文件,添加global defaultdir=/var/nfs log=nfslog fhtable=fhtablebuffer=nfslog_workbuffer logformat=extended,这句脚本的目的是实现日志记录到单独的文件,路径是/var/nfs/目录下的nfslog文件。配置文件解释见表1。


wKiom1TUIprTLd4JAAHzhptt6t0997.jpg

表1 NFS配置文件参数解释

区域

含义

Default dir

主目录的路径

Log

日志文件的路径及定义的文件名

fhtable

File-handle-to-path数据库文件的路径名

Buffer

缓存文件路径

Logformat=extended

创建用户可读的日志文件extended表示更多详细内容,最基本的用basic表示

 

下面的命令可启动NFS服务:

#/etc/init.d/nfs.serverstart

#ps–ef |grep nfs             \\*验证NFS服务启动是否成功

wKioL1TUI7zB2RbTAAFjYEw1PLM890.jpg

下面对相关守护进程加以解释:

(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服务器产生的日志信息。

wKioL1TUI_DhLPWrAAaTMWh4pIU453.jpg

图2 Unix系统中的NFS日志

下面详细解释其中一条日志的各个字段含义:

wKioL1TUJKzAoP2DAAEzYPMw1Ug956.jpg

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所示。

wKiom1TUI-Khun-GAANtW0e0o54032.jpg

图3 Snoop抓包

从图3中标记黑体的这条日志可以看出客户端(192.168.0.201)在NFS服务器共享中新建了名为chentest的目录上图清晰的记录了客户端访问服务器的详细操作,这一过程也一同被记录在了nfslog日志文件中。如果在snoop后面加上“-v”参数将显示更多底层的Ethernet 帧信息





 本文转自 李晨光 51CTO博客,原文链接:http://blog.51cto.com/chenguang/1612241,如需转载请自行联系原作者




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
165 14
|
4月前
|
Unix Linux 网络安全
NFS挂载服务
【10月更文挑战第14天】
126 2
|
4月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
58 1
|
4月前
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
275 0
|
5月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
285 3
|
6月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
6月前
|
存储 Ubuntu Linux
NFS服务部署全攻略:从零到一,轻松驾驭网络文件系统,让你的文件共享像飞一样畅快无阻!
【8月更文挑战第5天】NFS(网络文件系统)能让网络中的电脑无缝共享文件与目录。基于客户端-服务器模式,用户可像访问本地文件般透明操作远程文件。部署前需准备至少两台Linux机器:一台服务器,其余作客户端;确保已装NFS相关软件包且网络通畅。服务器端安装NFS服务与rpcbind,客户端安装nfs-utils。
222 4
|
7月前
|
存储 算法框架/工具
Ceph提供nfs服务
Ceph提供nfs服务
100 6
|
6月前
|
API
【Azure 服务总线】查看Service Bus中消息多次发送的日志信息,消息是否被重复消费
【Azure 服务总线】查看Service Bus中消息多次发送的日志信息,消息是否被重复消费
|
6月前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?