VixDiskLibSample: اختبر الأقراص الافتراضية بشكل صحيح

عندما نواجه منتجًا برمجيًا معينًا يتعين علينا التفاعل معه ، فنحن أحرار في اختيار سيناريو التفاعل بأنفسنا. يمكنك إعادة اختراع العجلة بشكل بطولي ، أو يمكنك أن تأمل أن يعرف المؤلفون منتجهم بشكل أفضل إلى حد ما مما نعرفه ، لذا فإن واجهة برمجة التطبيقات (أو مجموعة المكتبات) التي يقدمونها هي الحل الأمثل. من الناحية العملية ، لسوء الحظ ، ليس كل شيء ورديًا جدًا ، لكن اليوم لا يتعلق بذلك.



للعمل مع نظام القرص الفرعي الخاص به ، كان VMware يوفر VDDK لسنوات عديدة ، ومجموعة مترامية الأطراف من المكتبات والوثائق وأمثلة التعليمات البرمجية التي يمكن أن يستخدمها تطبيقك للعمل مع أقراص الآلة الافتراضية. بالطبع ، في Veeam ، لا نحب حقًا إعادة اختراع الدراجات غير الضرورية ، لذلك يتم استخدام VDDK بنشاط كبير في منتجاتنا.



لكن هذا لا يزال لا يؤثر على عدد العملاء الذين يعتقدون أن العمل مع الأقراص يمكن أن يكون أسرع ، وجميع اختبارات الأداء المقترحة تظهر نتائج غير صحيحة مسبقًا. في مثل هذه اللحظات ، يأتي السلاح النهائي لمساعدتنا - VixDiskLibSample.







VixDiskLibSample هو برنامج C ++ صغير مدرج في VDDK ويوضح مبادئ العمل مع مكتبة vixDiskLib ، أي لن يعمل أحد مع أقراص الجهاز الظاهري بشكل أفضل وأسرع منه. وما هو مهم بشكل خاص بالنسبة لنا ، يمكن استخدامه كمعيار للكتابة والقراءة. نوع من اختبار الإنذار ، لا يمكن وصف نتائجه بأنها غير صالحة.



يمكنك الحصول عليه مع 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



ولكن تحت Windows في Visual Studio كل شيء يجمع دون مشاكل. وملاحظة للمضيفة: يتم استخدام VDDK في Veeam فقط عند العمل من خلال وكيل Windows. في نظام Linux ، لعدد من الأسباب ، يستخدم الحل الخاص به باستخدام vSphere API.  



ماذا عن مستخدمي Veeam ، تسأل؟



إجابتنا: من خلال توصيل مكتبات VDDK ذات الإصدارات المختلفة التي تأتي مع Veeam Backup & Replication ، يمكنك التحقق من السرعة الحقيقية للعمل مع المضيف في مجموعة متنوعة من الأوضاع.



يتم تخزين المكتبات في C: \ Program Files (x86) \ Veeam \ Backup Transport \ x64 \ vddk_X_X ، واستخدامها إلزامي للحصول على نتائج صحيحة.



الآن دعونا نلقي نظرة على أهم الأوامر والخيارات بالنسبة لنا عند بدء التشغيل. كما هو الحال مع جميع أدوات الاختبار ، فإن القائمة الكاملة هنا صغيرة جدًا جدًا.



- منضدة قراءة قم بتشغيل معيار القراءة مع حجم الكتلة المحدد. الحجم مبين في القطاعات. 

 -writebench كل شيء هو نفسه ، الكتابة فقط. مهم:هذه عملية مدمرة! التسجيل عادل! لا تحاول إطلاق آلة إنتاج! سيتم الكتابة فوقه بقمامة ثنائية!

-multithread N منذ الإصدار 6.5 ، يمكن استخدامه بالتوازي للعمل مع أقراص متعددة.

-مضيف مضيف للاتصال. يمكن أن يكون في شكل اسم DNS أو IP.

-user العضو فقا لالمجال \ المستخدم

مخطط -password اعتقد انها واضحة 

-vm vmPath = / الطريق / / الظاهري هذا إذا كنا نعرف أين يقع آلة لدينا، لكننا لا نعرف لها أخرى الإحداثيات

-vm "moref = VM-XXX" الطريق إلى السيارات في المخزون. إنه أكثر. أسهل طريقة للعثور عليه هي من خلال MOB على https: //vcenter.local/mob/ هام:إذا كان لديك مضيف وحيد بدون vCenter ، فاستخدم moref = XXX ، بدون رابط vm

-ssmoref إلى لقطة من جهازك ، لأن قراءة البيانات من الأقراص ، كما تعلم ، شيء ، وشيء آخر عندما تكون لقطة في طريقك. أو بضع لقطات. المعلمة الإلزامية (بالإضافة إلى اللقطة نفسها) للأجهزة المضمنة.

-الوضع A معلمة تشير إلى طريقة العمل مع القرص. يشير إلى VixDiskLib_ConnectEx. القيم المتاحة هي nbd و nbdssl و san و hotadd. كلهم معروفون جيدًا لمستخدمينا.

- مسار الليبدير لمجلد المكتبة. بشكل افتراضي ، يجب أن يكون "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 - ####. سجل

للحصول على حياة خالية من المتاعب ، أنصحك بشدة بإفراغ هذا المجلد بعد كل اختبار تشغيل في وضعي 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 مسار القرص لمحرك الأقراص المحدد.



إذا كان المضيف متصلاً بـ vCenter ، فيجب إضافة خيارات -libdir و -vm في حالة VDDK> 6.0 لا تنسى الإبهام



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 ، فأنت بحاجة إلى تحديد UUID الوهمي في HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ VMware، Inc. \ volatile \ UUIDHost فرع



الآن دعونا نحاول تشغيل اختبار سرعة القراءة في وضع 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.



All Articles