设为首页 收藏本站
查看: 927|回复: 0

[经验分享] libvirt为OpenStack Nova Folsom版带来的变化

[复制链接]

尚未签到

发表于 2015-4-13 09:22:50 | 显示全部楼层 |阅读模式
XML 配置

第一个变化就是Nova生成libvirt XML配置文件方式的改变。之前的Nova版本使用Cheetah模板引擎生成XML配置文件。这样做的问题是需要很多的信息作为参数传递给模板,Nova在内部为libvirt来宾(guest)采用一种特殊配置格式,进而用模板翻译成合适的来宾配置,但是所生成的结果代码却很难维护且不易理解,原因是XML的逻辑结构被分散在模板文件和libvirt驱动代码中,缺乏一致性结构。因此NOva的第一个大改变就是libvirt驱动(driver)在Folsom中引入一套形式化的Python配置对象集合表示libvirt XML的配置。libvirt驱动代码现在可以用必要的参数直接填充这些配置对象,然后简单地序列化对象到XML中,这样Cheetah就完全可以被淘汰掉,因而代码结构也变得明晰起来,这里有一个更详细的wiki页面。CPU模型配置

移除Cheetah 模板最主要的负面影响就是管理员部署Nova不能方便地改变libvirt来宾的XML,个人认为这是件好事,因为这种随意的改变意味着Nova的功能的推进将受到阻碍。但是很多人并不同意这个观点,显然他们就是用libvirt XML配置指定来宾 CPU 模型。如果在来宾配置中没有明确要求指定CPU模型,KVM 将用一个通用的、最普通标准模型,可以适用于任何地方的通用模型。可以预见的是,这种通用CPU模型没法为来宾提供最佳性能。例如:如果你的主机一个新的CPU内嵌有AES加密指令,但是这种模型并不能充分利用此特性,因此这就是第二个改变,在Nova 的libvirt驱动中引入了显示支持CPU模型的配置。这里涉及到两个新的Nova配置参数,libvirt_cpu_mode 可以在”host-model“ 和”host-passthrough“以及”custom“之间选择。如果模型设置为“custom",那么可选参数libvirt_cpu_model就可以用于指定自定义的CPU的名字,详细介绍在这里。

选择CPU模型的功能被合并进来后,同样默认配置也会发生改变,所以如果Nova选用KVM作为hypervisor的话,那么它默认将使用”host-model" CPU 模型。这将导致来宾CPU模型几乎是主机CPU模型的一个精确副本,为来宾系统提供最大性能。然后这种内嵌的KVM会给选择带来一点点不爽,理由在libvirt和KVM的结合问题上,因为内嵌KVM,使用“host-model”会失败。因此使用内嵌kvm都需要设置libvirt_cpu_model="none"作为应对措施。如果你在裸金属设备上使用KVM,任何事情看起来都很美好,这当然是在正常情况下生产部署。
时钟协调策略

同样回到性能的主题,libvirt Nova 驱动为KVM来宾更新设置时间协调策略。在x86平台上虚拟机有多种可用时钟,包括PIT、RTC、PM-Timer、HPET。全虚拟化平台中可靠的时钟是有待解决的最大困难之一,KVM也不例外,问题都归结于当hypervisor在正确的时间里不能注入时钟中断时该干什么?因为不同来宾正在运行。不过有一些策略是可用的,尽可能快的插入错失的标记,合并所有错失标记为1然后尽可能快地交付。临时性的注入缺失标记比平常更高的速度去追赶,或者简单地彻底取消错失标记。证明windows7 对时钟特别敏感,对于错失标记默认的KVM策略常常导致死机。 老式Linux来宾机会有严重的时间漂移。oVirt 项目组的研究验证发现了一组最佳的策略,使得绝大多数来宾处在比较满意的状态。libvirt Nova驱动进行了更新,当使用的是KVM时,该驱动用PIT和RTC为时钟协调制定了明确的策略。这将使得一切和时间相关的任务更可靠。Libvirt 认证

libvirtd进程可以用不同的认证scheme配置。直接使用PolicyKit认证客户端,因此在Fedora/RHEL/EPE中Nova包(package)包括一个polickit配置文件,该文件授予Nova连接libvirt。管理员可能决定使用不同的配置scheme,例如SASL,如果选择的scheme需要用户名和密码,那就没有办法为Nova的libvirt驱动提供这些认证信任。幸运的是,libvirt客户端可以在本地文件中查找信任关系。不幸的是Nova连接libvirt的方法不能工作。因此Nova libvirt 驱动使用修复的openAuth()允许默认的信任查寻逻辑。现在在Nova和libvirt之间获取认证成为可能:

# augtool -s set /files/etc/libvirt/libvirtd.conf/auth_unix_rw sasl
Saved 1 file(s)
# saslpasswd -a libvirt nova
Password: XYZ
Again (for verification): XYZ
# su – nova -s /bin/sh
$ mkdir -p $HOME/.config/libvirt
$ cat > $HOME/.config/libvirt/auth.conf

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56534-1-1.html 上篇帖子: Sed在Openstack安装的应用 下篇帖子: openStack images概念及维护
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表