怎么使用脚本自动化清理测试节点堆积的无用镜像快照

星静姑娘_9894

星静姑娘_9894

2026-06-29

957人浏览

原创

核心是精准识别并清理无引用、超期或标记临时的镜像快照,通过api/cli验证引用关系,结合白名单、保留窗口、预检模式和日志记录实现安全可控的自动化清理。

怎么使用脚本自动化清理测试节点堆积的无用镜像快照

直接用脚本定时清理测试环境里长期不用的镜像快照,核心是识别“无用”——即没被任何活跃节点引用、超过保留期限、或明确标记为临时的快照。关键不在删得多,而在删得准,避免误删正在使用的快照。

确认快照归属与引用关系

多数云平台(如 OpenStack、VMware、Proxmox)或容器运行时(如 Docker、Podman)都提供 API 或 CLI 查询快照是否被当前虚拟机/容器引用。例如:

  • OpenStack:用 openstack image list --property status=active 筛出活跃镜像,再用 openstack server show <vm-id> --format value | grep image</vm-id> 查哪些 VM 还在用哪些镜像 ID;快照若不在任何 VM 的 image_id 或 backup_id 中,且创建时间早于阈值,就可判定为闲置
  • Docker:docker image ls --filter "dangling=true" -q 可列出悬空镜像(无 tag 且未被容器引用),但注意这不等于“快照”,需结合 docker system df 和 docker ps -a 判断是否被历史容器依赖
  • 自建 KVM + libvirt:通过 virsh list --all 获取所有域,再用 virsh dumpxml <domain> | grep "source file"</domain> 提取磁盘镜像路径,比对快照文件名是否出现在任意路径中

设置安全删除策略

不建议无条件按时间删除,而应分层控制:

Meigen AI
Meigen AI

一款AI图像与设计工具,主要用于AI 图片提示词资源库,收录大量可直接使用的视觉模板,整理 X 上最新火爆的 prompt,适用于生成产品图、品牌视觉及社交媒体配图,适合需要提升相关任务效率的用户。

下载
  • 加白名单:把用于 CI 基础镜像、标准测试模板的快照 ID 或名称正则写入配置文件(如 keep_list.txt),脚本跳过匹配项
  • 设保留窗口:只清理创建时间早于 7 天且无引用的快照;新创建的快照即使未被引用也暂不处理,留出调试缓冲期
  • 启用预检模式:首次运行加 --dry-run 参数,只打印将删的快照 ID 和理由,人工核对后再去除非干跑开关
  • 记录操作日志:每条删除动作记下快照名、ID、引用检查结果、执行时间,便于回溯

编写轻量可维护的清理脚本

用 Bash 或 Python 都可以,重点是逻辑清晰、依赖少、易读易改。示例 Bash 片段逻辑:

  • 获取全部快照列表(含创建时间、状态、关联 VM/容器 ID)
  • 遍历每条,调用引用检查函数,返回 true 表示“无引用”
  • 若无引用且创建时间 $(( $(date +%s) - 7*24*3600 )),加入待删队列
  • 逐个执行删除命令前,先 echo "[DRY] deleting $snap_id" | logger -t snapshot-cleaner(真实运行时替换为实际删除命令)
  • 失败时中断并报错,不静默跳过

集成进运维生命周期

清理不是孤立任务,要嵌入现有流程:

  • 绑定到 CI 流水线末尾:每次测试任务成功后,触发一次快照清理,只扫本次 Job 创建的临时快照(可通过 Job ID 或命名前缀标识)
  • 加入 crontab 定时任务:每天凌晨 2 点执行全量扫描,但限制单次最多删 50 个,防 IO 冲突
  • 对接监控告警:若某次清理发现异常高数量待删快照(如单次 >200),发企业微信/钉钉提醒,可能意味着测试脚本未正确清理资源
  • 配合权限管控:脚本用最小权限账号运行,仅授予快照查询和删除权限,不赋予 VM 创建或网络配置权
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

5087

5

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.10

2268

6

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

2025.12.13

466

14

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

2026.05.13

285

17

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

80

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

80

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

40

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

40

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

60

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习