ova转raw

使用工具: qemu-img、libguestfs-tools、libguestfs-winsupport

# 从vmware导出ova文件, tar 解压导出来的ova文件

$ tar xvf /root/UCarApp1_clone.ova -C $(pwd)
$ ls
UCarApp1_clone-disk1.vmdk UCarApp1_clone.mf UCarApp1_clone.ovf

# 利用qemu-img将vmdk转换成raw既可以

$ qemu-img convert -f vmdk -O raw UCarApp1_clone-disk1.vmdk UCarApp1_clone-disk1.raw
$ ls
UCarApp1_clone-disk1.raw UCarApp1_clone-disk1.vmdk UCarApp1_clone.mf UCarApp1_clone.ovf

# 查看镜像分区使用情况

$ virt-df -h UCarApp1_clone-disk1.raw
文件系统 大小 已用空间 可用空间 使用百分比%
UCarApp1_clone-disk1.raw:/dev/sda1 497M 180M 316M 37%
UCarApp1_clone-disk1.raw:/dev/centos/home
441G 49G 392G 12%
UCarApp1_clone-disk1.raw:/dev/centos/root
50G 9.2G 41G 19%
管理镜像[可直接跳过]

# 使用guestfish管理镜像

$ guestfish -a UCarApp1_clone-disk1.raw
><fs> run
100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
><fs>
><fs> list-filesystems
/dev/sda1: xfs
/dev/centos/home: xfs
/dev/centos/root: xfs
/dev/centos/swap: swap
><fs> list-devices
/dev/sda
><fs> list-partitions
/dev/sda1
/dev/sda2

可使用ntfsresize-size压缩镜像分区大小

ntfsresize-size /dev/sda1 15G

退出后可使用qemu-img resize -f raw UCarApp1_clone-disk1.raw压缩镜像文件

检查虚拟机状态[可直接跳过]

# 使用virt-install工具启动虚拟机看看是否正常, 正常则执行下一步进行迁移

$ virt-install --name demo-guest1 --memory 2048 --vcpus 2 --os-variant rhel8.0 --graphics vnc,listen=0.0.0.0 --import --disk UCarApp1_clone-disk1.raw,bus=ide
# 如果disk类型为sda或hda,则bus=ide
# 如果disk类型为vda,则bus=virtio
迁移步骤

# 使用rbd 替换块存储,完成迁移

# 1、把UCarApp1_clone-disk1.raw 传到ceph-mon节点,且服务器要有足够的可用空间。
$ scp UCarApp1_clone-disk1.raw ceph-monNode:/root/ # 2、openstack 平台image注入hw_disk_bus=ide元数据。
$ openstack image set e954deb1-a3b0-486b-917e-a4adc2307fdd --property hw_disk_bus=ide # 3、利用上述的image, 在openstack平台创建一台虚拟机,虚拟机的磁盘大小要等同于UCarApp1_clone-disk1.raw磁盘大小,创建好后关机。
$ qemu-img info UCarApp1_clone-disk1.raw
virtual size: 500G (536870912000 bytes) # 磁盘大小为500G
$ 创建虚拟机步骤自己脑补 # 4、找到要替换虚拟机磁盘的id[自己找],利用rbd 找到相应的块设备。并记录起来, 后面删除块设备和导入新数据要用。
$ 本环境磁盘id=46db91bb-3786-4501-9c05-e74735942a83
$ 本环境虚拟机所在后端存储池[自己找]=pool-1e54f53e1ea64a3ebb1d9045cea154f9
$ rbd -p pool-1e54f53e1ea64a3ebb1d9045cea154f9 ls | grep 46db91bb-3786-4501-9c05-e74735942a83
volume-46db91bb-3786-4501-9c05-e74735942a83 # 5、删除相应的rbd块设备
$ rbd -p pool-1e54f53e1ea64a3ebb1d9045cea154f9 rm volume-46db91bb-3786-4501-9c05-e74735942a83 # 5、导入新的数据
$ rbd import -p pool-1e54f53e1ea64a3ebb1d9045cea154f9 UCarApp1_clone-disk1.raw volume-46db91bb-3786-4501-9c05-e74735942a83 # 6、导入完成开启虚拟机验证虚拟机是否正常,数据是否正常。

