① esxi 虚拟机性能问题
【本文不讨论的】
想获得最高的虚拟机硬盘效率,是可以直通sata控制器的,这样阵列、休眠、smart信息等特性都可以直接使用。其次,直通硬盘也不错,单盘的效率基本接近原生。
这茄哪两种直通在ESXi、PVE、unRaid下性能都很好,虚拟机做nas强烈推荐这两种方式。但本文不会讨论这块,因为没什么研究空间了。。。
【本文讨论的】
如果你无法使用直通(比如说硬盘数量不够),那就必须创建虚拟磁盘了。如何创建一个适合自己的虚拟磁盘?尤其是虚拟机玩NAS或Windows等系统,占用磁盘空间大且有一定性能需求,该如何权衡?
本文只是想给出一些我尝试过的方法和结论,希望能够提供帮助。
【大致想法】
首先最简单的方法肯定是虚拟机下直接创建虚拟磁盘,那么虚拟磁盘的硬盘控制器、精简置备、置零这些选项对磁盘的性能到底有多大影响?精力有限,本文只研究了ESXi,其它虚拟系统情形大体相似。
如果你的虚拟机中有一个NAS(比如说群晖),你可能已经把最大最快的硬盘直通给它了。其它次要的系统可否从NAS中分一部分硬盘空间使用,性能如何?是否实用?
【测试的环境】
主机(ESXi系统):
CPU:E3-1265L v3 主硬盘:WDC WD5000BPVT(读取速度72MB/s)
群晖(虚拟机):
直通了sata控制器,两块4T酷狼组raid0,虚拟万兆网卡
Win10(虚拟机颤运码):
除系统盘外,对下面1、2、3、4情况各自建立了2G的虚拟磁盘,虚拟万兆网卡
【待测试的方案】
ESXi下的SCSI厚置备、置零硬盘
ESXi下的SATA厚置备、置零硬盘
ESXi下的SATA厚置备、延迟置零硬盘
ESXi下的SATA精简置备硬盘
群晖提供的iSCSI磁盘
群晖提供的SMB共享
群晖提供的NFS共享
接下来,我们按照解决疑问的方式一步步给出测试数据。
【SCSI有必要吗?】(方案1、2对比)
ESXi创建Windows虚拟机,会默认采用SCSI控制器。而我们一般家用主机,基本都是用SATA控制器的,SCSI一般只会在服务器上见到。是不是SCSI比SATA更高级呢?
理论上,SCSI会占用较少的CPU、有更好的扩展性,但硬件要求较高,所以家用很少用到。我们还是看看实测数据:
SATA(厚置备,置零)硬盘读取
SATA(厚置备,置零)硬盘写入
SCSI(厚置备,置零)硬盘读取
SCSI(厚置备,置零)硬盘写入
SATA(厚置备,置零)硬盘:读取58.9MB/s 写入47.8MB/s cpu平均2.8%
SCSI(厚置备,置零,半虚拟)硬盘:读取57.6MB/s 写入44.9MB/s cpu平均2.5%
(主机硬盘直接读取测试72MB/s)
为了方便对比,两块硬盘全都是厚置备、置零的配置。测得的速度相差不大,甚至SCSI还略低一丢丢。CPU占用SCSI略低一丢丢。考虑到测试有误差,可以认为两者的性能数据几乎一样。看来软件模拟出来的SCSI、SATA性能差别不大,跟硬件SCSI、SATA的情况可能不一样。我个人偏向于使用SATA,因为平时主机就是SATA,兼容问题少(半虚拟的SCSI安装Windows需要额外驱动)。
【延迟置零有什么效果?】(方案2、3对比)
顾名思义,延迟置零可以把磁盘的置零操作延后,节省了创建虚拟机的时候卡住的那几秒或几分钟时间。实测在我这个烂硬盘上创建一个2G的置零磁盘差不多要1分多钟。我们来看看设置了延迟置零的硬盘的测试数据:
SATA(厚置备,延迟置零)硬盘第一次读取
SATA(厚置备,延迟置零)硬盘第一次写入
SATA(厚置备,延迟置零)硬盘第二次读取
SATA(厚置备,延迟置零)硬盘第二次写入
SATA(厚置备,延迟置零)硬盘第一次:读取1517.5MB/s 写入11.7MB/s
SATA(厚置备,延迟置零)硬盘第二次:读取58.5MB/s 写入48.8MB/s
SATA(厚置备,置零)硬盘:读取58.9MB/s 写入47.8MB/s (前面有数据截图)
第一次读取速度简直逆天!细想一下,很正常嘛,未置零的部分直接返回0就可以了,根本不需要真正的磁盘IO。再想一下,这个速度快有用吗?正常软件根本就不应该去读取硬盘的未初始化区域,总要先写入数据再读取才对。而第一次的写入速度就会比较悲剧了,因为写入的同时又要处理延迟置零,所以写入速度成倍下降。第悄桥二次读取、写入速度才是长期使用后磁盘的速度。
结论:延迟置零会降低初次写入磁盘的性能,长期使用影响不大。从我个人而言,无所谓建立虚拟机的时候等几分钟,所以我还是不会选择延迟置零。
【精简置备划算吗?】(方案2、4对比)
精简置备是一个省硬盘空间的好办法,初期建立的虚拟磁盘文件会很小,随着写入数据而逐渐变大。(这里有人可能会疑惑,为什么精简置备没有区分置零和延迟置零?因为精简备至只能延迟置零了。换个角度:如果做了置零,也就不是精简置备了。)我们看看精简置备的性能数据:
SATA(精简置备)硬盘第一次读取
SATA(精简置备)硬盘第一次写入
SATA(精简置备)硬盘第二次读取
SATA(精简置备)硬盘第二次写入
SATA(精简置备)硬盘第一次:读取1639.6MB/s 写入12.2MB/s
SATA(精简置备)硬盘第二次:读取58.9MB/s 写入47.9MB/s
SATA(厚置备,置零)硬盘:读取58.9MB/s 写入47.8MB/s (前面有数据截图)
同样,第一次读取的速度是逆天的,第一次写入的数据是悲催的,原因跟延迟置零一样。结论似乎也是一样:是否精简置备对长期使用的性能影响较小。但是我的实际使用经验是,拿Windows这种操作系统跑精简置备的话,精简备至后期的实际性能要低于测试值。猜测原因可能是杂乱的磁盘使用导致虚拟磁盘文件出现大量碎片。
【iSCSI能有多快?】(方案5)
如果你的虚拟系统中包含一个nas虚拟机,比如群晖,那么让nas提供一个iSCSI网络硬盘给目标虚拟机用也是个不错的选择。看看测试数据:
群晖iSCSI(厚置备)读取
群晖iSCSI(厚置备)写入
群晖iSCSI(厚置备)网络硬盘:读取177.0MB/s 写入191.5MB/s
(单个原生盘的读取速度180MB/s,这里是双盘组了软raid 0)
这组数据已经跟之前的方案没有可比性了,因为基于的物理硬盘不一样。不过从这个数据可以看出,iSCSI的读写速度已经比较令人满意了。实际长期使用较稳定,没有任何问题。有点遗憾的是理论上组了raid 0可以速度达到单盘的2倍,但这个才勉强1倍,不确定是软raid不太行还是什么原因(iperf3测试网络5G多速率)。有知道的老哥还请不惜赐教。
【SMB共享能做磁盘吗?】(方案5、6对比)
iSCSI的方案我用了厚置备以提升性能,但是这会带来很大的磁盘空间浪费。而且iSCSI一般不方便同时共享给多方使用。所以,我试了试把SMB(Samba)共享映射为驱动器。对比方案5测得的性能数据如下:
iSCSI磁盘读写
SMB共享读写
iSCSI磁盘:读取713MB/s 写入267MB/s
SMB共享:读取1143MB/s 写入297MB/s
因为HD Tune无法测试网络共享,所以只能换了CrystalDiskMark来测试,但后者的测试不那么准确,受缓存等影响较大。看起来SMB的读取速度会高于iSCSI,有点超出我认知。可能主要还是缓存影响了这部分数据。SMB共享因为是文件级的,可能受到了更多的缓存加速?
不过SMB在实际使用中并不稳定,而且还有两个问题:
一是不能做系统盘。因为SMB共享是在系统启动后加载的,而iSCSI磁盘的加载甚至可以从BIOS引导开始(设置有点麻烦,我没实验了)。
二是碎文件读写非常慢。
【NFS共享更快吗?】(方案6、7对比)
简单测试看不出差异,就不献丑了。直接借用别人的结论:
NFS在碎文件多的时候性能显着高于SMB,大文件速度跟SMB不相上下。想看详细对比数据直接看老外的研究(也是基于群晖): Network share: Performance differences between NFS & SMB
但这个测试结果不是在Windows上得出的。我在Windows上的实际使用速度还远不及SMB,而且有不稳定的状况,经常卡住。
【结论】
需要稳定高性能的话,可以采用虚拟SATA、厚置备、置零硬盘。
如果需要节省空间,则考虑虚拟精简置备硬盘。
如果有NAS,可以用NAS做一个iSCSI硬盘,稳定度和速度都较好。
爱折腾的也可以试试SMB或NFS共享,如果能解决Windows下稳定性问题还请指点一下。
② 如何设置vmware esxi的网卡
可通过以下步骤设置vmware esxi的网卡:
1、启动vmware esxi系统,PC安装vmware esxi的vmware vSphere管理工具,网卡1作为vmware esxi的管理端口,网卡2作为vmware esxi的网络数据传输接口,启动vmware vSphere管理工具,输入网卡1的管理IP地址、用户名、密码,点击登录;
2、点击管理地址,右边点击配置选项卡,找到网络,在网卡2上创建一个虚拟Trunk口,允许所有VLAN都通过,在网卡2设置页面下点击右面的"属性"选项;
3、在网卡2属性页面下点击添加按钮,在网卡2的属性中点击添加按钮后会显示网卡设置添加向导,选择"VMkernel",建立一个端口组,点击下一步;
4、在端口组属性设置页面下输入网络标签,这个标签是自定义的,VLAN ID选择"全部",其他保持默认,点击下一步,在IP连接设置页面下选择自动获取IP地址,点击下一步,点击完成,虚拟Trunk口就创建完成;
5、在网卡2的属性页面下点击添加,在网络向导页面下选择"虚拟机",点击下一步。在虚拟机里连接设置页面下输入网络标签,点击下一步,再点击完成;
6、配置好交换机的Trunk接口并且UP起来即可,登陆交换机找到跟服务器连接的接口,配置成Trunk模式,并且允许VLAN都在Trunk接口上通过,这样vmware esxi的网卡即设置成功了。
③ ESXi5.1嵌套KVM虚拟机如何设置
记得以前就有人问过 “能让冲不能在一个虚拟机上运行虚拟机”,答案当然是可以的,Xen HVM, KVM,VMware, Qemu 等 Hypervisor 都可以这样嵌套虚拟,不过由于性能低下实际用处不大。在 VMware ESXi虚拟机上运行虚拟机,被称为多层虚拟或者嵌套虚拟机(Nested VMs)。如果只有一台电脑想测试多节点 OpenStack 环境的话,使用 VMware ESXi 虚拟几个运行 KVM Hypervisor 的 OpenStack 计算节点是个不错的办法。VMware ESXi 5.0 默认情况下不支持嵌套虚拟,所以在 VMware ESXi 虚拟机里安装完KVM 以后会发现 KVM 虽然能装但不可用:
# kvm-ok
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
解决办法很坦友歼简单:1、修改 VMware ESXi 的设置;2、修改对应虚拟机的设置。
登陆 VMware ESXi 控制台打开 VMware ESXi 5.0 的 SSH 服务(默认 SSH 服务是关闭的),然后用 ssh 登陆 VMware ESXi 后在 config 文件中最后加入 vhv.allow = “TRUE” 一行:
# vi /etc/vmware/config
libdir = "/usr/lib/vmware"
authd.proxy.vim = "vmware-hostd:hostd-vmdb"
authd.proxy.nfc = "vmware-hostd:ha-nfc"
authd.proxy.nfcssl = "vmware-hostd:ha-nfcssl"
authd.proxy.vpxa-nfcssl = "vmware-vpxa:vpxa-nfcssl"
authd.proxy.vpxa-nfc = "vmware-vpxa:vpxa-nfc"
authd.fullpath = "/sbin/authd"
authd.soapServer = "TRUE"
vmauthd.server.alwaysProxy = "TRUE"
vhv.allow = "TRUE"
重启 VMware ESXi 后编辑虚拟机选项(需要先关闭虚拟机),打开 Edit virtual machine settings 对话框,在 options 页面的 General Options 选项里把 Guest Operating System 的类型换成 Other 里面的VMware ESxi 5.x,如图:
最后启动虚拟机后再 kvm-ok 一下就可以看到 KVM 可以用了:
虚拟机网络中的ip地址的配置,都是类似的。
你可以参考:
【整理】Virtualbox中的网络类型(NAT,桥接等),网卡,IP地址等方面的设置
一般都是网卡设置为NAT或告段桥接,然后虚拟机里面的ip,多数都是可以直接设置好,就可以用了。
(此处不给贴地址,请自己用google搜帖子标题,即可找到帖子的地址)
④ 服务器中的vmware esxi 5.5里面建了几个虚拟机,特别卡,为什么
(1)用鼠标右键单击连接到的VMware ESXi的计算机名称或IP地址,在弹出的快捷菜单中选择“新建虚拟机”选项,或者按“Ctrl+N”热键,如图1所示。
(2)在“配置”对话框中,选择“自定义”。
(3)在“名称和位置”对话框,在“名称”文本框中,输入要创建的虚拟机的名称,如Win8.1,如图2所示。在VMware ESXi与vCenter Server中,每个虚拟机的名称最多可以包含80个英文字符,并且每个虚拟机的名称在vCenter Server虚拟机文件夹中必须是唯一的。在使用vSphere Client直接连接到VMware ESXi主机时无法查看文件夹,如果要查看虚拟机文件夹和指定虚拟机的位置,请使用VMware vSphere连接到vCenter Server,并通过vCenter Server管理ESXi。
· 说明:通常来说,创建的虚拟机的名称与在虚拟机中运行的操作系统或者应用程序有一定的关系,在本例中创建的虚拟机名称为Win8.1,表示这是创建一个Windows 8.1的虚拟机,并在虚拟机中安装Windows 8.1的操作系统。
(4)在“数据存物碰嫌储”对话框中,选择要存储虚拟机文件的数据存储,当前只有一个存储,如图3所示。在该列表中,显示了当前存储的容量、已经使用的空间、可用的空间、存储的文件格式。
(5)在“虚拟机版本”罩手对话框中,选择虚拟机的版本。在VMware ESXi 6的服务器中,可以支持的最高版本是11。在VMware ESXi 5.5支持“虚拟机版本:10”,但在创建虚拟机的对话框中没有。如果你需要“虚拟机版本:10”,则可以在创建虚拟机后,通过升级硬件的方式,将虚拟机 版本升级到10。而在vSphere Client 6中,则可以直接创建硬件版本4、7~11的虚拟机。并且在9、10、11每个版本后面声明了所选版本需要的ESXi 的版本号。如下图:
(6)在“客户机操作系统”对话框中,选择虚拟机要运行的操作系统,如下图所示。这与VMware Workstation、VMware Server相类似。在本示例中选择“Windows 8(32位)”。
从列表中可以看到,因为Windows下一代服务器产品的名称还没有正式定(估计应该是2015),所以列表中用20XX代替。另外,从列表中出现了 Windows 9,我们已经知道,Microsoft已经跳过了Windows 9直接到了Windows 10,估计VMware ESXi 6会在正式版中更正这个提示。
(吵敬7)在“CPU”对话框中,选择虚拟机中虚拟CPU的数量,在VMware ESXi 5的硬件版本中,虚拟机中虚拟CPU的内核总数(虚拟插槽数×每个虚拟插槽的内核数)最多为32,但这受限于主机的CPU数量。为虚拟机中分配的虚拟 CPU的数量不能超过主机的CPU数量,例如在写作本章时,作者所用的服务器是具有2个4核心的CPU,则在创建虚拟机时,为虚拟机中分配虚拟CPU的数量不能超过2(虚拟插槽数),如下图所示。
在为虚拟机选择内核数时,不会超过VMware ESXi所在主机的CPU内核总数,例如,当在一个具有2个4核心的CPU主机上,创建虚拟机时,每个虚拟插槽的内核数不会超过4个。
说明:VMware Workstation 11所支持的虚拟机硬件版本的上限:64 GB 内存、16 个处理器、8 TB 磁盘大小,VMware ESXi 6的硬件版本应该不会等于或高于这个参数。
(8)在“内存”对话框中,配置虚拟机的内存大小,在默认情况下,向导为用户分配的一个合适的大小,在本例中为Windows 8.1的虚拟机默认会分配1GB的内存,如图:
(9)在“网络”对话框中,为虚拟机创建网络连接,如下图所示。在VMware ESXi中的虚拟机,最多支持4个网卡。在VMware ESXi 6中,虚拟网卡支持Intel E1000E、E1000或 VMXNET 3型网卡。当VMware ESXi主机有多个网络时,可以在“网络”列表中选择。
(10)在“SCSI控制器”对话框中,选择要使用的SCSI控制器类型,可以在“BusLogin”、“LSI逻辑并行”、“LSI Logic SAS”、“VMware准虚拟”之间选择,通常情况下,选择默认值“LSI Logic SAS”即可。
(11)在“选择磁盘”对话框,为虚拟机创建虚拟硬盘,这与VMware Workstation相类似,在此选择“创建新的虚拟磁盘”。
· 说明:与VMware Workstation可以直接使用主机物理硬盘相类似,在VMware ESXi中,可以直接使用“裸机映射”磁盘。
(12) 在“创建磁盘”对话框中,设置新创建的虚拟磁盘的容量及置备参数。如果想让虚拟机“按需分配磁盘空间”,请选择“Thin Provision”;如果想让虚拟磁盘按照“磁盘大小”立刻分配空间,可以选择“厚置备延迟置零”或“厚置备置零”两种磁盘,如下图所示。厚置备磁盘具有更好的性能,但会占用过多的磁盘空间,通常情况下,对于需要使用数据库系统的虚拟机,选择厚置备磁盘(非SSD存储);对于大多数的应用来说,选 择“Thin Provision”即可,如果虚拟机保存在SSD(固态硬盘)存储上,则不要选择“厚置备”磁盘,在SSD存储上使用“Thin Provision”即可获得更好的性能。通常来说,为Windows 7、Windows 8的虚拟机分配60GB即可满足系统的需求。在此设置为16GB。
(13)在“高级选项”中,指定虚拟磁盘的高级选项与工作模式,如无必要,不要更改,如下图:
· 说明:“独立”磁盘模式不受快照影响,如果在一个虚拟机系统中,有多个虚拟硬盘时,在创建快照或者从快照中恢复时,选中为“独立”磁盘模式的虚拟硬盘保持不变, 在VMware ESXi虚拟机中,“独立”磁盘有两种模式:“独立—持久”与“独立—非持久”。持久模式磁盘的行为与物理机上常规磁盘的行为相似。写入持久模式磁盘的所 有数据都会永久性地写入磁盘,而对于“独立—非持久”模式的虚拟机关闭虚拟机电源或重置虚拟机时,对非持久模式磁盘的更改将丢失。使用非持久模式,您可以每次使用相同的虚拟磁盘状态重新启动虚拟机,对磁盘的更改会写入重做日志文件并从中读取,重做日志文件会在虚拟机关闭电源或重置时被删除。
(14)在“即将完成”对话框中,查看当前新建虚拟机的设置,然后单击“完成”按钮,如下图所示,如果你要想进一步修改虚拟机设置,可以选中“完成前编辑虚拟机设置”复选框。
(16)启动虚拟机,如下图所示:
(17)加载本地ISO镜像安装。
(18)因为我们实验环境中,为Windows 8.1分配了16G硬盘,所以安装的是Windows embedded 8.1 instry enterprise x86的版本,如下图所示:
(19)最后,在VMware Workstation中创建了个Windows 2012 R2的虚拟机。
⑤ 如何在VMware ESXi上构建冗余网络
摘要:VMware的默认配置提供了一个工作网络,但想抵御网络接口故障,需要创建冗余网络。 VMware的默认配置提供了一个工作网络,但想抵御网络接口故障,需要创建冗余网络。
WMware网络配置
VMware网络由许多层构成,最底层是物理网卡。在vSphereClient的“网络适配器”选项卡下能够找到物理网卡。
图1:物理网卡被添加到“网络适配器”选项卡中
虚拟化交换机位于物理网卡层之上,默认情况下,发现一个被称为vSwitch0的虚拟交换机,查看虚拟交换机是否被连接到正确的网卡上:“网络适配器”选项卡下的每个物理网卡都列出了观测的IP地址范围,这些IP地址在连接的网段能够被检测到。利用这个信息,你就能够确保物理网卡以及相关的交换机连接到了正确的网络。
虚拟机主机之上的虚拟交换机的用法与物理网络中的物理交换机类似。这意味着几个虚拟机能够连接到一个交换机上。“网络”选项卡提供了当前配置的概况。
图2:网络选项卡显示现有虚拟网络的概况
创建冗余网络
默认安装时,只有一块物理网卡连接到虚拟交换机。为确保网络冗余,你应该添加另一块物理网卡组成网卡组。
单击“配置”选项卡,再选择“网络”,单击虚拟交换机配置左侧的“属性”链接。打开vSwitch0属性窗口。选择正确的“属性”链接,因为网络选项卡有两个属性链接。(不要选择右上角的链接)
图3:配置虚拟交换机属性
点击vSwitch0属性窗口中的“网络适配器”选项卡,显示当前连接到虚拟交换机的网卡。(默认情况下只有一块网卡连接到虚拟交换机)。选择“添加”按钮,打开增加适配器向导。
图4:通过增加适配器向导,你可以选择额外的网卡,连接到当前的虚拟交换机。 在增加适配器向导中,列出了几块网络网卡。如果物理网络已经正确设置,所需的网卡将和连接到虚拟交换机的网卡一样在相同的IP子网中。
很容易识别出一块网卡是否具有相同的IP子网配置。选择一块网卡,然后选择“下一步”,如果你没有看到具有正确地址分配的网卡,这块网卡可能没有连接到合适的物理网络。在这种情况下,进行下一步操作前需要调整网络中的物理连接。
现在你将看到故障切换顺序策略窗口,你可以指定哪块配置为主网卡或者是备用网卡。为了达到最优性能,VMware默认提供了两个主网卡,这将网络带宽提高了一倍,同时实现了容错。
如果你想将网卡配置为备用网卡,选择它然后向下拖动,把它放到备用网卡之下,做出选择后,单击“下一步”,在最后的窗口中,单击“完成”按钮完成配置。
图5:当多块物理网卡连接到虚拟交换机时,将它们都设置为主网卡以达到最佳的性能。
你将返回到主界面,将有两块网卡连接到虚拟交换机上。在网络接口上创建了一个网络冗余级别。
图6:两块网卡连接到了虚拟交换机,提供了网络冗余
现在到了测试网络冗余的时候:在管理工作站上,持续的pingVMware主机的管理接口,物理拔掉一块网卡的网线,你应该看到ping包一直在发送,并没有任何问题。同时,中断的物理网卡在vSphereClient网络接口中被标注为故障。恭喜,你的网络冗余测试已经成功了。
图7:如果网卡故障,流量将在冗余网络中继续传输。