服务器空间不足处理与解决思路—实战docker占用空间太大

news/2024/4/19 18:28:14/文章来源:https://blog.csdn.net/Da_zhenzai/article/details/130337972

前言

服务器Centos操作系统,空间不足的问题处理了三次了,决定把它的解决思路和处理过程记录下来。服务器空间不足是一个经常会遇到的问题,尤其是在大型应用程序和网站上。当服务器空间不足时,应该采取一些步骤来处理和解决这个问题。以下记录最近这次的解决方案和思路(原因:docker占用空间太大了)

现象

服务器空间不足会导致以下一些现象:

  1. 应用程序无法运行:当服务器空间不足时,某些应用程序可能会无法正常启动或运行,因为这些程序需要在硬盘上读取或写入数据。
  2. 文件上传失败:如果服务器的空间已经耗尽,用户可能会无法上传文件,因为没有足够的空间可供存储。
  3. 数据库出错:当服务器空间不足时,数据库可能会出现错误,因为数据库需要写入和读取数据到磁盘上。
  4. 日志文件无法写入:当服务器空间不足时,系统和应用程序的日志文件可能无法写入,这将使得故障排查和系统运行监控变得困难。
  5. 系统崩溃:如果服务器的空间不足并且无法处理数据和任务,可能会导致系统崩溃或宕机。

因此,保持足够的服务器空间是确保服务器运行稳定和高效的重要因素。

解决过程

一、服务器空间不足问题定位

  1. 登录服务器 ,可以通过运行一些命令,如df -hdu -h来检查服务器上的磁盘使用情况,查看哪些目录或文件夹占用了大量的空间。
1   [root@luntek tmp]# df -h
2   Filesystem      Size  Used Avail Use% Mounted on
3   devtmpfs        7.8G     0  7.8G   0% /dev
4   tmpfs           7.8G     0  7.8G   0% /dev/shm
5   tmpfs           7.8G  827M  7.0G  11% /run
6   tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
7   /dev/vda1        40G   38G     0 100% /
8   /dev/vdb        656G  154G  469G  25% /mnt
9   tmpfs           1.6G     0  1.6G   0% /run/user/0
10   overlay          40G   38G     0 100% /var/lib/docker/overlay2/0e4870d22fb 1c79fd3c0b8ad2023475715a5a56c05b1900de76070d0a80e3001/merged
11   overlay          40G   38G     0 100% /var/lib/docker/overlay2/cd5f647aa8a eede41e2642d56dd346632718c8bc9b07e7bbd7f1cc6dcdea23b6/merged
12   overlay          40G   38G     0 100% /var/lib/docker/overlay2/f7eb94f2fd3 c4b37de3538f965ce64833b5b69a59616ef317833c7039ef5da78/merged
13   overlay          40G   38G     0 100% /var/lib/docker/overlay2/da95b27c0e8 25567df0e483f0c5bb2ba58768604c867b4ceb45928beeef015f2/merged
14   overlay          40G   38G     0 100% /var/lib/docker/overlay2/4fea6e878f2 f317a63d124c2a3831cd9b8ffcdd0bb249b73b39d92adc7d555eb/merged
15   overlay          40G   38G     0 100% /var/lib/docker/overlay2/b910801159c 76ffe6ae68c5596aa13994ff5e9d2eebd2e1febb147b3b10cd2ac/merged
16   overlay          40G   38G     0 100% /var/lib/docker/overlay2/ef09bb54935 3ca0af146aa854b48d7757407cb7429deae1e20e107f40b78796e/merged
17   overlay          40G   38G     0 100% /var/lib/docker/overlay2/d1b236f57e4 09d49d0d7ef0ecf21c3d684ed8317bb88ef530907c4c4e5e57799/merged
18   overlay          40G   38G     0 100% /var/lib/docker/overlay2/ae369ee56f0 8206507b53cb29cbc32e88198f9d38ba1331636a7970a338f30ad/merged
19   overlay          40G   38G     0 100% /var/lib/docker/overlay2/3f84613ee8d b82cf00fc2883b9e31b42766a5d7d1cc910f2a7b9fce6cf74c435/merged
20   overlay          40G   38G     0 100% /var/lib/docker/overlay2/6e2272faed5 9954f4a29f60a0ba6618eede5ccaad24ff79385d98cd2e7c3d0da/merged
21   overlay          40G   38G     0 100% /var/lib/docker/overlay2/3c8f75522e7 2d64eb20b4656cbd11358581a61619ad209f788f3eac03ce0ed15/merged
22   overlay          40G   38G     0 100% /var/lib/docker/overlay2/832ed62f362 edd6d0350828aac3aad454a5dc1679a435d3be0e8efd60e6d25b2/merged
23   overlay          40G   38G     0 100% /var/lib/docker/overlay2/d96561964a2 015583c62329eac1587c3ff4b0a962ed9d30a2dd47609c3cfcc67/merged
24   shm              64M     0   64M   0% /var/lib/docker/containers/dd2e19f40 abcfafe515db471ab89735b79e05b1ca5e97ede16e9074cd53d35a6/mounts/shm
25   shm              64M     0   64M   0% /var/lib/docker/containers/23a9c891d cc3696c294fa9b2867ac96eda72b1422ffb6bc1527c2f00d5ec7f15/mounts/shm
26   shm              64M     0   64M   0% /var/lib/docker/containers/833eae2de d2733e5b3daddc1bcae9ea7ba943e1a1a2bc421d1119265db45fa80/mounts/shm
27   shm              64M     0   64M   0% /var/lib/docker/containers/7ae786e73 c5cd21c8a00d531f73902374150cbb8d6a3a10139324b9924375900/mounts/shm
...
  1. 抓住主要的物理设备,不用关心其他逻辑设备, 物理设备⼀般挂载在/dev目录下
