目 录CONTENT

文章目录

CentOS7 清理磁盘系统空间

思维天空
2022-08-04 / 0 评论 / 0 点赞 / 12 阅读 / 2,280 字

CentOS7 清理系统垃圾

当发现虚拟机内存不足时,使用 df -h 查看磁盘占用率

使用 du -h * 查看目录下文件大小,再进行清理。

/var 目录下yum 缓存可能会很大,还有abort服务产生的日志文件
yum clean all
rm -rf /var/cache/yum/*

如果不想完全关闭ABRT服务,但同时希望减少日志产生的大小,可以通过调整  /etc/abrt/abrt.conf

配置文件解决。

#限制ABRT日志总空间占用,以MB为单位。超过限制则自动删除旧日志
MaxCrashReportsSize = 250
#是否记录非应用包中的执行指令的错误信息
ProcessUnpackaged = no
#是否在dump中包含完整的二进制镜像信息
SaveBinaryImage = no

CentOS7服务器磁盘清理

1.使用df-lh命令查看磁盘可用空间。

2.先用cd /进入根目录,然后使用 du -h --max-depth=1 命令查看实际存储的文件大小。

3.比较df -lh和du -h分析出来的使用量;如果两者相同,则从未删除的文件下手去清理 ,如果du -h分析出来的用量明显小于df -lh分析出来的用量,则从删除未释放磁盘的文件下手清理。

4.从未删除的文件下手,从根目录开始逐级通过  du -h --max-depth=1命令;从占用空间大的文件夹入手,逐级向下排查找到容量大的文件。

找到大文件后确认文件是无用文件后通过rm命令删除即可释放磁盘空间。切记文件不可是系统文件和程序正在使用中的问题。

5.从删除未释放磁盘的文件下手,通过lsof  | grep  deleted 命令查看文件是哪个程序产生的,通过重启那个程序就可以得到释放。虽然通过重启可以暂时释放磁盘,但是可以没根源上排查杜绝这种文件的产生。

6.如果要删除的大文件是系统文件,一般持续变大的文件一般是系统的日志文件。centos下通过

journalctl --vacuum-time=1w 保留一周内日志或者journalctl --vacuum-size=500M保留500M日志从而清理掉多余的部分且以后系统可以自动清理掉多余的部分,变能做到一劳永逸。

7.如果是mysql产生的日志,在root用下执行RESET MASTER;清理掉日志即可释放磁盘空间。然后执行SET GLOBAL expire_logs_days = 7; 设置日志只保留7天避免binlog日志的持续扩张。

CentOS7根目录空间占满怎么解决

问题背景是这样的,根目录初始大小是50G,我把mysql和docker都装在根目录底下了。

随着时间推移,mysql大小达到了27个G,docker则是22个G

根目录空间不够用了,上图:

图 1-1

想过的方案有数据库迁移,根目录扩容,和软连接,最后选择的是软连接,没别的意思,就是解决问题快,开搞:

如图1-1所示,home目录下空间有1.8T容量,我们把数据迁移到home下就达成目的了。

通过查询,mysql占用容量最大的是data目录。查询命令是: du -h --max-depth=1

图:1-2

先把data迁移到home目录底下

在home目录下新建文件夹

mkdir /home/mysql

关闭mysql

service mysqld stop

转移数据

mv /usr/mysql/data /home/mysql

制作软链接

ln -s /home/mysql/data /usr/mysql/data

开启mysql

service mysqld start

这样,mysql 数据就迁移到home下了

接下来做docker的迁移

cd /home
mkdir docker

修改docker的systemd的 docker.service的配置文件

不知道 配置文件在哪里可以使用systemd 命令显示一下

systemctl disable docker
systemctl enable docker
#显示结果
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

修改docker.service文件

vim /usr/lib/systemd/system/docker.service

在里面的EXECStart的后面增加后如下:

ExecStart=/usr/bin/dockerd --graph /home/docker

重新enable 一下docker 服务 重新进行软连接 以及进行一次 daemon-reload

systemctl disable docker
systemctl enable docker
systecmtl daemon-reload
systemctl start docker

可以看到:

方法 二

不修改 docker.service的配置文件的默认路径,直接制作软连接

到此,根目录空间也就降下来了。

以后真正的数据是保存的home文件夹下的。

Docker下/var/lib/docker/overlay2空间清理办法

Docker下/var/lib/docker/overlay2空间清理办法

  1. 查看磁盘占用
    df -h

  2. Docker 的内置 CLI 指令docker system df
    可用于查询镜像(Images)、容器(Containers)和本地卷(Local Volumes)等空间使用大户的空间占用情况。
    ~]# docker system df
    查看详细
    ~]# docker system df -v

  3. 空间清理
    【1】通过 Docker 内置的 CLI 指令docker system prune来进行自动空间清理。
    ~]# docker system prune --help
    该指令默认会清除所有如下资源:
    已停止的容器(container)
    未被任何容器所使用的卷(volume)
    未被任何容器所关联的网络(network)
    所有悬空镜像(image)。

    该指令默认只会清除悬空镜像,未被使用的镜像不会被删除。添加-a 或 --all参数后,可以一并清除所有未使用的镜像和悬空镜像。
    可以添加-f 或 --force参数用以忽略相关告警确认信息。
    【2】另外除了system级别的,还有针对容器或是镜像级别的删除命令:
    docker image prune:删除悬空的镜像。
    docker container prune:删除无用的容器。
    –默认情况下docker container prune命令会清理掉所有处于stopped状态的容器
    –如果不想那么残忍统统都删掉,也可以使用–filter标志来筛选出不希望被清理掉的容器。例子:清除掉所有停掉的容器,但24内创建的除外:
    –$ docker container prune --filter “until=24h”

    docker volume prune:删除无用的卷。
    docker network prune:删除无用的网络
    【3】手动清除
    对于悬空镜像和未使用镜像可以使用手动进行个别删除:
    1、删除所有悬空镜像,不删除未使用镜像:
    docker rmi $(docker images -f “dangling=true” -q)

     2、删除所有未使用镜像和悬空镜像
     docker rmi $(docker images -q)
    
    
     3、清理卷
     如果卷占用空间过高,可以清除一些不使用的卷,包括一些未被任何容器调用的卷(-v 详细信息中若显示 LINKS = 0,则是未被调用):
     删除所有未被容器引用的卷:
     docker volume rm $(docker volume ls -qf dangling=true)
    
    
     4、容器清理
     如果发现是容器占用过高的空间,可以手动删除一些:
     删除所有已退出的容器:
     docker rm -v $(docker ps -aq -f status=exited)
     删除所有状态为dead的容器
     docker rm -v $(docker ps -aq -f status=dead)
    
  4. 查找系统中的大文件【以上三步仍然不可以的时候执行】
    find /var/lib/docker/overlay2/ -type f -size +100M -print0 | xargs -0 du -h | sort -nr

    查找指定目录下所有大于100M的所有文件

  5. 对标准输入日志大小与数量进行限制
    新建或修改/etc/docker/daemon.json,添加log-dirver和log-opts参数
    vi /etc/docker/daemon.json
    {
    “log-driver”:“json-file”,
    “log-opts”: {“max-size”:“3m”, “max-file”:“1”}
    }

    重启docker的守护线程

    systemctl daemon-reload
    systemctl restart docker

  6. docker 清理空间命令
    删除悬空镜像
    docker rmi $(docker images -f “dangling=true” -q)
    docker image prune -a -f
    #显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,
    sudo docker ps -a|grep Exited|awk ‘{print $1}’
    #查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器
    sudo docker rm docker ps -a|grep Exited|awk '{print $1}'
    方法二:
    #删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)
    sudo docker rm $(sudo docker ps -a -q)

    方法三:
    #根据容器的状态,删除Exited状态的容器
    sudo docker rm $(sudo docker ps -qf status=exited)

    方法四:
    #Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器。
    sudo docker container prune

    #删除所有镜像
    sudo docker rmi $(docker images -q)

  7. 实在没办法,只有把/var目录下所有日志文件清空
    ~]# for i in find /var -name *.log*;do >$i;done
    然后重启node节点,因为有些日志文件被占用,清空后空间仍然无法释放

0

评论区