当前位置: 首页 > Linux

生产事故——磁盘利用率爆炸

时间:2023-04-06 22:58:01 Linux

大家好,我是把代码写成bug的大头菜。公众号:大头。原创不易,欢迎转载。不知道今天为什么起的这么早,也许是命中注定吧。醒来一看微信,发现线上服务器磁盘使用率超过70%。它确实是一个修复了错误的早起的鸟儿。....当时立马跑去查看监控,看cpu、内存、io是否一切正常。看了一圈,发现除了磁盘不正常外,一切正常。我是七点左右看到消息的。看到之后,磁盘使用率达到了72%,超过了设定的阈值70%。如上图红色箭头所示。当时直接进入服务器,使用df-h查看服务器的磁盘使用空间。看到上图的时候,我傻眼了。2.7T的空间,然后只用了5%,怎么会有70%的磁盘使用率。后来深吸一口气,喝了一口冰水冷静下来,发现公司用的是容器,df-h查看了物理服务器的磁盘空间。当时我的情况比较紧急,也忘记了用什么命令查看容器的硬盘空间。只好到谷歌输入框输入:“如何查看容器的磁盘空间”很快,我找到了相关命令:dockersystemdf-v然而,等待我的是dockersystemdf-v-bash:docker:commandnotfound太棒了!!!惊人的!!!嗯,好像没办法通过命令查看哪个地方占用磁盘空间多。不过比较急,只能用最笨的方法:遍历查询。但是对于这次遍历,我优先考虑遍历和查看日志文件。没想到马上就找到了满盘的根本原因。你看,从2月25号到现在3.21号的日志都在,一共占用了20G。我让运维给每个容器分配了30G。20G/30G=66.7%。简单的日志已经占据了66.7%的磁盘空间,其他应用占据了70+%。真锤子,真凶找到了。没想到这么快就找到了。至于我当初为什么要找日志文件?主要是经验,因为之前其他服务器也有过磁盘使用问题,也是因为日志文件的问题。简单总结一下,虽然经验并不总是可靠的,但是在解决在线问题时经验总是那么有用。因此,在排查问题时,需要从一开始就根据监控数据进行排查。不要先入为主,想当然地用它来排查问题,也就是没有经验就去想问题。先跳出固有圈,根据实际监测指标数据进行核对。实在没有办法的时候,用经验去查也不迟。所以现在我们找到了磁盘空间问题的根本原因:日志文件占用了太多空间。那么接下来我们应该做什么呢?您只能删除文件以腾出空间。遇到磁盘使用问题,除了删除文件,还有什么办法吗?是的,扩大磁盘空间,但多大就够了。这个解决方案显然不是最有效的解决方案。这时候终于可以搬出好久不用的命令了:rm-rf。当时,我删除了二月份的所有日志。马上看监控图,磁盘使用率立马降到70%以下。首要任务是让服务器正常运行。当你来到这里的时候,你认为一切都结束了吗?.......服务器后台没说明:四台服务器,每台服务器2核8G。删除文件前:删除文件后:我们可以看到删除文件的操作确实暂时将磁盘使用率从71%降低到了63%。但是,你发现了另一个问题。其他2台服务器的磁盘使用率只有1%。但是另外两台服务器的日志文件都占用了20G左右(容器的硬盘空间是30G),这又让我傻眼了!!!!明明每个人占用20G,2台服务器的利用率是70%,另外2台服务器的利用率高达1%。惊人的!!!!害,母鸡算数(粤语)!!!那时候,我想,还是算了吧。服务器现在也正常服务。上班后找运维谈,查明原因。毕竟才7点多,距离上班还有3个小时。找不到运维!!!怀着满满的兴奋,终于等到10点多才去上班。经过与运维的一番描述(对战),终于找到了答案,解开了疑惑。其实是监控数据的获取有bug,导致数据不准确。最后还是抓到了运维,问了怎么查看容器使用的硬盘空间?然而。...他似乎不太擅长。...好了,今天的bug已经顺利解决了。就是查看容器的命令,我还没找到。如果你有办法,请留言告诉我!感激的!