للعمل مع نظام القرص الفرعي الخاص به ، كان 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.