長年にわたり、VMwareは、ディスクサブシステム、アプリケーションが仮想マシンディスクを操作するために使用できるライブラリ、ドキュメント、およびコードサンプルの膨大なセットを操作するためのVDDKを提供してきました。もちろん、Veeamでは不要な自転車を再発明するのは本当に好きではないので、VDDKは私たちの製品で非常に積極的に使用されています。
しかし、これはディスクの操作がさらに高速になると信じているクライアントの数には影響せず、提案されたすべてのパフォーマンステストは事前に誤った結果を示しています。究極の武器であるVixDiskLibSampleが私たちの助けになるのはそのような瞬間です。
VixDiskLibSampleは、VDDKに含まれている小さなC ++プログラムであり、vixDiskLibライブラリを操作する原理を示しています。つまり、仮想マシンのディスクをこれよりも優れた速度で操作することはできません。そして、私たちにとって特に重要なことは、書き込みと読み取りのベンチマークとして使用できることです。一種の究極のテストであり、その結果はほとんど無効とは言えません。
VDDK自体と一緒に入手できます。VMwareのWebサイトからダウンロードし、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では、さまざまな理由から、vSphereAPIを使用した独自のソリューションを使用します。
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明確だと思います
-vmvmPath = / path / to / vmこれは、マシンがどこにあるかはわかっているが、他の座標はわからない場合です
-vm "moref = vm-XXX" Path to在庫の車。彼はもっとです。それを見つける最も簡単な方法は、https://vcenter.local/mob/の MOBを使用することです。重要:vCenterのない孤独なホストがある場合は、vm
-ssmorefなしでmoref = XXXを使用します。ご存知のように、ディスクからのデータの読み取りは1つのことであり、スナップショットが邪魔になると別のことになるためです。またはいくつかのスナップショット。含まれているマシンの必須パラメーター(およびスナップショット自体)。
-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 \ current user \ AppData \ Local \ Temp \ vmware-current user \ vixDiskLib-####フォルダに書き込まれます。 log
手間のかからない生活のために、sanモードとhotaddモードでテストを実行するたびに、このフォルダーを空にすることを強くお勧めします。そして、コンソールでウィンドウを閉じます(つまり、LinuxではなくWindows cmdです)。これは、Ctrl + Cでテストが終了し、テストディスクが選択したマシンに接続されたままの場合に呼び出されないVDDKEndAccess関数の特性によるものです。
一般的な理論が完了したので、セクションに進みます
練習
一般的な起動構文は次のようになります
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を自由に実行してください。ただし、そのためには、VDDK6.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.