/dev/vda1         40G   38G     0 100% /
/dev/vdb         656G  154G  469G  25% /mnt

观察到/根目录空间已经使用100%, 虽然名义上还有2G空间 ,但是这些空间可能是被内存交换分区占 用 ,所以不用拘泥于具体数字, 如果出现100%即可以确认。

注意:如果设备空间严重不足, 可能会导致正常命令⾏也无法执⾏, 此时可以先试试下面的释放空间思路

二、释放空间

  1. 首先最安全的可以释放的空间往往在/home目录下,在一般情况下,用户上传的临时文件和安装包等往往会存储在/home目录下,因此这些文件可以首先被删除或转移到其他有空间的分区中来释放空间。但是需要注意的是,如果这些文件是某些应用程序的必要文件,删除可能会导致应用程序无法正常运行,因此在删除前需要进行确认。此外,如果/home目录下存在用户的个人数据(例如文档、音乐、图片等),则不应该轻易删除或转移这些文件,而应该寻找其他的空间释放方案。
  2. /md目录下的一些文件可能可以删除,但是有一些文件可能记录了当前正在运行的进程的登录和临时状态数据,如果不熟悉这些服务,不建议删除这些文件。
  3. 可以通过清理无用的文件和目录,以及删除过期的日志和备份文件来释放空间。另外,可以通过压缩和归档文件来减少文件占用的磁盘空间。在释放空间之前,需要确保不会误删除重要的文件和目录。
  4. 重启一些进程和常见的服务,可以释放掉这些进程所生成的临时文件占用的空间。在重启之后,这样做可以基本保证会有一定的磁盘空间回收。
  5. 清理无用的进程镜像或者删除的 Docker 容器。
  6. 清理进程的缓存,可以运行进程的系统命令,清除所有未被使用的对象(包括镜像、容器、网络和卷),以及所有未标记的镜像和构建缓存。这可以帮助释放更多的磁盘空间。

三、分析空间占用的原因

使用du命令来逐层分析文件夹所占用的空间大小。其中,-d 1表示只分析当前目录下的一级子目录,-h表示以易读的方式显示结果(例如使用KB、MB等单位),-p L表示只分析L级子目录,而-u则表示使用M来显示结果,即以MB为单位。

du -d 1 -h

在这里插入图片描述
例如 ,从上述分析看到, 目录/var/docker/overlay2 ⼀个目录就占用了28GDocker Overlay2是⼀种容器存储驱动程序,它使用了⼀个特殊的文件系统来管理Docker容器和镜像的存储 。Overlay2驱动程序将多个镜像层堆叠在⼀起,以便对这些层进行读取和写⼊操作时只需要查找最上面的层 。因此 ,在使用Overlay2驱动程序时,Docker会为每个容器创建⼀个单独的目录,该目录包含容器所需的所有文件系统内容。
分析结果:这基本上无解了,不能删除Overlay2文件夹释放空间,此时所能做的就只能是把docker安装环境移到有空间的/mnt 分区去。

四 、Docker迁移

将Docker目录 ( 默认为/var/lib/docker) 移到其他磁盘, 可以通过以下步骤实现:

  1. 停止所有正在运行的Docker容器:运行docker stop $(docker ps -aq)命令停止所有正在运行的容器。
docker stop $(docker ps -aq)
  1. 停止Docker服务:运行systemctl stop docker命令停止Docker服务。
