VixDiskLibSample: uji disk virtual dengan benar

Ketika kita dihadapkan dengan produk perangkat lunak tertentu yang dengannya kita harus berinteraksi, kita bebas memilih skenario interaksi itu sendiri. Anda dapat secara heroik menemukan kembali roda tersebut, atau Anda dapat berharap bahwa penulis mengetahui produk mereka lebih baik daripada kami, sehingga API (atau kumpulan pustaka) yang mereka sediakan adalah solusi yang optimal. Sayangnya, dalam praktiknya, tidak semuanya begitu indah, tetapi hari ini bukan tentang itu.



Selama bertahun-tahun, VMware telah menyediakan VDDK untuk bekerja dengan subsistem disknya, kumpulan pustaka, dokumentasi, dan contoh kode yang luas yang dapat digunakan aplikasi Anda untuk bekerja dengan disk mesin virtual. Tentu saja, di Veeam, kami benar-benar tidak suka menemukan kembali sepeda yang tidak perlu, jadi VDDK digunakan dengan sangat aktif di produk kami.



Tapi ini masih tidak mempengaruhi jumlah klien yang percaya bahwa bekerja dengan disk bisa lebih cepat, dan semua tes kinerja yang diusulkan menunjukkan hasil yang salah secara apriori. Pada saat-saat seperti itulah senjata pamungkas datang membantu kami - VixDiskLibSample.







VixDiskLibSample adalah program C ++ kecil yang termasuk dalam VDDK dan mendemonstrasikan prinsip-prinsip bekerja dengan pustaka vixDiskLib, yaitu, tidak ada yang akan bekerja dengan disk mesin virtual lebih baik dan lebih cepat daripada itu. Dan yang terutama penting bagi kami, bisa dijadikan patokan untuk menulis dan membaca. Semacam tes ultimatum, yang hasilnya hampir tidak bisa disebut tidak valid.



Anda bisa mendapatkannya bersama dengan VDDK itu sendiri. Unduh dari situs VMware dan, dalam kasus Linux, cukup kompilasi setelah instalasi



[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


Jalur penginstalan default.

 

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


Ada juga informasi di jaringan bahwa pada beberapa distribusi Anda perlu menambahkan baris berikut ke vixDiskLibSample.cpp agar kompilasi berhasil:



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


Jika tidak dapat dikompilasi dalam kasus ini, maka disarankan untuk mencoba menambahkan variabel lingkungan LD_LIBRARY_PATH = / usr / lib / vmware-vix-disklib / lib64 dan jalankan ldconf sebagai root setelah menambahkan alamat / usr / lib / vmware-vix-disklib / lib64 ke /etc/ld.so.conf.d/vmware-vix-disklib.conf



Tetapi di bawah Windows di Visual Studio semuanya terkompilasi tanpa masalah. Dan catatan untuk nyonya rumah: VDDK di Veeam hanya digunakan saat bekerja melalui proxy Windows. Di Linux, karena sejumlah alasan, ia menggunakan solusinya sendiri menggunakan API vSphere.  



Bagaimana dengan pengguna Veeam, Anda bertanya?



Kami menjawab: dengan menghubungkan pustaka VDDK dari berbagai versi yang disertakan dengan Veeam Backup & Replication, Anda dapat memeriksa kecepatan sebenarnya dari pekerjaan dengan host dalam berbagai mode.



Pustaka disimpan di C: \ Program Files (x86) \ Veeam \ Backup Transport \ x64 \ vddk_X_X , dan penggunaannya wajib untuk hasil yang benar.



Sekarang mari kita lihat perintah dan opsi terpenting bagi kita saat memulai. Karena, seperti semua alat pengujian, daftar lengkapnya di sini sangat, sangat kecil.



-readbench Jalankan benchmark baca dengan ukuran blok yang ditentukan. Ukurannya ditunjukkan dalam beberapa sektor. 

 -writebench Semuanya sama, hanya tulisan. Penting:Ini adalah operasi yang merusak! Rekamannya adil! Jangan mencoba meluncurkan mesin produksi! Ini akan ditimpa dengan sampah biner!

-multithread N Sejak versi 6.5, dapat digunakan secara paralel untuk bekerja dengan banyak disk.

-host Host untuk terhubung. Ini bisa dalam bentuk nama DNS, atau IP.

-pengguna menurut domain \

skema pengguna-kata sandi Saya rasa sudah jelas 

-vm vmPath = / path / to / vm Ini jika kita tahu di mana mesin kita berada, tapi kita tidak tahu koordinat lainnya

-vm "moref = vm-XXX" Path to mobil dalam persediaan. Dia lebih dari itu. Cara termudah untuk menemukannya adalah melalui MOB di https: //vcenter.local/mob/ Penting:jika Anda hanya memiliki host yang sepi tanpa vCenter, gunakan moref = XXX, tanpa vm

-ssmoref Tautkan ke snapshot mesin Anda, karena, seperti yang Anda ketahui, membaca data dari disk adalah satu hal, dan hal lain ketika snapshot menghalangi Anda. Atau beberapa foto. Parameter yang diperlukan (serta snapshot itu sendiri) untuk mesin yang disertakan.

-mode Parameter yang menunjukkan mode bekerja dengan disk. Mengacu pada VixDiskLib_ConnectEx. Nilai yang tersedia adalah nbd, nbdssl, san, dan hotadd. Semuanya sangat dikenal oleh pengguna kami.

-libdir Path ke folder perpustakaan. Standarnya harus "C: \ Program Files (x86) \ Veeam \ Backup Transport \ x86 \ vddk_X_X" Jika Anda bekerja dengan host mandiri, Anda dapat membiarkannya kosong.

-ibu jariDiperkenalkan dalam versi 6.0, parameter wajib untuk menentukan sidik jari sertifikat SSL. Itu tidak akan berhasil tanpanya. Cara termudah adalah dengan memata-matai browser;)

