SSD Nodes Learn 🎉 VPS من $5.50/شهر
الأدلة Matt Connorبقلم Matt Connor

تاريخ VPS: من الحاسوب المركزي إلى السحابة

اكتشف كيف قاد تقاسم الوقت من CTSS وMultics إلى Unix وVM/370 ثم Xen وKVM، ولماذا ما زالت العزلة وجدولة المعالج أساس VPS الذي تستأجره اليوم.

مصدر VPS الذي تستأجره

تاريخ الحوسبة، من الحواسيب المركزية إلى السحابة، هو تاريخ فكرة أصبحت أقل تكلفة. هذه الفكرة هي تقاسم الوقت: يتيح النظام لعدد كبير من الأشخاص استخدام جهاز واحد مرتفع التكلفة في الوقت نفسه، ويمنح كل شخص منهم عرضاً خاصاً لهذا الجهاز. ابتُكرت هذه الفكرة نحو عام 1960 لأن تكلفة الحاسوب كانت أعلى من تكلفة الأشخاص الذين يستخدمونه. كل جزء من VPS الذي تستأجره اليوم بُني لمعالجة هذه المشكلة: العزل بين المستخدمين، والمجدول الذي يوزّع وقت المعالج، والـhypervisor، والفاتورة التي تحسب عدد الساعات. لم تختفِ المشكلة قط. أصبحت الأجهزة أقل تكلفة، ولذلك صار الجزء الذي كان يتطلب منحة بحثية في السابق يكلف بضعة دولارات شهرياً.

1959 إلى 1961: لماذا ابتُكر تقاسم الوقت

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

في يناير 1959، عرض John McCarthy الرأي المقابل في مذكرة في MIT. كان ينبغي أن ينتظر الجهاز الشخص. ووصف Christopher Strachey شكلاً من تقاسم الوقت في مؤتمر لليونسكو في العام نفسه، لكنه كان يقصد أن يصحح مبرمج واحد أخطاء برنامجه بينما تعمل مهام أخرى، لا أن يكتب أشخاص كثيرون في الوقت نفسه. وفي كلمة ألقاها McCarthy بمناسبة الذكرى المئوية لتأسيس MIT في 1961، ذهب أبعد من ذلك: كان من الممكن بيع الحوسبة كخدمة عامة، واحتساب تكلفتها مثل الكهرباء.

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

ما الذي اضطر CTSS إلى ابتكاره

أنشأت مجموعة Fernando Corbató في مركز الحوسبة في MIT نظام المشاركة الزمنية المتوافق (CTSS) لحسم هذا الجدل. عُرض النظام للمرة الأولى في نوفمبر 1961 على حاسوب IBM 709، وكان يخدم أربعة مستخدمين، مع تبديل عمل كل مستخدم إلى محرك الأشرطة المغناطيسية الخاص به. كان معنى «متوافق» أن الحاسوب يستطيع الاستمرار في تشغيل نظام المعالجة الدفعية القديم في الخلفية، لأن أحداً لا يشتري حاسوباً لا ينفّذ إلا الوظيفة الجديدة.

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

أعد تسمية هذه الأجزاء وستحصل على نظام Linux. المجدول هو EEVDF، وقد حل محل CFS في Linux 6.6. حماية الذاكرة هي MMU (وحدة إدارة الذاكرة)، التي تمنح كل عملية مساحة عناوين افتراضية خاصة بها. التخزين الذي يبقى بعد تسجيل الخروج هو الدليل المنزلي الخاص بك. وما زال ملف كلمات المرور يُسمى /etc/passwd.

Multics وأداة الحوسبة

كان من المفترض أن يكون النظام التالي في MIT هو الأداة التي وصفها McCarthy. بدأ مشروع MAC في 1963، ووقّع عقداً للحصول على General Electric GE-645 في أغسطس 1964، ونشر أول أبحاث Multics في 1965. ويحمل الاسم الفكرة نفسها: Multiplexed Information and Computing Service، أي خدمة المعلومات والحوسبة متعددة الإرسال. والمقصود بـ«الخدمة» هنا شيء تشتريه بالساعة.

