当前在OpenStack中没有提供一个方便快捷的方法去创建镜像,需要运维人员使用KVM制作,这无疑提高了对运维人员和环境

(需要一个安装了KVM的linux)的要求,因此我觉得OpenStack还是不适应于私有云的,它是为公有云而生。

本文介绍一种利用Horizon和ISO格式的安装盘来创建镜像的方法,其原理为:

1. 创建一个新的磁盘作为root disk

2. 从Glance下载ISO作为第二块磁盘

3. 从Glance下载virtio作为第三块磁盘

4. 从ISO启动虚拟机,比将系统安装到root disk

5. 创建image并保持到Glance

1.添加一种disk类型newos

* 'mapping': a dict contains the storage device mapping.For the default disk types it will contain the followingkeys & values:'disk' -> disk_info'disk.rescue' -> disk_info'disk.local' -> disk_info'disk.swap' -> disk_info'disk.config' -> disk_info'disk.newos' -> disk_info
disk_info指的是:
* 'disk_info': a tuple specifying disk configurationIt contains the following 3 fields(disk bus, disk dev, device type)* 'disk_bus': the guest bus type ('ide', 'virtio', 'scsi', etc)* 'disk_dev': the device name 'vda', 'hdc', 'sdf', 'xvde' etc* 'device_type': type of device eg 'disk', 'cdrom', 'floppy'

2 设置磁盘顺序

在blockinfo.py中,调用逻辑是:

spawn-->get_disk_info -->get_disk_mapping :

    if image_meta and image_meta.get('disk_format') == 'iso':root_disk_bus = disk_bus#创建虚拟机时如果image_meta中的disk_format为iso, 则认为是创建新image的操作,那么进行如下操作#设置disk.newos为root deviceroot_device_type = 'disk'root_info = get_next_disk_info(mapping,root_disk_bus,root_device_type)mapping['root'] = root_infomapping['disk.newos'] = root_info#设置disk(iso)为第二个deviceimage_device_type = 'cdrom'image_device_bus = cdrom_buscdrom_info = get_next_disk_info(mapping,image_device_bus,image_device_type)mapping['disk'] = cdrom_info#s设置disk.virtio作为第三个设备,为需要virtio的时候提供virtio驱动程序virtio_device_type = 'cdrom'virtio_device_bus = cdrom_busvirtio_device_info = get_next_disk_info(mapping,virtio_device_bus,virtio_device_type)mapping['disk.virtio'] = virtio_device_inforeturn mapping

3 创建磁盘

driver.py中的调逻辑是:spawn--> _create_image
        newos_size_gb = CONF.os_root_disk_sizeif 'disk.newos' in disk_mapping:fname = "newos_%s_%s" % (newos_size_gb, os_type_with_default)size = newos_size_gb * 1024 * 1024 * 1024image('disk.newos').cache(fetch_func=self._create_newos,filename=fname,size=size,newos_size=newos_size_gb)virtio_image_id = CONF.virtio_image_idvirtio_images = {'image_id': virtio_image_id}virtio_fname = imagecache.get_cache_fname(virtio_images, 'image_id')image('disk.virtio').cache(fetch_func=libvirt_utils.fetch_image,context=context,filename=virtio_fname,size=size,image_id=virtio_image_id,user_id=instance['user_id'],project_id=instance['project_id'])
    @staticmethoddef _create_newos(target, newos_size):#self._create_local(target, newos_size)unit='G'libvirt_utils.create_image('qcow2', target,'%d%c' % (newos_size, unit))

4. 将磁盘配置写入XML文件中

driver.py中的调逻辑是:spawn-->get_guest_xml--> get_guest_config-->_get_guest_storage_config

        if rescue:diskrescue = self.get_guest_disk_config(instance,'disk.rescue',disk_mapping,inst_type)devices.append(diskrescue)diskos = self.get_guest_disk_config(instance,'disk',disk_mapping,inst_type)devices.append(diskos)else:#添加deviceif 'disk.newos' in disk_mapping:disknewos = self.get_guest_disk_config(instance,'disk.newos',disk_mapping,inst_type)devices.append(disknewos)diskcdrom = self.get_guest_disk_config(instance,'disk',disk_mapping,inst_type)devices.append(diskcdrom)diskvirtio = self.get_guest_disk_config(instance,'disk.virtio',disk_mapping,inst_type)devices.append(diskvirtio)###else:if 'disk' in disk_mapping:diskos = self.get_guest_disk_config(instance,'disk',disk_mapping,inst_type)devices.append(diskos)