-initex configfile Jalur ke file konfigurasi untuk VixDiskLib_InitEx



Log terperinci ditulis secara default ke 

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

Untuk kehidupan yang bebas repot, saya sangat menyarankan Anda untuk mengosongkan folder ini setelah setiap pengujian dijalankan dalam mode san dan hotadd. Dan tutup jendela dengan konsol (artinya cmd Windows, bukan Linux). Hal ini disebabkan kekhasan fungsi VDDKEndAccess, yang tidak dipanggil jika pengujian dihentikan oleh Ctrl + C, dan disk pengujian tetap terpasang ke mesin yang dipilih. 



Sekarang setelah kita selesai dengan teori umum, lanjutkan ke bagian



Praktek



Sintaks startup umum terlihat seperti 



vixdisklibsample.exe command [options] diskPath


Dalam kasus yang paling sederhana, kita dapat terhubung ke host dengan menentukan nama, login, kata sandi, dan jalurnya ke mesin yang diinginkan.



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


-info akan menampilkan DiskPath dari drive yang dipilih.



Jika host terhubung ke vCenter, opsi -libdir dan -vm harus ditambahkan. Jika VDDK> 6.0 jangan lupa tentang -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"




Dan kemudian kesenangan dimulai: kita tentukan -mode dan -ssmoref. Saya sangat menyarankan melakukan semua tes dengan snapshot, agar tidak merusak disk asli secara tidak sengaja. Dan ingat: tes tulis adalah operasi yang merusak! Ini sebenarnya menulis data, bukan mensimulasikan proses!



Di sisi lain, saya juga tidak bisa melarang Anda.



Jadi, kami menjalankan tes tulis dalam 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


Untuk mode SAN, semuanya sama, tetapi perlu diingat bahwa untuk pengujian ini cmd harus dijalankan dengan hak administrator, jika tidak, Anda akan menerima kesalahan "Anda tidak memiliki hak akses ke file ini" dan "Tidak ada jalur ke perangkat LVID".



Dan jika Anda ingin menguji opsi pemulihan dalam mode SAN Langsung, maka Anda perlu menentukan UUID palsu di HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ VMware, Inc. \ volatile \ UUIDHost cabang



Sekarang mari kita coba menjalankan tes kecepatan baca dalam 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)


Jika Anda ingin memberikan beban nyata, silakan jalankan -readbench atau -writebench untuk beberapa disk sekaligus. Tetapi untuk ini Anda membutuhkan VDDK 6.5 atau 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


Terakhir, mari kita lihat informasi tentang disk virtual yang bisa kita peroleh dengan menggunakan -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


Omong-omong, jika Anda tiba-tiba tidak ingin mengambil risiko disk nyata dari mesin nyata, Anda dapat membuatnya di sini. Benar, melalui -create Anda tidak dapat langsung membuat disk di host, tetapi di sini opsi -clone datang untuk menyelamatkan kami. Parameter -cap menetapkan ukuran dalam megabyte, dan ini lebih mudah dilakukan di mesin 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


Ini mengakhiri perjalanan singkat saya ke dunia dengan berbagai kemungkinan VixDiskLibSample. Ya, di beberapa tempat utilitasnya agak buntu, dan hasilnya sangat tidak nyaman. Namun, Anda selalu dapat membuat sesuatu sendiri berdasarkan itu, yang akan memungkinkan Anda untuk menyelesaikan masalah Anda dengan elegan tanpa penemuan sepeda dan penggunaan lapisan yang tidak jelas.



Dan beberapa tautan berguna di bagian akhir:



  • Versi VDDK apa pun dapat diunduh dari tautan ini . Secara default, Anda akan ditawarkan 7.0, tetapi dari atas Anda dapat beralih setidaknya ke 5.1
  • VDDK.



All Articles