Sejarah VPS: Dari Mainframe ke Awan
Ketahui bagaimana teknologi perkongsian masa 1960-an membentuk VPS moden anda. Kami menelusuri evolusi CTSS, Unix, dan KVM untuk memahami asal usul pengkomputeran awan hari ini.
Asal usul VPS anda
Sejarah pengkomputeran daripada kerangka utama (mainframe) kepada awan adalah kisah tentang idea yang semakin murah. Idea tersebut ialah perkongsian masa: membenarkan ramai pengguna menggunakan satu mesin yang mahal pada masa yang sama, dan memberikan setiap daripada mereka pandangan peribadi terhadap mesin tersebut. Ia dicipta sekitar tahun 1960 kerana kos komputer lebih tinggi daripada kos orang yang menggunakannya. Setiap bahagian VPS yang anda sewa hari ini dibina untuk menyelesaikan masalah tersebut: pengasingan antara pengguna, penjadual yang mengagihkan masa CPU, hypervisor, dan bil yang mengira jam penggunaan. Masalah itu tidak pernah hilang. Perkakasan menjadi murah, jadi satu bahagian yang dahulunya memerlukan geran penyelidikan kini hanya berharga beberapa dolar sebulan.
1959 hingga 1961: mengapa time-sharing dicipta
Komputer pada tahun 1950-an beroperasi secara batch. Anda menumbuk program anda pada kad, menyerahkan dek kad tersebut kepada operator, dan kembali kemudian untuk mendapatkan cetakan. Satu aksara yang tersalah taip akan merugikan anda sehari. Mesin tersebut sentiasa sibuk, itulah tujuan utamanya, kerana mesin seperti IBM 7090 berharga jutaan dolar dan masa orang yang menunggu untuk menggunakannya tidak muncul dalam mana-mana invois.
Pada Januari 1959, John McCarthy mengemukakan hujah sebaliknya dalam satu memo di MIT. Mesin sepatutnya menunggu manusia. Christopher Strachey menghuraikan satu bentuk time-sharing di persidangan UNESCO pada tahun yang sama, walaupun beliau memaksudkan seorang pengatur cara melakukan penyahpepijatan (debugging) sementara kerja lain dijalankan, bukannya ramai orang menaip serentak. Berucap di sambutan seratus tahun MIT pada 1961, McCarthy melangkah lebih jauh: pengkomputeran boleh dijual sebagai utiliti awam, dengan meter seperti elektrik.
Bantahan pada masa itu ialah time-sharing membazirkan mesin. Penukaran antara pengguna memakan kitaran (cycles), dan kitaran adalah perkara yang mahal. Bantahan itu tepat, dan ia berhenti menjadi penting, kerana harga kitaran telah jatuh selama enam puluh tahun manakala harga satu jam perhatian manusia tidak.
Apa yang perlu dicipta oleh CTSS
Kumpulan Fernando Corbató di MIT Computation Center membina Compatible Time-Sharing System (CTSS) untuk menyelesaikan perdebatan tersebut. Ia pertama kali ditunjukkan pada November 1961 menggunakan IBM 709, yang melayani empat pengguna dengan menukar kerja setiap pengguna ke pemacu pita magnetik masing-masing. "Compatible" bermaksud mesin tersebut masih boleh menjalankan sistem kelompok (batch system) lama di bawahnya, kerana tiada siapa yang akan membeli komputer yang hanya boleh melakukan perkara baharu.
Empat pengguna adalah jumlah yang kecil. Senarai masalah yang perlu diselesaikan untuk mencapainya bukanlah kecil, dan ia merupakan senarai yang sama yang diproses oleh kernel anda sekarang. CTSS memerlukan penjadual (scheduler), supaya satu tugasan yang panjang tidak membekukan terminal pengguna lain. Ia memerlukan perlindungan memori, supaya program yang terhempas hanya menjejaskan seorang pengguna dan bukannya keseluruhan sistem. Ia memerlukan storan yang kekal selepas log keluar, itulah sebabnya CTSS mempunyai salah satu sistem fail pertama yang akan dikenali oleh pengguna moden. Dan ia memerlukan kata laluan, supaya seorang pengguna tidak boleh membaca fail pengguna lain.
Tukar nama bahagian-bahagian tersebut dan anda akan mendapat sebuah kotak Linux. Penjadualnya ialah EEVDF, yang menggantikan CFS dalam Linux 6.6. Perlindungan memori ialah MMU (memory management unit) yang memberikan setiap proses ruang alamat maya (virtual address space) tersendiri. Storan yang kekal selepas log keluar ialah direktori rumah (home directory) anda. Fail kata laluan masih dipanggil /etc/passwd.
Multics dan utiliti komputer
Sistem seterusnya daripada MIT bertujuan untuk menjadi utiliti yang dihuraikan oleh McCarthy. Project MAC bermula pada tahun 1963, menandatangani kontrak untuk General Electric GE-645 pada Ogos 1964, dan menerbitkan kertas kerja pertama Multics pada tahun 1965. Namanya membawa hujah tersebut: Multiplexed Information and Computing Service. Service, seperti sesuatu yang anda beli mengikut jam.
Multics mengambil masa yang jauh lebih lama daripada yang dirancang. Prototaip mesin GE-645 sampai ke MIT dan Bell Labs pada Januari 1967. Bell Labs meninggalkan projek tersebut pada April 1969. Multics dibuka kepada pelanggan MIT Information Processing Center pada 1 Oktober 1969, dan ia kemudiannya beroperasi dalam pengeluaran di suatu tempat selama tiga puluh satu tahun. Sistem Multics terakhir yang aktif, di Canadian Department of National Defence di Halifax, Nova Scotia, telah ditutup pada 30 Oktober 2000.
Multics sering dikategorikan sebagai kegagalan kerana ia tiba lewat dan berjalan dengan perlahan. Kosakatanya menyatakan sebaliknya. Ia memberikan kita sistem fail hierarki yang mengandungi direktori di dalam direktori, senarai kawalan akses (access control list) pada setiap fail, memori maya bersegmen yang membolehkan program menangani fail seolah-olah ia adalah memori, dan gelang perlindungan (protection rings) yang menyusun kod mengikut tahap kepercayaan. Gelang tersebut masih berada dalam silikon di hadapan anda. Ring 0 untuk kernel dan ring 3 untuk kod pengguna adalah kosa kata Multics, dan virtualisasi perkakasan kemudiannya menambah mod di bawah ring 0 untuk hypervisor, yang secara tidak rasmi dipanggil oleh orang ramai sebagai ring -1.
Unix: perkongsian masa pada mesin yang mampu milik
Meninggalkan Multics menyebabkan Ken Thompson di Bell Labs tidak mempunyai sistem yang ingin beliau gunakan. Pada tahun 1969, beliau memulakan sistem yang jauh lebih kecil pada PDP-7 yang telah dibuang. Unix Programmer's Manual yang pertama bertarikh November 1971, iaitu ketika kerja tersebut telah berpindah ke PDP-11. Pada tahun 1973, Thompson dan Dennis Ritchie menulis semula kernel dalam bahasa C, supaya sistem tersebut boleh berpindah ke perkakasan baharu tanpa perlu ditulis semula secara manual.
Itulah sebabnya anda menaip ke dalam keturunan Unix dan bukannya keturunan Multics. Multics memerlukan perkakasan yang dibina untuk Multics. Unix berjalan pada apa sahaja yang murah dan tersedia, dan itulah yang menjadi ciri penentu.
"The UNIX Time-Sharing System" oleh Ritchie dan Thompson muncul dalam Communications of the ACM pada Julai 1974. Kertas kerja tersebut menerangkan VPS anda: proses, satu sistem fail berhierarki, fail sebagai aliran bait biasa, fork, pengguna dan kumpulan dengan bit kebenaran, serta shell yang merupakan program biasa dan bukannya sebahagian daripada kernel. Lima puluh dua tahun kemudian, antara muka tersebut telah dikembangkan, namun tidak pernah diganti.
Adakah kerangka utama (mainframe) benar-benar menjalankan mesin maya pada tahun 1972?
Ya, dan ini adalah bahagian cerita yang sering terlepas pandang oleh kebanyakan orang. Semasa MIT membina Multics, Cambridge Scientific Center milik IBM menyasarkan matlamat yang sama dari sudut yang berbeza. Daripada satu sistem pengendalian yang melayani ramai pengguna, Robert Creasy dan Les Comeau membina program kawalan yang memberikan setiap pengguna komputer simulasi yang lengkap. CP-40 mula dikeluarkan pada Januari 1967. Setiap pengguna mendapat System/360 maya dan menjalankan sistem pengendalian pengguna tunggal yang kecil, iaitu CMS, di dalamnya.
CP-40 menjadi CP-67 pada System/360-67 pada tahun 1968, dan IBM mengumumkan VM/370 pada 2 Ogos 1972. Itu merupakan hypervisor komersial yang dijual kepada pelanggan berbayar, lima puluh empat tahun yang lalu. Program kawalan memultiplekskan perkakasan sebenar, dan sistem pengendalian tetamu berjalan tanpa diubah suai di dalam mesin maya yang "percaya" bahawa ia memiliki mesin tersebut.
Teori ini muncul dua tahun kemudian, dalam isu Julai 1974 bagi Communications of the ACM yang turut memuatkan kertas kerja Unix. "Formal Requirements for Virtualizable Third Generation Architectures" oleh Gerald Popek dan Robert Goldberg menetapkan perkara yang perlu dilakukan oleh pemproses untuk menjadi boleh divirtualisasikan. Peraturan terasnya ringkas. Setiap arahan yang boleh membaca atau mengubah keadaan mesin mesti melakukan trap apabila tetamu melaksanakannya di luar mod kernel, supaya hypervisor mengambil alih kawalan dan menjawab dengan versi keadaan peribadi tetamu tersebut. Ini dipanggil trap and emulate. Perkakasan IBM mematuhi peraturan tersebut.
Mengapa komputer mini memecahkan model tersebut
DEC memperkenalkan PDP-8 pada 22 Mac 1965 dengan harga sekitar $18,000 dalam nilai dolar tahun 1965. Ia merupakan komputer mini pertama yang berharga di bawah $20,000 dan berjaya terjual melebihi 50,000 unit. Mikropemproses kemudiannya menurunkan lagi harga tersebut. Apabila sesebuah jabatan mampu membeli mesin sendiri, dan kemudiannya apabila individu mampu memilikinya, perkongsian satu komputer pusat dilihat sebagai masalah yang telah selesai dan tidak lagi perlu diselesaikan. Sepanjang tahun 1980-an dan 1990-an, pengkomputeran beralih ke meja kerja dan ke dalam rak pelayan x86 yang kecil.
Pembaziran kembali berlaku dalam bentuk yang berbeza. Satu aplikasi bagi setiap pelayan adalah mudah untuk difahami, namun ia membiarkan kebanyakan perkakasan melahu sementara kos kuasa dan ruang rak dibayar sepenuhnya. Ini merupakan masalah CTSS sekali lagi pada skala baharu, dengan sumber yang mahal kini adalah ruang dan elektrik, bukannya pemproses. Jawapannya adalah jawapan yang lama. Kongsi mesin tersebut.
Mengapakah x86 begitu sukar untuk divirtualisasikan?
Sebabnya ialah x86 melanggar peraturan Popek dan Goldberg. Pada Simposium Keselamatan USENIX ke-9 pada Ogos 2000, John Scott Robin dan Cynthia Irvine meneliti set arahan Pentium dan menemui tujuh belas arahan yang membaca atau mengubah status keistimewaan tanpa mencetuskan ralat apabila kod mod pengguna melaksanakannya. popf ialah contoh standard. Jalankannya dalam mod pengguna dan pemproses akan mengabaikan bit yang tidak dibenarkan untuk ditetapkan oleh program tersebut secara senyap, bukannya melakukan trap. Oleh itu, hypervisor yang dibina berasaskan kaedah trap and emulate tidak akan mengetahui bahawa tetamu telah mencubanya.
Dua jawapan muncul sebelum perkakasan tersebut diperbaiki. VMware, yang diasaskan pada 1998 hasil daripada penyelidikan Disco di Stanford, memeriksa kod kernel tetamu dan menulis semula arahan yang bermasalah sebelum ia dilaksanakan, satu teknik yang dipanggil binary translation. Xen, daripada Makmal Komputer Universiti Cambridge, mengubah tetamu tersebut sebaliknya. Kertas kerja "Xen and the Art of Virtualization", yang dibentangkan di SOSP pada Oktober 2003, menerangkan paravirtualisation: kernel tetamu yang diubah suai memanggil hypervisor secara sengaja dan bukannya menjalankan arahan yang tidak dapat dipintas oleh hypervisor.
Kemudian perkakasan tersebut diperbaiki, dengan cara yang sama seperti IBM memperbaikinya pada tahun 1960-an. Intel melancarkan VT-x pada dua model Pentium 4 pada 14 November 2005, dan AMD melancarkan AMD-V pada Mei 2006. Kedua-duanya menambah mod pemproses di bawah kernel tetamu, supaya tetamu menjalankan kernelnya sendiri pada kelajuan penuh sementara hypervisor mengekalkan kawalan ke atas peristiwa yang diminta. Ini menjadikan hypervisor cukup kecil untuk berada di dalam sistem pengendalian biasa, dan KVM oleh Avi Kivity di Qumranet melakukan perkara tersebut: ia menukarkan kernel Linux itu sendiri menjadi hypervisor. KVM digabungkan untuk Linux 2.6.20, yang dikeluarkan pada Februari 2007, dan ia merupakan teknologi yang digunakan oleh sebahagian besar hos VPS hari ini.
Bagaimana VPS mendapat namanya
Dua aliran bertemu pada awal tahun 2000-an. Aliran pertama ialah mesin maya penuh pada x86, iaitu tetamu yang memuatkan kernelnya sendiri. Aliran kedua ialah virtualisasi peringkat sistem pengendalian: satu kernel Linux dikongsi yang dibahagikan kepada persekitaran berasingan, setiap satunya mempunyai pengguna root dan jadual proses sendiri. Linux-VServer dan Virtuozzo daripada SWsoft muncul pada tahun 2001, dan SWsoft mengeluarkan sebahagian daripada Virtuozzo sebagai OpenVZ yang bersifat sumber terbuka pada tahun 2005. Frasa "virtual private server" berasal daripada keluarga tersebut, yang dibentuk melalui analogi dengan virtual private network.
Amazon mengubah penyewaan kepada panggilan API. S3 dilancarkan pada 14 Mac 2006, dan EC2 dibuka sebagai beta awam terhad pada 25 Ogos 2006 dengan satu jenis instans, yang berjalan pada Xen. Pembelian kuasa pengkomputeran tidak lagi menjadi kontrak dengan biro perkhidmatan, sebaliknya menjadi permintaan yang selesai dalam masa seminit.
Kedua-dua aliran ini masih wujud, dan perbezaan tersebut masih menentukan perkara yang boleh anda lakukan dengan pelayan yang anda sewa. VPS KVM memuatkan kernelnya sendiri, jadi anda boleh memuatkan modul kernel dan juga menjalankan hypervisor di dalam VPS anda. Pelan berasaskan kontena berkongsi kernel hos dan tidak boleh melakukan perkara tersebut. Enam puluh tahun sejarah berada di sebalik satu baris pada halaman harga, itulah sebabnya anda perlu memahami perbezaan antara VPS, VM dan VPC sebelum anda memilih salah satu daripadanya.
Perubahan daripada kerangka utama (mainframe) kepada VPS anda, dan perkara yang kekal sama
Empat perkara telah berubah. Mesin tersebut tidak lagi berada di bangunan anda. Terminal kini merupakan satu program dan bukannya perabot fizikal. Unit yang anda sewa adalah sebuah komputer lengkap dengan kernelnya sendiri, bukannya sekadar akaun pada sistem pengendalian orang lain. Harganya juga telah turun sehingga pembelian boleh dilakukan melalui pembayaran kad, bukannya melalui proses perolehan yang rumit.
Mekanismenya tidak berubah sama sekali.
- Sesi ssh anda adalah terminal perkongsian masa (time-sharing). Anda mendapat log masuk dan shell, dan penjadual (scheduler) menentukan bila proses anda akan dijalankan seterusnya.
- Pengasingan masih dikuatkuasakan oleh perkakasan. MMU dan tahap keistimewaan pemproses melakukan kerja tersebut, tepat seperti yang diperlukan oleh CP-40 pada tahun 1967.
- Anda masih dibilkan untuk bahagian mesin berdasarkan masa yang berlalu, sama seperti cara biro perkhidmatan mengenakan caj untuk jam sambungan.
- Anda masih merasai kehadiran penyewa lain. Apabila hos terlebih langgan (oversubscribed), tetamu anda perlu menunggu CPU fizikal, dan Linux melaporkan masa tunggu tersebut sebagai masa curi CPU daripada jiran yang bising.
Perkara terakhir itu adalah ringkasan jujur bagi keseluruhan sejarah ini. Berkongsi mesin adalah satu pertukaran. Ia diterima pada tahun 1961 kerana kos komputer lebih mahal daripada kos manusia, dan ia diterima pada tahun 2026 kerana pelayan yang berjalan pada sepuluh peratus kapasiti adalah pembaziran wang. Jika anda lebih suka berada di pihak pengendali dalam pertukaran tersebut, menjalankan Proxmox pada perkakasan milik anda memberikan anda hypervisor berserta masalah pengendali sekali gus.
Sentiasa ingat nisbah tersebut. CTSS melayani empat pengguna pada mesin yang berharga jutaan dolar pada tahun 1961 dan memenuhi satu bilik. VPS anda, dengan harga beberapa dolar sebulan pada tahun 2026, adalah komputer yang jauh lebih baik daripada komputer yang dicatu oleh pasukan Corbató, dan anda memilikinya secara eksklusif. Sebab anda boleh menyewanya adalah kerana idea berusia enam puluh lima tahun yang akhirnya bertemu dengan perkakasan murah. Jika anda sedang memikirkan apa yang ingin diletakkan di atasnya, mulakan dengan apa yang sebenarnya diberikan oleh VPS kepada anda dan kemudian apa yang orang jalankan pada VPS.
FAQ
Apakah sistem komputer perkongsian masa yang pertama?
CTSS, iaitu Compatible Time-Sharing System, dibina oleh kumpulan Fernando Corbató di MIT Computation Center. Ia pertama kali ditunjukkan pada November 1961 menggunakan IBM 709 dan melayani empat pengguna, dengan setiap pengguna ditukar keluar ke pemacu pita yang berasingan. Perkhidmatan perkongsian masa pertama untuk seluruh komuniti ialah Dartmouth Time-Sharing System: pada 1 Mei 1964, John Kemeny dan seorang pelajar pengaturcaraan menjalankan program BASIC pada masa yang sama di dua terminal dan kedua-duanya menerima jawapan yang betul.
Adakah mesin maya benar-benar dicipta pada tahun 1960-an?
Ya. Cambridge Scientific Center milik IBM memulakan pengeluaran CP-40 pada Januari 1967, memberikan setiap pengguna satu System/360 maya yang lengkap dengan sistem pengendalian CMS yang berjalan di dalamnya. CP-67 menyusul pada tahun 1968 di atas System/360-67, dan IBM mengumumkan VM/370 pada 2 Ogos 1972. Itu adalah hypervisor sebenar yang menjalankan sistem pengendalian tetamu tanpa diubah suai, dijual secara komersial, beberapa dekad sebelum perkakasan x86 mampu melakukan perkara yang sama.
Mengapakah x86 sukar untuk divirtualisasikan sedangkan kerangka utama (mainframe) tidak?
Peraturan Popek dan Goldberg tahun 1974 menyatakan setiap arahan yang boleh membaca atau mengubah keadaan mesin mesti memerangkap (trap) apabila tetamu menjalankannya di luar mod kernel. x86 melanggar peraturan tersebut. Robin dan Irvine mengira tujuh belas arahan Pentium yang gagal secara senyap dalam mod pengguna dan bukannya memerangkap, jadi hypervisor trap-and-emulate klasik tidak pernah melihat arahan tersebut, dan popf adalah contoh biasa. VMware mengatasi masalah ini dengan terjemahan binari dan Xen dengan paravirtualisasi, sehinggalah Intel VT-x pada November 2005 dan AMD-V pada Mei 2006 menambah mod perkakasan untuk hypervisor.
Adakah menyewa VPS sama dengan mempunyai akaun perkongsian masa?
Model pengebilan dan masalah pengasingan adalah sama. Unitnya sahaja yang berbeza. Pengguna perkongsian masa mendapat akaun pada sistem pengendalian yang dikongsi dengan orang lain, jadi pentadbirnya ialah seseorang di pusat komputer. KVM VPS memberikan anda mesin maya dengan kernel sendiri dan akaun root sendiri, jadi pentadbirnya ialah anda. VPS berasaskan kontena berada di antara kedua-duanya, kerana ia berkongsi kernel hos namun masih memberikan anda akses root di dalam persekitaran anda sendiri.