欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

openstack将iso镜像转换成qcow2格式

程序员文章站 2022-05-17 08:54:01
...

前言

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

openstack将iso镜像转换成qcow2格式


2.使用ISO创建实例

查看ISO镜像的信息

openstack将iso镜像转换成qcow2格式
将yaml文件中镜像的位置修改为我们刚才上传的镜像的位置

openstack将iso镜像转换成qcow2格式
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

openstack将iso镜像转换成qcow2格式


3、创建volume卷,挂载到实例

#cinder create --name Moshell01-disk 100

openstack将iso镜像转换成qcow2格式

#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,一个系统来说管够了!

openstack将iso镜像转换成qcow2格式

获取实例的url登录方式

#openstack console url show fdb8c3f9-891a-4a9a-b7fb-942641eb9ab8

openstack将iso镜像转换成qcow2格式


4、进实例,按引导装系统

因为选择的是centos6.8版本的ISO,安装过程在另一篇文章。
centos6.8安装操作系统

注意:按照引导顺序安装完软件之后不要点击重启,退出url界面,进入到openstack中手动将实例关机!!!

#nova list | grep Moshell
#nova stop f341590f-5b8e-46d3-b72d-514ac46b646e

openstack将iso镜像转换成qcow2格式

5、将volume卷摘下来,转化成qcow2格式

#cinder list | grep Moshell
#nova volume-detach f341590f-5b8e-46d3-b72d-514ac46b646e 0bfe1480-3be6-4a34-a534-24675a08ada8

openstack将iso镜像转换成qcow2格式
将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的镜像会比不指定的更小

openstack将iso镜像转换成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将iso镜像转换成qcow2格式


总结

这就是在openstack中将ISO镜像转换为qcow2格式镜像创建虚机的过程,

其实openstack底层实用的虚拟化技术是kvm,说白了实例就是类似于kvm虚机,这样的话我们完全可以通过创建kvm虚机制作出来一样的qcow2镜像。

  • 在kvm的环境中创建一个虚机,
  • 然后按照引导安装系统,
  • 之后将kvm虚机的image硬盘文件做成镜像,
  • 上传到openstack中一样使用,
    这种方式得到镜像和我们得到的是一样的结果,但是还需要自己另外准备kvm环境,没我们这样直接来简洁。