سؤال

وصلت مؤخرًا ضجة المحاكاة الافتراضية إلى مكان عملي حيث يقوم المطورون بتجربة الأجهزة الافتراضية على أجهزة الكمبيوتر الخاصة بهم.لقد سمعت سابقًا من العديد من المطورين المختلفين حول إعداد جهاز افتراضي في أجهزة الكمبيوتر المكتبية الخاصة بهم من أجل الحفاظ على نظافة بيئات التطوير الخاصة بهم.

هناك الكثير من منتجات برامج الآلة الافتراضية في السوق:

أنا مهتم بمعرفة كيفية استخدام المحاكاة الافتراضية بشكل فعال في عملك.سؤالي هو كيف يمكنك استخدام الأجهزة الافتراضية للتطوير اليومي ولأي سبب؟

هل كانت مفيدة؟

المحلول

لقد قمت للتو ببناء آلة حقيقية في المنزل حتى أتمكن من تشغيل أجهزة افتراضية متعددة في وقت واحد.ربما تكون حالتي متطرفة، ولكن هذا هو المنطق الذي أتبعه للقيام بذلك.

اختبارات

عندما أقوم بالاختبار، خاصة تطبيق سطح المكتب، عادةً ما أقوم بإنشاء أجهزة افتراضية متعددة، واحدة لكل نظام أساسي يجب تشغيل البرنامج عليه (Windows 2000/XP/Vista وما إلى ذلك).إذا كانت النكهات 32 و64 بت متاحة، فسوف أقوم أيضًا بإنشاء واحدة من كل منها.ألعب أيضًا مع إعدادات أجهزة VM (على سبيل المثال.الكثير من ذاكرة الوصول العشوائي (RAM)، ذاكرة الوصول العشوائي (RAM) قليلة، (1 نواة، 2 نواة، وما إلى ذلك).لقد وجدت الكثير من الأخطاء الصغيرة بهذه الطريقة، والتي كان من الممكن أن تصل إلى البرية بالتأكيد لو لم أستخدم هذا الأسلوب.

يسهل هذا الأسلوب أيضًا اللعب باستخدام سيناريوهات البرامج المختلفة (ماذا يحدث إذا لم يكن لدى المستخدم الذي يقوم بتثبيت البرنامج .NET 3.5 sp1؟ماذا يحدث إذا لم يكن لديه مكون XXX؟إلخ؟

تطوير

عندما أقوم بالتطوير، لدي جهاز افتراضي واحد يقوم بتشغيل خوادم قاعدة البيانات الخاصة بي (SQL2000/2005/2008).هذا هو لسببين.أولا، إنه أكثر واقعية.في بيئة الإنتاج، ربما لا يعمل تطبيقك على نفس الصندوق الذي يعمل به قاعدة البيانات.لماذا لا تكرره عند التطوير؟أيضًا، عندما لا أقوم بالتطوير (تذكر أن هذا هو جهازي المنزلي أيضًا)، هل أحتاج حقًا إلى تشغيل جميع خدمات قاعدة البيانات هذه؟نعم، يمكنني تشغيلها وإيقاف تشغيلها يدويًا، ولكن من الأسهل جدًا تشغيل جهاز افتراضي.

العملاء

إذا كنت أرغب في إظهار بعض أعمال الويب التي قمت بها للعميل، فيمكنني وضع جهاز افتراضي واحد فقط في المنطقة المجردة من السلاح ويمكنه تسجيل الدخول إلى الجهاز الافتراضي واللعب بمشروع الويب، بينما تكون بقية الشبكة/الكمبيوتر الخاص بي آمنة.

التوافق

Vista64 هو الآن جهازي الرئيسي.لن تعمل أي أجهزة/برامج قديمة أملكها بشكل جيد مع نظام التشغيل هذا.الحلول التي أقترحها هي أن يكون لديك نظام التشغيل Windows XP 32 كجهاز افتراضي لكل هذه العناصر.

نصائح أخرى

وهنا شيء لم يتم ذكره بعد.

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

عندما بدأت في شركتي الحالية، كان معظم موظفي الدعم/التطوير/الإدارة العامة يقومون بتشغيل Virtual PC مع 1-3 أجهزة افتراضية على سطح المكتب الخاص بهم للاختبار.

بعد بضعة أشهر قمت بتجميع اقتراح، والآن نستخدم خادم VMware ESXi الذي يقوم بتشغيل مجموعة من الأجهزة الافتراضية (جميعها على مدار الساعة طوال أيام الأسبوع) مع بيئات مختلفة لموظفي الدعم لدينا لاختبار مشاكل العملاء وإعادة إنتاج المشكلات عليها.لدينا أجهزة افتراضية لنظام التشغيل Windows 2000/XP/Vista مع تثبيت كل من Office 2000/2002/2003/2007 (أي 12 جهازًا افتراضيًا) بالإضافة إلى بعض الأجهزة الافتراضية للاختبار الأكثر عمومية، وبعض أجهزة Server 2003/2008 التي تعمل بنظام Citrix، وTerminal Services، وما إلى ذلك.في أغلب الأحيان، عندما نصل إلى تكوين عميل جديد نحتاج إلى تصحيحه، ومن المحتمل أن يكون لدى العملاء الآخرين هذا التكوين أيضًا، سأقوم بإعداد جهاز افتراضي له.(على سبيل المثال.نحن نستخدم فقط ثلاثة أجهزة افتراضية 64 بت في الوقت الحالي - معظمها 32 بت)

علاوة على ذلك، يقوم نفس الخادم بتشغيل XP VM الذي أستخدمه لإنشاء أدوات التثبيت (InstallShield، WiX) وتصحيح الأخطاء (VS 2005) والترجمة (Lingobit) بالإضافة إلى جهاز افتراضي آخر يستخدمه مطورونا للاختبار الآلي (TestComplete).

تم تخصيص أولوية أعلى لجهاز VM للتطوير والتثبيت وتم تكوينهما كجهازين افتراضيين لوحدة المعالجة المركزية المزدوجة وذاكرة سعة 1 جيجابت.تتمتع أجهزة VM المتبقية بأولوية متساوية وذاكرة الوصول العشوائي (RAM) بسعة 256-1 جيجا بايت.

كل شيء يعمل على معالج Xeon ثنائي رباعي النواة مع ذاكرة وصول عشوائي (RAM) سعة 8 جيجابايت تعمل بنظام ESXi وغارة الأجهزة (4x1Tb RAID10)

مقابل استثمار يزيد قليلاً عن 2.5 ألف دولار أمريكي، قمنا بتحسين الإنتاجية بمقدار 10 أضعاف (تخيل وقت التوقف عن العمل بينما يقوم أحد عناصر الدعم بتثبيت إصدار أقدم من المكتب على سطح المكتب الخاص به لتكرار مشكلة العميل، أو الوقت الذي لا أستطيع فيه استخدام سطح المكتب الخاص بي بسبب نحن نبني المثبتات).ستكون الخطوة التالية هي مضاعفة ذاكرة الوصول العشوائي (RAM) إلى 16 جيجا بايت حيث نضيف المزيد من الذاكرة المتعطشة لـ Server 2008 و Vista VMs.

لا يزال لدينا جهاز افتراضي غريب على أجهزة سطح المكتب لدينا (لدي إصدارات مترجمة من Windows وUbuntu وWindows 7 تعمل ضمن VMware Workstation على سبيل المثال) ولكن تم إلغاء تحميل التكوينات الشائعة/المستخدمة بكثرة إلى خادم مخصص يمكننا جميعًا الاتصال به عن بُعد داخل.أسهل بكثير.

تعد المحاكاة الافتراضية (مع اللقطات أو الأقراص غير الدائمة) مفيدة حقًا لاختبار تثبيت البرامج في تكوين نظيف معروف (أي.لم يبق أي شيء من عمليات تثبيت الأخطاء السابقة لبرنامجك).

إن وجود صندوق التطوير الخاص بك في ملف واحد (باستخدام جهاز افتراضي) سيجعل الأمر كثيرًا أسهل للنسخ الاحتياطي والاستعادة في حالة حدوث مشكلة.

بخلاف ذلك، يمكنك أيضا احمل صندوق التطوير المحمول الخاص بك حول أجهزة مختلفة، نظرًا لأنك لست مقيدًا بهذا الجهاز المحدد الذي تعمل عليه عادةً.

ليس ذلك فحسب، بل يمكنك ذلك اختبار أنظمة التشغيل المختلفة في وقت واحد، مع نظام تشغيل واحد مثبت على كل ملف Virtual Machine لديك.

صدقوني، هذا سيوفر الكثير من المتاعب عند القيام بالمهام التي ذكرتها أعلاه.

حالة استخدام لطيفة أخرى لأجهزة VM هي إنشاء شبكة افتراضية من الأجهزة.على سبيل المثال، يمكنك إظهار الأجهزة التي تعمل بمستويات مختلفة من حزمة التطبيقات الخاصة بك، كل منها يعمل في جهاز افتراضي خاص به.فكر في الأمر كمركز بيانات للرجل الفقير.

يمكن أن تظهر هذه الأجهزة الافتراضية أيضًا على شبكتك الفعلية، بحيث يمكنك استخدام RDP أو ما شابه للحصول على جلسة طرفية عن بعد معهم.

يمكن أن يكون لديك جهاز كبير (يحتوي على الكثير من الذاكرة) يقوم بتشغيل هذه الأجهزة الافتراضية، بينما يمكنك الوصول إليها عن بعد من جهاز آخر مثل الكمبيوتر المحمول، أو أي جهاز لديك مزود بأفضل شاشة.

أستخدم جهاز VM ضمن Windows لتشغيل Linux.على الرغم من وجود إصدار من emacs لنظام التشغيل Windows بالفعل، إلا أن استخدامه في Linux يبدو أكثر متعة لسبب ما.

صيانة أجهزة الكمبيوتر على الرفوف

أواجه موقفًا حيث تم إغلاق المدارس في منطقتي ولكن يجب الحفاظ على نظامها المالي لمدة تصل إلى عامين لضمان دفع جميع الفواتير المستحقة.كان يتم التعامل مع هذا عن طريق صيانة الأجهزة من متجمد المدارس التي تعاني من بعض المشاكل:

  • أدى هذا إلى إهدار موارد الأجهزة النادرة واحتلال مساحة مادية كبيرة.
  • كان على المسؤولين الماليين أن يكونوا حاضرين فعليًا في الأجهزة للعمل على كل نظام.

اليوم أستضيف كل مدرسة موقوفة على صندوقها الافتراضي الخاص داخل مضيف فعلي واحد.يتم الوصول إلى كل نظام فردي عن طريق RDP على رقم IP الخاص بالمضيف، ولكن برقم المنفذ الخاص به ويتم الحفاظ على الأمان الأصلي لكل مدرسة.

يمكن الآن للمسؤولين الماليين العمل في المدارس المتوقفة دون الحاجة إلى السفر إلى مكان تواجدهم الفعلي، وهناك مساحة مادية أكبر في غرفة الخادم، كما أن النسخ الاحتياطي لجميع المدارس المتوقفة في وقت واحد هي عملية آلية بسيطة.

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

ويبدو أن المحاكاة الافتراضية هي الحل الأمثل لهذه المشكلة.

لقد استخدمت أسلوب المحاكاة الافتراضية باستخدام VMWare Server عندما كانت المهمة التي أمامي هي اختبار بيئة مجمعة لخادم تطبيقات WebSphere.بعد إعداد VMWare Server، قمت بإنشاء جهاز ظاهري جديد وقمت بجميع عمليات تثبيت البرامج التي أحتاجها مثل WebSphere App Server وOracle وWebSphere Commerce وما إلى ذلك، وبعد ذلك قمت بإيقاف تشغيل VM ونسخ صورة القرص الثابت الافتراضي إلى صورتين مختلفتين الملفات، أحدهما كنسخة VM والآخر كنسخة احتياطية.

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

تعد وظيفة اللقطة الموجودة في كل من VMWare وVirtual PC/Server من Microsoft جيدة بما يكفي للنظر في المحاكاة الافتراضية للسيناريوهات التي تعتقد أنك قد تقوم فيها بتغييرات جذرية، والتي قد لا يكون من السهل التراجع عنها.

حسب ما أعرف، لا يوجد شيء يضاهي Parallels على نظام Mac، ولكنه مخصص للعمل بدلاً من الاختبار.

التكامل (مع "التماسك"، جهاز VM الخاص بك لا يعمل "في نافذة" النظام المضيف الخاص بك، جميع البرامج في نظام الضيف لها نافذتها المناسبة في النظام المضيف) رائع ودعنا نملأ الكل (الجميع!) ثغرات:
قام زميلي في العمل بتكوين أن Outlook (لا يوجد شيء مثل Outlook لنظام التشغيل MacOsX) في Windows ينبثق عندما ينقر على رابط "mailto:" الموجود على صفحة ويب، يتم تصفحها باستخدام Firefox على نظام Mac!
وفي الاتجاه الآخر، إذا أراد إرسال ملف PDF، فإنه يقوم بالنقر نقرًا مزدوجًا فوق المرفق في Outlook (في Windows) الذي يفتح ملف PDF في عارض PDF الخاص بنظام Mac.

يوفر VirtualBox أيضًا إمكانية فصل النوافذ (على الأقل عند تشغيل النوافذ في VM على Linux)، وهو أمر مفيد حقًا للعمل.

للاختبار الخوبطبيعة الحال، لا يوجد شيء أفضل من بيئة منفصلة بشكل نظيف.

لدينا خادم فعلي مخصص لاستضافة الأجهزة الافتراضية في بيئة التطوير لدينا.يتم إحضار الأجهزة الافتراضية وتفكيكها بشكل منتظم وتستخدم لاختبار البرامج في بيئات التشغيل القياسية المعروفة.

كما أنه مفيد حقًا عندما نريد تشغيل تطبيق ما على مجال مختلف عن بيئة التطوير.

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

يبدو الأمر رائعًا، لكن الجميع متشكك بعض الشيء:هذه منظمة حكومية..من المحتمل أن تحول البيروقراطية والبيروقراطية هذا الأمر إلى مضيعة كبيرة للوقت والمال.

إذا كنا نستخدم جهازًا ظاهريًا (vpc 2007، Virtual Server 2005، تطبيق VMWare وما إلى ذلك..)

1. يمكننا تشغيل أنظمة تشغيل متعددة (windows98,2000,XP,Vista,Windows Server 2003,2008,Windows 7/linux/solaris) على خادم واحد

2. يمكننا تقليل تكاليف الأجهزة ومساحة مركز البيانات

3. يمكننا تقليل تكلفة تبريد الطاقة والتيار المتردد.

4. يمكننا تقليل موارد المشرف،

5. يمكننا تقليل تكلفة التطبيق

6. يمكننا تشغيل ADS/DNS/DHCP/Exchange/SQL/Sharepoint Server/File Server...إلخ

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top