Mainframe पासून VPS पर्यंतचा computing इतिहास
तुमचा VPS 1960 च्या time-sharing मधून आला आहे. CTSS, Multics, Unix, IBM VM/370, Xen आणि KVM यांची साखळी, तसेच काय बदलले नाही ते जाणून घ्या.
तुमचा VPS कुठून येतो
Mainframe पासून cloud पर्यंतच्या computing च्या इतिहासात एकच कल्पना स्वस्त होत गेली: time-sharing. एका महागड्या machine चा वापर अनेक लोकांनी एकाच वेळी करावा आणि प्रत्येकाला त्याचे स्वतंत्र दृश्य मिळावे, अशी ही पद्धत आहे. लोकांची संख्या वापरत असलेल्या computer च्या किमतीपेक्षा कमी होती, म्हणून 1960 च्या आसपास ही पद्धत विकसित करण्यात आली. तुम्ही आज भाड्याने घेत असलेल्या VPS मधील प्रत्येक घटक याच समस्येसाठी तयार करण्यात आला: users मधील isolation, CPU time वाटप करणारा scheduler, hypervisor आणि वापरलेल्या तासांची मोजणी करणारे billing system. ही समस्या कधीच नाहीशी झाली नाही. Hardware स्वस्त झाले. त्यामुळे पूर्वी research grant आवश्यक असलेला slice आता दरमहा काही dollars मध्ये मिळतो.
1959 ते 1961: time-sharing का निर्माण करण्यात आले
1950 च्या दशकात संगणक batch पद्धतीने चालत असे. तुम्ही तुमचा program cards वर punch करून operator कडे देत असत आणि printout साठी नंतर परत येत असत. एक चुकीचा character टाइप केल्यामुळे तुमचा एक दिवस वाया जात असे. मशीन सतत व्यस्त राहणे हा त्यामागचा मुख्य उद्देश होता, कारण IBM 7090 सारख्या मशीनची किंमत लाखो dollars होती आणि त्याची वाट पाहणाऱ्या लोकांच्या वेळेचा कोणत्याही invoice मध्ये समावेश होत नसे.
January 1959 मध्ये John McCarthy यांनी MIT मधील एका memo मध्ये याच्या उलट मांडणी केली. मशीनने व्यक्तीची वाट पाहिली पाहिजे. त्याच वर्षी UNESCO conference मध्ये Christopher Strachey यांनी time-sharing च्या एका प्रकाराचे वर्णन केले. मात्र त्यांचा अर्थ अनेक लोकांनी एकाच वेळी typing करणे असा नव्हता; एक programmer debugging करत असताना इतर jobs चालू ठेवणे असा त्यांचा अर्थ होता. 1961 मध्ये MIT च्या centennial मध्ये बोलताना McCarthy यांनी पुढे मांडले की computing ही public utility म्हणून विकता येऊ शकते आणि तिचे metering electricity प्रमाणे करता येऊ शकते.
त्या काळातील आक्षेप असा होता की time-sharing मुळे मशीनचा अपव्यय होतो. Users मध्ये switching करण्यासाठी cycles खर्च होतात आणि cycles ही महागडी गोष्ट होती. हा आक्षेप योग्य होता. मात्र तो पुढे अप्रासंगिक ठरला, कारण साठ वर्षांत एका cycle ची किंमत कमी होत गेली, पण मानवी लक्षाच्या एका तासाची किंमत कमी झाली नाही.
CTSS ला ज्या गोष्टींचा शोध लावावा लागला
Fernando Corbató यांच्या गटाने MIT Computation Center मध्ये Compatible Time-Sharing System (CTSS) तयार केले, जेणेकरून हा वाद मिटवता येईल. IBM 709 वर November 1961 मध्ये त्याचे प्रथम प्रात्यक्षिक दाखवण्यात आले. त्यावेळी ते चार users ना सेवा देत होते आणि प्रत्येक user चे काम स्वतंत्र magnetic tape drive वर swap out करत होते. “Compatible” याचा अर्थ असा होता की मशीनखाली जुनी batch system देखील चालू शकत होती, कारण फक्त नवीन काम करणारा computer कोणीही विकत घेत नाही.
चार users ही लहान संख्या आहे. मात्र तेवढ्या क्षमतेपर्यंत पोहोचण्यासाठी सोडवाव्या लागलेल्या समस्यांची यादी लहान नाही. तुमचा kernel आत्ताही याच समस्यांवर प्रक्रिया करतो. CTSS ला scheduler आवश्यक होता, जेणेकरून एखादे दीर्घकाळ चालणारे काम इतर प्रत्येक terminal ला freeze करू शकणार नाही. त्याला memory protection आवश्यक होते, जेणेकरून crash होणाऱ्या program मुळे संपूर्ण system ऐवजी फक्त एका user वर परिणाम होईल. logout नंतरही टिकून राहणारे storage आवश्यक होते. म्हणूनच CTSS मध्ये आधुनिक user ओळखू शकेल अशा सुरुवातीच्या file systems पैकी एक file system होते. तसेच passwords आवश्यक होते, जेणेकरून एक user दुसऱ्या user च्या files वाचू शकणार नाही.
या घटकांची नावे बदला आणि तुमच्याकडे Linux box तयार आहे. Scheduler म्हणजे EEVDF, ज्याने Linux 6.6 मध्ये CFS ची जागा घेतली. Memory protection म्हणजे MMU (memory management unit), जी प्रत्येक process ला स्वतःची virtual address space देते. logout नंतर टिकून राहणारे storage म्हणजे तुमची home directory. Password file चे नाव अजूनही /etc/passwd आहे.
Multics आणि संगणकीय उपयुक्तता
MIT ची पुढील प्रणाली McCarthy यांनी वर्णन केलेली utility म्हणून तयार केली जाणार होती. Project MAC ची सुरुवात 1963 मध्ये झाली, August 1964 मध्ये General Electric GE-645 साठी करार झाला आणि 1965 मध्ये Multics वरील पहिले लेख प्रकाशित झाले. या नावातच त्यामागील संकल्पना स्पष्ट होते: Multiplexed Information and Computing Service. येथे Service म्हणजे तासानुसार खरेदी करता येणारी संगणकीय सेवा.
Multics विकसित होण्यासाठी नियोजित वेळेपेक्षा खूप अधिक काळ लागला. Prototype GE-645 machines January 1967 मध्ये MIT आणि Bell Labs येथे पोहोचल्या. Bell Labs ने April 1969 मध्ये हा प्रकल्प सोडला. Multics ने 1 October 1969 रोजी MIT Information Processing Center च्या ग्राहकांसाठी सेवा सुरू केली. त्यानंतर ती कुठेतरी production मध्ये एकतीस वर्षे चालू राहिली. Halifax, Nova Scotia येथील Canadian Department of National Defence मधील शेवटची live Multics system 30 October 2000 रोजी बंद करण्यात आली.
उशिरा उपलब्ध झाली आणि मंद गतीने चालली म्हणून Multics कडे अनेकदा अपयशी प्रणाली म्हणून पाहिले जाते. मात्र तिची तांत्रिक संज्ञा वेगळे चित्र दाखवते. तिने directories आत directories असलेली hierarchical file system, प्रत्येक file साठी access control list, एखाद्या program ला file ला memory प्रमाणे address करता येईल अशी segmented virtual memory आणि code वर असलेल्या विश्वासाच्या पातळीनुसार त्याला क्रमवारी देणारे protection rings दिले. तुमच्यासमोरील silicon मध्ये आजही rings वापरले जातात. Kernel साठी ring 0 आणि user code साठी ring 3 ही Multics मधील संज्ञा आहे. त्यानंतर hardware virtualisation मध्ये hypervisor साठी ring 0 च्या खाली आणखी एक mode जोडला गेला; त्याला अनौपचारिकपणे ring -1 म्हटले जाते.
Unix: परवडणाऱ्या संगणकावर time-sharing
Multics सोडल्यानंतर Ken Thompson यांच्याकडे Bell Labs मध्ये त्यांना वापरायची इच्छा असलेली system उरली नाही. 1969 मध्ये त्यांनी टाकून दिलेल्या PDP-7 वर एक खूपच लहान system सुरू केली. पहिल्या Unix Programmer's Manual वर November 1971 ही तारीख आहे. तोपर्यंत हे काम PDP-11 वर हलवले गेले होते. 1973 मध्ये Thompson आणि Dennis Ritchie यांनी kernel पुन्हा C मध्ये लिहिला. त्यामुळे प्रत्येक नवीन hardware साठी system पुन्हा हाताने लिहावी लागली नाही.
म्हणून तुम्ही Multics च्या नव्हे, तर Unix च्या descendant मध्ये commands type करता. Multics साठी Multics साठीच तयार केलेले hardware आवश्यक होते. Unix स्वस्त आणि उपलब्ध असलेल्या कोणत्याही hardware वर चालत असे. शेवटी हेच त्याचे निर्णायक वैशिष्ट्य ठरले.
Ritchie आणि Thompson यांचा "The UNIX Time-Sharing System" हा लेख July 1974 मध्ये Communications of the ACM मध्ये प्रकाशित झाला. या लेखात तुमच्या VPS मधील घटकांचे वर्णन आहे: processes, एक hierarchical file system, साध्या byte streams म्हणून files, fork, permission bits असलेले users आणि groups, तसेच kernel चा भाग नसलेला सामान्य program म्हणून shell. बावन्न वर्षांनंतर ही interface विस्तारित झाली आहे; ती कधीही बदलून टाकलेली नाही.
1972 मध्ये mainframe वर virtual machine खरोखर चालत होत्या का?
होय. आणि या इतिहासातील महत्त्वाचा भाग बहुतेक लोकांच्या लक्षात येत नाही. MIT ने Multics तयार करत असताना IBM च्या Cambridge Scientific Center ने याच उद्दिष्टाकडे उलट दिशेने पाहिले. अनेक वापरकर्त्यांना एकच operating system सेवा देण्याऐवजी Robert Creasy आणि Les Comeau यांनी प्रत्येक वापरकर्त्याला पूर्णपणे simulated computer देणारा control program तयार केला. CP-40 जानेवारी 1967 मध्ये production मध्ये आले. प्रत्येक वापरकर्त्याला virtual System/360 मिळत असे आणि त्यामध्ये CMS नावाचे छोटे single-user operating system चालत असे.
1968 मध्ये System/360-67 वर CP-40 चे CP-67 मध्ये रूपांतर झाले. IBM ने 2 August 1972 रोजी VM/370 ची घोषणा केली. म्हणजे पैसे देणाऱ्या ग्राहकांना विकला गेलेला commercial hypervisor चौपन्न वर्षांपूर्वीच उपलब्ध होता. एका control program ने वास्तविक hardware चे multiplexing केले. Guest operating systems कोणताही बदल न करता virtual machines मध्ये चालत आणि त्या machine वर त्यांचेच पूर्ण नियंत्रण आहे असे समजत.
यामागील सिद्धांत दोन वर्षांनी आला. Unix वरील लेख ज्या Communications of the ACM च्या July 1974 अंकात प्रसिद्ध झाला, त्याच अंकात तो प्रकाशित झाला. Gerald Popek आणि Robert Goldberg यांच्या "Formal Requirements for Virtualizable Third Generation Architectures" या लेखात processor virtualisable होण्यासाठी त्याने कोणत्या अटी पूर्ण केल्या पाहिजेत हे मांडले. मूलभूत नियम संक्षिप्त आहे. Machine ची स्थिती वाचू किंवा बदलू शकणारी प्रत्येक instruction guest ने kernel mode च्या बाहेर execute केल्यास trap झाली पाहिजे. त्यामुळे hypervisor नियंत्रण घेऊ शकतो आणि त्या guest च्या स्थितीची त्याला स्वतंत्र असलेली आवृत्ती परत देऊ शकतो. याला trap and emulate म्हणतात. IBM चे hardware या नियमाचे पालन करत होते.
मिनीकॉम्प्युटरने हे प्रारूप का मोडले
DEC ने 22 March 1965 रोजी PDP-8 सादर केला. 1965 मधील डॉलरच्या मूल्यानुसार त्याची किंमत सुमारे $18,000 होती. $20,000 पेक्षा कमी किंमत असलेला तो पहिला minicomputer होता आणि त्याच्या 50,000 पेक्षा अधिक units विकल्या गेल्या. त्यानंतर microprocessor मुळे किंमत पुन्हा कमी झाली. एखादा विभाग स्वतःचे machine खरेदी करू लागला आणि पुढे एखादी व्यक्तीही ते करू लागली, तेव्हा एकच central computer share करणे ही सोडवलेली समस्या वाटू लागली. ती पुन्हा सोडवण्याची गरज उरली नाही. 1980 आणि 1990 च्या दशकांत computing desk वर आणि लहान x86 servers असलेल्या racks मध्ये गेले.
ही resource waste वेगळ्या स्वरूपात परत आली. प्रत्येक server वर एकच application ठेवणे समजणे सोपे असते. परंतु त्यामुळे hardware चा बहुतांश भाग idle राहतो, तर power आणि rack space साठी पूर्ण खर्च करावा लागतो. ही पुन्हा CTSS चीच समस्या होती, पण नव्या scale वर. आता महाग resource processor नसून room आणि electricity होते. उपाय पूर्वीचाच होता. Machine share करा.
x86 चे virtualise करणे इतके कठीण का होते?
कारण x86 ने Popek आणि Goldberg यांचा नियम मोडला. ऑगस्ट 2000 मध्ये झालेल्या 9th USENIX Security Symposium मध्ये John Scott Robin आणि Cynthia Irvine यांनी Pentium instruction set तपासला. user-mode code या instructions चालवताना fault न होता privileged state वाचणाऱ्या किंवा बदलणाऱ्या सतरा instructions त्यांना आढळल्या. popf हे याचे मानक उदाहरण आहे. ते user mode मध्ये चालवल्यावर program ला set करण्याची अनुमती नसलेले bits processor शांतपणे दुर्लक्षित करतो; तो trap करत नाही. त्यामुळे trap-and-emulate वर आधारित hypervisor ला guest ने प्रयत्न केला हे कधी कळत नाही.
hardware मध्ये सुधारणा होण्यापूर्वी दोन उपाय आले. Stanford मधील Disco संशोधनातून 1998 मध्ये स्थापन झालेल्या VMware ने guest kernel code तपासला आणि अडचणीच्या instructions त्या execute होण्यापूर्वी पुन्हा लिहिल्या. या तंत्राला binary translation म्हणतात. University of Cambridge Computer Laboratory मधील Xen ने त्याऐवजी guest मध्ये बदल केला. October 2003 मध्ये SOSP येथे सादर झालेल्या "Xen and the Art of Virtualization" या paper मध्ये paravirtualisation चे वर्णन केले आहे. यात बदललेला guest kernel hypervisor ला मुद्दाम call करतो. त्यामुळे hypervisor intercept करू शकत नाही अशा instructions तो चालवत नाही.
त्यानंतर IBM ने 1960s मध्ये ज्या पद्धतीने hardware मध्ये सुधारणा केली होती, त्याच पद्धतीने hardware मध्ये सुधारणा झाली. Intel ने 14 November 2005 रोजी दोन Pentium 4 models वर VT-x उपलब्ध केले. AMD ने May 2006 मध्ये AMD-V उपलब्ध केले. दोन्ही तंत्रज्ञान guest kernel च्या खाली processor mode जोडतात. त्यामुळे guest स्वतःचे kernel पूर्ण वेगाने चालवतो, तर hypervisor त्याने मागितलेल्या events वर नियंत्रण ठेवतो. यामुळे सामान्य operating system च्या आत ठेवता येईल इतका लहान hypervisor तयार झाला. Qumranet मधील Avi Kivity यांच्या KVM ने नेमके हेच केले: त्याने Linux kernel चेच hypervisor मध्ये रूपांतर केले. KVM Linux 2.6.20 मध्ये समाविष्ट झाले. ही आवृत्ती February 2007 मध्ये release झाली. आज मोठ्या प्रमाणातील VPS hosts वर हेच चालते.
VPS ला हे नाव कसे मिळाले
2000 च्या सुरुवातीला दोन प्रवाह एकत्र आले. त्यापैकी एक x86 वरील पूर्ण virtual machine होता. त्यामध्ये guest स्वतःचे kernel boot करत असे. दुसरा प्रवाह operating-system-level virtualisation होता. त्यामध्ये एकच shared Linux kernel स्वतंत्र environments मध्ये विभागला जातो. प्रत्येक environment ला स्वतःचा root user आणि स्वतःची process table असते. Linux-VServer आणि SWsoft चे Virtuozzo हे दोन्ही 2001 मध्ये उपलब्ध झाले. SWsoft ने 2005 मध्ये Virtuozzo चा काही भाग open-source OpenVZ म्हणून release केला. "virtual private server" हा शब्द याच प्रवाहातून आला. तो virtual private network या संज्ञेच्या धर्तीवर तयार झाला.
Amazon ने संसाधने भाड्याने देण्याची प्रक्रिया API call मध्ये रूपांतरित केली. S3 14 March 2006 रोजी launch झाले. EC2 ने 25 August 2006 रोजी मर्यादित public beta म्हणून सुरुवात केली. त्यामध्ये एकच instance type होता आणि तो Xen वर चालत होता. Compute खरेदी करणे ही service bureau सोबतची contract प्रक्रिया राहिली नाही. त्याऐवजी एका मिनिटात परिणाम देणारी request करणे पुरेसे झाले.
दोन्ही प्रवाह आजही अस्तित्वात आहेत. तुम्ही भाड्याने घेतलेल्या server वर काय करू शकता हे विभाजन अजूनही ठरवते. KVM VPS स्वतःचे kernel boot करते. त्यामुळे तुम्ही kernel modules load करू शकता आणि तुमच्या VPS मध्ये hypervisor देखील चालवू शकता. Container-based plan मध्ये host kernel shared असते. त्यामुळे ते शक्य नसते. Pricing page वरील त्या एका ओळीमागे साठ वर्षांचा इतिहास आहे. म्हणून VPS निवडण्यापूर्वी VPS, VM आणि VPC यांच्यातील फरक समजून घेणे उपयुक्त ठरते.
मेनफ्रेमपासून तुमच्या VPS मध्ये काय बदलले आणि काय बदलले नाही
चार गोष्टी बदलल्या. मशीन तुमच्या इमारतीत नाही. टर्मिनल हे फर्निचरचा भाग नसून एक प्रोग्राम आहे. तुम्ही भाड्याने घेतलेली युनिट ही स्वतःच्या kernel असलेला संपूर्ण संगणक आहे; ती दुसऱ्याच्या operating system वरील account नाही. तसेच किंमत इतकी कमी झाली आहे की खरेदीसाठी procurement process ऐवजी card payment पुरेसे ठरते.
यंत्रणेत मात्र अजिबात बदल झालेला नाही.
- तुमचे ssh session हे time-sharing terminal आहे. तुम्हाला login आणि shell मिळतात, आणि scheduler तुमची process पुढे कधी चालवायची हे ठरवतो.
- Isolation अजूनही hardware द्वारे लागू केली जाते. MMU आणि processor चे privilege levels हे काम करतात. 1967 मध्ये CP-40 साठी जसे आवश्यक होते, तसेच.
- तुम्हाला अजूनही एखाद्या मशीनमधील वाट्यासाठी elapsed time नुसार billing केले जाते. Service bureaus connect hours साठी जसे billing करत, तसेच.
- इतर tenants चा परिणाम तुम्हाला अजूनही जाणवतो. Host वर oversubscription असल्यास physical CPU उपलब्ध होईपर्यंत तुमचा guest प्रतीक्षा करतो. Linux ही प्रतीक्षा गोंगाट करणाऱ्या शेजाऱ्यामुळे होणारा CPU steal time म्हणून दाखवतो.
हा शेवटचा मुद्दा संपूर्ण इतिहासाचा अचूक सारांश आहे. मशीन share करणे हा एक trade आहे. 1961 मध्ये संगणकाची किंमत माणसांपेक्षा जास्त असल्यामुळे ते स्वीकारले गेले. 2026 मध्ये server त्याच्या क्षमतेच्या दहा टक्के क्षमतेवर चालवणे म्हणजे पैसा वाया घालवणे असल्यामुळे ते स्वीकारले जाते. या trade मध्ये operator च्या बाजूने राहणे तुम्हाला पसंत असेल, तर तुमच्या मालकीच्या hardware वर Proxmox चालवणे तुम्हाला hypervisor आणि operator च्या समस्या दोन्ही एकत्र देते.
हे प्रमाण लक्षात ठेवा. CTSS ने 1961 मधील लाखो dollars किंमत असलेल्या आणि एक संपूर्ण खोली व्यापणाऱ्या मशीनवर चार users ना सेवा दिली. 2026 मध्ये दरमहा काही dollars देऊन मिळणारा तुमचा VPS, Corbató च्या team ला rationing करावा लागलेल्या संगणकापेक्षा कितीतरी चांगला आहे आणि तो पूर्णपणे तुमच्यासाठी उपलब्ध आहे. तुम्ही तो भाड्याने घेऊ शकता, याचे कारण म्हणजे पासष्ट वर्षे जुनी कल्पना आणि स्वस्त hardware यांची अखेर झालेली सांगड. त्यावर काय ठेवायचे हे ठरवत असाल, तर VPS तुम्हाला प्रत्यक्षात काय देते यापासून सुरुवात करा आणि नंतर लोक VPS वर काय चालवतात ते पाहा.
FAQ
पहिली time-sharing computer system कोणती होती?
CTSS म्हणजे Compatible Time-Sharing System. हे MIT Computation Center मधील Fernando Corbató यांच्या गटाने तयार केले. ते प्रथम November 1961 मध्ये IBM 709 वर प्रदर्शित करण्यात आले. त्यावर चार users सेवा वापरत होते आणि प्रत्येक user चा context स्वतंत्र tape drive वर swap केला जात होता. संपूर्ण समुदायासाठीची पहिली time-sharing service Dartmouth Time-Sharing System होती. 1 May 1964 रोजी John Kemeny आणि एका student programmer ने दोन terminals वर एकाच वेळी BASIC programs चालवले आणि दोघांनाही अचूक उत्तरे मिळाली.
Virtual machines चा खरोखर 1960 च्या दशकात शोध लागला होता का?
होय. IBM च्या Cambridge Scientific Center ने January 1967 मध्ये CP-40 production मध्ये आणले. त्यामध्ये प्रत्येक user ला CMS operating system चालणारा संपूर्ण virtual System/360 मिळत असे. 1968 मध्ये System/360-67 साठी CP-67 आले आणि IBM ने 2 August 1972 रोजी VM/370 जाहीर केले. हे unmodified guest operating systems चालवणारे वास्तविक hypervisors आहेत. x86 hardware तेच करू शकण्याच्या अनेक दशकांपूर्वी ही products व्यावसायिकरित्या विकली जात होती.
Mainframes virtualise करणे सोपे असताना x86 virtualise करणे अवघड का होते?
Popek आणि Goldberg यांच्या 1974 मधील नियमानुसार, machine state वाचू किंवा बदलू शकणारी प्रत्येक instruction guest kernel mode च्या बाहेर चालवताना trap झाली पाहिजे. x86 या नियमाचे पालन करत नव्हते. Robin आणि Irvine यांनी मोजले की Pentium मधील सतरा instructions user mode मध्ये trap होण्याऐवजी शांतपणे अपयशी ठरतात. त्यामुळे classic trap-and-emulate hypervisor त्यांना पाहू शकत नाही. popf हे त्याचे नेहमीचे उदाहरण आहे. VMware ने binary translation वापरून आणि Xen ने paravirtualisation वापरून या समस्येवर मार्ग काढला. त्यानंतर November 2005 मध्ये Intel VT-x आणि May 2006 मध्ये AMD-V आले. त्यांनी hypervisor साठी hardware mode उपलब्ध करून दिला.
VPS भाड्याने घेणे म्हणजे time-sharing account असण्यासारखेच आहे का?
Billing model आणि isolation problem समान आहेत. मात्र unit वेगळी आहे. Time-sharing user ला इतर सर्व users सोबत shared असलेल्या operating system वर account मिळत असे. त्यामुळे administrator computer centre मधील कोणीतरी असायचा. KVM VPS तुम्हाला तुमचा स्वतःचा kernel आणि तुमचे स्वतःचे root account असलेली virtual machine देते. त्यामुळे administrator तुम्ही स्वतः असता. Container-based VPS या दोन्हींच्या मधील प्रकार आहे. तो host kernel share करतो, पण तुमच्या स्वतःच्या environment मध्ये तुम्हाला root access देतो.