内存MCE错误导致暴力扩充messages日志 以及chattr记录
由于放假,好久没登过服务器,今天登上服务器查看日志意外发现:/var/log/messages文件竟然被撑到20多个G!!!赶紧查看是什么情况,首先,20多个G的文件根本无法查看,因此,我想到了split拆分文件,然后再细化查看,命令如下:
split -b 1024m messages mesg_tmp
其中,split命令-b选项可以识别的单位为m、k,即将messages文件切割成每块1024m大小的文件,mesg_tmp为前缀名,系统会默认在其后面加上aa、ab、ac.......,此外,split的-l选项可以指定行数进行切割,这样更方便在日志中进行查找。具体的可以 split --help
打开文件之后,发现我之前的系统日志正常,只占了1500行左右,之后的20G基本都是以下消息:
Jan 31 04:53:10 !!liu!! kernel:
Jan 31 04:53:10 !!liu!! kernel: EDAC MC1: CE row 0, channel 0, label "CPU_SrcID#1_Channel#0_DIMM#0": 11 Unknown error(s): memory read on FATAL area OVERFLOW: cpu=8 Err=0001:0091 (ch=1), addr = 0x47b8c0740 => socket=1, Channel=0(mask=1), rank=0
Jan 31 04:53:10 !!liu!! kernel: sbridge: HANDLING MCE MEMORY ERROR
Jan 31 04:53:10 !!liu!! kernel: CPU 8: Machine Check Exception: 0 Bank 5: cc00034000010091
Jan 31 04:53:10 !!liu!! kernel: TSC 0 ADDR 28750fcc0 MISC 425e3e86 PROCESSOR 0:206d7 TIME 1454187190 SOCKET 1 APIC 20
上网百度了一下,发现很多这种问题,基本都是说服务器由于内存问题而崩溃,大概是内存硬件故障,可以更好主板内存条或者cpu,等等,还有说是MCE检测错误,建议我们安装Mcelog检测模块,以下是对MCE的官方说明:
What are Machine Check Exceptions (or MCE)?
A machine check exception is an error dedected by your system's processor. There are 2 major types of MCE errors, a notice or warning error, and a fatal execption. The warning will be logged by a "Machine Check Event logged" notice in your system logs, and can be later viewed via some Linux utilities. A fatal MCE will cause the machine to stop responding and the details of the MCE will be printed out to the system's console.
What causes MCE errors?
There most common reason for MCE events to occur are:
1.Memory errors or Error Correction Code (ECC) problems
2.Inadequate cooling / processor over-heating
3.System bus errors
4.Cache errors in the processor or hardware
由此可以推断确实应该是硬件方面的问题。不过,很多人对此现象的最终解决办法是忽略该信息,-_-! 好吧。
既然忽略该信息,那我们就保留我们之前的1500行日志记录,删除其余的吧,结果又遇到了问题:
echo "" > /var/log/messages
提示messages文件无法被修改,不允许的操作。后来想可能是rsyslogd的服务一直在运行,daemon导致其无法修改?然后我:
lsof messages COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 7403 root 4w REG 8,6 1299113404 2686 messages kill -9 7403
cat /dev/null > messages
仍然提示不允许的操作,什么鬼。。。。(lsof以后详细看)
再次百度,了解到这个messages文件可能被chattr保护了,我们lsattr一下,果然结果为-----a------,即设定了append属性,设定该参数后,只能向文件添加数据,而不能删除,多用于服务器日志文件安全。这个还真是看过,但是忘了。
结论:当我们以后发现用root都不能修改的文件时,大部分原因可能是该文件被chattr锁定了,通过chattr命令修改属性可以提高系统的安全性,但它不适合所有目录,例如,它不能保护/, /dev, /tmp , /var目录,lsattr显示chattr设置的文件属性。
附一下chattr的参数说明: (来自:http://www.ha97.com/5172.html)
+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果 filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。
内存MCE错误导致暴力扩充messages日志 以及chattr记录的更多相关文章
- linux不同终端的操作是如何在messages日志中区分的
今天在定位一个问题时,查看message日志,需要知道message日志中的记录分别是哪个Xterm终端操作的.比较了半天才发现原来日志中可以通过pts来进行区分.如下所示: --12T15:::|n ...
- dotnet 6 在 Win7 系统证书链错误导致 HttpWebRequest 内存泄露
本文记录我将应用迁移到 dotnet 6 之后,在 Win7 系统上,因为使用 HttpWebRequest 访问一个本地服务,此本地服务开启 https 且证书链在此 Win7 系统上错误,导致应用 ...
- ORA-04031错误导致宕机案例分析
今天遇到一起ORACLE数据库宕机案例,下面是对这起数据库宕机案例的原因进行分析.解读.分析过程中顺便记录一下这个案例的前因后果,攒点经验值,培养一下分析.解决问题的能力. 案例环境: 操作系统 ...
- 一次apk打开时报内存溢出错误,故写下内存溢出的各种原因和解决方法
原转载:https://blog.csdn.net/cp_panda_5/article/details/79613870 正文内容: 对于JVM的内存写过的文章已经有点多了,而且有点烂了,不过说那么 ...
- java中三种常见内存溢出错误的处理方法
更多 10 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的 ...
- java中三种常见内存溢出错误的处理方法(good)
相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决j ...
- 给虚拟机添加新硬盘并分区,fdisk查看分区,分区,重新读取分区表信息partprobe,格式化,挂载,查看分区挂载信息,自动挂载文件/etc/fstab,/etc/fstab文件错误导致重启崩溃后的修复
1.虚拟机关机断电 2.添加硬盘 2.开机 3.fdisk -l查看刚才新添加的硬盘 [root@localhost ~]# fdisk -l 磁盘 /dev/sda:21.5 GB, 2147483 ...
- 《深入理解Java虚拟机》(六)堆内存使用分析,垃圾收集器 GC 日志解读
堆内存使用分析,GC 日志解读 重要的东东 在Java中,对象实例都是在堆上创建.一些类信息,常量,静态变量等存储在方法区.堆和方法区都是线程共享的. GC机制是由JVM提供,用来清理需要清除的对象, ...
- linux异常处理:selinux配置错误导致无法重启
点击返回自学Linux集锦 linux异常处理:selinux配置错误导致无法重启 一次linux无法重启异常记录: 当时第一反应就是梳理最近的配置变更,特别是能预知相关的就是selinux配置变更. ...
随机推荐
- ef core 2.1 利用Query Type查询视图
ef core新加入的功能“Query Type”可以让我们很方便的查询视图而不需要做任何特殊处理.不过在代码上和普通的查询有些不同. 先贴文档:https://docs.microsoft.com/ ...
- Add and Search Word - Data structure design - LeetCode
Design a data structure that supports the following two operations: void addWord(word) bool search(w ...
- luogu P3147 [USACO16OPEN]262144
题目描述 Bessie likes downloading games to play on her cell phone, even though she doesfind the small to ...
- - > 动规讲解基础讲解六——编辑距离问题
给定两个字符串S和T,对于T我们允许三种操作: (1) 在任意位置添加任意字符(2) 删除存在的任意字符(3) 修改任意字符 问最少操作多少次可以把字符串T变成S? 例如: S= “ABCF” ...
- Maven在[INFO] Generating project in Interactive mode卡住的问题解决
我的环境: Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven ...
- setTimeout改变this指向(****************************************)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Android Retrofit使用教程
Square公司开源了许多优秀的库,Retrofit就是其中之一. Retrofit是用来简化APP访问服务器API,如果你的服务器使用的使RESTAPI,那么赶紧使用Retrofit吧. 官方的文档 ...
- css :before 和 :after
:before p:before 在每个 <p> 元素的内容之前插入内容. 2 :after p:after 在每个 <p> 元素的内容之后插入内容. 2 <!DOCTY ...
- Jboss7类载入器
1. 类载入器理论知识介绍 类载入器基于Jboss Module,代替了层次类载入环境,避免了当类存在多个版本号时,导致类载入错误. 类载入是基于模块的.必须显示的定义模块依赖.部署也是模块化的,假设 ...
- context:exclude-filter spring事宜【经典-转】
context:exclude-filter spring事务 如果带上事务,那么用annotation方式的事务注解和bean配置,事务会失效,要将service bean配置到xml文件中才行. ...