استغرق Multics وقتاً أطول بكثير من المخطط له. وصلت أجهزة GE-645 النموذجية إلى MIT وBell Labs في يناير 1967. وانسحبت Bell Labs من المشروع في أبريل 1969. وأصبح Multics متاحاً لعملاء مركز معالجة المعلومات في MIT في 1 أكتوبر 1969، ثم ظل قيد التشغيل في بيئة إنتاجية في مكان ما لمدة واحد وثلاثين عاماً. أُوقف آخر نظام Multics عامل، في وزارة الدفاع الوطني الكندية في Halifax, Nova Scotia، في 30 أكتوبر 2000.

غالباً ما يُصنَّف Multics على أنّه فشل لأنّه وصل متأخراً وكان بطيئاً. لكن المصطلحات تحكي قصة مختلفة. فقد قدّم نظام الملفات الهرمي، الذي يضع الأدلة داخل أدلة أخرى، وقائمة تحكم بالوصول لكل ملف، وذاكرة افتراضية مقسّمة تتيح للبرنامج عنونة ملف كما لو كان ذاكرة، وحلقات حماية ترتّب الشيفرة وفق مستوى الثقة بها. ولا تزال الحلقات موجودة في العتاد أمامك. تمثّل Ring 0 للنواة وRing 3 لشيفرة المستخدم مصطلحات من Multics، ثم أضافت المحاكاة الافتراضية للعتاد لاحقاً وضعاً أدنى من Ring 0 لمشرف الآلات الافتراضية، ويُسمّيه الناس بصورة غير رسمية Ring -1.

Unix: مشاركة الوقت على جهاز يمكنك تحمّل تكلفته

بعد مغادرته Multics، وجد Ken Thompson نفسه في Bell Labs من دون نظام يريد استخدامه. في عام 1969، بدأ تطوير نظام أصغر بكثير على جهاز PDP-7 مُهمَل. يعود تاريخ أول دليل لمبرمجي Unix إلى نوفمبر 1971، وبحلول ذلك الوقت كان العمل قد انتقل إلى PDP-11. في عام 1973، أعاد Thompson وDennis Ritchie كتابة النواة بلغة C، بحيث يمكن نقل النظام إلى عتاد جديد من دون إعادة كتابته يدوياً.

لهذا السبب تكتب الأوامر اليوم في نظام منحدر من Unix، لا في نظام منحدر من Multics. كان Multics يحتاج إلى عتاد مصمم خصيصاً له. أما Unix فكان يعمل على أي عتاد رخيص ومتاح، واتضح أن هذه كانت السمة الحاسمة.

ظهرت ورقة "The UNIX Time-Sharing System" التي كتبها Ritchie وThompson في مجلة Communications of the ACM في يوليو 1974. تصف الورقة VPS الخاص بك: العمليات، ونظام ملفات هرمياً واحداً، والملفات بوصفها تدفقات بايتات عادية، وfork، والمستخدمين والمجموعات مع بتات الصلاحيات، وshell بوصفه برنامجاً عادياً لا جزءاً من النواة. بعد اثنين وخمسين عاماً، جرى توسيع هذه الواجهة ولم تُستبدل قط.

هل كانت الحواسيب المركزية تشغّل آلات افتراضية فعلاً في 1972؟

نعم، وهذا هو الجزء الذي يغفل عنه معظم الناس. بينما كانت MIT تبني Multics، عمل مركز Cambridge Scientific Center التابع لـIBM على الهدف نفسه من الاتجاه المعاكس. فبدلاً من نظام تشغيل واحد يخدم مستخدمين كثيرين، بنى Robert Creasy وLes Comeau برنامج تحكم يمنح كل مستخدم حاسوباً محاكياً كاملاً. دخل CP-40 مرحلة الإنتاج في January 1967. وحصل كل مستخدم على System/360 افتراضي، وشغّل داخله نظام تشغيل صغيراً لمستخدم واحد هو CMS.

أصبح CP-40 هو CP-67 على System/360-67 في 1968، وأعلنت IBM عن VM/370 في 2 August 1972. كان ذلك hypervisor تجارياً يُباع للعملاء الذين يدفعون مقابلاً، قبل أربعة وخمسين عاماً. كان برنامج تحكم يوزّع موارد العتاد الحقيقي، بينما كانت أنظمة التشغيل الضيفة تعمل دون تعديل داخل آلات افتراضية تظن أنها تملك الحاسوب.

