VixDiskLibSample: tester correctement les disques virtuels

Lorsque nous sommes confrontés à un certain logiciel avec lequel nous devons interagir, nous sommes libres de choisir nous-mêmes le scénario d'interaction. Vous pouvez réinventer héroïquement la roue, ou vous pouvez espérer que les auteurs connaissent un peu mieux leur produit que nous, donc l'API (ou l'ensemble de bibliothèques) qu'ils fournissent est la solution optimale. Dans la pratique, malheureusement, tout n’est pas si rose, mais ce n’est pas le cas aujourd’hui.



Pour travailler avec son sous-système de disque, VMware fournit le VDDK depuis de nombreuses années, un vaste ensemble de bibliothèques, de documentation et d'exemples de code que votre application peut utiliser pour travailler avec des disques de machine virtuelle. Bien sûr, chez Veeam, nous n'aimons vraiment pas réinventer les vélos inutiles, c'est pourquoi le VDDK est utilisé très activement dans nos produits.



Mais cela n'affecte toujours pas le nombre de clients qui pensent que travailler avec des disques peut être encore plus rapide, et tous les tests de performances proposés montrent des résultats incorrects a priori. C'est à de tels moments que l'arme ultime vient à notre aide - VixDiskLibSample.







VixDiskLibSample est un petit programme C ++ inclus dans le VDDK et démontre les principes de travail avec la bibliothèque vixDiskLib, c'est-à-dire que personne ne fonctionnera mieux et plus rapidement avec des disques de machine virtuelle. Et ce qui est particulièrement important pour nous, il peut être utilisé comme référence pour l'écriture et la lecture. Une sorte de test d'ultimatum dont les résultats peuvent difficilement être qualifiés d'invalides.



Vous pouvez l'obtenir avec le VDDK lui-même. Téléchargez-le depuis le site Web de VMware et, dans le cas de Linux, compilez-le simplement après l'installation



[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


Le chemin d'installation par défaut.

 

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


Il existe également des informations sur le réseau selon lesquelles sur certaines distributions, vous devez ajouter les lignes suivantes à vixDiskLibSample.cpp pour une compilation réussie:



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


S'il ne compile pas dans ce cas, il est recommandé d'essayer d'ajouter la variable d'environnement LD_LIBRARY_PATH = / usr / lib / vmware-vix-disklib / lib64 et d'exécuter ldconf en tant que root après avoir ajouté l'adresse / usr / lib / vmware-vix-disklib / lib64 à /etc/ld.so.conf.d/vmware-vix-disklib.conf



Mais sous Windows dans Visual Studio, tout se compile sans problème. Et une note à l'hôtesse: VDDK dans Veeam est utilisé uniquement lorsque vous travaillez via un proxy Windows. Sous Linux, pour un certain nombre de raisons, il utilise sa propre solution utilisant l'API vSphere.  



Qu'en est-il des utilisateurs Veeam, demandez-vous?



Notre réponse: en connectant des bibliothèques VDDK de différentes versions fournies avec Veeam Backup & Replication, vous pouvez vérifier la vitesse réelle de travail avec l'hôte dans une grande variété de modes.



Les bibliothèques sont stockées dans C: \ Program Files (x86) \ Veeam \ Backup Transport \ x64 \ vddk_X_X , et leur utilisation est obligatoire pour des résultats corrects.



Jetons maintenant un coup d'œil aux commandes et options les plus importantes pour nous au démarrage. Car, comme pour tous les outils de test, la liste complète ici est très, très petite.



-readbench Exécute le test de lecture avec la taille de bloc spécifiée. La taille est indiquée en secteurs. 

 -writebench Tout est pareil, seulement l'écriture. Important:C'est une opération destructrice! L'enregistrement est juste! N'essayez pas de lancer une machine de production! Il sera écrasé par des déchets binaires!

-multithread N Depuis la version 6.5, peut être utilisé en parallèle pour travailler avec plusieurs disques.

-host Host pour se connecter. Cela peut être sous la forme d'un nom DNS ou IP.

-user Utilisateur selon le

schéma domaine \ utilisateur -password Je pense que c'est clair 

-vm vmPath = / chemin / vers / vm C'est si nous savons où se trouve notre machine, mais nous ne connaissons pas ses autres coordonnées

-vm "moref = vm-XXX" Chemin vers voitures en inventaire. Il est plus. Le moyen le plus simple de le trouver est via le MOB à l' adresse https: //vcenter.local/mob/ Important:si vous avez juste un hôte solitaire sans vCenter, utilisez moref = XXX, sans vm

-ssmoref Lien vers un instantané de votre machine, car, comme vous le savez, la lecture de données à partir de disques est une chose, et une autre chose lorsqu'un instantané est sur votre chemin. Ou quelques instantanés. Paramètre requis (ainsi que l'instantané lui-même) pour les machines incluses.

-mode Un paramètre indiquant le mode de travail avec le disque. Fait référence à VixDiskLib_ConnectEx. Les valeurs disponibles sont nbd, nbdssl, san et hotadd. Tous sont bien connus de nos utilisateurs.

-libdir Chemin vers le dossier de la bibliothèque. Par défaut, il doit être "C: \ Program Files (x86) \ Veeam \ Backup Transport \ x86 \ vddk_X_X" Si vous travaillez avec un hôte autonome, vous pouvez le laisser vide.

-pouceIntroduit dans la version 6.0, un paramètre obligatoire pour spécifier une empreinte de certificat SSL. Cela ne fonctionnera pas sans cela. Le moyen le plus simple est d'espionner le navigateur;)

-initex configfile Chemin du fichier de configuration pour VixDiskLib_InitEx



Les journaux détaillés sont écrits par défaut dans le  dossier

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

Pour une vie sans tracas, je vous conseille vivement de vider ce dossier après chaque test en modes san et hotadd. Et fermez la fenêtre avec la console (je veux dire Windows cmd, pas Linux). Cela est dû à la particularité de la fonction VDDKEndAccess, qui n'est pas appelée si le test est terminé par Ctrl + C et que les disques de test restent attachés à la machine sélectionnée. 



Maintenant que nous en avons terminé avec la théorie générale, allez à la section



Entraine toi



La syntaxe générale de démarrage ressemble à 



vixdisklibsample.exe command [options] diskPath


Dans le cas le plus simple, nous pouvons nous connecter à l'hôte en spécifiant son nom, login, mot de passe et chemin vers la machine souhaitée.



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


-info affichera le DiskPath du lecteur sélectionné.



Si l'hôte est connecté au vCenter, les options -libdir et -vm doivent être ajoutées. Dans le cas de VDDK> 6.0, n'oubliez pas -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"




Et puis le plaisir commence: nous spécifions -mode et -ssmoref. Je recommande vivement de faire tous les tests avec un instantané, afin de ne pas gâcher accidentellement le disque d'origine. Et rappelez-vous: le test d'écriture est une opération destructrice! Il écrit en fait des données, pas simule le processus!



D'un autre côté, je ne peux rien vous interdire non plus.



Donc, nous exécutons le test d'écriture en mode 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


Pour le mode SAN, tout est pareil, mais gardez à l'esprit que pour ce test cmd doit être exécuté avec les droits d'administrateur, sinon vous recevrez les erreurs «Vous n'avez pas les droits d'accès à ce fichier» et «Aucun chemin vers le LVID du périphérique».



Et si vous souhaitez tester l'option de restauration en mode Direct SAN, vous devez spécifier le faux UUID dans la branche HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ VMware, Inc. \ volatile \ UUIDHost



Maintenant essayons d'exécuter le test de vitesse de lecture en mode 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 vous voulez donner une vraie charge, n'hésitez pas à exécuter -readbench ou -writebench pour plusieurs disques à la fois. Mais pour cela, vous avez besoin de VDDK 6.5 ou 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


Enfin, voyons quelles informations sur les disques virtuels nous pouvons obtenir en utilisant -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


Au fait, si vous ne voulez soudainement pas risquer de vrais disques à partir de vraies machines, vous pouvez les créer ici. Certes, via -create vous ne pouvez pas créer un disque immédiatement sur l'hôte, mais ici l'option -clone vient à notre secours. Le paramètre -cap définit la taille en mégaoctets, ce qui est plus pratique à faire sur une machine 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


Ceci conclut mon excursion rapide dans le monde des vastes possibilités de VixDiskLibSample. Oui, à certains endroits, l'utilitaire est quelque peu bloqué et sa sortie n'est pas très pratique. Cependant, vous pouvez toujours créer quelque chose de vous-même à partir de celui-ci, ce qui vous permettra de résoudre vos problèmes avec élégance sans l'invention de vélos et l'utilisation de couches indistinctes.



Et quelques liens utiles à la fin:



  • Toute version du VDDK peut être téléchargée à partir de ce lien . Par défaut, la version 7.0 vous sera proposée, mais par le haut, vous pouvez passer au moins à 5.1
  • VDDK.



All Articles