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

【docker】docker pull拉取中不断重复下载问题,解决方案之一,磁盘空间扩容

问题类似这样

在这里插入图片描述


存储空间不足

如果 Docker 运行环境的磁盘空间不足,拉取的镜像可能会被自动清理,导致重复下载。可以检查磁盘使用情况:

df -h
docker system df

如果空间不足,可以清理一些不用的容器和镜像:

docker system prune -a

在df-h之后可以看到:
在这里插入图片描述
你的 / 根分区(/dev/mapper/ubuntu–vg-ubuntu–lv)总共 9.8G,已经用了 7.2G,只剩下 2.2G 可用空间,使用率 78%。

虽然空间还没满,但 GitLab CE 镜像通常比较大(可能超过 2GB),所以 磁盘空间可能不够,导致 docker pull 失败并重新下载。


扩容磁盘

  • 关闭虚拟机

  • 设置40G
    在这里插入图片描述

  • 然后他提示还要重新设置分区

  • 重新重启虚拟机连接后

  • 键入lsblk
    在这里插入图片描述

这里显示18.2g说明还没分配

1. 扩展 sda3 分区

  • 接着键入sudo growpart /dev/sda 3
  • 输入lsblk检查

在这里插入图片描述
发现容量扩充成功


2. 扩展 LVM 物理卷

  • sudo pvresize /dev/sda3让 LVM 识别新的空间

  • 然后检查 sudo vgdisplay

  • 可以看到 Free PE / Size 变大了

在这里插入图片描述


3. 扩展逻辑卷

  • 找到LVM逻辑卷sudo lvdisplay
  • 拓展 sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
    在这里插入图片描述

4.扩展文件系统

查看使用的是那种文件系统

df -Th /

在这里插入图片描述

如果 / 使用的是 ext4 文件系统:

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

如果 / 使用的是 xfs

sudo xfs_growfs / 

  • 再次df -h,可以看到比一开始大了很多

在这里插入图片描述

成功

在这里插入图片描述


认识LVM

/dev/mapper/ubuntu--vg-ubuntu--lv 是你的 Linux 逻辑卷(LVM 逻辑卷),它本质上是你的 根分区 /,存放你的操作系统和文件。


简单理解 LVM(逻辑卷管理)

LVM(Logical Volume Manager)是一种灵活的磁盘管理方式,可以让你方便地扩展或缩小磁盘大小。

在你的系统里:

  1. /dev/sda3 是你的物理分区(存储数据的实际硬盘空间)。
  2. ubuntu-vg 是一个 卷组(VG,Volume Group),它把 sda3 里的空间汇总起来。
  3. ubuntu-lv逻辑卷(LV,Logical Volume),它是你实际使用的磁盘,相当于 Windows 里的 C 盘。
  4. /dev/mapper/ubuntu--vg-ubuntu--lv 就是这个逻辑卷的设备路径,最终被挂载到 /(根分区)

为什么用 LVM?

  • 方便扩展:你这次成功扩容,就是因为用了 LVM,可以动态调整大小。
  • 支持多个物理硬盘:LVM 允许你把多个硬盘合并成一个存储池,比如 /dev/sda3 + /dev/sdb1 可以变成一个大分区。
  • 快照功能:LVM 可以创建“快照”,让你在升级或维护前备份数据,出问题时可以快速恢复。

总结

  • /dev/mapper/ubuntu--vg-ubuntu--lv 是你的 根分区 /,但它是 LVM 逻辑卷,而不是直接使用 sda3
  • 你这次扩容成功,是因为 LVM 让你可以动态调整分区大小! 🎉

如果你想更直观地理解,可以运行:

lsblk

它会显示 LVM 结构,比如:

sda        40G
├─sda1      1M
├─sda2    1.8G  /boot
└─sda3   38.2G
   └─ubuntu--vg-ubuntu--lv  38G  /

这说明 / 现在正确地扩展到了 38G! 🚀


https://github.com/0voice


http://www.kler.cn/a/561470.html

相关文章:

  • 《Effective Objective-C》阅读笔记(中)
  • 山东大学软件学院nosql实验一环境配置
  • Mybatis的一级、二级缓存
  • 本地部署deepseek大模型后使用c# winform调用(可离线)
  • 图数据库Neo4j面试内容整理-使用场景-社交网络
  • 【conda环境泄露】所有环境共享了一个包?
  • Debain12.9安装NCCL GPU通讯组件
  • DeepEP通信库
  • Vue.js 编写组件单元测试
  • 一个std::async的示例
  • 【Linux进程三】进程的状态
  • XTOM工业级蓝光三维扫描仪在笔记本电脑背板模具全尺寸检测中的高效精准应用
  • 001第一个flutter文件
  • 源码分享1:批量修改PDF文件名称
  • 【MySQL篇】MySQL操作库
  • LIS系统源码,医院检验系统源码,lis软件源码
  • Java Web开发实战与项目——项目集成与部署
  • 1 什么是微服务?MybatisPlus框架
  • NVIDIA DLI引领创新课程:基于提示工程的LLM应用开发探索
  • 如何在Ubuntu 22.04或20.04 Linux上安装MobaXterm