ظهرت النظرية بعد ذلك بعامين، في عدد July 1974 نفسه من مجلة Communications of the ACM الذي نشر ورقة Unix. وضعت ورقة Gerald Popek وRobert Goldberg المعنونة "Formal Requirements for Virtualizable Third Generation Architectures" المتطلبات التي يجب أن يحققها المعالج حتى يكون قابلاً للمحاكاة الافتراضية. القاعدة الأساسية قصيرة. يجب أن تتسبب كل تعليمة يمكنها قراءة حالة الحاسوب أو تغييرها في trap عندما ينفذها الضيف خارج وضع kernel، حتى يستعيد hypervisor التحكم ويردّ بنسخة خاصة بذلك الضيف من الحالة. يُسمّى هذا trap and emulate. وقد التزم عتاد IBM بهذه القاعدة.

كيف كسَر الحاسوب المصغّر النموذج

قدّمت DEC جهاز PDP-8 في 22 March 1965 بسعر يقارب $18,000 بقيمة الدولار في 1965. كان أول حاسوب مصغّر يقل سعره عن $20,000، ثم تجاوزت مبيعاته 50,000 وحدة. بعد ذلك خفّض microprocessor السعر مرة أخرى. عندما أصبح بإمكان كل قسم شراء جهازه الخاص، ثم أصبح ذلك ممكناً لكل شخص، بدا أن مشاركة حاسوب مركزي مشكلة حُلّت ولم تعد تحتاج إلى حل. خلال ثمانينيات وتسعينيات القرن العشرين، انتقلت الحوسبة إلى المكاتب وإلى racks تضم خوادم x86 صغيرة.

عاد الهدر في صورة مختلفة. يسهّل تشغيل تطبيق واحد لكل خادم فهم البنية، لكنه يترك معظم العتاد في وضع الخمول، بينما تُدفع تكلفة الطاقة ومساحة rack كاملة. هذه هي مشكلة CTSS مرة أخرى، ولكن على نطاق جديد؛ فالمورد المكلف أصبح الغرفة والكهرباء بدلاً من المعالج. وكان الحل هو الحل القديم: مشاركة الجهاز.

لماذا كان x86 صعباً إلى هذا الحد في المحاكاة الافتراضية؟

لأن x86 خالف قاعدة Popek وGoldberg. في الندوة التاسعة لأمن USENIX في أغسطس 2000، فحص John Scott Robin وCynthia Irvine مجموعة تعليمات Pentium، ووجدا 17 تعليمة تقرأ الحالة ذات الامتيازات أو تغيّرها من دون إحداث خطأ عند تنفيذها بواسطة تعليمات تعمل في وضع المستخدم. تُعد popf المثال القياسي. عند تنفيذها في وضع المستخدم، يتجاهل المعالج بهدوء البتات التي لا يُسمح للبرنامج بتعيينها بدلاً من إحداث استثناء. لذلك لا يعلم برنامج Hypervisor يعتمد على أسلوب trap and emulate أن الضيف حاول تنفيذها.

ظهرت إجابتان قبل إصلاح العتاد. فقد فحص VMware، الذي تأسس في 1998 انطلاقاً من أبحاث Disco في Stanford، شيفرة نواة الضيف وأعاد كتابة التعليمات الإشكالية قبل تنفيذها. وتُسمى هذه التقنية binary translation. أما Xen، الذي طوّره Computer Laboratory في University of Cambridge، فغيّر الضيف نفسه. وصفت ورقة "Xen and the Art of Virtualization"، التي قُدّمت في SOSP في أكتوبر 2003، أسلوب paravirtualisation: تستدعي نواة ضيف معدّلة برنامج Hypervisor عمداً بدلاً من تنفيذ التعليمات التي لا يستطيع برنامج Hypervisor اعتراضها.

