安装与配置:
下载vmware的tar.gz包
解压缩:
tar -xvzf vmware*.tar.gz
进入目录:
cd vmware*
执行安装:
./vmware-install.pl
安装过程需要输入序列号
其它默认,回车就好了
安装成功以后vmware会成为linux服务项
可以用service vmware start/stop来启停
启动某个虚拟机,假设虚拟机文件是/vdisk1/test168.vmx
启动该虚拟机:
vmware-cmd /vdisk1/test168.vmx start
停止该虚拟机:
vmware-cmd /vdisk1/test168.vmx stop
vmware官方站的配置和FAQ文档是比较齐全的
在windows机器上安装vmware监控台来使用linux上的虚拟机,可以方便处理虚拟机文件和修改配置。
性能相关:
cpu:
对于应用虚拟机的系统来说,cpu上增加了系统占用量增加,vmware本身消耗的cpu是比较小的。单机上对应占用25%cpu时间的进程,开启3个约占用75%~80%,但如果是在将全部cpu资源分配给虚拟机的情况下,该虚拟机开启3个约占用80%~85%,而如果将cpu资源均分3份分配给3个虚拟机,每个虚拟机开启1个,总cpu占用在90%左右,损耗是比较严重的。
当应用cache的命中较高时,cpu消耗增加,会使这种情况进一步加剧
内存:
虚拟机内存的分配只能在物理内存范围内,如果分配量超出物理内存量,由于虚拟机运行会频繁使用虚拟内存,应用的速度会慢得难以接受。
硬盘:
一般只是读写速率上导致一定的io(无swap时影响很小),容量通常不是问题。
各种应用对虚拟机性能的要求程度(某指数“敏感”意味着该指数越好,性能表现越好):
上表是关于各种应用对CPU、内存、磁盘IO性能要求的敏感程度对比。从上面可以看到,最适合使用虚拟机的就是jvm应用;因为虚拟机内部分配内存必须是固定的,所以如果对内存敏感的应用,就不太适合了。
实践举例
cpu:双cpu至强双核2.8GHz
内存:4GB
这类pc server是比较常见的。如果不使用虚拟机,直接安装linux,系统消耗内存共计约200M,通常线上生产环境所用的jvm最大内存1G,java运行起来后约占1.3G内存,开2个应用后内存消耗3G不到,但开启第3个时就需要使用虚拟内存了;使用虚拟机的话,2个虚拟机运行各需要1.5G(虚拟机操作系统+java),运行起来后约占3.2G,第3个虚拟机无法分配到足够的物理内存,运行艰难。如果是测试环境所用的jvm最大内存0.5G,java运行起来后约占0.7G内存,开5个应用后内存消耗3.7G,但开启第6个时就需要使用虚拟内存了;使用虚拟机的话,3个虚拟机运行各需要1G(虚拟机操作系统+java),运行起来后约占3.2G,第4个虚拟机无法分配到足够的物理内存,运行艰难。
|
|
|
|
| 不使用虚拟机(模拟生产环境)
| 1GB
| 1.3GB
| 2
| 3GB-
| 使用虚拟机(模拟生产环境)
| 1GB
| 1.5GB
| 2
| 3.2GB
| 不使用虚拟机(模拟线下环境)
| 0.5GB
| 0.7GB
| 5
| 3.7GB
| 使用虚拟机(模拟线下环境)
| 0.5GB
| 1GB
| 3
| 3.2GB
| 从上表中还可以看出,应用虚拟机对内存的利用率比较低。
内存的使用局限在虚拟机被分配的内存空间内了,对于本身使用了虚拟机技术的java应用来说,反而不是问题了。只是由于虚拟机运行除了本身进程还要加载操作系统,使得内存的使用量上升了。
不使用虚拟机只有一个操作系统,而加载虚拟机的话有多少个虚拟机就会加载多少个“虚拟机进程+虚拟机上操作系统”。
针对使用虚拟机后的cpu消耗情况(user%)实验如下(所有java应用相同,每个接受20个连接请求)
|
|
|
| 不使用虚拟机
| 1
| ——
| 15.6%
| 使用虚拟机
| 1
| 15.2%
| 18.3%
| 不使用虚拟机
| 3
| ——
| 47.1%
| 使用虚拟机
| 3
| 16.1%,14.4%,17.1%
| 57.5%
| 虚拟机使用cpu的机制与正常应用程序没有什么区别,所以运行虚拟机本身会损耗3%左右的cpu占用率。
以上数据均在上文的特定配置机器上获取,对于更高性能的服务器不能直接线性扩展。
vmware在虚拟机工具中并不是最好的。virtual zzo虚拟机的运行损耗最小,最接近真实机水平 |