VM Workstation下优化和配置

内存优化

    虚拟机其实就是一组文件,虚拟内存也是保存在本地硬盘上的一些文件,虚拟机运行的时候都是从这些分页文件(虚拟内存的文件)中读取的吗

本文中以小写字母v前缀标识虚拟资源,小写字母p前缀标识物理资源。例如:
vCPU 表示    虚拟CPU
pCPU 表示    物理CPU
vRAM 表示   虚拟机的内存,也称之为Guest OS配置内存(Configured Size),或者说GOS 

              的物理内存
pRAM 表示    物理内存,也称机器内存(Machine Memory),或主机物理内存(Host Physical Memory) 

        

虚拟机的内存有2项可以配置,Reserved memory (保留分配),Additional memory(额为分配)

Reserved memory (保留分配):

      为虚拟机专用内存,即使实际虚拟机运用内存很小,那么空出来的这些内存也不能另作它途。Memory Reservation就是给一台VM保留的内存。这些pRAM将被占用,只能用于此VM,而不会被重新分配。VM默认的Memory Reservation0,也就是不保留内存。如果给1VM配置了1GB内存,但是Memory Reservation是默认的0MB,也就是说没有给这台VM分配任何专属的pRAM,那么这台VM的内存从哪里获得呢?答案是Swap(可以翻译为交换文件),也叫VMKernel swap,这是一个存放在硬盘资源上的交换文件(扩展名为vswp),这个swap文件大小在默认情况下等同于VM设定内存的大小。 

所以,即使1VM没有获得任何pRAM,它还是可以运行的,因为从VM Guest OS看来,自己还是有RAM的,这个RAM就是硬盘上的swap文件。 

但是,我们知道,硬盘的访问是一种机械运动(注:非SSD硬盘情况下),速度要远远比物理内存慢。慢到什么程度呢?RAM速度大概是纳秒级的,而硬盘的速度是毫秒级的,2者相差近100万倍。所以使用swap越多,速度就越慢。对Windows Paging技术熟悉的同学们一定知道,缺少内存的电脑速度非常之慢,主要就是因为经常访问存放在硬盘上的pagefile,这种问题的解决方案就一定是添加物理内存。对于VM也是如此,如果大量使用swapVM一定会显得非常之慢。


那么当ESX/ESXi还有可用内存的情况下,VM是不是还一定要用swap当内存呢?

答案是不用。Memory Reservation0VM没有专属的pRAM,但并不意味着这台VM没有物理内存可以用,只是没有独占某些物理内存而已,在共享物理内存池中的内存还是可以使用的。VMware ESX/ESXi在物理内存资源充足的情况下,总是会给VM分配足额的pRAM,因此VM无需使用Swap,这保证了VM的运行速度。比如1台可用物理内存是3GB(忽略COSHypervisor所占用的内存开销)ESX/ESXi主机上,运行了2VM,每台VM各配置了1GB的内存,此时,共享内存池中有3GB的内存,而实际需求只有2GB,因此2VM都能获得1GBpRAM


当你给这2VM各自的Memory Reservation都设置成512MB的时候,这2VM将各自获得512MB的专属内存,也就是说,无论这2VM是否实际用到了这512MB内存,这些内存都将保留给它们。此时,共享内存池中可用的内存就只有2GB了。当获得了512MB专属内存之后,VM就不需要1GB那么大的swap了,而只需要512MBswap就足够保证Guest OS不会没有内存可用。所以此时的swap大小就只有512MB。如果继续增大Memory Reservation1GB,此时swap就为0


所以VM内存1GB可能有:


0MBMemroy Reservation1024MBswap,或者
512MBMemory Reservation512MBswap,或者
1024MBMemory Reservation0MBswap


因此我们总结出以下公式:


VM的配置内存 (MB) = Swap文件大小 (MB) + Memory Reservation (MB)

注:原文可参<vSphere resource mgmt guide> p31"You must reserve swap space for any unreserved virtual machine memory (the difference between the reservation and the configured memory size) on per-virtual machine swap files.")

Q: 为什么要配置Memory Reservation
A: 因为硬盘内存的速度太慢,而保留一些物理内存给VM可以保证该VM能至少拥有一部分高速的pRAM资源。


Q: 那么,是不是要给一台VM配置等于其内存大小的Memory Reservation呢?
A: No,这是为什么呢?


这是因为Memory Reservation设的越大,可共享的内存池中的内存也就越少,可配置的VM数量就越少。


