一种基于Linux磁盘访问的监控方法及系统技术方案

技术编号:20680441 阅读:27 留言:0更新日期:2019-03-27 18:43
本发明专利技术提出了提供一种基于Linux磁盘访问的监控方法及系统,通过linux内核的源码中“check_partition”结构体,对不同格式的分区进行监控,找到对磁盘操作的进程,进一步找到磁盘报错的原因。本发明专利技术能够进行磁盘的监控,有助于对磁盘的问题定位,确保磁盘的状态;本还能够监控磁盘异常访问,确认文件安全。

【技术实现步骤摘要】
一种基于Linux磁盘访问的监控方法及系统
本专利技术涉及计算机
,更具体的说是涉及一种基于Linux磁盘访问的监控方法及系统。
技术介绍
磁盘性能测试是服务器测试中必备的一项测试,主要用于查看磁盘的质量情况,比如磁盘的坏道问题,磁盘出现坏道主要分为逻辑坏道和物理坏道两种,当出现这种问题时,磁盘就会出现无法读取或读取速度过慢的情况。在日常的测试中会在系统日志中发现一些有关磁盘的报错。例如,在messages日志中会出现“unknownpartitiontable”的报错。这时我们就需要找到是什么进程,什么原因造成的此报错。因此,需要一种方法解决监控是什么进程对磁盘做了操作,以便于定位问题。
技术实现思路
针对以上问题,本专利技术的目的在于提供一种基于Linux磁盘访问的监控方法及系统,通过linux内核的源码中“check_partition”结构体,对不同格式的分区进行监控,找到对磁盘操作的进程,以便于找到磁盘报错的原因。本专利技术为实现上述目的,通过以下技术方案实现:一种基于Linux磁盘访问的监控方法,包括如下步骤:步骤1:在Linux系统下安装系统监控的探针;步骤2:安装用于监控Linux系统的内核代码包;步骤3:调用checkpartition结构体查看磁盘分区;步骤4:输出当前时间、函数名称、磁盘分区和pid信息;步骤5:搜集监控日志。进一步,所述系统监控的探针为systemtap-runtime。进一步,所述监控Linux系统的内核代码包包括:kernel-debuginfo-common、kernel-debuginfo和kernel-devel。进一步,所述步骤4具体包括:步骤41:调用ctime(now)函数打印当前时间;步骤42:通过$return命令得到调用的checkpartition结构体的返回值;步骤43:调用execname()函数输出所述磁盘分区的进程名称;步骤44:调用pid()函数显示所述磁盘分区进程的pid信息。进一步,步骤42还包括:如果没有返回值,输出0;如果有,并且分区表是有效的,输出一个正值;如果有错误,输出一个负值。进一步,所述步骤4还包括:调用pexecname()函数和ppid()函数,展示所述磁盘分区进程的父进程以及父进程的pid信息。另外,基于上述方法,本专利技术还提供了一种基于Linux磁盘访问的监控系统,包括:监控探针安装模块,用于在Linux系统下安装系统监控的探针;代码包安装模块,用于安装监控Linux系统的内核代码包;检查器调用模块,用于调用checkpartition结构体查看磁盘分区;显示模块,用于显示当前时间、函数名称、磁盘分区和pid信息;日志搜集模块,用于运行监控日志搜集命令,显示监控日志。进一步,还包括返回值输出模块,用于通过$return命令得到调用的checkpartition结构体的返回值,如果没有返回值,输出0;如果有,并且分区表是有效的,输出一个正值;如果有错误,输出一个负值。对比现有技术,本专利技术有益效果在于,1、本专利技术能够进行磁盘的监控,有助于对磁盘的问题定位,确保磁盘的状态;2、本专利技术能够监控磁盘异常访问,确认文件安全;3、本专利技术基于Linux系统,系统应用广泛;测试所需的系统环境稳定,测试结论真实可靠。由此可见,本专利技术与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。附图说明附图1是本专利技术的方法流程图。附图2是本专利技术的系统结构图。具体实施方式下面结合附图对本专利技术的具体实施方式做出说明。如图1所示的一种基于Linux磁盘访问的监控方法,其特征在于,包括如下步骤:步骤1:在Linux系统下安装系统监控的探针。系统监控的探针为systemtap-runtime。步骤2:安装用于监控Linux系统的内核代码包。内核代码包包括:kernel-debuginfo-common、kernel-debuginfo和kernel-devel。步骤3:调用checkpartition结构体查看磁盘分区。步骤4:调用ctime(now)函数打印当前时间。步骤5:通过$return命令得到调用的checkpartition结构体的返回值。如果没有返回值,输出0;如果有,并且分区表是有效的,输出一个正值;如果有错误,输出一个负值。步骤6:调用execname()函数输出所述磁盘分区的进程名称。步骤7:调用pid()函数显示所述磁盘分区进程的pid信息。步骤8:调用pexecname()函数和ppid()函数,展示所述磁盘分区进程的父进程以及父进程的pid信息。步骤9:搜集监控日志。上文中对于一种基于Linux磁盘访问的监控方法的实施例进行了详细描述,基于上述实施例描述的一种基于Linux磁盘访问的监控方法,本专利技术实施例还提供了一种与该方法对应的基于Linux磁盘访问的监控系统,由如图2所示,包括:监控探针安装模块,用于在Linux系统下安装系统监控的探针;代码包安装模块,用于安装监控Linux系统的内核代码包;检查器调用模块,用于调用checkpartition结构体查看磁盘分区;显示模块,用于显示当前时间、函数名称、磁盘分区和pid信息;返回值输出模块,用于通过$return命令得到调用的checkpartition结构体的返回值,如果没有返回值,输出0;如果有,并且分区表是有效的,输出一个正值;如果有错误,输出一个负值;日志搜集模块,用于运行监控日志搜集命令,提取监控日志。以上述的基于Linux磁盘访问的监控方法及系统为基础,具体的程序实现过程及内容如下:一、安装系统监控的探针二、安装kernel-debuginfo-commonkernel-debuginfokernel-devel三、程序内容probekernel.function("check_partition"){now=gettimeofday_s()printf("%-25skernel.%s-(process%s(%d),parent%s(%d)\n",ctime(now),probefunc(),execname(),pid(),pexecname(),ppid())print_backtrace()}//调用checkpartition结构体,并输出时间,函数名称,pid等信息。如下的函数针对每个不同的分区类型进行检查。ctime(now)函数打印的是当前时间,$return是前面调用的检查器的返回值。如果没有,返回0。如果有,并且分区表是有效的,那么它返回一个正值,如果有错误,那么返回一个负值。execname()输出查看的磁盘分区的进程名称,pid()显示的是查看磁盘分区进程的pid信息,pexecname(),ppid()展示的是查看磁盘分区进程的父进程以及父进程的pid信息;probekernel.function("efi_partition").return{now=gettimeofday_s()printf("%-25skernel.efi_partition-return=%d(process%s(%d),parent%s(%d)\n",ctime(now),$return,execname(),pid(),本文档来自技高网...

