首页 > 代码库 > kvm虚拟机映射磁盘设备

kvm虚拟机映射磁盘设备

需求:使用openstack云主机+EMC存储实现oracle RAC

分析:由于openstack的磁盘设备由cinder管理,目前cinder同一个卷不支持同时连接到多台云主机,事实上其他公有云上的云磁盘也暂时不支持。故不能通过cinder添加磁盘到云主机。

临时解决方案:

手动把宿主机的磁盘(使用了multipath映射EMC存储)映射到kvm虚拟机上,命令如下:

virsh list
virsh attach-disk instance-xxxxxxxx /dev/mapper/mpatha sda --sourcetype block  --driver qemu
virsh attach-disk instance-xxxxxxxx /dev/mapper/mpathb sdb --sourcetype block  --driver qemu
...

磁盘在云主机中映射的名称由顺序决定(sdx),与映射时候指定的名称无关,但取消映射时候的名称需要与映射时候指定的名称一致,或者使用块设备路径,取消映射命令如下:

virsh detach-disk instance-xxxxxxxx [ sda | /dev/mapper/mpatha ]

以上操作是临时生效,重启云主机后即失效,如果是单独使用kvm(不使用openstack管理)的话可以写入到永久配置,通过dumpxml可以看到映射部分的配置,把配置写入配置文件中保存:

virsh edit instance-xxxxxxxx

在</disk>和<conntroller>之间插入以下内容:

<disk type=‘block‘ device=‘disk‘>
  <driver name=‘qemu‘ type=‘raw‘/>
  <source dev=‘/dev/mapper/mpatha‘/>
  <backingStore/>
  <target dev=‘sda‘ bus=‘scsi‘/>
  <alias name=‘scsi0-0-0-0‘/>
  <address type=‘drive‘ controller=‘0‘ bus=‘0‘ target=‘0‘ unit=‘0‘/>
</disk>
<disk type=‘block‘ device=‘disk‘>
  <driver name=‘qemu‘ type=‘raw‘/>
  <source dev=‘/dev/mapper/oggvg-ogglv‘/>
  <backingStore/>
  <target dev=‘sdb‘ bus=‘scsi‘/>
  <alias name=‘scsi0-0-0-1‘/>
  <address type=‘drive‘ controller=‘0‘ bus=‘0‘ target=‘0‘ unit=‘1‘/>
</disk>
<controller type=‘scsi‘ index=‘0‘>
  <alias name=‘scsi0‘/>
  <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x0‘/>
</controller>

保存退出,通过virsh命令关闭再启动虚拟机,不能在虚拟机中重启也不能用virsh reboot

virsh destroy instance-xxxxxxxx
virsh list --all
virsh start instance-xxxxxxxx

使用openstack管理的kvm虚拟机不能使用此方法是因为一旦通过openstack启动/重启虚拟机都会重新生成xml配置文件(rpm安装默认路径为/etc/libvirt/qemu/instance-xxxxxxxx.xml)导致配置失效。除非之后都没有通过openstack启动/重启该虚拟机。

修改openstack中云主机配置文件注意事项:

若云主机本身是关机状态,virsh start云主机会在nova-compute同步主机状态时根据数据库状态把云主机关闭,所以不能在云主机关闭状态下修改。

若云主机本身是开机状态,virsh destroy云主机则会在nova-compute同步主机状态时修改数据库状态,但再次virsh start云主机也会被关机。(实验证明即使在同步时间间隙里操作也会导致云主机最终被关闭)

避免nova-compute关闭云主机:修改时候关闭nova-compute服务,确认云主机启动成功后再启动nova-compute服务。


本文出自 “我的运维之路” 博客,请务必保留此出处http://ouziyou.blog.51cto.com/3008967/1920682

kvm虚拟机映射磁盘设备