在openstack中创建镜像 for havana
当前在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 创建磁盘
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相关推荐
- pr中创建镜像效果,并用渐变进行过渡
1.在效果控件中选择镜像然后调整它的反射角度和反射中心,就可以调成你想要的镜像效果 2.过渡的话选择渐变,然后可以给他k关键帧,让他慢慢进行消除.,就是像这样
- openstack 填坑笔记2:创建镜像遇到几个G大镜像文件,卡在排队中,失败解决办法
openstack pike版本,在ubuntu16.04 上部署成功,linux类镜像都可以创建,我win2003 800M+,也正常,但win2008,win2012的镜像文件压缩后也超过2G,创 ...
- V-7 Openstack 在ceph中转换镜像格式
上下文: 在工作中客户要求做一个openstack的镜像,这个操作系统的配置要求非常的高,最小需要8核96GB内存1TB硬盘.普通的系统可以通过分区扩展脚本做一个20GB的镜像然后在云平台上扩展,但是 ...
- dockerfile中的run_Docker3-Dockerfile创建镜像的方法(推荐docker file这种方法)
一.镜像制作的方法 1.本地导入导出镜像 请参考:Docker 架构原理及简单使用 导出:docker save nginx >/tmp/nginx.tar.gz导入:docker load 2 ...
- 网易蜂巢 mysql镜像_在网易蜂巢的容器中创建自定义镜像和推送本地镜像的教程...
Dockerfile 创建自定义镜像1. 登录蜂巢控制台:https://c.163.com/dashboard 2. 点击左侧导航菜单的「镜像仓库」标签: 3. 点击镜像仓库列表左上角的「创建 ...
- docker容器内开启22 ssh_细述docker容器中创建SSH服务镜像
基于commit 命令 方式创建 docker的安装 [root@test01 ~]# yum install docker [root@test01 ~]# systemctl enable doc ...
- 在openstack上创建第一个虚拟机
一.创建虚拟网络 第一次创建虚拟机,使用命令行来创建 在控制节点上,加载 admin 凭证来获取管理员能执行的命令访问权限 [root@linux-node1 ~]# source admin-ope ...
- OpenStack(Kilo版本)镜像服务glance的安装部署
OpenStack镜像服务(glance)允许用户发现.注册和恢复虚拟机镜像.Glance提供Rest API可以查询虚拟机镜像的metadata并且可以获取镜像.通过Glance,虚拟机镜像可以被存 ...
- OpenStack核心组件-glance镜像服务
1. glance介绍 Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata ...
最新文章
- tiny4412学习之u-boot启动过程
- CVPR2020检测类论文最全汇总:136篇论文方向细分(附代码和论文打包下载)
- Angular组件——投影
- 四张图揭秘中国AI人才现状
- QT的QWinTaskbarButton类的使用
- 22/100. Find All Anagrams in a String
- 原来这些元器件最容易引发电路故障。。。
- java 日期 年数_java 日期加减天数、月数、年数的计算方式
- python构造referer_Python爬虫小偏方:修改referer绕开登录和访问频率限制
- 知乎万赞回答!如何在一周内快速摸清一个行业?
- postman 不安全网站_Postman所有版本下载_Postman for windows x64 mac下载
- 前端:CheckBox事件函数js
- 吉林大学计算机学院刘衍衍教授,周柚-吉林大学计算机科学与技术学院
- maven setting 设置jdk版本
- GET /favicon.ico HTTP/1.1 404
- php 压缩gif 不动,PHP怎么进行GIF动图压缩
- Client does not support authentication protocol requested by server; consider upgrading MySQL client
- 废柴日记7:迟到的『构造最小生成树算法』④
- Jsoup——抖音视频抓取(二)
- 天嵌i.mx6q--1
热门文章
- monkeyrunner之电脑安装驱动(五)
- 苹果ios14以上微信聊天记录备份时,提示当前网络状况复杂和连接失败的解决办法
- 国内高校遗传学教材发展研究
- spring struts2 mybatis框架学习总结(mvc三层架构)
- sizebox模型下载_包装盒样机PSD模型合集 Box Packaging MockUp Creator 1
- 第3周第3课:su、sudo、限制root远程登录
- 2022年版中国新能源公交车行业发展方向预测与投资规划建议报告
- 北航研究生计算机系论文手册,北航研究生论文格式.docx
- ai人工智能_人工智能神话
- 学费最贵研究生专业!