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

[经验分享] VMware vSphere hot-add CPU/memory学习笔记

[复制链接]

尚未签到

发表于 2015-4-3 15:19:50 | 显示全部楼层 |阅读模式
VMware vSphere hot-add CPU/memory学习笔记
  2012-05-05 12:34 by hackerzhou

  前段时间接触VMware vSphere的hot-add/plug功能,感觉很炫,虚拟机跑着跑着多出来几个CPU和几G的内存。其实还远远不止这些,还可以热插网卡和硬盘等等,hot-add/plug为虚拟化管理员提供了在不允许停机的生产环境中仍然可以动态添加设备的方法。本文主要介绍下CPU和memory的hot-add/plug、如何让guest OS识别新配置以及一些目前已知的问题,希望给VMware虚拟化社区贡献一份力,同时希望能抛砖引玉,让更多的虚拟化爱好者们能分享各自的经验。
  vSphere Release Notes以及vSphere Client中使用hot-add memory和hot-plug CPU的措辞,不过我觉得说成广义的hot-add也并无不可,因此下文用hot-add来指代hot-add/plug。
Hot-add可以抽象成三个步骤:

  • 打开VM的hot-add选项(hot-add 功能默认不会打开)。右击一个已经关机的VM->”Edit Settings”->”Options”->”Memory/CPU Hot-pluging”,打开memory和CPU的hot-add/plug。具体的操作可以
    DSC0000.png
  • 参考有图示的教程 Using vSphere Hot-Add to Dynamically Add CPU and RAM,下图拷贝自上述教程。
  • 在VM上触发hot-add。开启了VM的hot-add之后,在VM开机状态下进入”Edit Settings”会发现内存和CPU都是可配置的了。配置好之后vSphere会通知guest OS它的设备发生了改变,下图拷贝自上述教程。。 DSC0001.png
  • 让运行在VM里的guest OS识别出新设备。Windows一般能自动识别出并使用新的memory和CPU,但在Linux下就需要我们用脚本让系统使用新配置。VMware Knowledge Base中有一篇
    Hot adding memory in Linux,对CPU的操作也很类似。有自动化需要的可以用这两个脚本:online_hotplug_memory.sh 和 online_hotplug_cpu.sh,两个脚本都不难理解,无非就是往识别出但是没有online的CPU和memory的state文件里面写标识符让系统online下设备而已。
局限性(根据个人经验和参考文档):

  • Hot-add memory的数量有严格的限制:
    1)新memory大小必须是128的整数倍。
    2)如果hot-add前的memory小于3G,最多只能hot-add到3G。
    3)如果hot-add前的memory等于3G,则不能hot-add任何memory。
    4)如果hot-add前的memory大于3G,最多能hot-add 原先memory的16倍,但不能超过 hardware limit(对VM version 7来说最多到255G,对VM version8来说1011G)。简单的来说就是 limit=min(old_memory * 16, vm_version_7 ? 255G:1011G)
  • 对于version 7的VM,hot-add CPU只能在core为1的情况下对socket进行增加。而VM version8可以在core不为1的情况下添加socket。
  • Hot-add 功能和VMware Fault Tolerance(FT)功能互斥,不能同时使用。
  • 开启hot-add必须在VM关闭的状态下进行,其实通过往vmx文件里写”mem.hotadd”和”vcpu.hotadd”两个属性一样内开启hot-add。
  • Hot-add成功与否依赖guest OS是否支持hot-add。Hot-add之后guest OS必须得能识别并且使用新设备,不然hot-add只不过是在VM层面上进行了硬件的调整,操作系统内部并不识别。
    Windows下的支持性可以参考 vSphere Memory Hot Add/CPU Hot Plug
    Linux下的支持性可以参考 CPU and RAM hotplug support by PSBM 5
  • Hot-add 功能只在vSphere Advanced、Enterprise、Enterprise Plus version 上才能被开启,也就是说只有交了钱才能享受到高端功能。
  • Hot-add memory之后可能会导致数秒的CPU 100%使用率。
  • 内核版本小于2.6.38的Linux有kernel bug,会导致有时候guest OS无法识别新加上的内存。根据 Hot-plugged memory cannot be initialized in a Linux VM 这篇kb中的描述来看,原内存越小越容易导致无法添加成功。在试验中验证了这点,并且发现原内存在hot-add前使用率越高,新内存就越无法成功被识别。要想workaround,别无他法,只能使用尽可能新的内核版本。
    比如在guest OS是SLSE 11 SP1(内核2.6.32)的情况下,512M内存无负载可以hot-add成功(但仍有接近128M内存无法被识别),但512M内存跑个程序消耗70%的内存就无法识别hot-add上的内存(哪怕直接hot-add到3G也是一兆都认不出)。
    而在 Ubuntu 11.04(内核2.6.38)中,空负载的情况下可以识别出全部hot-add上的内存,不会丢失128M;在负载较大的情况下仍然可以识别出大部分hot-add上的内存(仍然会丢失128M)。
  • 另有一篇文章也分析了hot-add 功能:VMware vSphere hot-add RAM and hot-plug CPU: Not so ‘hot,’ but still cool,有兴趣的同学也可以看看。
    原文链接:http://hackerzhou.me/2012/05/vmware-hot-add-cpu-memory-feature-notes.html

运维网声明 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-53599-1-1.html 上篇帖子: vSphere Client/Web Client 打开控制台窗口很慢的问题 下篇帖子: Vsphere WebService SDk4.0编程环境搭建(上)[转]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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