systemctl stop docker
  1. 复制Docker目录到新的位置:使用cp或rsync等工具将Docker目录复制到新的位置 。例如,将 Docker目录从/var/lib/docker复制到/new/path/docker, 可以运行sudo rsync -aqxP /var/lib/docker/ /mnt/var/lib/docker 命令。
sudo rsync -aqxP /var/lib/docker/ /mnt/var/lib/docker
  1. 更新Docker配置文件:修改Docker服务配置文件/etc/docker/daemon.json,并将旧的Docker目录路径替换为新的位置 。如果该文件不存在,请创建它 。示例配置文件如下所示:
{
"registry-mirrors": ["https://nrbewqda.mirror.aliyuncs.com"],
"dns": ["100.125.1.250", "100.125.64.250"],
"data-root": "/mnt/var/lib/docker"
}
  1. 启动Docker服务:运行systemctl start docker命令启动Docker服务, 并检查是否已成功加载新的 Docker目录。
systemctl start docker
  1. 启动Docker容器:运行docker start <container_id>命令启动之前停止的所有容器。
    注意:如果docker容器设置了restart ,则这些docker本身就会自动启动,这⼀步不是必须得。
docker start <container_id>

重点注意:完成迁移后,不要立即删除原来的docker目录,可以先通过修改目录名的方式隔离原来的docker目录,要反复确认启动没有问题后,再进行删除。

cd /var/lib/docker/
mv docker docker2
mv docker2 /mnt/

总结

拓展:如果docker资源太大,可以将其迁移至其他服务器或者外部存储设备。可以使用docker镜像导出和导入的方式来实现迁移。另外,也可以使用其他工具,如rsync或scp来迁移文件和目录。需要注意的是,迁移过程中需要保证数据的完整性和可用性。

总之,当服务器空间不足时,需要采取一些步骤来处理和解决这个问题。首先,需要定位空间不足的原因,并尽可能地释放空间。如果问题仍然存在,需要进一步分析空间占用的原因,并考虑调整相关设置或者进行迁移。最后,需要在处理问题的同时保证数据的完整性和可用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_103704.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode:206. 反转链表

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340; 算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 一、&#x1f331;206. 反转链表 题目描述&#xff1a;给你单链表的头节点 head &#x…

html学习(布局方式(layout)、浮动(float)、定位(position)、弹性盒(flex))

布局方式(layout) 文档流 文档流&#xff08;normal flow&#xff09; 文档流通俗的讲&#xff0c;就是一个web页面中&#xff0c;每一个模块只能从上到下从左往右的方式排列在页面上。 将窗口自下而上分成一行一行&#xff0c;应在每行中按从左至右的依次排放元素&#xff0…

光纤网卡传输速率和它的应用领域有哪些呢?通常会用到哪些型号网络变压器呢?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;常有客户问起光纤网卡该如何选用到合适的产品&#xff0c;选用时要注意到哪些事项&#xff0c;这节将结合配合到的网络变压器和大家一起探讨&#xff0c;希望对大家有些帮助。 1&#xff0e;光纤网卡传输速率与网络…

【iOS-分类,拓展和关联对象底层探究】

前言 寒假分享会问题解决二 早在大一的OC的学习过程就知道了分类和拓展的区别和联系&#xff0c;分类不能添加成员变量&#xff0c;而拓展可以添加成员变量。分类是在运行时期实现的&#xff0c;而拓展只是编译器的时候就实现了。对于分类我们可以通过关联对象来为我们需要的分…

线程池四种拒绝机制 实现 及执行日志

目录 目录 目录 创建线程池 测试代码 运行线程 全量代码 日志 AbortPolicy 报出异常模式 DiscardPolicy 放弃机制啥也不处理 DiscardOldestPolicy 放弃机制&#xff0c;放弃列队最早进入的 CallerRunsPolicy 交给主线程执行 创建线程池 public static ExecutorServi…

项目范围控制:如何控制项目范围的变化?

一个成功的项目需要在进度、成本和质量之间取得平衡。控制项目交付范围是实现这个平衡的关键。然而&#xff0c;项目范围是会变化的&#xff0c;因此控制项目范围变化是必要的。 如何控制项目范围的变化&#xff1f; 1、了解项目的交付范围 项目经理、团队成员、利益相关者和…

我用什么写Python?

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 通常来说&#xff0c;每个程序员都有自己趁手的兵器&#xff1a;代码编辑器。你要是让他换个开发环境&#xff0c;恐怕开发效率至少下降三成…

c/c++:char*定义常量字符串,strcmp()函数,strcpy()函数,寻找指定字符,字符串去空格

c/c&#xff1a;char*定义常量字符串&#xff0c;strcmp()函数&#xff0c;strcpy()函数&#xff0c;寻找指定字符&#xff0c;字符串去空格 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所…

