当前位置: 首页 > article >正文

解决Docker存储空间不足问题

虚拟机磁盘扩展实战:解决Docker存储空间不足问题

问题背景

在虚拟机中运行的Linux系统上,Docker服务因根分区空间不足而无法正常运行。初始状态如下:

[root@localhost ~]# df -h /
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G   17G  983M   95% /[root@localhost ~]# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          8         7         3.914GB   260.4MB
Containers      8         4         6.741GB   18.13kB

根分区使用率已达95%,仅剩983MB空间,导致Docker无法正常工作。

完整解决方案

步骤1:安装parted工具(如未安装)

# 检查parted是否已安装
which parted || echo "parted not installed"# 安装parted工具
sudo yum install -y parted  # CentOS/RHEL
# 或
sudo apt-get install -y parted  # Ubuntu/Debian# 验证安装
sudo parted --version

步骤2:扩展虚拟机磁盘

  1. 关闭虚拟机
  2. 在虚拟机管理软件中:
    • VMware: 虚拟机设置 → 硬盘 → 扩展
    • VirtualBox: 设置 → 存储 → 调整大小
    • 将磁盘从30GB扩展到53.7GB
  3. 启动虚拟机

步骤3:进入parted交互模式

# 启动parted工具(需要root权限)
sudo parted /dev/sda

步骤4:parted交互操作指南

在parted交互模式中,按顺序执行以下命令:

# 1. 查看当前分区信息
(parted) print# 2. 调整分区大小(注意:100%后不要添加任何注释)
(parted) resizepart 2 100%# 3. 确认分区已扩展
(parted) print# 4. 退出parted
(parted) quit

关键操作截图

(parted) print  # 执行前
Number  Start   End     Size    Type     File system  标志
1      1049kB  1075MB  1074MB  primary  xfs          启动
2      1075MB  30.0GB  28.9GB  primary               lvm(parted) resizepart 2 100%  # 正确执行(parted) print  # 执行后
Number  Start   End     Size    Type     File system  标志
1      1049kB  1075MB  1074MB  primary  xfs          启动
2      1075MB  53.7GB  52.6GB  primary               lvm

步骤5:更新分区表

# 强制内核重新读取分区表
sudo partprobe -s /dev/sda
sudo udevadm settle# 确认分区已扩展
sudo fdisk -l /dev/sda

预期输出

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM

步骤6:扩展物理卷(PV)

# 强制物理卷使用整个分区空间
sudo pvresize /dev/sda2# 验证PV大小
sudo pvdisplay /dev/sda2

检查关键值

  • PV Size 应接近53.7GB
  • Free PE 应有大量空间

步骤7:扩展逻辑卷(LV)和文件系统

# 查看卷组可用空间
sudo vgdisplay centos | grep "Free"# 将所有空闲空间分配给根逻辑卷
sudo lvextend -l +100%FREE /dev/mapper/centos-root# 扩展XFS文件系统
sudo xfs_growfs /dev/mapper/centos-root# 验证最终结果
df -h /

成功验证

操作完成后,系统显示:

[root@localhost ~]# df -h /
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   54G   17G   37G   32% /[root@localhost ~]# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          8         7         3.914GB   260.4MB
Containers      8         4         6.741GB   18.13kB

根分区从17GB扩展到54GB,Docker存储空间不足问题得到解决。

Parted交互模式详解

什么是parted交互模式?

parted是一个磁盘分区工具,提供两种使用方式:

  1. 命令行模式:sudo parted /dev/sda resizepart 2 100%
  2. 交互模式:通过sudo parted /dev/sda进入,然后输入命令

为什么使用交互模式?

  1. 更直观:每一步操作都有明确提示
  2. 更安全:操作前可预览更改
  3. 更灵活:支持多种磁盘操作命令

常用交互命令:

命令功能示例
print显示分区表(parted) print
resizepart调整分区大小(parted) resizepart 2 100%
rm删除分区(parted) rm 3
mkpart创建新分区(parted) mkpart primary 30GB 100%
quit退出交互模式(parted) quit

关键要点

  1. 操作顺序至关重要

    • 先扩展虚拟机磁盘
    • 再扩展Linux分区
    • 最后扩展LVM和文件系统
  2. parted命令注意事项

    # 正确命令(简洁无注释)
    (parted) resizepart 2 100%# 错误命令(会导致失败)
    (parted) resizepart 2   # 选择要调整的分区(这里是分区2)
    
  3. LVM扩展逻辑

    物理磁盘 → 分区 → 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统
    
  4. XFS文件系统特性

    • 支持在线扩展(无需卸载)
    • 使用xfs_growfs命令扩展

