[镜像转换] ova文件转换成raw文件, 导入到openstack
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的更多相关文章
- [python]自动化将markdown文件转成html文件
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- Android开发:第四日番外——Assets文件夹和RAW文件夹区别
话说上回说到SQLite数据库,其中涉及到把已经设计好的数据库打包到APK中,提到可以放置在Assert文件夹或者RAW文件夹中,那么两者到底有什么区别呢?让我们来探究一下. 一.res/raw和as ...
- 使用宏批量将多个csv文件转成excel文件
在一个压缩文件中有100多个csv文件,要求要将此100多个csv文件转成excel文件,名字命名不变,有三种方式: 1. 傻不拉几的复制粘贴法 2. 一个一个打开csv文件,另存为xls文件,工作量 ...
- C#.NET常见问题(FAQ)-如何将cs文件编译成dll文件 exe文件 如何调用dll文件
比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...
- 将 Python3 文件打包成 exe 文件
我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众. 因为 Python 是一门解释性的语言,离开了 Python 解释器,P ...
- 用gulp把less文件编译成css文件
第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...
- C#.NET如何将cs文件编译成dll文件 exe文件 如何调用dll文件
比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...
- 在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性
在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性 Maven 项目生成jar运行时提示“没有主清单属性” 新建了一个Maven的项目,mvn compile和mvn packag ...
- Android中asset文件夹和raw文件夹区别与用法
*res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. *res/raw和assets的不同点:1.res/raw中的文件会被映射到R ...
随机推荐
- pycharm创建脚本头文件模板
代码头文件信息可以包括:python 解析器的位置.字符集.作者信息.创建脚本时间等,pycharm工具创建头部信息模板操作步骤如下: 设置头文件:文件-->设置-->编辑器-->文 ...
- day 10 删除空白字符
(1).有以下程序(大写变小写) (2).有以下程序,在[1]填写程序,使得程序正确运行. 分析:(*p)(int,int)是一个函数指针(一个指针[*p]指向的对象是一个函数),函数的形参是(int ...
- 【记录一个问题】opencv + cuda编译release版本后,链接出现奇怪的符号
链接出现以下信息: 1 /home/admin/opencv/20190610_cuda_release/lib64/libopencv_core.a(ocl.cpp.o): In function ...
- HBase之MinorCompact全程解析
转自:https://blog.csdn.net/u014297175/article/details/50456147 Compact作用 当MemStore超过阀值的时候,就要flush到HDFS ...
- SSM项目使用拦截器实现登录验证功能
SSM项目使用拦截器实现登录验证功能 登录接口实现 public User queryUser(String UserName, String Password,HttpServletRequest ...
- Markdown最新使用说明
Markdown基本语法说明 markdown 和 typora关系:typora是一款实时预览markdown的文本编辑器 本文推荐使用的Markdown编辑器为:Typora (用了多款编辑器,觉 ...
- 通过location.search来获取页面传来的参数
获取页面传来的参数 <div> <script> function GetQueryString(name) { var reg = new RegExp("(^|& ...
- 题解 - 「MLOI」小兔叽
小兔叽 \(\texttt{Link}\) 简单题意 有 \(n\) 个小木桩排成一行,第 \(i\) 个小木桩的高度为 \(h_i\),分数为 \(c_i\). 如果一只小兔叽在第 \(i\) 个小 ...
- (4)什么是Ribbon负载均衡
4.Ribbon负载均衡 上一节中,我们添加了@LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢? 4.1.负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的 ...
- 恶补Java Swing线程刷新UI机制(由浅到深的参考大佬博文)
1. java中进度条不能更新问题的研究 感谢大佬:https://blog.csdn.net/smartcat86/article/details/2226681 为什么进度条在事件处理过程中不更新 ...