VixDiskLibSample: prueba los discos virtuales correctamente

Cuando nos enfrentamos a un determinado producto de software con el que tenemos que interactuar, somos libres de elegir el escenario de interacción nosotros mismos. Puede reinventar heroicamente la rueda, o puede esperar que los autores conozcan su producto un poco mejor que nosotros, por lo que la API (o conjunto de bibliotecas) que proporcionan es la solución óptima. En la práctica, lamentablemente, no todo es tan optimista, pero hoy no se trata de eso.



Durante muchos años, VMware ha proporcionado el VDDK para trabajar con su subsistema de disco, un extenso conjunto de bibliotecas, documentación y ejemplos de código que su aplicación puede usar para trabajar con discos de máquinas virtuales. Por supuesto, en Veeam, realmente no nos gusta reinventar bicicletas innecesarias, por lo que VDDK se usa de manera muy activa en nuestros productos.



Pero esto aún no afecta de ninguna manera a la cantidad de clientes que creen que trabajar con discos puede ser aún más rápido, y todas las pruebas de rendimiento propuestas muestran resultados incorrectos a priori. Es en esos momentos cuando el arma definitiva viene en nuestra ayuda: VixDiskLibSample.







VixDiskLibSample es un pequeño programa C ++ incluido en el VDDK y demuestra los principios de trabajar con la biblioteca vixDiskLib, es decir, nadie trabajará con discos de máquinas virtuales mejor y más rápido que él. Y lo que es especialmente importante para nosotros, se puede utilizar como punto de referencia para la escritura y la lectura. Una especie de prueba de ultimátum, cuyos resultados difícilmente pueden considerarse inválidos.



Puede obtenerlo junto con el propio VDDK. Descárguelo del sitio web de VMware y, en el caso de Linux, simplemente compílelo después de la instalación.



[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


La ruta de instalación predeterminada.

 

/usr/share/doc/vmware-vix-disklib/samples/disklib


También hay información en la red que en algunas distribuciones necesita agregar las siguientes líneas a vixDiskLibSample.cpp para una compilación exitosa:



#else
#include <stdio.h>
#include <string.h>


Si no se compila en este caso, se recomienda intentar agregar la variable de entorno LD_LIBRARY_PATH = / usr / lib / vmware-vix-disklib / lib64 y ejecutar ldconf como root después de agregar la dirección / usr / lib / vmware-vix-disklib / lib64 a /etc/ld.so.conf.d/vmware-vix-disklib.conf



Pero bajo Windows en Visual Studio todo se compila sin problemas. Y una nota para la anfitriona: VDDK en Veeam se usa solo cuando se trabaja a través de un proxy de Windows. En Linux, por varias razones, usa su propia solución usando la API de vSphere.  



¿Qué pasa con los usuarios de Veeam?



Respondemos: al conectar las bibliotecas VDDK de diferentes versiones que vienen con Veeam Backup & Replication, puede verificar la verdadera velocidad de trabajo con el host en una amplia variedad de modos.



Las bibliotecas se almacenan en C: \ Archivos de programa (x86) \ Veeam \ Backup Transport \ x64 \ vddk_X_X , y su uso es obligatorio para obtener resultados correctos.



Ahora echemos un vistazo a los comandos y opciones más importantes para nosotros al inicio. Porque, como con todas las herramientas de prueba, la lista completa aquí es muy, muy pequeña.



-readbench Ejecuta la prueba comparativa de lectura con el tamaño de bloque especificado. El tamaño se indica en sectores. 

 -writebench Todo es igual, solo escritura. Importante:¡Esta es una operación destructiva! ¡La grabación es justa! ¡No intente poner en marcha una máquina de producción! ¡Se sobrescribirá con basura binaria!

-multithread N Desde la versión 6.5, se puede utilizar en paralelo para trabajar con varios discos.

-host Host para conectarse. Puede tener la forma de un nombre DNS o IP.

-user Usuario de acuerdo con el

esquema de dominio \ usuario -password Creo que está clara 

-vm vmPath = / path / to / vm Esto es si sabemos dónde está nuestra máquina, pero no sabemos sus otras coordenadas

-vm "moref = vm-XXX" Path to autos en inventario. El es masf. La forma más fácil de encontrarlo es a través de MOB en https: //vcenter.local/mob/ Importante:Si solo tiene un host solitario sin vCenter, use moref = XXX, sin vm

-ssmoref Enlace a una instantánea de su máquina, porque, como sabe, leer datos de discos es una cosa y otra cosa cuando una instantánea se interpone en su camino. O algunas instantáneas. Parámetro obligatorio (así como la instantánea en sí) para las máquinas incluidas.

-mode Un parámetro que indica el modo de trabajar con el disco. Se refiere a VixDiskLib_ConnectEx. Los valores disponibles son nbd, nbdssl, san y hotadd. Todos ellos son bien conocidos por nuestros usuarios.

-libdir Ruta a la carpeta de la biblioteca. El valor predeterminado debería ser "C: \ Archivos de programa (x86) \ Veeam \ Backup Transport \ x86 \ vddk_X_X". Si trabaja con un host independiente, puede dejarlo en blanco.

-pulgarIntroducido en la versión 6.0, un parámetro obligatorio para especificar una huella digital de certificado SSL. No funcionará sin él. La forma más fácil es espiar el navegador;)