常见问题解决方案

问题1:parted未安装

# CentOS/RHEL
sudo yum install -y parted# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y parted

问题2:parted命令无效

# 确保使用正确语法
(parted) help resizepart  # 查看命令帮助# 使用绝对路径
/sbin/parted /dev/sda

问题3:空间未完全释放

# 清理Docker无用数据
docker system prune -af# 清理系统日志
sudo journalctl --vacuum-size=200M
sudo rm -rf /var/log/journal/*

问题4:parted无法调整分区

使用fdisk替代方案:

# 备份分区表
sudo sfdisk -d /dev/sda > sda.bak# 进入fdisk交互模式
sudo fdisk /dev/sda# 在fdisk中执行:
d      # 删除分区
2      # 选择分区2
n      # 新建分区
p      # 主分区
2      # 分区号2
2099200 # 起始扇区(必须相同!)
Enter  # 使用默认结束位置(整个磁盘)
t      # 更改类型
2      # 选择分区2
8e     # Linux LVM 类型
w      # 写入更改

总结

通过本指南,您成功实现了:

  1. parted工具的安装与使用
  2. 虚拟机磁盘从30GB扩展到53.7GB
  3. Linux分区扩展到整个可用空间
  4. LVM物理卷和逻辑卷的扩展
  5. XFS文件系统的在线扩展
  6. Docker存储空间不足问题的解决

经验提示:在生产环境中操作前,务必对虚拟机进行快照备份,以防操作失误导致数据丢失。parted交互模式虽然需要额外学习,但提供了更直观和安全的分区管理方式。

相关文章:

解决Docker存储空间不足问题

虚拟机磁盘扩展实战:解决Docker存储空间不足问题 问题背景 在虚拟机中运行的Linux系统上,Docker服务因根分区空间不足而无法正常运行。初始状态如下: [rootlocalhost ~]# df -h / 文件系统 容量 已用 可用 已用% 挂载点…...

基于SpringBoot的商家销售管理网站的设计与实现

湖南软件职业技术大学 本科毕业设计(论文) 设计(论文)题目 基于SpringBoot的商家销售管理网站的设计与实现 学生姓名 学生学号 所在学院 专业班级 校内指导教师 企业指导教师 毕业设计(论文)真实性承诺及声明 学生对毕业设计(论文)真实性承诺 本人郑重声明:所提交的毕…...

【数据集】高分辨率(1 km)月尺度中国气候(降水+最高/低温)数据集(1952–2019)

目录 数据描述🧩 输入数据⚙️ 数据处理流程一、ChinaClim_baseline(基准气候表面)二、ChinaClim_time-series(时序气候数据)📊 评估与验证方法📤 数据下载月最低气温月最高气温python绘制代码参考论文《1 km monthly precipitation and temperatures dataset for Ch…...

word中表格拉不动以及插入图片有间距

1、word中表格插入图片始终有间隙,怎么调表格高度和宽度都消除不了间隙,如下所示: 可以在表布局—单元格边距—修改上下左右边距为0即可 2、经过上述调整后左右没有间隔了,但图片上下有间隔,直觉是行距问题&#xff0c…...

JavaSE:面向对象进阶之接口(Interface)

JavaSE 面向对象进阶之接口(Interface) 一、接口的核心概念 接口是一种完全抽象的类型,它定义了一组方法签名(契约),但不包含方法实现。接口的核心作用是: 规范行为:强制实现类遵…...

【Java学习笔记】接口

接口 应用场景引出 一、接口的介绍 1. 接口的基本结构 interface 接口名{属性抽象方法 }引出关键字:implements 2. 子类实现接口 class a implements 接口名{}3. 接口中的属性说明:属性默认是public static final修饰的 (1)f…...

代码随想录打卡|Day50 图论(拓扑排序精讲 、dijkstra(朴素版)精讲 )

图论part08 拓扑排序精讲 代码随想录讲解链接 题目链接 思路 在这个题目之中,个别文件的处理依赖于别的文件,因此,文件的处理顺序十分重要。我们用图来表示文件的处理顺序,文件s指向文件t,则说明如果要正确的处理文…...

Wan2.1 图生视频模型内部协作流程

Wan2.1 图生视频模型内部协作流程 flyfish Wan2.1作为一个多模态生成模型,其内部涉及多个子模型的协同工作。 1. 模型架构概览 Wan2.1主要由以下核心组件构成: 文本编码器:基于T5的文本理解模型,将prompt转换为语义向量图像编…...

SI24R05国产低功耗2.4GHz+125K低频唤醒SoC人员定位/畜牧业牛羊定位/资产管理定位方案芯片

目录 SI24R05简介功能框图 主要特性开发工具方案特性 SI24R05简介 Si24R05 是一款高度集成的低功耗 SOC 芯片,具有低功耗、Low Pin Count、 宽电压工作范围,集成了 13/14/15/16 位精度的 ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、无线收发器、…...

qt QAxWidget

QAxWidget 是 Qt 中用于嵌入 ActiveX 控件或 COM 对象的类&#xff0c;主要用于 Windows 平台。以下是其使用方法的详细步骤和示例&#xff1a; 1. 环境配置 在 .pro 文件中添加 axcontainer 模块&#xff1a; QT axcontainer2. 基本使用 创建控件实例 #include <QAxW…...

机器学习与深度学习04-逻辑回归02

目录 前文回顾6.正则化在逻辑回归中的作用7.特征工程是什么8.逻辑回归的预测结果如何9.什么是ROC曲线和AUC值10.如何处理类不平衡问题11.什么是交叉验证 前文回顾 上一篇文章地址&#xff1a;链接 6.正则化在逻辑回归中的作用 逻辑回归中&#xff0c;正则化是一种用于控制模…...

CQF预备知识:Python相关库 -- NumPy 基础知识 - 通用函数

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。 通用函数 另请参阅 通用函数&#xff08;ufunc&#xff09; 通用函数&#xff08;或简称 ufunc&#xff09;是一种对 ndarrays 进行逐元素操…...

基于ELK的分布式日志实时分析与可视化系统设计

目录 一、ELK平台介绍 1.ELK概述 2.Elasticsearch 3.Logstash 4.Kibana 二、部署ES群集 1.资源清单 2.基本配置 3.安装Elasticsearch&#xff08;elk1上、elk2上、elk3上&#xff09; 4.安装logstash&#xff08;elk1上&#xff09; 5.Filebeat 6.安装Kibana&#x…...

@Async 注解 走的是主线程 还是子线程呢

Asyncz注解所在的包 package org.springframework.scheduling.annotation; Async 注解在Spring框架中用于标记一个方法为异步方法。当这个方法被调用时&#xff0c;它不会阻塞调用线程&#xff0c;而是会在一个单独的线程中执行。因此&#xff0c;Async 注解走的是子线程&…...

前端面经 React 组件常见的声明方式

react类组件和函数式组件 函数组件返回值的内容就是要渲染的内容 函数组件使用useState更新状态 &#xff0c;使用类中变量更新 常见hook 官方 &#xff1a; useEffect 处理副作用&#xff0c;请求APIuseState 更新UIuseLayout 同步更新&#xff0c;会阻塞进程&#xff0c…...

酒店管理系统设计与实现

本科毕业设计(论文) 设计(论文)题目 酒店管理系统设计与实现 学生姓名 学生学号 所在学院 专业班级 校内指导教师 李建 企业指导教师 毕业设计(论文)真实性承诺及声明 学生对毕业设计(论文)真实性承诺 本人郑重声明:所提交的毕业设计(论文)作品是本人在指导教师的指…...

OpenCV---pointPolygonTest

一、基本概念与用途 pointPolygonTest 是 OpenCV 中用于判断点与多边形关系的重要函数&#xff0c;常用于&#xff1a; 目标检测&#xff1a;判断像素点是否属于检测到的轮廓区域碰撞检测&#xff1a;检测物体是否重叠图像分割&#xff1a;确定点是否在分割区域内几何分析&am…...

Qt 的简单示例 -- 地址簿

这个工程里有两个窗口&#xff0c;都是QWidget派生的窗口 主窗口&#xff1a; 1. 运用了布局&#xff0c;按钮控件&#xff0c;单行编辑框&#xff0c;富文本编辑框等窗口部件&#xff1b; 2. 运用了 QMap 类&#xff1b; 3. 实现了点击按钮弹出子窗口的功能&#xff0c;这里子…...

Linux 下 C 语言实现工厂模式

Linux 下 C 语言实现工厂模式&#xff1a;设计理念与实战 &#x1f9e0; 一、工厂模式简介什么是工厂模式&#xff1f;C 语言实现设计模式的挑战 &#x1f3d7;️ 二、实现简单工厂模式&#xff08;Simple Factory&#xff09;1. 定义传感器接口&#xff08;device.h&#xff0…...

什么是DevOps的核心目标?它如何解决传统开发与运维之间的冲突?​

在当今数字化转型加速的时代&#xff0c;DevOps 已成为软件开发领域备受瞩目的明星理念。今天&#xff0c;本文将聚焦于 DevOps 的核心目标&#xff0c;并深入探讨它如何巧妙化解传统开发与运维之间的冲突&#xff0c;为大家揭开 DevOps 的神秘面纱并分享实用经验。本次介绍的与…...

RocketMQ 死信队列(DLQ)实战:原理 + 开发 + 运维 + 架构应用指南

&#x1f680;RocketMQ 死信队列&#xff08;DLQ&#xff09;实战&#xff1a;原理 开发 运维 架构应用指南 第一章&#xff1a;什么是死信队列&#xff08;DLQ&#xff09;&#xff1f; 1.1 死信队列定义 在 RocketMQ 中&#xff0c;死信队列&#xff08;Dead Letter Que…...

Android studio 查看aar源码出现/* compiled code */

