关闭

关于在线迁移中对cpu的检查问题

605人阅读 评论(0) 收藏 举报
分类:

因为最近一直在研究openstack的live-migration,配置好之后进行迁移过程中发现了一些问题,这里进行记录


首先是关于nfs,这个nfs服务器可以跑在任意一个节点上,只要配置好,不必非得将它部署子控制节点,这样可以减少controller的负担

其次是,在live-migration之前,要对计算节点的核进行检查,而且配置文件里对核的检查很苛刻。

比如我们的计算节点,有的是i3,有的是i5,这些节点之间的迁移就会因为核的检查不通过而不能进行迁移。通过看log文件,发现是/nova/virt/libvirt/driver.py文件里函数check_can_live_migrate_destination中的self._compare_cpu(source_cpu_info)导致出错,将这行注释后,满心欢喜的进行实验,发现还是有问题,这时问题变了,是在实际的迁移中_live_migration函数中的dom.migrateToURI(CONF.live_migration_uri % dest,   

这一行导致的错误,错误的原因还是cpu的检查

那么要想解决这个问题,要么彻底避开对cpu的检查,要么自己设计一个检查策略,不要这么苛刻

为了省事,我们现在选择了前者,也就是完全避开对cpu的检查

通过对问题的反复求证,发现问题的根结在各个instance的配置文件上,我们打开instance的配置文件(如果你没有在nova的配置文件里进行特殊指明,一般是在/var/lib/nova/instances目录下),找到相应的目录,里面有一个文件叫libvirt.xml,打开看到第28行,一般会看到cpu的匹配规则,默认应该是host-mode

因为我们想完全避开对cpu的检查,所以要对这个配置文件进行相应的更改

那么怎么进行更改呢?不能手动的对这个文件进行更改吧?

通过查阅文件,发现我们应该改的地方是/nova/virt/libvirt/driver.py这个文件里的第1975行,注意观察发现:

if mode is None:
            if CONF.libvirt_type == "kvm" or CONF.libvirt_type == "qemu":
                mode = "host-model"
            else:
                mode = "none"


意思很明显,因为openstck默认用的大多数是kvm,所以这里的mode设置成了host-model,这里也就是上面我们提到的libvirt.xml文件里的对应的配置

那么,我们把上面这几行全都注释掉,mode就成了none,这样就完全的不对cpu进行检查


经过这一番折腾,终于可以在不同的配置的计算节点之间互相的在线迁移

下面要做到是借助于libvirt对instance进行实时的监控,希望顺利

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9657次
    • 积分:179
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:1篇
    • 译文:0篇
    • 评论:14条
    文章分类
    最新评论