ثم أُصلح العتاد، بالطريقة التي اتبعها IBM عند إصلاح المشكلة في الستينيات. أطلقت Intel تقنية VT-x في طرازين من Pentium 4 في 14 نوفمبر 2005، وأطلقت AMD تقنية AMD-V في مايو 2006. يضيف كلاهما وضعاً في المعالج يقع أدنى من وضع نواة الضيف، لذلك يشغّل الضيف نواته الخاصة بالسرعة الكاملة، بينما يحتفظ برنامج Hypervisor بالتحكم في الأحداث التي يطلبها. أتاح ذلك إنشاء برنامج Hypervisor صغير بما يكفي للعمل داخل نظام تشغيل عادي. وهذا ما نفّذه Avi Kivity's KVM في Qumranet تحديداً: حوّل نواة Linux نفسها إلى برنامج Hypervisor. أُدمج KVM في Linux 2.6.20، الذي صدر في فبراير 2007، وهو ما يشغّله اليوم جزء كبير من مضيفي VPS.

كيف حصل VPS على اسمه

التقت مساران في أوائل العقد الأول من القرن الحادي والعشرين. كان أحدهما الآلة الافتراضية الكاملة على x86، حيث يقلع الضيف بنواته الخاصة. وكان الآخر هو المحاكاة الافتراضية على مستوى نظام التشغيل: نواة Linux مشتركة واحدة تُقسَّم إلى بيئات منفصلة، لكل منها مستخدم root الخاص بها وجدول العمليات الخاص بها. ظهر كل من Linux-VServer وVirtuozzo من SWsoft في عام 2001، وأصدرت SWsoft جزءاً من Virtuozzo باعتباره OpenVZ مفتوح المصدر في عام 2005. ويأتي تعبير "الخادم الافتراضي الخاص" من هذا الجانب من العائلة، بالقياس إلى الشبكة الافتراضية الخاصة.

حوّلت Amazon الاستئجار إلى استدعاء API. أُطلقت S3 في 14 March 2006، وافتُتحت EC2 كإصدار تجريبي عام محدود في 25 August 2006 بنوع instance واحد يعمل على Xen. لم يعد شراء القدرة الحاسوبية عقداً مع مكتب خدمات، بل أصبح طلباً يعيد النتيجة خلال دقيقة.

لا يزال المساران قائمين، وما زال هذا الانقسام يحدد ما يمكنك فعله بالخادم الذي تستأجره. يقلع VPS المستند إلى KVM بنواته الخاصة، لذلك يمكنك تحميل kernel modules وحتى تشغيل hypervisor داخل VPS الخاص بك. أما الخطة المستندة إلى الحاويات فتشارك نواة المضيف، ولا يمكنها ذلك. يقف وراء ذلك السطر الواحد في صفحة الأسعار تاريخ يمتد 60 عاماً، ولذلك من المفيد فهم الفرق بين VPS وVM وVPC قبل اختيار أحدها.

ما الذي تغيّر من الحاسوب المركزي إلى VPS الخاص بك، وما الذي لم يتغيّر

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

أما الآلية فلم تتغيّر مطلقاً.

  • جلسة ssh الخاصة بك هي طرفية للمشاركة الزمنية. تحصل على تسجيل دخول وshell، ويقرّر المجدول متى ستعمل عمليتك التالية.
  • لا تزال العزلة تُفرض بواسطة العتاد. تنفّذ MMU ومستويات امتياز المعالج العمل نفسه تماماً، كما احتاج إليها CP-40 في 1967.
  • لا تزال تُحاسب على حصة من جهاز بحسب الزمن المنقضي، كما كانت مكاتب الخدمات تحاسب على ساعات الاتصال.
  • لا تزال تشعر بوجود المستأجرين الآخرين. عندما يكون المضيف محمّلاً بأكثر من طاقته، ينتظر جهازك الافتراضي وحدة CPU فعلية، ويعرض Linux ذلك الانتظار باعتباره وقت سرقة CPU من جار مزعج.

هذه النقطة الأخيرة هي الملخص الصريح للتاريخ كله. مشاركة الجهاز مقايضة. قُبلت في 1961 لأن الحاسوب كان أغلى من الأشخاص، وتُقبل في 2026 لأن الخادم الذي يعمل عند عشرة بالمئة من سعته يمثل مالاً مهدراً. إذا كنت تفضّل أن تكون في جانب المشغّل من هذه المقايضة، فإن تشغيل Proxmox على عتاد تملكه يضع hypervisor ومشكلات المشغّل بين يديك معاً.