Python爬虫基础之二

Python爬虫基础包括HTTP协议、HTML、CSS和JavaScript语言基础、requests库的使用、Beautiful Soup库的使用、xpath和正则表达式的使用等。此外&#xff0c;还应该了解反爬虫机制和爬虫的一些常见问题及解决方法。 上一篇文章讲解了有关条件判断语句、循环语句等相关知识&#…

陆奇-奇绩创坛-chatGPT新范式,新时代,新机会

奇绩创坛-新范式&#xff0c;新时代&#xff0c;新机会 01-新范式 新范式的新拐点 新范式的历史环境 新范式的社会影响 新范式的缔造者&#xff1a;Sam Altman和OpenAI 新范式的动力引擎 新范式的演化路径 02-新时代 新时代的宏观发展格局 新时代的中国机会 新时代的OpenAI生…

IT项目管理之软件测试

1. 定义 软件测试是使用人工或者自动的手段来运行或者测定某个软件系统的过程&#xff0c;其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 在软件投入使用前&#xff0c;要经过一系列的严格测试&#xff0c;才能保证交付质量。 2. QC & QA &a…

开源模型ModelScope的初探使用

泛AI开发者的一站式模型服务产品平台 阿里达摩院推出了一个开源的模型共享平台&#xff0c;包括计算机视觉、多模态、自然语言处理等多个领域上手即用的模型&#xff0c;如果AI相关模型感兴趣的同学&#xff0c;或者想基于基础模型做业务场景的同学&#xff0c;都可以用这个平…

C++三大特性—继承 “访问控制”

本文主要阐述关于C继承中基类与派生类之间的访问关系 继承方式与访问方式 继承定义格式&#xff1a; 派生类可以继承定义在基类的成员&#xff0c;但是派生类的成员函数不一定有权访问从基类继承来的成员    访问限定符的作用&#xff1a;控制派生类从基类继承而来的成员是否…

学习系统编程No.23【信号实战】

引言&#xff1a; 北京时间&#xff1a;2023/4/23&#xff0c;最近学习状态不怎么好&#xff0c;总是犯困&#xff0c;没精力的感觉&#xff0c;可能是病没有好彻底的原因&#xff0c;也可能是我内心因为生病而认为摆烂理所应当&#xff0c;反正最后导致摆烂&#xff0c;课现在…

android之 Launcher改造仿桌面排版的效果

一&#xff0c;背景 1.1 新接手一个灯光控制项目&#xff0c;其页面和效果还是比交复杂的&#xff0c;其中一个功能就是仿苹果桌面来排版灯具&#xff0c;支持拖拽&#xff0c;分组&#xff0c;分页。 拖动图标的时候判断是否空白位置还是已经有占位了&#xff0c;有的话就把…

体验了多款国产类ChatGPT产品后,我选择了道合顺的【ChatIC】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…

springboot实用配置

springboot实用配置 &#xff08;一&#xff09;打包与运行&#xff08;二&#xff09;配置高级1.临时属性设置2.配置文件分类3.自定义配置文件 &#xff08;三&#xff09;多环境开发&#xff08;四&#xff09;日志1.日志基础2.日志输出格式控制3.日志文件 &#xff08;一&am…

14、RPC与gRPC

目录 一、rpc基础1 - rpc入门2 - 基础的rpc通信3 - 基于接口的RPC服务 二、rpc编码1 - gob编码2 - json on tcp3 - json on http&#xff08;待补充&#xff09; 三、prtotobuf编码1 - prtotobuf概述2 - protobuf编译器3 - 序列化和反序列化4 - 基于protobuf的RPC&#xff08;待…

vue项目 解决el-table自适应高度,vue页面不显示多条滚动条,超出的部分让el-table内部出现滚动条(推荐使用第二种解决方案)

一、需求 后台管理系统&#xff1a;最常见的页面都是由—>左侧菜单、头部tabView页签、主体数据渲染页面&#xff08;AppMain&#xff09;&#xff1b;而一般AppMain页面又分为&#xff1a; 搜索区域、table数据&#xff08;分页&#xff09;&#xff0c;可能也会存在底部&a…

QGIS数据可视化学习笔记01——一般的图层样式调整和在地图上添加图表

说明&#xff1a;QGIS数据可视化章节用的数据为QGIS绘制一张地图学习章节的数据&#xff0c;传送门&#xff1a;https://blog.csdn.net/qq_47188967/article/details/130196284 一、 一般的图层样式调整 首先呢&#xff0c;在QGIS中打开上一章节用的数据&#xff0c;界面如下&…