centos7下的磁盘占用排查及清理的笔记

2024-09-03 03:12

本文主要是介绍centos7下的磁盘占用排查及清理的笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

服务器磁盘空间持续增大,小白新手怎么查?记录以下一些常见的磁盘占用排查及清理的笔记。

查磁盘空间

主要是du。

首先,使用df命令查看各个磁盘分区的使用情况,找出哪个分区或挂载点的空间占用率异常高。

df -h

这个命令会列出所有挂载的文件系统及其使用情况,包括已用空间、可用空间和挂载点。 

其次呢,您可以使用du命令结合sort进行磁盘空间的分析。以下是一个基本的命令序列,用于找出占用最多磁盘空间的几个文件夹:

# 在当前目录中查找占用最多磁盘空间的5个文件夹
du -h --max-depth=1 | sort -hr | head -n 5# 如果想在整个文件系统中搜索,可以去掉--max-depth参数
du -h | sort -hr | head -n 5

解释:

  • du: 磁盘使用情况命令。

  • -h: 以人类可读的格式显示(例如,自动选择KB、MB、GB)。

  • --max-depth=1: 限制搜索深度为当前目录下一级。

  • sort -hr: 按照人类可读的数字进行逆序排序。

  • head -n 5: 只显示前5个结果。

请注意,这些命令可能需要一些时间来运行,特别是在大型文件系统或者深层目录结构中。

定位占用空间大的文件夹

1,使用du命令

对于使用率较高的分区或挂载点,可以使用du命令来递归地检查该分区下各个目录和文件的磁盘使用情况。

