多年来,VMware提供了VDDK来与其磁盘子系统一起使用,这是一组庞大的库,文档和代码示例,您的应用程序可以使用它们来与虚拟机磁盘一起使用。当然,在Veeam,我们真的不喜欢重新发明不必要的自行车,因此VDDK在我们的产品中非常活跃。
但这仍然不会影响认为使用磁盘可以更快的客户机数量,并且所有建议的性能测试都会先验地显示错误的结果。正是在这样的时刻,最终的武器才对我们有所帮助-VixDiskLibSample。
VixDiskLibSample是VDDK中包含的一个小型C ++程序,它演示了使用vixDiskLib库的原理,也就是说,没有人会比它更好,更快地使用虚拟机磁盘。对于我们来说特别重要的是,它可以用作写作和阅读的基准。一种最后通test测试,其结果很难被认为是无效的。
您可以将它与VDDK一起使用。从VMware网站下载它;对于Linux,只需在安装后进行编译
[root@toor diskLib] cd /usr/lib/vmware-vix-disklib/doc/samples/diskLib
[root@toor diskLib] ls
Makefile vixDiskLibSample.cpp
[root@toor disklib] make
[root@toor diskLib] ls
Makefile vix-disklib-sample vixDiskLibSample.cpp
默认安装路径。
/usr/share/doc/vmware-vix-disklib/samples/disklib
在网络上也有信息,在某些发行版中,需要将以下行添加到vixDiskLibSample.cpp中才能成功编译:
#else
#include <stdio.h>
#include <string.h>
如果仍然在这种情况下,不进行编译,则建议尝试添加环境变量LD_LIBRARY_PATH = / usr / lib目录/ VMWare的VIX-disklib / lib64目录并运行ldconf添加地址后,为根/ usr / lib目录/ VMWare的VIX-disklib / lib64下到/etc/ld.so.conf.d/vmware-vix-disklib.conf
但是,在Visual Studio中的Windows下,所有内容都可以毫无问题地进行编译。还有给女主人的注释:Veeam中的VDDK仅在通过Windows代理工作时使用。在Linux上,由于多种原因,它使用vSphere API使用自己的解决方案。
您问Veeam用户如何?
我们回答:通过连接Veeam Backup&Replication随附的不同版本的VDDK库,您可以在多种模式下检查主机的真实工作速度。
库存储在C:\ Program Files(x86)\ Veeam \ Backup Transport \ x64 \ vddk_X_X中,必须使用它们才能获得正确的结果。
现在,让我们看看启动时对我们来说最重要的命令和选项。与所有测试工具一样,此处的完整列表非常非常小。
-readbench以指定的块大小运行读取基准。大小以扇区表示。
-writebench一切都一样,只不过是写作而已。重要:这是破坏性的操作!录音很公平!不要尝试启动生产机器!它将被二进制垃圾覆盖!
-multithread N自6.5版以来,可以并行使用以处理多个磁盘。
-host连接的主机。它可以采用DNS名称或IP的形式。
-user根据域\用户
方案使用的用户-password我认为很清楚
-vm vmPath = / path /到/ vm这是如果我们知道我们的计算机所在的位置,但是我们不知道它的其他坐标
-vm“ moref = vm-XXX”的路径库存中的汽车。他是moref。找到它的最简单方法是通过以下位置的MOB:https://vcenter.local/mob/ 重要说明:如果您只有一个没有vCenter的寂寞主机,请使用moref = XXX,而不要使用vm
-ssmoref链接到您的计算机快照,因为您知道从磁盘读取数据是一回事,而当快照成为您的方式时则是另一回事。或几个快照。包括的计算机的必需参数(以及快照本身)。
-mode一个参数,指示使用磁盘的模式。引用VixDiskLib_ConnectEx。可用值为nbd,nbdssl,san和hotadd。所有这些都是我们的用户所熟知的。
-libdir库文件夹的路径。默认情况下,它应该是“ C:\ Program Files(x86)\ Veeam \ Backup Transport \ x86 \ vddk_X_X”。如果使用独立主机,则可以将其留空。
-拇指在版本6.0中引入了用于指定SSL证书指纹的必需参数。没有它是行不通的。最简单的方法是在浏览器上进行监视;)-
initex configfile VixDiskLib_InitEx的配置文件的路径
默认情况下,详细的日志会写入
C:\ Users \当前用户\ AppData \ Local \ Temp \ vmware-current用户\ vixDiskLib-####文件夹。日志
为了让您的生活更轻松,我强烈建议您在以san和hotadd模式运行的每个测试之后清空此文件夹。并使用控制台关闭窗口(我的意思是Windows cmd,而不是Linux)。这是由于VDDKEndAccess函数的特殊性,如果通过Ctrl + C停止测试,并且测试磁盘仍连接到所选计算机,则不会调用该函数。
现在我们已经完成了一般性理论,请转到本节。
实践
一般的启动语法如下所示
vixdisklibsample.exe command [options] diskPath
在最简单的情况下,我们可以通过指定主机的名称,登录名,密码和所需计算机的路径来连接到主机。
C:\VDDK\bin>vixDiskLibSample.exe -info -host demo -user root -password secret [datastore1] test/test.vmdk
-info将显示所选驱动器的DiskPath。
如果主机已连接到vCenter,则必须添加-libdir和-vm选项。在VDDK> 6.0的情况下,请不要忘记-thumb
C:\VDDK\bin>vixDiskLibSample.exe -info -host demo -user Administrator -password secret -thumb "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" -libdir "C:\Program Files (x86)\Veeam\Backup Transport\x86\vddk_X_X" -vm vmPath=Datastorage/vm/DemoVM "[datastore1] DemoVM/Demo.vmdk"
然后有趣的事情开始了:我们指定-mode和-ssmoref。我强烈建议使用快照进行所有测试,以免意外损坏原始磁盘。请记住:写测试是一种破坏性的操作!它实际上是在写数据,而不是在模拟过程!
另一方面,我也不能禁止任何事情。
因此,我们在Hotadd模式下运行写测试
C:\VDDK\bin>vixDiskLibSample.exe -writebench 1024 -host demo.local -user "demo\adm" -password "%TOPSECRET%" -vm "moref=vm-80380" -ssmoref "snapshot-82782" -thumb "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"
-mode hotadd -libdir "C:\Program Files (x86)\Veeam\Backup Transport\x86\vddk_6_0" "[datastore1] test/test.vmdk"
appGlobals.port902VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Disk "[datastore1] test/test-000001.vmdk" is open using transport mode "hotadd".
ReadFlag : 0
Processing 10240 buffers of 1048576 bytes.
Wrote 64 MBytes in 2699 msec (23 MBytes/sec)
Wrote 64 MBytes in 2667 msec (23 MBytes/sec)
Wrote 64 MBytes in 687 msec (93 MBytes/sec)
Wrote 64 MBytes in 608 msec (105 MBytes/sec)
Wrote 64 MBytes in 687 msec (93 MBytes/sec)
...
Wrote 64 MBytes in 795 msec (80 MBytes/sec)
Wrote 64 MBytes in 749 msec (85 MBytes/sec)
Wrote 64 MBytes in 1326 msec (48 MBytes/sec)
Wrote 64 MBytes in 2465 msec (25 MBytes/sec)
Wrote 64 MBytes in 2449 msec (26 MBytes/sec)
Wrote 10240 MBytes in 141040 msec (72 MBytes/sec)
Deleted directory C:\Users\ADMINI~1\AppData\Local\Temp\2\vmware-Administrator\4206be79-cfef-4175-51a5-6e7c0900591b-vm-80380\hotadd
对于SAN模式,所有内容都是相同的,但是请记住,对于此测试,cmd必须以管理员权限运行,否则您将收到错误消息“您没有对此文件的访问权限”和“没有设备LVID的路径”。
如果要在Direct SAN模式下测试恢复选项,则需要在HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ VMware,Inc. \ volatile \ UUIDHost分支中指定伪造的UUID。
现在,让我们尝试在nbd模式下运行读取速度测试。
C:\VDDK\bin>vixDiskLibSample.exe -readbench 1024 -host demo.local -user "demo\adm" -password "%TOPSECRET%" -vm "moref=vm-80380" -ssmoref "snapshot-82782" -thumb "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" -ssmoref "snapshot-82782"
-mode nbd -libdir "C:\Program Files (x86)\Veeam\Backup Transport\x86\vddk_6_0" "[datastore1] test/test.vmdk"
appGlobals.port902VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Disk "[datastore1] test/test.vmdk" is open using transportmode "nbd".
ReadFlag : 4
Processing 20480 buffers of 524288 bytes.
Read 64 MBytes in 2293 msec (27 MBytes/sec)
Read 64 MBytes in 2153 msec (29 MBytes/sec)
Read 64 MBytes in 1747 msec (36 MBytes/sec)
Read 64 MBytes in 2013 msec (31 MBytes/sec)
Read 64 MBytes in 2823 msec (22 MBytes/sec)
…
如果要提供实际负载,请随时为多个磁盘运行-readbench或-writebench。但是为此,您需要VDDK 6.5或7.0
C:\VDDK\bin\vixDiskLibSample.exe" -readbench 1024 -host "10.0.0.1" -user "AD\user" -password "****" -vm "moref=vm-1" -ssmoref "snapshot-100" -thumb "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" -mode san -libdir "C:\Program Files (x86)\Veeam\Backup Transport\x64\vddk_6_5" -initex "C:\VDDK60\initex.txt" "[Datastore01] VM/VM.vmdk" "[Datastore01] VM/VM_1.vmdk" "[Datastore01] VM/VM_2.vmdk" "[Datastore01] VM/VM_3.vmdk
最后,让我们看看使用-info可以获取有关虚拟磁盘的哪些信息
C:\VDDK\bin>vixDiskLibSample.exe -info -host demo.local -user "demo\adm" -password "%TOPSECRET%" -vm "moref=vm-80380"
-ssmoref "snapshot-82787" -thumb "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" -mode nbd -libdir "C:\Program Files (x86)\Veeam\Backup Transport\x86\vddk_6_0" "[datastore1] test/test.vmdk"
appGlobals.port902VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Disk "[datastore1] test/test.vmdk" is open using transport mode "nbd".
capacity = 20971520 sectors
number of links = 1
adapter type = LsiLogic SCSI
BIOS geometry = 0/0/0
physical geometry = 1305/255/63
Transport modes supported by vixDiskLib: file:san:hotadd:nbdssl:nbd
顺便说一句,如果您突然不想冒险使用真实计算机上的真实磁盘,则可以在此处创建它们。的确,通过-create不能立即在主机上创建磁盘,但是-clone选项可以帮助我们。-cap参数设置大小(以兆字节为单位),这在Linux机器上更方便。
./vix-disklib-sample -create -cap 1024 newdisk.vmdk
./vix-disklib-sample -clone virtdisk.vmdk –host demo.local –user root –password TOP_SECRET newdisk.vmdk
这结束了我快速浏览VixDiskLibSample的广泛可能性的世界。是的,在某些地方该实用程序有点笨拙,其输出也不是很方便。但是,您始终可以根据自己的需要制作自己的东西,这将使您能够优雅地解决自己的问题,而无需发明自行车和使用不明显的层。
最后还有一些有用的链接:
- 可以从此链接下载VDDK的任何版本。默认情况下,系统会为您提供7.0,但是从上方您可以至少切换到5.1
- VDDK.