电脑磁盘占用率100%问题的解决方法:首先打开任务管理器,单击磁盘占用率一栏进行排序,查看占用磁盘最高的应用 。若占用率最高的始终是同一个三方程序,可尝试卸载 。注:开机时由于频繁读写磁盘,磁盘占用率会很高,等到开机完全后,磁盘占用率会逐渐降低 。
【磁盘100严重排查和解决方案 磁盘占用100%怎么解决】
文章插图
最近遇到一个服务器的问题:磁盘满了,占用率 100%~
这个问题太常见了,于是先来排查一波是哪些文件占用了大量磁盘 。
一、排查磁盘占用率100%1.1 查看磁盘使用的大致情况第一个命令就是 df -h,来查看磁盘的占用情况 。df 是 disk free 的缩写,用于显示目前在 Linux 系统上的文件系统磁盘的使用情况统计 。
如下图所示,可以看到磁盘占用率 100% 。
第一列 Filesystem 代表文件系统的名称 。
第二列 Size 表示文件系统的大小 。
第三列 Used 表示已占用多大的磁盘空间 。
第四列 Avail 表示可用磁盘空间的大小 。
第五列 Use% 表示磁盘使用率多大,100% 表示磁盘占满了 。
第六列 Mounted On 表示挂载在哪个目录 。
从上面的结果可以看到有个文件系统占用率为 100%,为/dev/sda2,挂载的目录为 /,那我们就来看下这个目录下都存放哪些大文件吧 。
1.2 查看目录下的大文件使用 du 命令来显示目录或文件所占用的磁盘空间大小 。
#先进入到根目录`/`cd/#列出当前目录或文件的总大小,并按倒叙排序du-sh/*|sort-nr找到最大的目录 var,占用 100 多个 G 。进入到这个目录中,然后再次执行 du 命令
du-sh/var/*|sort-nr这样一级一级的找,就能找到占用空间最大的文件了 。
最后发现是 Logstash 容器的日志文件占用太大,截图如下 。大家看到的占用 4.8G,这是我清理日志之后的大小,之前这个容器占用 90 多个 G 。
1.3 Logstash 容器为什么占用磁盘这么大为啥 Logstash 容器会有这么多日志???
我们看下这个日志里面的内容就知道了 。使用 tail 命令查看文件的最后 100 行数据 。
tail-n100<容器id>-json.log#也可以通过dockerlogs来查看日志dockerlogs--tail=100159发现全都是 Logstash 解析日志时打印的信息 。如下图所示:
每次 Filebeat 采集日志后,传输给 Logstash 后,Logstash 都会打印一条解析后的日志 。
而我们的后端服务会打印很多日志,传输给 Logstash 的日志会越来越多,Logstash 又会疯狂的写自己的解析日志,久而久之,磁盘就被占满了 。
问题原因找到了,那解决方案是什么呢?
二、容器日志清理方案
- 方案一:手动清理日志文件,可解燃眉之急,治标不治本 。
- 方案二:脚本定期清理日志文件,缺点是日志文件全丢了,无法追溯 。
- 方案三:限制所有容器的日志文件大小,治本,缺点是需要重新创建容器和启动 docker 镜像 。
2.2 方案二:脚本定期清理提供一个清理脚本
#!/bin/shecho"========startcleandockercontainerslogs========"logs=$(find/var/lib/docker/containers/-name*-json.log)forlogin$logsdoecho"cleanlogs:$log"cat/dev/null>$logdoneecho"========endcleandockercontainerslogs========"给脚本添加权限
chmod+xclean_docker_log.sh执行脚本的命令
./clean_docker_log.sh大家可以把执行脚本的命令加到 Linux 的定时任务中就可以了,这里不做展开 。
下面要说的是我目前使用的方案 。
2.3 方案三:限制 Docker 容器日志大小新建 /etc/docker/daemon.json,若有就不用新建了 。
vim/etc/docker/daemon.json配置内容如下:
{"log-driver":"json-file","log-opts":{"max-size":"500m","max-file":"3"}}max-size=500m,表示容器的日志文件大小上限是 500M,max-file=3,表示容器有三个日志,第一个满了 500M之后就写第二个,第二个满了 500M就写第三个,如果第三个满了,就清空第一个日志文件,重新写第一个日志文件 。如下图所示:
写了 3 个日志文件,最大不超过 500M
改完之后需要重启 docker 守护进程
systemctldaemon-reloadsystemctlrestartdocker另外这种方式只对新建的容器有效的,之前的容器不生效,所以我又把之前的 Logstash 容器删除了,然后重新启动了一个 Logstash 容器 。
- 手机电池最理想的充电量是40%到80%,不过避免电池完全充满 电池充到80好还是100好
- 1000千焦=238 1000千焦多少大卡
- 快递员配送快递的方法及要求 快递员一天送100件累吗
- 31000过滤棉的作用 31000过滤棉是几厘米
- 伊兰特百公里加速12 伊兰特百公里加速几秒
- 农村人口中的脱贫不稳定户、边缘易致贫户、突发严重困难户三类
- KM 中国人俗称的“码”是指1公里,高速上跑100码(省略 100y是多少米
- 板栗南瓜的热量真的很低吗100g中含有热量36大卡 板栗南瓜热量高吗
- 灰霉病是草莓开花后危害最严重的一种真菌性病害 保护地草莓灰霉病如何防治
- 抖音禁言发作品怎么办 抖音禁言30天严重吗