ضع هذه النسبة في ذهنك. خدم CTSS أربعة مستخدمين على جهاز كلّف ملايين الدولارات بقيمة 1961 وشغل غرفة كاملة. أما VPS الخاص بك، مقابل بضعة دولارات شهرياً في 2026، فهو حاسوب أفضل بكثير من الجهاز الذي كان فريق Corbató يوزّع موارده، وهو متاح لك وحدك. والسبب في قدرتك على استئجاره أصلاً هو فكرة عمرها خمسة وستون عاماً التقت أخيراً بعتاد رخيص. إذا كنت تحدد ما الذي ستضعه عليه، فابدأ بقراءة ما الذي يقدمه لك VPS فعلياً ثم ما الذي يشغّله الناس عليه.

FAQ

ما أول نظام حوسبة بتقاسم الوقت؟

كان CTSS، أي نظام Compatible Time-Sharing System، الذي أنشأته مجموعة Fernando Corbató في مركز الحوسبة التابع لـMIT. عُرض لأول مرة في نوفمبر 1961 على جهاز IBM 709، وخدم أربعة مستخدمين، إذ كان يُبدَّل سياق كل مستخدم إلى محرك أشرطة منفصل. أما أول خدمة لتقاسم الوقت تخدم مجتمعاً كاملاً فكانت Dartmouth Time-Sharing System. ففي 1 مايو 1964، شغّل John Kemeny ومبرمج طالب برامج BASIC في الوقت نفسه على طرفيتين، وحصل كلاهما على إجابات صحيحة.

هل اختُرعت الآلات الافتراضية فعلاً في الستينيات؟

نعم. أدخل مركز Cambridge Scientific Center التابع لـIBM نظام CP-40 إلى الإنتاج في يناير 1967، ووفّر لكل مستخدم نظام System/360 افتراضياً كاملاً يعمل بداخله نظام التشغيل CMS. تلاه CP-67 في 1968 على System/360-67، ثم أعلنت IBM عن VM/370 في 2 أغسطس 1972. كانت هذه برامج Hypervisor حقيقية تشغّل أنظمة تشغيل ضيفاً غير معدّلة، وبيعت تجارياً قبل عقود من قدرة عتاد x86 على تنفيذ الشيء نفسه.

لماذا كان إضفاء الطابع الافتراضي على x86 صعباً، بينما لم يكن كذلك على الحواسيب المركزية؟

تنص قاعدة Popek وGoldberg لعام 1974 على أن كل تعليمة يمكنها قراءة حالة الجهاز أو تغييرها يجب أن تؤدي إلى trap عندما ينفذها الضيف خارج وضع kernel. خالف x86 هذه القاعدة. أحصى Robin وIrvine سبع عشرة تعليمة في Pentium تفشل بصمت في وضع user بدلاً من تنفيذ trap، ولذلك لا يراها Hypervisor التقليدي القائم على trap-and-emulate. وتُعد popf المثال المعتاد. عالج VMware المشكلة باستخدام binary translation، واستخدم Xen أسلوب paravirtualisation، إلى أن أضافت Intel VT-x في نوفمبر 2005 وAMD-V في مايو 2006 وضعاً عتادياً مخصصاً لـHypervisor.

هل استئجار VPS مماثل لامتلاك حساب بتقاسم الوقت؟

نموذج الفوترة ومشكلة العزل متماثلان. لكن الوحدة مختلفة. كان مستخدم تقاسم الوقت يحصل على حساب في نظام تشغيل مشترك مع جميع المستخدمين الآخرين، ولذلك كان المسؤول شخصاً في مركز الحوسبة. أما KVM VPS فيمنحك آلة افتراضية ذات kernel خاص بك وحساب root خاص بك، ولذلك تكون أنت المسؤول. ويقع VPS القائم على الحاويات بين النموذجين، لأنه يشارك kernel الخاص بالمضيف، مع منحك root داخل بيئتك الخاصة.

#history#computing#virtualization#mainframe#vps