改变podman的存储路径

news2024/9/28 13:27:49

使用podman容器时,podman会默认使用/var/lib/containers路径作为存储路径,可能会导致根磁盘空间占用过大,那如何修改podman的存储路径呢?本文将带你一起来探讨。

前几天公司的服务器根目录磁盘空间不足了,经过查找问题,发现podman的存储占用空间非常大,达到近300G,为了腾出空间,网上找了一些资料,并且在自己的虚拟机中先尝试一下,发现是可以(笔者的思路是使用Linux的符号链接方式,即关闭所有容器及容器服务后,把/var/lib/containers目录移动到有足够空间的磁盘,再将之符号链接为/var/lib/containers),再在服务器上去操作,但是还是没有成功,主要是gitlab在修改了路径后无法启动。但是发现重启服务后,根目录空间的居然多出了60G左右,由于是公司服务器,gitlab中有很多项目代码,既然有空间了,就不用再修改存储路径了。

今天有空了,想把之前在自己虚拟机上的修改过的podman存储路径还原回来,却发现按之前的方法无法还原了。

结合在网上的找到的资料,这里记录一下修改podman存储路径的方法。OS环境为Ubuntu 2110和2204版本。

一、关闭所有容器及容器服务

注意在修改前需要关闭所有容器,可以使用Cockpit系统在Web中关闭容器及以下几个服务:

  • podman
  • podman-restart
  • podman-auto-update
  • containerd
  • 建议关闭所有snap.microk8s开头的服务

如果不想重启电脑,记住关闭了哪些服务,后面再启动起来。不想记那改完后,重启一下电脑。

二、复制目录

关闭了容器及服务后,就可以把/var/lib/containers目录移动到有足够空间的地方了。

三、修改配置

podman会根据/etc/containers/storage.conf中的配置来改变podman的存储路径,但是这并不是绝对的,感觉像是BUG一样。

ubuntu系统中/etc/containers下并没有storage.conf文件,需要自己手动创建(如果有则修改)。

内容如下:

[storage]
driver = "overlay"
runroot = "/run/containers/storage"
graphroot = "/var/lib/containers/storage"

上面的配置是podman的默认配置,其中,driver是驱动类型,默认为overlay,需要填写,但是最好不要修改,因为原来的驱动类型就是overlaygraphroot就是podman的存储路径,runroot是运行路径,这些都可以改为自定义的路径。这里主要是修改 graphroot路径。

修改完成后,可以使用sudo podman info命令来查看是否生效:

在这里插入图片描述

四、修改数据库

podman在数据库中可能会存储有运行配置,默认是在/var/lib/containers/storage/libpod/bolt_state.db中的,所以如果该数据库中存储了运行配置,则只修改了/etc/containers/storage.conf中的配置是不起作用的,podman会优先使用数据库中存储的配置,这点很坑。我们在修改了/etc/containers/storage.conf中的配置后,可以使用如下的命令来查看详细信息:

sudo podman info --log-level=debug

可以看到podman在初始化boltdb后使用了数据库中的配置来重载graph rootstatic dirvolume path

在这里插入图片描述
所以如果bolt数据库存储了相关配置,那么无论怎么修改/etc/containers/storage.conf中的配置都会被重载而不起作用。

bolt_state.db又是一种小众的数据库,格式为bolt,不能直接查看和修改,需要使用专门的bolt数据库工具才能查看和修改。

https://github.com/etcd-io/bbolt页面罗列了不少bolt工具,笔者选用了boltdbweb这款Go写的Web工具来查看和修改。

在这里插入图片描述

打开runtime-config可以看到里面有graph-root就是podman的存储路径,
在这里插入图片描述
这里可以修改graph rootstatic dirvolume path配置,也可以直接删除掉,让podman直接使用/etc/containers/storage.conf中的配置。

注意,bolt_state.db文件非常重要,如果之前已经有很多容器,则里面存储了很多非常重要的信息,如果丢失,则之前的容器就废了,所以在操作前一定要备份。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA - fastjson 中 JSONObject 的顺序问题

目录 1. JSONObject 存在的默认排序问题一 1.1. 解决方案一 1.2. 解决方案二 2. JSONObject 存在的默认排序问题二 2.1. 解决方案一 2.2. 解决方案二 在使用 fastjson 中的 JSONObject 有时候会遇到数据顺序发生了变化,而实际需求中需要保持原有的顺序。 1…

【软件测试】测试人的巅峰?测试专家?

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 经常有人谈到&#…

如何实现全网置灰?CSS3来解决

文章目录前言正文网站示例核心代码前言 当发生大事时,部分小伙伴会发现:“怎么某APP是灰的?不会是手机出问题了吗?” 然后再打开其他APP,发现:“都是灰的啊!明白了,看来是有大事发生…

UKF 无迹卡尔曼滤波

目录参考:UKF数学原理:UKF的基本非线性系统描述:计算sigma point和权重参数UKF的基本预测步和更新步:UKF代码实现:参考: UKF数学原理: UKF的基本非线性系统描述: The UKF takes i…

vue element-ui 手机号校验 验证码校验 获取验证码倒数60秒无样式实现模板

