文章转自Live空间(http://delxu.spaces.live.com/blog/cns!D04F87F9ED029F69!2583.entry)和51cto技术博客(http://delxu.blog.51cto.com)首发。转发时务必表明出处,顺便给博主做个广告,文章写的真的很好,深入浅出,期待看到更好的博文,再次表示对博主的感谢!!!
VCP复习笔记(2) - Resource Management

Resource Pool

资源(resource)设置3要素:Limit, Reservation和Shares

如果Resource会经常变化,应该使用share。这样当你升级Host的时候,虽然share值没变,但是每share份额所代表的资源会更大,这样所有VM将会按其所占的份额获得更多的资源。

不要把VM的Reservation值设到和VM 配置的一样大。Reservation只是用来保留作为能够运行此VM的最小值。Reservation设置的越大,可灵活分配的资源就越少,这会影响Resource Pool的VM数量上限。

Resource Pool的benefit
  - Flexible hierarchical organization
  - Isolation between pools, sharing within pools
  - Access control and delegation
  - Separation of resources from hardware
  - Management of sets of virtual machines running a multitier service

2种Resource Pool: fixed 和Expandable (-- 指如果本Resource Pool资源不够,而其parent RP有资源,则会向上级RP请求资源)

CPU Virtualization

* CPU生产厂家的虚拟技术:Intel VT / AMD SVM
* 在不同CPU构架之间不能migrate VM (因为安装VM Guest OS的时候,OS会知晓CPU构架,并且安装为此CPU特别优化的code)
* ESX 3 支持每台虚机最多4颗vCPU
* Best practice: 为单线程(single-thread)应用程序安排单vCPU的VM
* CPU affinity指的是vCPU和物理CPU的捆绑关系
* Best practice: 不要为1个vCPU仅绑定1个物理CPU,只是要为vCPU多分配一个物理CPU,比如1个vCPU要至少绑定2个物理CPU,一台2 vCPU的SMP虚机至少绑定3个物理CPU
* 避免Affinity,Affinity有以下潜在问题
  - 会影响ESX的auto-load-balance能力
  - 无法保证资源的reservation和shares
  - migration以后affinity可能失效,因为新的HOST可能CPU数量不同
  - CPU admission control是不考虑affinity的
  - 在multi-core和hyper-thread cpu上,affinity会影响host充分利用cpu资源的能力
* By default, Hyperthread is enabled
* VM的Advanced CPU设置中HT有3个选项:Any, None和Internal。Any是默认,就是不限制。None就是该VM将排斥其他VM共享同一个CPU Core。Internal和None类似,只是许可同台VM的其他vCPU用同一个core。在1台core较少的Host上,应用VM选择None或者Internal可能会导致没有可用的core,从而degrade 此VM性能。
* 如果某Host有2个支持HT的CPU,那么logical CPU就有CPU0和CPU1在一个core上,CPU2和CPU3在另外一个core上。这时候应该避免把2台高CPU使用率的虚机放在CPU0和CPU1上(同一个core),而应该放在CPU0和CPU2上(不同的core)

Memory Virtualization

现代操作系统都支持虚拟内存,运行软件使用比物理内存更大的内存。这个虚拟内存空间通常被分隔成4KB的块,叫做page。当物理内存满了后,虚拟内存中的page就存在磁盘上。
VMM维护一个虚机的Physical memory page (VMWare称之为physical page)到它跑在的那台machine上的Physical memory page (VMWare称之为machine page)的映射关系
虚机看见的physical memory是连续的(contiguous),初始化的(zero-based),可寻址的(addressable)内存空间;而虚机跑在其上的物理machine的memory不需要是连续的。
HOST如何分配内存?
  - 当没有Overcommit的时候,HOST分配给VM的内存等于Limit参数设定的值。(An ESX Server host allocates the memory specified by the Limit parameter to each virtual machine unless memory is overcommitted.)
  - HOST不会分配给VM超过其标称的内存(比如某VM内存1GB,HOST就最多会给其分配1GB内存,即使Limit参数是2GB或者设成了unlimited)
  - 当Overcommit的时候,每台VM得到的内存介于Limit和Reservation值之间。这个内存是随着当前的memory load动态变化的
  - HOST是基于share和预估的working set size来给VM分配(allocate)内存的。HOST一直监控(monitor)VM的Working set size以作出合理预估(estimate)。监控的间隔可以通过Mem.SamplePeriod参数来修改,默认是60,单位秒。
Host的内存使用情况:
VCP复习笔记(2) - Resource Management_第1张图片

Memory Tax
如果有VM处于Idle状态,分配给该VM的内存可能没有充分利用起来,造成浪费。为了避免这种情况,VMWare采用Memory Tax技术。Mem.IdleTax参数可以用来更改Memory Tax,默认值是75%(大多数情况下,更改这个值是不必要甚至不合适的)
Reclaim Memory
HOST用(1)Memory Balloon Driver (vmmemctl)和(2) Swapping来向VM reclaim内存。
Swap文件是在VM Power on的时候生成的,如果未能生成Swap文件,则Power On失败。Swap文件的大小等于VM配置内存和reservation的差值。
当没有Ballooning driver时(不管什么理由,没安装或者没运行或者crash了),会强制用Swapping来reclaim memory。但只要可能,Host总会优先用ballooning driver
NOTE: For optimum performance, ESX Server hosts use the ballooning approach (implemented by the vmmemctl driver) whenever possible. Swapping is a reliable mechanism of last resort that a host uses only when necessary to reclaim memory.
VM间内存共享
  - ESX会scan同样OS instance之间一样内存部分,达到减少重复内存page,增加可用内存的效果。Mem.ShareScanTime参数和Mem.ShareScanGHz参数就是用来控制内存共享的。
  - 你也可以用sched.mem.pshare.enable参数设成False来禁用内存共享(默认是True)
 

名词解释

VMM -- Virtual Machine Monitor
Service Console -- 就是Redhat Linux 3 Update 8的一个限制发布版。ESX 3i/3.5i没有Service Console
Admission Control -- 进入控制,指一台VM开机的时候,ESX检查是否有足够的资源可以启动此VM
DRS -- Distributed Resource Scheduler
HA -- High Availability
Connection Type
(1) Service Console - 用于HOST administration
(2) VMKernal  - 用于iSCSI, NAS和VMotion
(3) VM Network - VM 用
一个vSwitch至少要指定一个Connection Type,但可以并存多种。
 

VMware Consolidated Backup

* 2 modes: SAN mode 和LAN mode
* SAN mode对系统性能影响最小,支持LAN Free的备份。支持SAN和iSCSI SAN
* LAN mode也有优势:
不需要物理的VCB Proxy,可以用一台VM来当VCB Proxy
* 用LAN mode的条件: (1) ESX 3.5和VC 2.5  (2) Virtual disk不能大于1TB
* 备份种类:p_w_picpath-level和File-level
* 限制:
VCB file-level备份只支持MS Windows
VCB不支持备份VM Cluster (因为不支持共享disk)
VCB不支持备份physical compatible mode下的RDM