linux监控nas日志,NAS存储抓包分析

现网近期一台NAS存储最近在使用的时候,业务反馈有诡异的性能问题。这里记录下关于NAS包的分析。NAS存储对应在LINUX平台上NFS协议,对应在windows平台上使用cifs协议。LINUX主机抓包可以使用的工具为tcpdump、tshark(命令行的wireshark),包分析软件wireshark。

一、客户端抓包

客户端抓包命令如下:

tcpdump -i eth1 -s0 -w yumnas.cap host 192.168.14.16 -vvv

后面的host为存储端的IP地址。

二、请求类型

dbfdd4f28506dc3331a76c2e9ff897b8.png

按object对象可以分为directory和file等,按请求对象的操作类型可以有:LOOKUP, REMOVE, RENAME, CREATE, READ,etc(具体看字面意思即可明白),对文件或目录的属性进行操作的包又可以分为:ACCESS, GETATTR, SETATTR, etc 。比如我们要读取一个存储上的文件,在不考虑缓存直接命中的情况,读取一个文件可能要经历 LOOKUP(查找文件) ---> GETATTR 或 ACCESS (获取属性:权限、属主) ---> READ(获取内容) ,每个动作又要经历CALL 与 Reply两个步骤。call 一般是客户端对NAS存储端的请求,reply一般是存储端响应请求或数据给客户端的过程。

aadcc3de0cb830130d1fafe0ac0b650f.png

上图重点看的是Remote Procedure Call (RPC)层与Network File System(NFS)层。上面可能重要需要关注的是fileid这个值,这个是文件或目录的inode值。

7ff9057c6ff7ed72481618b4ce46179e.png

三、请求数据

找到NFS返回给客户端的READ reply请求,在Network File System层,找到data选项,可以看到下面的十六进制和十进制输出内容,右键可以选择通过export selected packet bytes进行导出。

a4703770307a7b7b80c9dd60d860aec0.png

四、抓取文件路径

以下是一个lookup call 方法包的结果:

a833a49793e2b6dab329f0a6b53b8233.png

上面可以看到文件名,但是具体的文件路径是不知道的,要解决这个问题有两种方法。上面已经提到了一种方法,可以通过文件或目录的inode值查找到其对应的位置;另一个方法是在抓包的时候就抓全路径。

tcpdump是不支持抓全路径的,wireshark支持抓全路径,开始抓包里请开启如下三项:

nfs-file-path.png

抓包后获取到的文件路径如下:

be46737fd8f9daa29098f237bf6f64b0.png

如果在LINUX上使用命令行进行抓包,可以使用如下命令:

tshark -i eth1 -V -d tcp.port==2049,rpc host 192.168.14.16 -o 'nfs.file_name_snooping:TRUE' -o 'nfs.file_full_name_snooping:TRUE' -o 'nfs.default_fhandle_type:KNFSD_LE' -s 0 -w b.cap

注:这个我在实际测试的时候,发现抓包获取的结果仍然不是全路径,这个可能是跟访问的时候使用的绝对路径或相对路径相关。

参考页面:

另外github上也有一个专门的nfsstrace工具 : https://github.com/epam/nfstrace/ ,有兴趣的也可以研究使用下。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值