上一篇其实发过了。。。 但是实在真的是太丑了 丑到自己看不下去了 加个对话框好看很多&#xff0c;再发一次 原链接为&#xff1a;https://blog.csdn.net/ZZDT099/article/details/128496693?spm1001.2014.3001.5502 <template><el-dialog title"校验手机号…

算法:反转图像(旋转的矩阵)

前言 今天要介绍的是一个较为经典的算法题&#xff1a;反转图像或者旋转矩阵。这道题的原题是Leetcode上的一道题&#xff0c;在题库序号为48。具体内容粘贴如下&#xff1a; 这种题目就是一个典型的倒置矩阵的思路&#xff0c;大体内容就是将一个矩阵逆向反转90度。首先针对…

Spring Boot学习篇(四)

Spring Boot学习篇(四) 1 BLOB(二进制大类型) 1.1 创建tb_blob表,其sql语句如下所示 CREATE TABLE tb_blob(id number primary key,fname VARCHAR2(50) NOT NULL,f blob )1.2 在entity包下面创建TbBlob实体类 package com.zlz.entity;import lombok.AllArgsConstructor; im…

【嵌入式】NXP/LPC使用GPIO+定时器模拟UART串口接收

目录 一 项目背景 二 原理说明 三 设计实现--GPIO部分 四 设计实现--定时器部分 五 总结 一 项目背景 项目需要使用485串口编码器&#xff0c;编码器的数据以波特率9600持续向外发送。接收端计划使用485转换芯片MCU串口。但是片上的外设资源已经被占用了&#xff0c;没有多…

19.删除链表的倒数第N个结点

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&#…

车辆未冲洗抓拍识别 工地车辆冲洗监测 opencv

车辆未冲洗抓拍识别 工地车辆冲洗监测系统t通过opencvpython可以对进出车辆冲洗情况进行自动识别&#xff0c;发现冲洗不合格自动进行抓拍存档。OpenCV基于C实现&#xff0c;同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python API&#xff0c;结合了Op…

如何对美国服务器响应速度进行优化

决定一个网站加载速度的最大因素之一是服务器的响应时间。服务器响应时间是你的服务器响应用户请求的速度&#xff0c;它可以大大影响你网站的用户体验。本文中&#xff0c;我们将讨论如何确定美国服务器响应时间慢的原因&#xff0c;尤其是如何对美国服务器响应速度进行优化。…

初探Lua脚本

1、什么是Lua Lua脚本是一个由C语言编写的小巧脚本语言&#xff0c;在所有脚本引擎中&#xff0c;Lua的速度是最快的。Lua的核心代码不过一万多行&#xff0c;因为是C语言编写的&#xff0c;因此Lua可以在几乎所有的操作系统和平台进行编译运行 2、Lua适用场景 1&#xff09;…

minio分布式集群部署

minio分布式集群部署 分布式 Minio 可以让你将多块硬盘或者多台服务器组成一个对象存储服务。由于硬盘分布在不同的节点上&#xff0c;分布式 Minio 避免了单点故障。MinioMinio分布式模式可以帮助你搭建一个高可用的对象存储服务&#xff0c;你可以使用这些存储设备&#xff…

七种分布式系统的解决方案,一次性讲给你听!

V-xin&#xff1a;ruyuan0330 获得600页原创精品文章汇总PDF 目录 TB级数据放在一台机器上&#xff1a;难啊&#xff01;到底啥是分布式存储&#xff1f;那啥又是分布式存储系统呢&#xff1f;天哪&#xff01;某台机器宕机了咋办&#xff1f;Master节点如何感知到数据副本消失…

nps内网穿透

nps服务端: linux, 公网ip npc客户端: windows, 内网 文件提取 链接&#xff1a;https://pan.baidu.com/s/1HgujpVoXpLxQ-IgAnI2Izg 提取码&#xff1a;8hyl nps安装 1.上传压缩包到服务器, 解压 2.修改conf文件夹下nps.conf文件 #HTTP(S) proxy port, no startup if em…

vue3 antd项目实战——Form表单使用【v-model数据的双向绑定,form表单嵌套input输入框、Radio单选框】

vue3 ant design vue项目实战——单选框&#xff08;Radio&#xff09;的使用以及Form表单的双向绑定知识调用&#xff08;form表单的源代码附在文章最后&#xff09;场景复现实现需求form表单整体架构的搭建input输入框文本域的嵌套单选组合Radio的嵌套button按钮组合的嵌套fo…

JVM 面试题

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java面试题…

C语言:预处理(1)

程序的翻译环境和执行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境&#xff1a; 第一种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第二种是执行环境&#xff0c;它用于实际执行代码。 翻译环境&#xff1a; 组成一个程序的每个…

MySQL 数据库练习题记录01

文章目录前言一、数据库练习题一1.1 表结构1.2 查询所有学生的信息(学号&#xff0c;姓名&#xff0c;性别&#xff0c;班级名称)1.3 查询所有人(包括没有成绩的学生)的课程分数(学号&#xff0c;姓名&#xff0c;性别&#xff0c;班级名称&#xff0c;语文分数&#xff0c;数学…

改进YOLOv5 | 引入密集连接卷积网络DenseNet思想 | 搭建密集连接模块

YOLOv5引入密集连接卷积网络DenseNet思想 CVPR 2017最佳论文 D e n s e N e t DenseNet DenseNet 论文地址:h