[镜像转换] ova文件转换成raw文件, 导入到openstack的更多相关文章

  1. [python]自动化将markdown文件转成html文件

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  2. Android开发:第四日番外——Assets文件夹和RAW文件夹区别

    话说上回说到SQLite数据库,其中涉及到把已经设计好的数据库打包到APK中,提到可以放置在Assert文件夹或者RAW文件夹中,那么两者到底有什么区别呢?让我们来探究一下. 一.res/raw和as ...

  3. 使用宏批量将多个csv文件转成excel文件

    在一个压缩文件中有100多个csv文件,要求要将此100多个csv文件转成excel文件,名字命名不变,有三种方式: 1. 傻不拉几的复制粘贴法 2. 一个一个打开csv文件,另存为xls文件,工作量 ...

  4. C#.NET常见问题(FAQ)-如何将cs文件编译成dll文件 exe文件 如何调用dll文件

    比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...

  5. 将 Python3 文件打包成 exe 文件

    我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众. 因为 Python 是一门解释性的语言,离开了 Python 解释器,P ...

  6. 用gulp把less文件编译成css文件

    第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...

  7. C#.NET如何将cs文件编译成dll文件 exe文件 如何调用dll文件

    比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...

  8. 在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性

    在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性 Maven 项目生成jar运行时提示“没有主清单属性” 新建了一个Maven的项目,mvn compile和mvn packag ...

  9. Android中asset文件夹和raw文件夹区别与用法

    *res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. *res/raw和assets的不同点:1.res/raw中的文件会被映射到R ...

随机推荐

  1. Android官方文档翻译 五 1.3Building a Simple User Interface

    Building a Simple User Interface 创建一个简单的用户界面 This lesson teaches you to 这节课将教给你: Create a Linear Lay ...

  2. leetcode 921. 使括号有效的最少添加

    问题描述 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字符 ...

  3. 微服务架构 | 3.4 HashiCorp Consul 注册中心

    目录 前言 1. Consul 基础知识 1.1 Consul 是什么 1.2 Consul 的特点 2. 安装并运行 Consul 服务器 2.1 下载 Consul 2.2 运行 Consul 服 ...

  4. 我的MySQL学习记录 完结篇DAY05~

    课程已全部学完,Redis\mongoDB 的学习也会提上日程啦~剩下的最大的最大的问题在于练习,大量的练习,后期会发我的学习记录. 小记:也不知道是不是加强针的缘故,老是拉肚子,记录彻底感冒的一天, ...

  5. 【记录一个问题】libtask无法在android下编译通过

    源码来自:https://github.com/msteinert/libtask 首先是asm.S无法编译通过. 其次,编译context.c出现这些错误: .//context.c:124:19: ...

  6. Tomcat-如何创建动态的web工程及目录介绍

    1,IDEA中如何创建动态web工程 (1)创建一个新模块 (2)选择你要创建什么类型的模块 (3)输入模块名,finish完成创建 创建成功如下图: 一般在WEB-INF下建一个lib目录 存放ja ...

  7. VUE3 之 组件间事件通信 - 这个系列的教程通俗易懂,适合新手

    1. 概述 相关定律告诉我们:这个世界上的任何事物之间都会存在一定联系,"城门失火,殃及池鱼"就是一个很好的例子.因此如果我们能够尽早发现这些看不见的联系,就能很好的解决更多遇见的 ...

  8. kubernetes之配置Metrics Server

    Kubernetes 1.8 关于资源使用情况的 metrics,可以通过 Metrics API 获取到, Kubernetes 1.11 已经废弃 heapster.这里我们基于 Kubernet ...

  9. lambda表达式的学习

    Lambda表达式 为什么使用lambda表达式 Lambda表达式可以简化我们的代码,使我们只需要关注主要的代码就可以. //测试用的实体类 public class Employee { priv ...

  10. Java 锁 概念介绍

    一   Java中的锁是什么? /* * 一 Java锁定义? * 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制. * 锁旨在强制 ...