du -sh /*

这个命令会列出根目录(/)下各个一级目录的大小。如果发现某个目录占用空间很大,可以进一步进入该目录,使用相同的命令继续查找。

为了更精确地定位大文件或目录,可以使用以下命令来逐层深入查找:

cd /目标目录  
du -sh *

 然后针对占用空间大的目录重复上述步骤。

注意du -sh *不要带路径,要先cd进路径后,在du -sh *

2,结合find命令

如果需要查找特定大小的文件,可以使用find命令结合-size选项。例如,查找当前目录及子目录下所有大于100MB的文件:

find . -type f -size +100M

这个命令会列出所有大于100MB的文件及其路径。 

文件大小的排序

cd /var/lib  
du -ah --max-depth=1 | sort -rh | head -n 10

这个命令会列出 /var/lib 目录下最大的10个文件或子目录。注意,这里的 -rh 选项是 sort 命令的,用于按数字大小进行逆序排序。而 du 命令的 -ah 选项则是为了显示所有文件和目录的大小,并通过 --max-depth=1 限制输出深度。

如果你想要递归地检查所有子目录和文件(不限制深度),可以去掉 --max-depth=1 选项,但请注意,这可能会产生大量的输出,特别是当 /var/lib 包含很多子目录和文件时。在这种情况下,你可能需要重定向输出到文件中进行查看,或者使用其他方法(如 morelessgrep 等)来过滤或分页显示输出。

大文件浏览

在CentOS上浏览一个很大的文件时,直接使用文本编辑器(如vim或nano)可能会因为文件过大而导致性能问题或编辑器响应缓慢。相反,你可以使用一些专门用于查看或搜索大文件的命令行工具。很多人喜欢tail

tail -n 10 ./messages-20240826  
grep 'some_keyword' ./messages-20240826

以下是几个推荐的命令和工具:

  1. less 命令
    less 是一个分页查看工具,非常适合查看大文件。它允许你向前或向后浏览文件内容,而不需要一次性将整个文件加载到内存中。使用 less 文件名 来打开文件,然后你可以使用上下箭头键、Page Up/Page Down键或空格键来浏览文件内容。

  2. more 命令
    与 less 类似,more 也是一个分页查看工具,但它没有 less 的一些高级功能(如向后翻页)。使用 more 文件名 来打开文件,然后使用空格键翻页。

  3. head 命令
    如果你只对文件的开始部分感兴趣,可以使用 head 命令。默认情况下,head 显示文件的前10行,但你可以使用 -n 选项来指定显示的行数,例如 head -n 50 文件名 会显示文件的前50行。

  4. tail 命令
    与 head 相反,tail 命令用于查看文件的末尾部分。默认情况下,tail 显示最后10行,但你也可以使用 -n 选项来指定行数,或者使用 -f 选项来实时查看文件末尾的新增内容(这对于查看日志文件非常有用)。

  5. awk 命令
    awk 是一个强大的文本处理工具,虽然它不是专门用来浏览文件的,但你可以使用它来搜索或提取文件中的特定行或列。awk 的功能非常灵活,可以根据需要编写复杂的脚本来处理文件。

  6. grep 命令
    如果你对文件中的特定文本或模式感兴趣,grep 是你的好帮手。它允许你搜索文件中匹配指定模式的行,并输出这些行。使用 grep '搜索模式' 文件名 来搜索文件。

根据你的具体需求(比如是想要查看整个文件、文件的特定部分,还是搜索文件中的文本),你可以选择上述命令中的一个或多个来使用。对于大多数需要浏览大文件的情况,less 是个很好的起点。

反向追查大文件来源

如果文件当前正在被写入,你可以使用 lsof 或 fuser 命令来查看哪个进程正在访问这些文件。

sudo lsof +D /path/to/messages-directory  
# 或者  
sudo fuser /path/to/messages-20240826

也可以使用 inotifywait(来自 inotify-tools 包)来监控这些文件目录的变化,看看是哪个进程在写入这些文件。 

sudo inotifywait -m -r /path/to/messages-directory

然后使用 ps 命令查看这两个进程的详细信息。例如:

ps -f -p 833,7891

 清理/var/log下的几个文件

看到该目录下一些messages、mail、cron、secure等几个文件很困扰?他们其实是rsyslog,它是负责处理系统日志的守护进程,我们不必要强删,还是去修改配置文件即可.

通常,你可能需要编辑 /etc/rsyslog.d/ 目录下的某个 .conf 文件(如 50-default.conf),而不是直接编辑 /etc/rsyslog.conf,因为后者可能包含全局设置和包含其他配置文件的指令。

vim /etc/rsyslog.d/

我是进去后直接注释掉一些我认为不需要的日志。

完事记得重启

sudo systemctl restart rsyslog

另一种更常见且灵活的方法是使用 logrotate 工具来管理日志文件的大小和轮转。

步骤如下

  1. 编辑 logrotate 配置文件
    在 /etc/logrotate.d/ 目录下创建一个或编辑一个配置文件(如 rsyslog),以包含针对 /var/log/syslog(或你关心的其他日志文件)的轮转规则。

  2. 设置大小限制和轮转策略
    在配置文件中,你可以设置 size 指令来指定日志文件的大小限制,并使用 rotate 指令来指定保留的轮转文件数量。例如:

    /var/log/syslog {  su root root  size 1G  rotate 7  daily  missingok  notifempty  compress  delaycompress  postrotate  invoke-rc.d rsyslog rotate >/dev/null  endscript  
    }
  3. 这个配置将 /var/log/syslog 的大小限制为 1GB,并保留 7 个轮转文件。每天检查一次文件大小,并在达到限制时轮转文件。

  4. 确保 logrotate 定时任务已设置
    大多数 Linux 系统都会自动设置 logrotate 的定时任务(如 /etc/cron.daily/logrotate)。你可以检查这个文件是否存在,并确保它包含正确的 logrotate 命令。

  5. (可选)手动运行 logrotate
    在更改配置文件后,你可以手动验证并强制运行 logrotate 来测试配置:

sudo logrotate -vf /etc/logrotate.d/rsyslog

清理/var/log/journal目录

/var/log/journal是Linux系统中用于存放systemd日志的目录。systemd是大多数现代Linux发行版(包括CentOS 7及更高版本)的初始化系统和系统管理器,它负责启动系统、管理用户会话和服务等。systemd-journald是systemd的一部分,它负责收集并管理来自系统和服务的日志信息。 

不要直接删,而去修改配置就行

vim /etc/systemd/journald.conf

/etc/systemd/journald.conf是systemd-journald服务的配置文件,它用于定义systemd日志服务的各种参数和行为。以下是一些关键的配置项及其说明:

基本配置

  • Storage:控制日志数据的存储方式。可选的值包括volatilepersistentautonone
    • volatile:日志数据存储在内存中,即/run/log/journal目录下。
    • persistent:日志数据存储在磁盘上,即/var/log/journal目录下。
    • auto:日志数据默认存储在磁盘上,但如果/var/log/journal目录不存在,则存储在内存中。
    • none:关闭日志存储,所有接收到的日志数据将被丢弃。
  • Compress 和 Seal:这两个选项用于控制日志数据的压缩和加密。Compress=yes表示启用日志压缩,Seal=yes表示启用数据加密。

日志文件大小与数量限制

  • SystemMaxUseSystemMaxFileSizeSystemMaxFiles:这些选项用于限制磁盘上日志文件的总大小、单个文件的大小以及保留的最多文件数。例如,SystemMaxUse=500M表示日志最多可以使用500MB的磁盘空间。

  • RuntimeMaxUseRuntimeMaxFileSizeRuntimeMaxFiles:这些选项用于限制内存中日志文件的总大小、单个文件的大小以及保留的最多文件数。例如,RuntimeMaxUse=50M表示存储在内存中的日志文件总大小不超过50MB。

日志滚动策略

  • MaxRetentionSec 和 MaxFileSec:这些选项用于定义日志文件的保留时间和滚动策略。但通常,基于文件大小的滚动策略(通过SystemMaxFileSizeRuntimeMaxFileSize控制)已经足够,因此这些时间相关的选项可能不需要频繁修改。

配置示例

以下是一个简化的/etc/systemd/journald.conf配置文件示例: 

[Journal]  
Storage=persistent  
Compress=yes  
Seal=yes  
SystemMaxUse=500M  
SystemMaxFileSize=50M  
SystemMaxFiles=10  
RuntimeMaxUse=50M  
RuntimeMaxFileSize=50M  
RuntimeMaxFiles=1

注意事项

  • 在修改配置文件后,需要重启systemd-journald服务以使更改生效。可以使用systemctl restart systemd-journald命令来重启服务
  • 定期检查和清理日志文件是一个好习惯,以避免占用过多磁盘空间。
  • 如果启用了日志加密(Seal=yes),则需要确保有适当的密钥管理策略,以便在需要时能够解密日志数据。

这篇关于centos7下的磁盘占用排查及清理的笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131863

相关文章

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit