Openstack中为虚拟机使用CDROM光驱设备

    • 在Libvirt里抓鱼
    • 在nova里生炉子
    • 实际效果
    • 怎么卸载

在Libvirt里抓鱼

尝试了以下有几种方法,为虚拟机加载光盘文件:

1.使用ide方式挂载:

virsh attach-disk {instance_name} {iso_path} hda --sourcetype block --driver qemu --subdriver raw  --type cdrom

xml格式如下:

<disk type=‘block‘ device=‘cdrom‘>
  <driver name=‘qemu‘ type=‘raw‘/>
  <source dev=‘{iso_path}‘/>
  <target dev=‘hda‘/>
</disk>

2.使用scsi方式挂载:

virsh attach-disk {instance_name} {iso_path} sda --sourcetype block --driver qemu --subdriver raw  --type cdrom

xml格式如下:

<disk type=‘block‘ device=‘cdrom‘>
  <driver name=‘qemu‘ type=‘raw‘/>
  <source dev=‘/var/lib/nova/instances/virtio-win-0.1-100.iso‘/>
  <target dev=‘sda‘/>
</disk>

以上两种方法的区别就在于设备的驱动类型,使用hd×盘符挂载,挂载之后的设备会默认认为是ide设备,而使用sd×盘符挂载,会默认认为是scsi设备。

由于有些windows镜像缺少scsi驱动无法识别使用sd×盘符挂载的光驱设备,所以选择了hd×盘符来挂载光驱设备。

然后ide同样存在问题,ide设备是不支持热拔插的:

virsh attach-disk {instance_name} {iso_path} hda
error: Failed to attach disk
error: Operation not supported: disk bus ‘ide‘ cannot be hotplugged.

研究了一番发现如果给这个光驱设备写一个空的source_path,挂载时只要替换这个source_path的值,它就不会认为这是一个拔插动作。

virsh domblklist {instance_name}
Target     Source
------------------------------------------------
vda        {volume_path}
vdb        {volume_path}
hdb        -

virsh attach-disk {instance_name} {iso_path} hdb --sourcetype block  --driver qemu --subdriver raw  --type cdrom
Disk attached successfully

virsh domblklist {instance_name}
Target     Source
------------------------------------------------
vda        {volume_path}
vdb        {volume_path}
hdb        {iso_path}

在nova里生炉子

在nova里要做的就是给虚拟机添加一个光驱设备,并给予这个光驱设备一个空的默认路径。虚拟机磁盘设备的xml加工是在nova.virt.libvirt.driver.py中完成的。

磁盘设备的xml类是nova.virt.libvirt.config.py中的LibvirtConfigGuestDisk类,可以根据它的属性来创建一个新的实例。

这里加入了一个判定条件用于更灵活地控制这个设备是否开启,判定的依据是flavor的extra_specs中的hw_set_cdrom属性。

在nova.virt.libvirt.driver.py的get_guest_storage_config函数中加入以下代码(注意,盘符必须为hda):

                for vol in block_device_mapping:
                    connection_info = vol[‘connection_info‘]
                    vol_dev = block_device.prepend_dev(vol[‘mount_device‘])
                    info = disk_mapping[vol_dev]
                    cfg = self.volume_driver_method(‘connect_volume‘,
                                                    connection_info,
                                                    info)
                    devices.append(cfg)

                # new code begin

                if inst_type[‘extra_specs‘].get(‘hw_set_cdrom‘, False):
                    LOG.info("** setting cdrom **")
                    cd_cfg = vconfig.LibvirtConfigGuestDisk()
                    cd_cfg.driver_name = ‘qemu‘
                    cd_cfg.source_device = ‘cdrom‘
                    cd_cfg.driver_format = ‘raw‘
                    cd_cfg.driver_cache = ‘none‘
                    cd_cfg.target_bus = ‘ide‘
                    cd_cfg.target_dev = ‘hda‘
                    cd_cfg.root_name = ‘disk‘
                    cd_cfg.source_type = ‘block‘
                    cd_cfg.source_path = ‘‘

                    devices.append(cd_cfg)
                # new code end

实际效果

挂载操作不用多说,方法多种多样的……

看看效果

挂载前:

windows 2003:

windows 2008:

挂载后:

windows 2003:

windows 2008:

linux:

怎么卸载

给光驱更新一个空的source_path就可以了:

virsh domblklist {instance_name}
Target     Source
------------------------------------------------
vda        {volume_path}
vdb        {volume_path}
hda        {iso_path}

virsh attach-disk {instance_name} "" hda --sourcetype block  --driver qemu --subdriver raw  --type cdrom
Disk attached successfully

virsh domblklist {instance_name}
Target     Source
------------------------------------------------
vda        {volume_path}
vdb        {volume_path}
hda        -

另一个地址:http://pages.turtleend.info/2015/06/11/openstack-use-cdrom-device.html

时间: 2024-07-29 07:00:53

Openstack中为虚拟机使用CDROM光驱设备的相关文章