在openstack中创建镜像 for havana相关推荐

  1. pr中创建镜像效果,并用渐变进行过渡

    1.在效果控件中选择镜像然后调整它的反射角度和反射中心,就可以调成你想要的镜像效果 2.过渡的话选择渐变,然后可以给他k关键帧,让他慢慢进行消除.,就是像这样

  2. openstack 填坑笔记2:创建镜像遇到几个G大镜像文件,卡在排队中,失败解决办法

    openstack pike版本,在ubuntu16.04 上部署成功,linux类镜像都可以创建,我win2003 800M+,也正常,但win2008,win2012的镜像文件压缩后也超过2G,创 ...

  3. V-7 Openstack 在ceph中转换镜像格式

    上下文: 在工作中客户要求做一个openstack的镜像,这个操作系统的配置要求非常的高,最小需要8核96GB内存1TB硬盘.普通的系统可以通过分区扩展脚本做一个20GB的镜像然后在云平台上扩展,但是 ...

  4. dockerfile中的run_Docker3-Dockerfile创建镜像的方法(推荐docker file这种方法)

    一.镜像制作的方法 1.本地导入导出镜像 请参考:Docker 架构原理及简单使用 导出:docker save nginx >/tmp/nginx.tar.gz导入:docker load 2 ...

  5. 网易蜂巢 mysql镜像_在网易蜂巢的容器中创建自定义镜像和推送本地镜像的教程...

    Dockerfile 创建自定义镜像1.  登录蜂巢控制台:https://c.163.com/dashboard 2.  点击左侧导航菜单的「镜像仓库」标签: 3.  点击镜像仓库列表左上角的「创建 ...

  6. docker容器内开启22 ssh_细述docker容器中创建SSH服务镜像

    基于commit 命令 方式创建 docker的安装 [root@test01 ~]# yum install docker [root@test01 ~]# systemctl enable doc ...

  7. 在openstack上创建第一个虚拟机

    一.创建虚拟网络 第一次创建虚拟机,使用命令行来创建 在控制节点上,加载 admin 凭证来获取管理员能执行的命令访问权限 [root@linux-node1 ~]# source admin-ope ...

  8. OpenStack(Kilo版本)镜像服务glance的安装部署

    OpenStack镜像服务(glance)允许用户发现.注册和恢复虚拟机镜像.Glance提供Rest API可以查询虚拟机镜像的metadata并且可以获取镜像.通过Glance,虚拟机镜像可以被存 ...

  9. OpenStack核心组件-glance镜像服务

    1. glance介绍 Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata ...

最新文章

  1. tiny4412学习之u-boot启动过程
  2. CVPR2020检测类论文最全汇总:136篇论文方向细分(附代码和论文打包下载)
  3. Angular组件——投影
  4. 四张图揭秘中国AI人才现状
  5. QT的QWinTaskbarButton类的使用
  6. 22/100. Find All Anagrams in a String
  7. 原来这些元器件最容易引发电路故障。。。
  8. java 日期 年数_java 日期加减天数、月数、年数的计算方式
  9. python构造referer_Python爬虫小偏方:修改referer绕开登录和访问频率限制
  10. 知乎万赞回答!如何在一周内快速摸清一个行业?
  11. postman 不安全网站_Postman所有版本下载_Postman for windows x64 mac下载
  12. 前端:CheckBox事件函数js
  13. 吉林大学计算机学院刘衍衍教授,周柚-吉林大学计算机科学与技术学院
  14. maven setting 设置jdk版本
  15. GET /favicon.ico HTTP/1.1 404
  16. php 压缩gif 不动,PHP怎么进行GIF动图压缩
  17. Client does not support authentication protocol requested by server; consider upgrading MySQL client
  18. 废柴日记7:迟到的『构造最小生成树算法』④
  19. Jsoup——抖音视频抓取(二)
  20. 天嵌i.mx6q--1

热门文章

  1. monkeyrunner之电脑安装驱动(五)
  2. 苹果ios14以上微信聊天记录备份时,提示当前网络状况复杂和连接失败的解决办法
  3. 国内高校遗传学教材发展研究
  4. spring struts2 mybatis框架学习总结(mvc三层架构)
  5. sizebox模型下载_包装盒样机PSD模型合集 Box Packaging MockUp Creator 1
  6. 第3周第3课:su、sudo、限制root远程登录
  7. 2022年版中国新能源公交车行业发展方向预测与投资规划建议报告
  8. 北航研究生计算机系论文手册,北航研究生论文格式.docx
  9. ai人工智能_人工智能神话
  10. 学费最贵研究生专业!