openstack将iso镜像转换成qcow2格式
ISO镜像转换为qcow2格式
前言
openstack中启动一个实例需要是centos6.8系统的,glance上是没有的。所以将从网上down下来的ISO镜像,直接上传到openstack上是没法正常创建虚机的,需要将其转换成qcow2格式的镜像,然后使用这个镜像就可以正常创建了。
这篇文章就是将ISO镜像转换成qcow2格式的内容!!!
提示:以下是本篇文章正文内容,下面案例可供参考
一、过程:
首先,网上down下来的ISO镜像上传到openstack作为镜像创建实例是无法成功的,所以需要将iso转换成qcow2格式镜像,使用它来创建实例就没问题了。
大致过程:
- 上传ISO镜像
- 使用ISO镜像创实例
- 创建卷,添加实例上
- 进实例,引导安装系统
- 将卷摘下来,做成qcow2镜像
二、使用步骤
1.上传ISO镜像
将我们从网上down下来的ISO镜像上传到glance
#openstack image create --container-format bare --disk-format iso --public --file rhel-server-6.8-x86_64-dvd.iso rhel-server-6.8-x86_64-dvd.iso
2.使用ISO创建实例
查看ISO镜像的信息
将yaml文件中镜像的位置修改为我们刚才上传的镜像的位置
yaml文件内容:
description: 5GC
heat_template_version: '2015-04-30'
parameters:
AZ_HOST: {default: '', description: Where to deploy, label: Deploy, type: string}
Prefix: {default: Moshell01_, description: A prefix to be added to all objects names,
label: Prefix, type: string}
resources:
Moshell:
properties:
availability_zone: nova
config_drive: 'true'
flavor: 2vcpu_2GBmem_50GBdisk
image: rhel-server-6.8-x86_64-dvd.qcow2
metadata: {ha-policy: managed-on-host, orch: hot}
name:
str_replace:
params:
$prefix: {get_param: Prefix}
template: $prefixMoshell
networks:
- port: {get_resource: Moshell-OAM-VNIC}
- port: {get_resource: Moshell-TRAFFIC_1-VNIC}
type: OS::Nova::Server
# Moshell-OAM-VN:
# properties:
# networks: 3th_floor_interaction_oam_new
## name:
## str_replace:
## params:
## $prefix: {get_param: Prefix}
## template: $prefixMoshell-OAM-VN
## network_type: vlan
## physical_network: default
## segmentation_id: 964
# type: OS::Neutron::ProviderNet
Moshell-OAM-VNIC:
properties:
name:
str_replace:
params:
$prefix: {get_param: Prefix}
template: $prefixMoshell-OAM-VNIC
# network_id: {get_resource: Moshell-OAM-VN}
network_id: 37044cf8-445e-4326-9667-68e3f85c5f7a
type: OS::Neutron::Port
# Moshell-OAM-VN_subnet:
# properties:
# cidr: 172.28.48.117/28
# enable_dhcp: false
# name:
# str_replace:
# params:
# $prefix: {get_param: Prefix}
# template: $prefixMoshell-OAM-VN_subnet
## network_id: {get_resource: Moshell-OAM-VN}
# network_id: 37044cf8-445e-4326-9667-68e3f85c5f7a
# type: OS::Neutron::Subnet
Moshell-TRAFFIC_1-VN:
properties:
name:
str_replace:
params:
$prefix: {get_param: Prefix}
template: $prefixMoshell-TRAFFIC_1-VN
network_type: vlan
physical_network: default
segmentation_id: 1364
type: OS::Neutron::ProviderNet
Moshell-TRAFFIC_1-VNIC:
properties:
name:
str_replace:
params:
$prefix: {get_param: Prefix}
template: $prefixMoshell-TRAFFIC_1-VNIC
network_id: {get_resource: Moshell-TRAFFIC_1-VN}
type: OS::Neutron::Port
Moshell-TRAFFIC_1-VN_subnet:
properties:
cidr: 10.185.255.250/29
enable_dhcp: false
name:
str_replace:
params:
$prefix: {get_param: Prefix}
template: $prefixMoshell-TRAFFIC_1-VN_subnet
network_id: {get_resource: Moshell-TRAFFIC_1-VN}
type: OS::Neutron::Subnet
接着执行命令进行创建,实例就启动了,
#openstack stack create -t Moshell01.yaml --wait Moshell01
3、创建volume卷,挂载到实例
#cinder create --name Moshell01-disk 100
#nova list | grep Moshell
#nova volume-attach fdb8c3f9-891a-4a9a-b7fb-942641eb9ab8 d842cf7b-e2ac-4eab-9c98-6a082dffe376
格式:nova volume-attach SERVER-id VOLUME-id
注意:我们创建卷要注意大小,它后面摘下来是需要上传到glance做成qcow2格式的镜像的,如果太大的话做成的镜像也会很大,我使用的5G,一个系统来说管够了!
获取实例的url登录方式
#openstack console url show fdb8c3f9-891a-4a9a-b7fb-942641eb9ab8
4、进实例,按引导装系统
因为选择的是centos6.8版本的ISO,安装过程在另一篇文章。
centos6.8安装操作系统
注意:按照引导顺序安装完软件之后不要点击重启,退出url界面,进入到openstack中手动将实例关机!!!
#nova list | grep Moshell
#nova stop f341590f-5b8e-46d3-b72d-514ac46b646e
5、将volume卷摘下来,转化成qcow2格式
#cinder list | grep Moshell
#nova volume-detach f341590f-5b8e-46d3-b72d-514ac46b646e 0bfe1480-3be6-4a34-a534-24675a08ada8
将volume卷上传成qcow2格式的镜像
#openstack image create --disk-format qcow2 --volume 0bfe1480-3be6-4a34-a534-24675a08ada8 rhel-server-6.8-x86_64-dvd.qcow2
#openstack image create --volume 0bfe1480-3be6-4a34-a534-24675a08ada8 rhel-server-6.8-x86_64-dvd.qcow2
注意,两个命令都是可以将volume卷转换成镜像,但是指定格式为qcow2的镜像会比不指定的更小
6、创建实例
接下来你可以使用步骤2使用的stack方式启动实例了,只需要将yaml文件中的ISO位置指定成生成的qcow2格式的镜像的名字就可以了。
将之前创建的实例删除掉,然后修改yaml文件,重新执行下就可以正常创建实例了,
#openstack stack list | grep Moshell
#openstack stack delete 82191ab7-168c-41cd-b61e-3b0b0a0bc681
#openstack stack list | grep Moshell
#openstack image list | grep rhel-server-6.8-x86_64-dvd.qcow2
#openstack stack create -t Moshell01.yaml --wait Moshell01
总结
这就是在openstack中将ISO镜像转换为qcow2格式镜像创建虚机的过程,
其实openstack底层实用的虚拟化技术是kvm,说白了实例就是类似于kvm虚机,这样的话我们完全可以通过创建kvm虚机制作出来一样的qcow2镜像。
- 在kvm的环境中创建一个虚机,
- 然后按照引导安装系统,
- 之后将kvm虚机的image硬盘文件做成镜像,
- 上传到openstack中一样使用,
这种方式得到镜像和我们得到的是一样的结果,但是还需要自己另外准备kvm环境,没我们这样直接来简洁。
上一篇: mysql 字符函数