也谈OpenStack中的虚拟机HA

OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目.它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端.OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性.做为云计算IAAS层事实标准,OpenStack广泛的应用与各行各业.到目前为止OpenStack社区并没有一个完整的虚拟机HA解决方案.起初社区认为虚拟机的HA不是云平台层次的特性,不应该在云平台层面来实现,虚拟机的H

Openstack中给windows虚拟机加载virtion驱动

通过qemu-img将windows虚拟机的vmdk文件转换成qcow2,并将文件上传至openstack中时,发现虚拟机无法启动. 经过分析,原因是openstack默认使用的是virtio驱动,而windows虚拟机未安装virtion驱动. 解决办法:安装VirtIO驱动 1.通过virt-manager打开windows虚拟机 2.磁盘.网卡使用默认驱动,即磁盘使用ide.网卡使用rt 3.添加一块floopy设备 4.添加一块临时硬盘,设置为virtio模式 5.启动虚拟机,为新磁盘.

openstack中创建一个虚拟机经过的51步

一.前言 本文在林海峰老师"openstack创建一个VM所需的29步"基础上进行了补充和修改,文中只用到了openstack六个核心组件,为了便于理解,架构中不同组件内的rabbit mq和db为同一个(可以为每个组件配置单独的db和rabbit mq).openstack组件之间通过REST调用,组件内通过RPC协议通信,RPC协议又是基于AMQP模型实现的,rabbit mq就是运用该模型的一款软件. 二.概述 以现实中的PC举例来说明openstack创建的VM,一个PC要能正

在Ceph中创建虚拟机流程改进之分析

作为个人学习笔记分享,有任何问题欢迎交流! 最近在Gerrit中看到一个change:https://review.openstack.org/#/c/94295/ , 它主要是对当前在Ceph中创建虚拟机的流程的改进.如果glance的backend是ceph, 则nova创建虚拟机到RBD的流程是这样的: 通过glance从ceph中下载image --> 本地 --> 复制image到rbd 这个change的目的就是:不需要下载到本地,直接在rbd中复制image,以提高虚拟机创建的速

Openstack中给windows加载virtion驱动

通过qemu-img将windows虚拟机的vmdk文件转换成qcow2,并将文件上传至openstack中时,发现虚拟机无法启动. 经过分析,原因是openstack默认使用的是virtio驱动,而windows虚拟机未安装virtion驱动. 解决办法:安装VirtIO驱动 1.通过virt-manager打开windows虚拟机 2.磁盘.网卡使用默认驱动,即磁盘使用ide.网卡使用rt 3.添加一块floopy设备 4.添加一块临时硬盘,设置为virtio模式 5.启动虚拟机,为新磁盘.

设置VMware Player中的虚拟机和宿主机共享文件

设置VMware Player中的虚拟机和宿主机共享文件 试验环境: 虚拟机软件:VMware Player 6.0.3 宿主机os:windows7 虚拟机os:centos6.6(32位) 完成此任务的前提是要在虚拟机操作系统中安装vmware-tools,vmware-tools中有一个模块叫host-guest-file-system,通过这个hgfs可以实现在宿主机windows和虚拟机linux之间的文件共享. 首先,安装VMware-Tools 第一步,在虚拟机开机的时候,点击[p

OpenStack 网络总结之:openstack中网络的基本概念

原文:openstack-install-guide-yum-icehouse.pdf/7. Add a networking service/Networking concepts OpenStack的Neutron可以管理OpenStack环境中的虚拟 网络基础设施(VNI),和物理网络基础设施(PNI). OpenStack的Neutron允许租户创建虚拟网络拓扑结构,包含的服务例如防火墙,负载均衡和虚拟专用网络(VPN)等等. Neutron提供了对以下对象的抽象:网络,子网和路由器.

openstack创建一个虚拟机的过程

为什要用云? 一.简单的说就是对资源更加合理的分配,使用,比如硬件的数量,带宽等等这些,因为你不能机器买来不需要了再卖掉(当然也可以),带宽跟机房签合同得来一年的,中间不够了也不能加,超了也不退钱 二.还有就是可以有一个可以统一管理的操作平台,可以快速的对基础设施进行建设配置等等,方便了许多 云计算是个什么鬼? 资源可以循环利用的一个过程(PS:没有虚拟化就没有云,因此这两者没什么可比性) 现有云模式(复制大神的): 一.IaaS:基础设施即服务(个人比较习惯的):用户通过网络获取虚机.存储.网

VMware Workstation中Linux虚拟机安装VMware-Tools

VMware workstation 中的Linux虚拟机下安装VMware-Tools 作者语:在VMware Workstation下安装完windows的操作系统后,你会很easy的就可以将VMware-Tools也安装了,但是如果你安装的是Linux操作系统(例如:Red Hat.CentOS等)你要怎样安装Vmware-Tools呢?下面我们来介绍如何安装. 首先,在你的VMware Workstation的Linux虚拟机上点击右下角的光盘,右键将该光盘卸载(这个光盘应该是你安装Li