如图查看aar源码时看不到具体实现&#xff0c;在排除是sdk版本导致的问题后&#xff0c;下面说解决方法 打开设置&#xff0c;找到插件 输入decompiler 搜索 这个是自带的反编译工具&#xff0c;启用就好了...

用HTML5+JavaScript实现汉字转拼音工具

用HTML5JavaScript实现汉字转拼音工具 前一篇博文&#xff08;https://blog.csdn.net/cnds123/article/details/148067680&#xff09;提到&#xff0c;当需要将拼音添加到汉字上面时&#xff0c;用python实现比HTML5JavaScript实现繁琐。在这篇博文中用HTML5JavaScript实现汉…...

基于Java,SpringBoot,Vue,UniAPP医院预约挂号买药就诊病例微信小程序系统设计

摘要 随着医疗信息化的不断推进以及“互联网医疗”模式的广泛普及&#xff0c;传统医院挂号流程中存在的排队时间长、资源分配不均等问题日益凸显&#xff0c;急需通过数字化手段加以解决。本研究设计并实现了一套基于Java、SpringBoot、Vue与UniAPP技术栈的医院预约挂号微信小…...

ONNX模型的动态和静态量化

引言  通常我们将模型转换为onnx格式之后&#xff0c;模型的体积可能比较大&#xff0c;这样在某些场景下就无法适用。最近想在移动端部署语音识别、合成模型&#xff0c;但是目前的效果较好的模型动辄几个G&#xff0c;于是便想着将模型压缩一下。本文探索了两种压缩方法&…...