还是拿上面的例子来说,如果每台VMMemory Reservation都是512MB的情况下,3GBESX/ESXi的主机最多只能配置6VM(这是不考虑memory overhead的假想情况下,实践情况可能不到6),如果Memory Reservation继续增加到每台VM 1GB,那就最多只能配置3VM了。但是每台VM实际在用内存数可能都没那么多,假设每台VM在用内存的平均数只有256MB,这台主机应该可以运行12VM,在做了Memory Reservation之后,就只能开启3台或者6台的VM了。


QMemory Reservation的那部分内存是不是其他VM就无法使用?
A:不是绝对不能用。但是因为Memory Reservation部分的内存不能被reclaim,所以当1VM开机的时候,如果当时使用的内存不到Memory reservation的大小,那多余的部分还是可以被其他VM用的;但是当此VM占用的内存达到过Memory Reservation的大小以后,这部分内存就不会交还到可以共享的内存pool中了,就不能再被其他VM用了。

 

【关于SwapQ&A

Q: Swap何时产生?何时消亡?
A: swap文件在一台VM开机的时候生成,关机的时候被删除。 

Q: VM开机时,存放位置没有足够的空间来放置Swap,会发生什么?
A: VM无法开机。


Q: Swap的大小?
A: Swap = VM Configured Memory Size - Memory Reservation
swap的大小是固定的,是静态的,是预先分配好空间的,既不会变大也不会缩小。即使VM从来不去用它,也牢牢霸占着磁盘空间。大多数情况下,swap的利用率很低。(swap利用率高了就意味着VM缺少pRAM,就要想办法调整内存设置,或者增加Host的物理内存,或者调整配置以满足VM需求)


Q: Swap的默认位置?
A: VM的文件 e.g. VMX, VMDK等在同一目录下


Q: Swap的位置可以改变么?为什么?
A: 可以改,但不建议改。

Swap的存放位置可以改到共享存储的另外的位置,或者Host本地存储的某个位置(Host-local方式)。但是Host-local有个缺点,就是会影响到VMotion的效率,因为在Host本地存储的Swap文件必须在VMotion的时候迁移到另外的主机上;而swap如果是在共享存储上的话,就不需要移动。


Q: Host-local Swap如何设置?如果修改默认swap位置到Host-local
A: vSphere Resouce Management Guide p31

Additional memory(额外分配)

Fit all virtual machine memory into reserved host RAM 

表示加载所以虚拟机内存到保留的主机内存中(主机内存比较大时推荐);

Allow some virtual machine memory to be swapped 

表示允许一些虚拟机内存使用交换文件(默认设置)

Allow most virtual machine memory to be swapped 

表示允许大多数虚拟机内存使用交换文件(主机内存比较小时使用,但是运行速度会比较慢)

防止空闲虚拟机内存被宿主机回收

     

 

快照优化

有人说另外要尽量不要使用快照,快照对磁盘性能影响很大。但快照在某些时候又能力挽狂澜,起死回生的作用,所以使用快照要谨慎。

禁用光驱

每当我们对虚拟机进行开机、登录和关机的时候,WindowsVMware都会尝试读取光驱是是否有光盘,这会在一定程度上影响到虚拟机的性能。特别是VMware会尝试读取Host OS的光驱中是否有光盘,这也会严重影响到操行效率,因此禁用虚拟机的CDROM也可以提升其性能。我们可在VM -> Settings (或Ctrl-D)中取消ConnectedConnect at Power-On这两个选中。如下图:

Cpu优化

几点要注意:
尽量不要在单核(包含单核超线程的CPU,如P4)的机器上运行双CPU虚拟机
尽量不要在单核的CPU上跑多个虚拟机,同样也包括超线程的CPU
虚拟机CPU的分配量不要超过物理机的总量

调整优先级使虚拟机运行在较高的级别上,如下图:

