旧版 VMware 虚拟机迁移至 KVM 平台-案例2

项目背景
需将一台旧版 VMware 虚拟机(VMDK 格式)迁移至 KVM 虚拟化平台,具体要求如下:
- 格式转换:将 VMDK 转换为 QCOW2 格式。
- 磁盘扩容:将原 40GB 磁盘扩展至 60GB。
- 密码重置:修改
aiden用户密码以增强安全性。 - 新建用户:创建
test01用户并设置密码。 - 镜像优化:压缩镜像以节省存储空间。
- 镜像快照:创建快照用于测试环境。
环境准备
1. 工具安装
# Debian/Ubuntu
sudo apt install qemu-utils libguestfs-tools virt-manager# RHEL/CentOS
sudo yum install qemu-img libguestfs-tools virt-install
2. 镜像备份
cp source.vmdk source.vmdk.bak # 备份原始 VMDK 镜像
格式转换
1. 转换命令
将 VMDK 转换为 QCOW2 格式并启用轻量压缩:
qemu-img convert -c -p -f vmdk -O qcow2 source.vmdk target.qcow2
- 参数说明:
-c:启用压缩。-p:显示实时进度。-f vmdk:输入格式为 VMDK。-O qcow2:输出格式为 QCOW2。
2. 验证结果
qemu-img info target.qcow2
# 输出示例:
# format: qcow2
# virtual size: 40 GiB
# disk size: 28 GiB
磁盘扩容
1. 调整虚拟磁盘大小
qemu-img resize target.qcow2 60G
2. 扩展分区与文件系统
virt-resize --expand /dev/sda1 target.qcow2 target_resized.qcow2
mv target_resized.qcow2 target.qcow2
3. 验证扩容
virt-ls -l target.qcow2 / | grep "disk size" # 查看根分区是否扩展
密码重置
1. 使用 virt-customize 修改密码
virt-customize -a target.qcow2 --password aiden:password:NewSecurePass123!
- 说明:
aiden:password:NewSecurePass123!:用户aiden的新密码。
2. 备用方案(手动编辑)
guestfish --rw -a target.qcow2
><fs> run
><fs> mount /dev/sda1 /
><fs> vi /etc/shadow # 替换 `aiden` 的密码哈希
><fs> exit
新建用户
1. 创建用户 test01 并设置密码
virt-customize -a target.qcow2 \ --run-command "useradd -m -s /bin/bash test01" \ --password test01:password:TestPass456!
- 参数说明:
-m:创建家目录。-s /bin/bash:指定 Shell 类型。
2. 验证用户
virt-cat -a target.qcow2 /etc/passwd | grep "test01"
镜像优化
1. 深度压缩
移除未使用的磁盘空间:
virt-sparsify --compress target.qcow2 target_compressed.qcow2
mv target_compressed.qcow2 target.qcow2
2. 验证压缩效果
qemu-img info target.qcow2
# disk size 应显著减少(例如从 28GB 降至 20GB)
镜像快照
1. 创建快照
qemu-img create -f qcow2 -b target.qcow2 target_snapshot.qcow2
- 参数说明:
-b:指定基础镜像。
2. 使用快照测试
qemu-system-x86_64 \ -drive file=target_snapshot.qcow2,format=qcow2 \ -m 2048 -smp 2 -nographic
- 特点:所有写入操作仅影响快照文件。
案例总结与知识要点
1. 关键步骤总结
- 格式转换:使用
qemu-img convert实现兼容性迁移。 - 磁盘扩容:分两步操作(虚拟磁盘调整 + 分区扩展)。
- 用户管理:通过
virt-customize实现自动化配置。 - 镜像优化:
virt-sparsify移除未使用空间。 - 快照管理:支持安全测试与快速回滚。
2. 核心知识
- QCOW2 特性:动态分配、快照支持、压缩。
- 工具依赖:
qemu-img、virt-resize、virt-customize。 - 安全实践:避免明文密码、定期清理敏感信息。
故障排查指南
1. 虚拟机无法启动
- 可能原因:原 VMDK 硬盘模式非 IDE。
- 解决:在 KVM 配置文件中指定 IDE 总线:
<disk type='file' device='disk'> <target dev='hda' bus='ide'/> </disk>
2. 分区未正确扩展
- 可能原因:
virt-resize未识别分区。 - 解决:手动扩展分区:
# 进入虚拟机后操作: sudo parted /dev/sda resizepart 1 100% sudo resize2fs /dev/sda1
3. 密码修改无效
- 可能原因:密码哈希格式错误。
- 解决:使用
openssl passwd -6生成正确哈希后重试。
4. 镜像压缩失败
- 可能原因:镜像存在未清理的临时文件。
- 解决:执行
virt-sysprep清理镜像:virt-sysprep -a target.qcow2
通过本案例,可系统化完成虚拟机迁移与优化,满足安全性、性能和测试需求。
相关文章:
旧版 VMware 虚拟机迁移至 KVM 平台-案例2
项目背景 需将一台旧版 VMware 虚拟机(VMDK 格式)迁移至 KVM 虚拟化平台,具体要求如下: 格式转换:将 VMDK 转换为 QCOW2 格式。磁盘扩容:将原 40GB 磁盘扩展至 60GB。密码重置:修改 aiden 用户…...
若依代码生成器原理velocity模板引擎(自用)
1.源码分析 代码生成器:导入表结构(预览、编辑、删除、同步)、生成前后端代码 代码生成器表结构说明: 若依提供了两张核心表来存储导入的业务表信息: gen_table:存储业务表的基本信息 ,它对应于配置代码基本信息和生成信息的页…...
OpenCV直方图均衡化全面解析:从灰度到彩色图像的增强技术
目录 一、直方图均衡化基础:原理与核心思想 二、彩色图像的直方图均衡化:挑战与解决方案 三、进阶技巧与注意事项 四、应用场景与典型案 一、直方图均衡化基础:原理与核心思想 1. 直方图的本质与作用 直方图是图像像素强度分布的统计图表…...
【Pandas】pandas DataFrame keys
Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签(行标签和列标签&#…...
Web前端之Vue+Element实现表格动态复杂的合并行功能、localeCompare、forEach、table、push、sort、Map
MENU 效果图公共数据数据未排序时(需要合并的行数据未处于相邻位置)固定合并行方法(写死)动态合并行,行数计算方法当太合并行,合并方法方法(函数)执行 效果图 公共数据 Html <e…...
【DDR 内存学习专栏 1.4 -- DDR 的 Bank Group】
文章目录 BankgroupBankgroup 与 Bank 的关系 DDR4 中的 BankgroupDDR4-3200 8Gb芯片为例组织结构访问场景 实际应用示例 Bankgroup Bankgroup是DDR4及后续标准(DDR5)中引入的一个更高层次的组织结构。它将多个Bank组合在一起形成一个Bankgroup,目的是为了进一步提…...
嵌入式进阶:如何选择合适的开发平台?
随着现代工业、物联网以及人工智能技术的迅速发展,嵌入式系统已经由简单的控制器向复杂的高性能系统迈进。从传统家电到智能机器人、从自动驾驶汽车到工业自动化,每一项应用都对嵌入式系统的响应速度、运行稳定性和能耗管理提出了更高要求。在这种背景下…...
【HTML】动态背景效果前端页面
下面是一个带有多种动态背景效果的现代化前端页面,包含粒子效果、渐变波浪和星空背景三种可选动态背景。直接上代码!! <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name&quo…...
酶动力学参数预测,瓶颈识别……中科院深圳先进技术研究院罗小舟分享AI在酶领域的创新应用
蛋白质,作为生命的基石,在生命活动中发挥着关键作用,其结构和功能的研究,对创新药物研发、合成生物学、酶制剂生产等领域,有着极其重要的意义。但传统蛋白质设计面临诸多难题,蛋白质结构复杂,序…...
【Redis】布隆过滤器应对缓存穿透的go调用实现
布隆过滤器 https://pkg.go.dev/github.com/bits-and-blooms/bloom/v3 作用: 判断一个元素是不是在集合中 工作原理: 一个位数组(bit array),初始全为0。多个哈希函数,运算输入,从而映射到位数…...
【LLM】解锁Agent协作:深入了解谷歌 A2A 协议与 Python 实现
人工智能(AI)智能体正迅速成为企业提高生产力、自动化工作流程和增强运营能力的关键工具。从处理日常重复性任务到协助复杂的决策,智能体的潜力巨大。然而,当这些智能体来自不同的供应商、使用不同的框架或被限制在孤立的数据系统…...
kafka4.0浅尝辄止
最近工作中接触消息队列比较多,前几周又看到kafka4.0发布,故写一篇博客对消息队列做一个复盘。 目录 消息队列对比1. Apache Kafka 4.02. RabbitMQ3. RocketMQ4. ActiveMQ5. Apache Pulsar6. NSQ kafka4.0鲜明的新特性Java 版本要求升级API 更新与精简移…...
数据库原理及应用mysql版陈业斌实验三
🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 实验三多表查询 1.实验数据如下 student 表(学生表&#…...
OpenHarmony - 小型系统内核(LiteOS-A)(二)
OpenHarmony - 小型系统内核(LiteOS-A)(二) 三、基础内核 3.1、中断及异常处理 基本概念 中断是指出现需要时,CPU暂停执行当前程序,转而执行新程序的过程。即在程序运行过程中,出现了一个必须…...
数字化引擎再升级:小匠物联十周年庆典与全链路创新实践
4月11日,浙江宁波的小匠物联十周年庆典拉开帷幕。本次活动以“拾阶而上,智创未来”为主题,从全员签到、心愿书写,到董事长致辞、切蛋糕及全体合影,每一个环节都精心设计,展现出企业在家用物联网领域的卓越技…...
机器学习核心知识:从基础概念到关键算法
摘要 本文深度剖析机器学习知识体系,从基本概念、学习方式,到分类算法、逻辑回归等关键内容均有涉及。详细阐述各知识点原理与应用场景,并对比多种算法的优劣。 关键词:机器学习;监督学习;分类算法&#x…...
开发工具-jetbrains使用技巧
更详细的可以看 狂神说Java】JavaWeb入门到实战 p6 idea中maven的操作 可以设置怎么调试 然后还可以wsl、远程方式等运行 maven 这里的相当于cmd的操作 命令行去执行这些东西...
HarmonyOS:页面滚动时标题悬浮、背景渐变
一、需求场景 进入到app首页或者分页列表首页时,随着页面滚动,分类tab要求固定悬浮在顶部。进入到app首页、者分页列表首页、商品详情页时,页面滚动时,顶部导航栏(菜单、标题)背景渐变。 二、相关技术知识点…...
Python——Matplotlib库的练习
1、 import matplotlib.pyplot as plt import numpy as npx np.linspace(0,2*np.pi,100) y1 np.sin(x) y2 np.cos(x)plt.plot(x,y1,"r--o",linewidth1.5,markersize6) plt.plot(x,y2,"g-s",linewidth2,markersize8)plt.show() 2、 import matplotlib…...
信息系统项目管理师-第十八章-项目绩效域
本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 在整个生命周期过程中,项目管理者需要始终坚持项目管理原则,通过涵盖 10 …...
Windows 操作系统 - Windows 10 磁盘管理无法为 C 盘选择扩展卷
Windows 10 磁盘管理无法为 C 盘选择扩展卷 在 Windows 10 的磁盘管理中,无法为 C 盘选择扩展卷(选项灰色不可用),主要原因是未分配空间没有紧邻 C 盘的右侧 补充:Windows 10 磁盘管理打开方式 1. 按下快捷键【Win …...
[NOIP 2003 普及组] 栈 Java
import java.io.*;public class Main {public static void main(String[] args) throws IOException {BufferedReader br new BufferedReader(new InputStreamReader(System.in));int n Integer.parseInt(br.readLine());int[] dp new int[n 1];dp[0] 1; // 空序列只有一种…...
C++ (类的设计,对象的创建,this指针,构造函数)
类的设计 C对结构体是有增强的 可以包含函数作为结构体成员 可以直接定义变量 在结构体成员函数里面可以直接访问结构体成员变量 struct student{string name;int age;float score;void play_game(const string &name);}void student::play_game(const string game){}…...
笔记:代码随想录算法训练营day67:Floyd 算法精讲、A * 算法精讲 (A star算法) 严重超时完结,不过,撒花
学习资料:代码随想录 Floyd 算法精讲 卡码网:97. 小明逛公园 首先明确floyd算法解决的是多源最短路径问题,对边的权的正负值没有要求,而且是动态规划的思想 五部曲: 定义:grid[i][j][k]表示从i出发到j…...
面试篇 - Transformer模型中的位置编码
1. 位置编码的引入 背景:Transformer模型通过自注意力机制(Self-Attention)处理序列数据,但自注意力机制本身并不包含序列中元素的位置信息。因此,需要一种方法来为模型提供位置信息。 解决方案:位置编码&…...
蓝桥杯篇---客观题
文章目录 前言 前言 本文简单介绍了蓝桥杯中客观题各个部分的知识点。 一、单片机相关 IAP15F2K61S2单片机的定时器0具有4种工作模式,当采用外部12MHz晶振时,定时器最大定时长度65535us。8051单片机的P0口,当使用外部存储器时它是一个传输低…...
ES6 新增特性 箭头函数
简述: ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语…...
Javaweb后端 maven高级 maven聚合
聚合用modules...
vue+flask图书知识图谱推荐系统
文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站,有好处! 编号: F025 架构: vueflaskneo4jmysql 亮点:协同过滤推荐算法知识图谱可视化 支持爬取图书数据,数据超过万条&am…...
vue2 走马灯 展示多个
使用 npm install “swiper”: “^11.2.4”, 在这里插入代码片 <template><section class"swiper pc-banner"><div class"swiper-container"><div class"swiper-wrapper"><div v-for"(item, index) in swiperD…...