【技术保护点】
1.一种基于Linux磁盘访问的监控方法,其特征在于,包括如下步骤:步骤1:在Linux系统下安装系统监控的探针;步骤2:安装用于监控Linux系统的内核代码包;步骤3:调用check partition结构体查看磁盘分区;步骤4:输出当前时间、函数名称、磁盘分区和pid信息;步骤5:搜集监控日志。

【技术特征摘要】
1.一种基于Linux磁盘访问的监控方法,其特征在于,包括如下步骤:步骤1:在Linux系统下安装系统监控的探针;步骤2:安装用于监控Linux系统的内核代码包;步骤3:调用checkpartition结构体查看磁盘分区;步骤4:输出当前时间、函数名称、磁盘分区和pid信息;步骤5:搜集监控日志。2.根据权利要求1所述的基于Linux磁盘访问的监控方法,其特征在于:所述系统监控的探针为systemtap-runtime。3.根据权利要求1所述的基于Linux磁盘访问的监控方法,其特征在于:所述监控Linux系统的内核代码包包括:kernel-debuginfo-common、kernel-debuginfo和kernel-devel。4.根据权利要求1所述的基于Linux磁盘访问的监控方法,其特征在于,所述步骤4具体包括:步骤41:调用ctime(now)函数打印当前时间;步骤42:通过$return命令得到调用的checkpartition结构体的返回值;步骤43:调用execname()函数输出所述磁盘分区的进程名称;步骤44:调用pid()函数显示所述磁盘分区进程的pid信息。...

【专利技术属性】
技术研发人员:魏浩
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1