快照使用方法

   因为虚拟机主要用于做实验和测试,如果每次实验后都用重装虚拟机的方法来恢复虚拟机的状态,将会浪费大量的时间。这时虚拟机的快照功能和克隆功能就显得十分有用了。

     1、使用快照:

     VMware Server 与VMware Workstation 4.0只支持1次快照,如果创建新的快照,将覆盖上次创建的快照。从VMware Workstation 5.0开始,可以支持无限次的快照(只受限于硬盘空间),并且在创建快照的时候,加上相关的提示信息,方便以后管理、使用快照。

     对于每一个安装好的虚拟机,推荐使用快照方式保存其状态,并且在每次实验前后再创建一次快照,这样可以随时恢复到实验中的任意时刻。

     虽然可以在任意时刻(包括虚拟机运行、启动的任意时刻)创建快照,但强烈建议在关闭虚拟机的时候创建快照,这样可以节省大量的硬盘空间。只有在特别需要的时候才在虚拟机运行的时候创建快照。

     (1)下面我在我们前面装的那台XP-chun的虚拟机上创建快照。

     在虚拟机关闭后,单击工具栏的按钮,或者选择“VM”→“Snapshot” →“Snapshot Manager”命令,或者按【Ctrl+M】组合键,进入快照管理器,在快照管理器中单击“Take Snapshot”按钮,然后在弹出的对话框中输入创建快照的名称及描述,最后单击“OK”按钮,完成快照的创建。

     (2)快照创建完成后,会发现快照管理器中多了一个图标,就是刚刚创建的快照。以后每创建一次快照,都会多一个图标;在以后的实验中如果操作失误,或者想恢复到实验前的状态,进入快照管理器,选中实验前制作的快照,单击“Go To”按钮即可。

     注意下:在恢复到指定的快照状态时,虚拟机的当前状态将会丢失,因为当前的状态可能没有创建快照:

     (3)以下是成功创建一个快照的截图。如果以后快照创建多了,看图中提示处,可以查看目前处于那个快照点:

     2、快照点克隆虚拟机:

     虽然使用快照可以方便地保存虚拟机的每一个状态,并且可以保存多个状态,但这些快照都是在同一个虚拟机中,有时需要多台虚拟机,在需要创建一个单独的虚拟机实验时,在实验后删除不用的虚拟机即可。这时,使用虚拟机的克隆功能就是一个相当不错的选择以。

     下面我们上面创建的快照为克隆点进行介绍。实验之后,如果确认克隆链接不再使用,直接删除克隆后的虚拟机即可。

     (1)在我们要克隆的虚拟机的快照管理器里,我们选中一个快照点。单击“Clone”进入克隆虚拟机设置向导:

     (2)单击“下一步”,进入下一步设置:

     (3)选择克隆源,我们这里选择“XP-OK”快照点进行克隆,单击“下一步”:

     当然我们也可从当前虚拟机的当前状态进行克隆或者其它的快照点处进行克隆。

     (4)选择克隆类型(方式),这里我们选择创建一个链接的克隆。单击“下一步”:

     当然也可选择一个完全克隆。这里简单说下它们两者的区别:所谓链接的话,是建立在源存在的基础上才可访问,而完全克隆是源的一个副本,不依赖于源而独立存在使用。

     我们一般创建的都是链接克隆,大家应当明白。

     (5)设置新创建的这台“虚拟机的名称”与“存放位置”,因人而异,然后单击“完成”开始创建:

     (6)创建完成,单击“Close”关闭窗口:

     (7)创建完成后,我们可以看到克隆链接点的快照上加把锁,表示当前的快照已经被锁定,不能删除,因为有别的虚拟机是建立在这个源上的一个链接虚拟机。单击“Close”按钮关闭窗口:

     (8)实验虚拟机创建完成,我们便可以定位新克隆的虚拟机,打开电源,进入实验虚拟机进行实验:

     读者可以根据以上操作,在创建好其他系统的基础上安装好常用软件后,创建快照,这样创建的每个虚拟机都将是一个“模板”虚拟机,以后直接使用这些虚拟机即可。当然也可从菜单栏和右键虚拟机弹出的快捷菜单中进行虚拟机的快照和克隆等操作。

     3、创建多个快照:

     对于一个虚拟机来说,可以创建多个快照,每个快照可以代表虚拟机的一个状态。例如我前面的成果展示。可以根据需要,随时创建虚拟机的多种组合,这样将极大的减少准备实验的时间。大家可以再看下我的这图,我后面会有一个综合的实际案例应用介绍。

     4、删除快照:

     对于不再使用的快照,可以进入快照管理器将其删除,这样可以释放磁盘空间。需要注意的是,只有从每个快照链接点的最后一个开始删除快照,才能释放磁盘空间,如果删除的不是最后一个快照,将不会释放磁盘空间。删除快照的方法很简单,只要选中快照,单击“Delete”按钮并在弹出的对话框中单击“Yes”按钮即可。

     5、使用自动保护功能创建快照:

     VMware Workstation 7 新增加了一个“AutoProtect(自动保护)”功能,用来保护虚拟机,这个功能可以设置在使用虚拟机的时候,每间隔一段时间创建快照的方式,从而保护虚拟机。

 

  

总结:关于VM的优化其实还有很多,以上都是我工作中经常用到的一些知识,经验无价,未完待续!

 参考文章  http://delxu.blog.51cto.com/975660/281559

 

 

 

 

   

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