ovirt中文环境下虚拟机迁移异常跟踪

本文描述了在OVIRT环境中,虚拟机迁移过程中遇到的问题,即迁移失败后虚拟机陷入不可控状态,且内存无法回收。经过排查,发现问题是由于Python处理中文异常时的错误导致。解决方案是在异常处理部分正确解码UTF-8编码的异常信息,以确保虚拟机状态能正常恢复。
摘要由CSDN通过智能技术生成

        在客户现场发现1个体验很差的问题,负载均衡触发的虚拟机迁移,使得虚拟机一直保持在迁移状态,更严重的是,此时的虚拟机失去管控,前端既不能关闭它,也不能通过控制台使用它,最后客户着急了,凌晨将研发人员叫到现场解决问题。

        迁移失败其实是有别的与原因引起的,如两边主机名相同,如虚拟机使用的cache模式不为none, 或者另一边的主机启动虚拟机失败等等。或许迁移失败是可以接受的,但是迁移失败导致虚拟机一直处于迁移状态不可使用不可恢复,那问题就严重了,其实还有更严重的,如果重启两边主机的vdsm服务,虚拟机能从迁移状态中恢复回来,但是虚拟机迁移时目标主机预留的内存,pending_vmem_size, 并没有回收回来,而且是永久的,除非手动修改数据库,否则这部分内存就永远被“雪藏“了,不能再用于虚拟机的分配。

        这么严重的一个问题,最后居然发现是由于python对中文的处理导致异常引起的。虚拟机的迁移属于异步调度任务,调度时的处理在virt/migration.py中:

    def run(self):
        try:
            startTime = time.time()
            self._setupVdsConnection()
            self._setupRemoteMachineParams()
            self._prepareGuest()
            with SourceThread._ongoingMigrations:
                try:
                    if self._migratio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值