-initex configfile Ruta al archivo de configuración para VixDiskLib_InitEx



Los registros detallados se escriben de forma predeterminada en la 

carpeta C: \ Users \ current user \ AppData \ Local \ Temp \ vmware-current user \ vixDiskLib - #### carpeta. log

Para una vida sin complicaciones, le recomiendo que vacíe esta carpeta después de cada ejecución de prueba en los modos san y hotadd. Y cierre la ventana con la consola (es decir, cmd de Windows, no Linux). Esto se debe a la peculiaridad de la función VDDKEndAccess, que no se llama si la prueba finaliza con Ctrl + C y los discos de prueba permanecen conectados a la máquina seleccionada. 



Ahora que hemos terminado con la teoría general, vaya a la sección



Práctica



La sintaxis de inicio general se parece a 



vixdisklibsample.exe command [options] diskPath


En el caso más simple, podemos conectarnos al host especificando su nombre, inicio de sesión, contraseña y ruta a la máquina deseada.



C:\VDDK\bin>vixDiskLibSample.exe -info -host demo -user root -password secret [datastore1] test/test.vmdk


-info mostrará el DiskPath de la unidad seleccionada.



Si el host está conectado a vCenter, se deben agregar las opciones -libdir y -vm. En el caso de VDDK> 6.0, no te olvides de -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"




Y entonces comienza la diversión: especificamos -mode y -ssmoref. Recomiendo encarecidamente hacer todas las pruebas con una instantánea, para no estropear accidentalmente el disco original. Y recuerde: ¡la prueba de escritura es una operación destructiva! ¡En realidad escribe datos, no simula el proceso!



Por otro lado, tampoco puedo prohibirte nada.



Entonces, ejecutamos la prueba de escritura en modo 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


Para el modo SAN, todo es igual, pero tenga en cuenta que para esta prueba cmd debe ejecutarse con derechos de administrador, de lo contrario recibirá los errores "No tiene derechos de acceso a este archivo" y "No hay ruta al dispositivo LVID".



Y si desea probar la opción de recuperación en modo Direct SAN, debe especificar el UUID falso en la rama HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ VMware, Inc. \ volatile \ UUIDHost.



Ahora intentemos ejecutar la prueba de velocidad de lectura en modo 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)


Si desea dar una carga real, no dude en ejecutar -readbench o -writebench para varios discos a la vez. Pero para eso necesitas VDDK 6.5 o 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


Finalmente, veamos qué información sobre los discos virtuales podemos obtener usando -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


Por cierto, si de repente no quiere arriesgar discos reales de máquinas reales, puede crearlos aquí. Es cierto que mediante -create no puede crear un disco inmediatamente en el host, pero aquí la opción -clone viene a nuestro rescate. El parámetro -cap establece el tamaño en megabytes, y esto es más conveniente en una máquina 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


Con esto concluye mi rápida excursión al mundo de las amplias posibilidades de VixDiskLibSample. Sí, en algunos lugares la utilidad es algo tonta y su salida no es muy conveniente. Sin embargo, siempre puedes hacer algo propio en base a él, lo que te permitirá resolver con elegancia tus problemas sin la invención de bicicletas y el uso de capas indistintas.



Y algunos enlaces útiles al final:



  • Cualquier versión del VDDK se puede descargar desde este enlace . De forma predeterminada, se le ofrecerá 7.0, pero desde arriba puede cambiar al menos a 5.1
  • VDDK.



All Articles