PHP 垃圾回收高级特性

PHP 垃圾回收高级特性 1. 循环引用与内存泄漏 单纯的引用计数在遇到循环引用时会导致内存泄漏&#xff0c;主要原因是引用计数无法正确识别那些仅通过循环引用相互关联但实际上已经不可达的对象。 1.1 引用计数的基本原理 引用计数是一种内存管理机制&#xff0c;通过维护每…...

OpenFeign vs MQ:微服务通信如何选型?详解同步与异步的适用场景

OpenFeign vs MQ&#xff1a;微服务通信如何选型&#xff1f;详解同步与异步的适用场景 引言 在微服务架构中&#xff0c;服务之间的通信方式直接影响系统的性能、可靠性和可维护性。常见的通信方式有 OpenFeign&#xff08;同步HTTP调用&#xff09; 和 MQ&#xff08;消息队…...

如何用命令行将 PDF 表格转换为 HTML 表格

本文将介绍如何使用命令行将可填写的 PDF 表单转换为 HTML 表单。只需几行代码即可完成转换。将可填写的 PDF 表单转换为 HTML 表单后&#xff0c;你可以在网页上显示这些表单。本指南使用 FormVu 来演示转换过程。 使用命令行将可填写 PDF 表单转换为 HTML 表单 你可以通过命…...

html5的响应式布局的方法示例详解

以下是HTML5实现响应式布局的5种核心方法及代码示例: 1. 媒体查询(核心方案) /* 默认样式(移动优先) */ .container {padding: 15px; }/* 中等屏幕(平板) */ @media (min-width: 768px) {.container {padding: 30px;max-width: 720px;} }/* 大屏幕(桌面) */ @media …...

如何用Python抓取Google Scholar

文章目录 [TOC](文章目录) 前言一、为什么要抓取Google Scholar&#xff1f;二、Google Scholar 抓取需要什么三、为什么代理对于稳定的抓取是必要的四、一步一步谷歌学者抓取教程4.1. 分页和循环4.2. 运行脚本 五、完整的Google Scholar抓取代码六、抓取Google Scholar的高级提…...