ovirt-3.5.3基于模版创建的win2008虚拟机无法二次启动的解决方法

过程描述:

  • 创建虚拟机win2008
  • 通过sysprep封装下win2008并关机
  • 基于此vm创建模版win2008-tmpl
  • 基于模版win2008-tmpl创建clone/thin模式虚拟机win2008-vm003
  • 首次启动win2008-vm003成功
  • 关机再启动win2008-vm003失败!(可重现)

日志分析

less /var/log/libvirt/qemu/win2008_vm003.log (vdsm.log,engine.log略过)

2015-07-30T05:43:49.621585Z qemu-kvm: -drive file=/var/run/vdsm/payload/4c90582e-f337-4240-8747-50ed94dcd044.8580d6eeef5171d2fbdca8f7699028b8.img,if=none,id=drive-fdc0-0-0,format=raw,serial=:

could not open disk image /var/run/vdsm/payload/4c90582e-f337-4240-8747-50ed94dcd044.8580d6eeef5171d2fbdca8f7699028b8.img:

Could not open '/var/run/vdsm/payload/4c90582e-f337-4240-8747-50ed94dcd044.8580d6eeef5171d2fbdca8f7699028b8.img': Permission denied

2015-07-30 05:43:49.787+0000: shutting down

根据日志应该是找不到payload的img,查看/var/run/vdsm/payload目录,确实没有此img(但首次启动vm时此img存在)

另:redhat有提这个bug,但没提出目前版本3.5.3的解决方法,只说ovirt3.6已解决此问题。

解决方法##

1. 分析

由于本vm是通过模版创建且模版机通过sysprep封装过,engine会在vm首次启动时创建sysprep payload(前面报错的img),当关闭vm时payload的img会自动删除,但数据库并没有清理该device条目。而我们再此启动时并不需要挂载此payload,且所在路径/var/run/vdsm/payload也已没有img,导致数据库中的记录和实际不一致,而启动虚拟机时会自动读数据库条目并添加了启动选项
`-drive file=/var/run/vdsm/payload/4c90582e-f337-4240-8747-50ed94dcd044.8580d6eeef5171d2fbdca8f7699028b8.img`,而实际上已没用此img,所以报错无法找到payload的img。

2. 解决方法

根据上面的分析,考虑直接删除engine的数据库相关条目,vm的device都存放在表vm_device中。以下为具体操作命令(除非紧急需要,不建议修改生成环境中的engine数据库):

su - postgres  #切换到数据库账户

ps_dump engine > engine.sql.bak #备份engine的数据库

psql engine #连接到engine数据库

SELECT vm_guid  FROM vms WHERE vm_name='win2008_vm003'; #查找win2008_vm003的ID(4c90582e-f337-4240-8747-50ed94dcd044)

DELETE FROM vm_device WHERE vm_id='4c90582e-f337-4240-8747-50ed94dcd044' and device=floppy; #根据查找到的ID来删除vmPayload设备

3. 验证

再次启动win2008_vm003

查看qemu/win2008_vm003.log,未发现启动项目
`-drive file=/var/run/vdsm/payload/4c90582e-f337-4240-8747-50ed94dcd044.8580d6eeef5171d2fbdca8f7699028b8.img`

查看win2008_vm003状态,已正常启动
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 负载均衡通过将传入请求分布到多个虚拟机来提供更高级别的可用性。 本教程介绍了 Azure 负载均衡器的不同组件,这...
    ITknight阅读 468评论 0 0
  • 在公司避免不了会给电脑重装系统,小到几台大到几十上百台,如果就只有几台手动安装就可以了,那么如果几十上百台,手动安...
    jie0112阅读 2,442评论 0 4
  • 这俗话说,灯红酒绿惹人醉,社会打拼确实累,这俗话又说,二逼男女欢乐多,除了酒吧就是喝,今天就跟各位看官来聊一下那些...
    侯言狼语阅读 395评论 0 0
  • 下午,拿出婆婆给我的白蒿,泡上,热气氤氲中,屡屡蒿香扑鼻而来,清新中带着母亲的气息。 热茶中的白蒿,由灰白色变成了...
    小鹿says阅读 176评论 0 0