Sejarah VPS: Dari Mainframe hingga Cloud
VPS modern berakar pada time-sharing tahun 1960-an. Ikuti jejak CTSS, Multics, Unix, IBM VM/370, Xen, dan KVM, serta prinsip yang tidak berubah.
Asal VPS Anda
Sejarah komputasi, dari mainframe hingga cloud, adalah sejarah ketika sebuah gagasan menjadi semakin murah. Gagasan tersebut adalah time-sharing: banyak orang menggunakan satu mesin mahal secara bersamaan, dan masing-masing memperoleh tampilan privat atas mesin itu. Teknologi ini ditemukan sekitar 1960 karena harga sebuah komputer lebih mahal daripada biaya orang-orang yang menggunakannya. Setiap bagian VPS yang Anda sewa saat ini dibuat untuk mengatasi masalah tersebut: isolasi antar-pengguna, scheduler yang membagikan waktu CPU, hypervisor, dan tagihan yang menghitung durasi penggunaan. Masalah tersebut tidak pernah hilang. Perangkat keras menjadi murah, sehingga satu bagian yang dahulu memerlukan hibah penelitian kini hanya berharga beberapa dolar per bulan.
1959 hingga 1961: mengapa time-sharing diciptakan
Komputer pada 1950-an bekerja dalam mode batch. Anda menuliskan program pada kartu, menyerahkan tumpukan kartu tersebut kepada operator, lalu kembali beberapa waktu kemudian untuk mengambil hasil cetak. Satu karakter yang salah ketik dapat membuat Anda kehilangan waktu sehari. Mesin tetap sibuk, dan itulah tujuan utamanya, karena mesin seperti IBM 7090 berharga jutaan dolar, sedangkan waktu orang yang menunggunya tidak tercantum pada tagihan apa pun.
Pada Januari 1959, John McCarthy menyampaikan sudut pandang yang berlawanan dalam sebuah memo di MIT. Mesin seharusnya menunggu manusia. Christopher Strachey menjelaskan bentuk time-sharing dalam konferensi UNESCO pada tahun yang sama, meskipun yang dimaksudnya adalah satu programmer melakukan debugging saat pekerjaan lain berjalan, bukan banyak orang mengetik secara bersamaan. Saat berbicara pada peringatan seabad MIT pada 1961, McCarthy melangkah lebih jauh: komputasi dapat dijual sebagai utilitas publik dan dikenai biaya berdasarkan pemakaian, seperti listrik.
Keberatan pada waktu itu adalah bahwa time-sharing membuang sumber daya mesin. Peralihan antar pengguna menggunakan siklus pemrosesan, dan siklus itulah komponen yang mahal. Keberatan tersebut benar, tetapi kemudian tidak lagi penting karena harga satu siklus pemrosesan turun selama enam puluh tahun, sedangkan harga satu jam perhatian manusia tidak turun.
Hal yang harus diciptakan CTSS
Kelompok Fernando Corbató di MIT Computation Center membangun Compatible Time-Sharing System (CTSS) untuk menyelesaikan perdebatan tersebut. Sistem ini pertama kali didemonstrasikan pada November 1961 di IBM 709 dan melayani empat pengguna dengan memindahkan pekerjaan setiap pengguna ke magnetic tape drive masing-masing. Istilah "Compatible" berarti mesin tersebut tetap dapat menjalankan sistem batch lama di bawahnya, karena tidak ada yang membeli komputer yang hanya dapat melakukan hal baru.
Empat pengguna adalah jumlah yang kecil. Namun, daftar masalah yang harus diselesaikan untuk mencapainya tidaklah kecil, dan daftar itu sama dengan yang dikerjakan kernel Anda saat ini. CTSS memerlukan scheduler agar satu job yang berjalan lama tidak membekukan semua terminal lainnya. Sistem ini memerlukan memory protection agar program yang crash hanya menghentikan satu pengguna, bukan seluruh sistem. Sistem ini juga memerlukan storage yang tetap tersedia setelah logout. Karena itu, CTSS memiliki salah satu file system pertama yang dapat dikenali oleh pengguna modern. Selain itu, sistem ini memerlukan password agar seorang pengguna tidak dapat membaca file pengguna lain.
Ganti nama komponen-komponen tersebut, dan Anda mendapatkan Linux box. Scheduler-nya adalah EEVDF, yang menggantikan CFS di Linux 6.6. Memory protection disediakan oleh MMU (memory management unit), yang memberi setiap proses virtual address space sendiri. Storage yang tetap tersedia setelah logout adalah home directory Anda. File password tersebut masih bernama /etc/passwd.
Multics dan computer utility
Sistem berikutnya dari MIT dimaksudkan sebagai utility seperti yang dijelaskan McCarthy. Project MAC dimulai pada 1963, menandatangani kontrak untuk sebuah General Electric GE-645 pada Agustus 1964, dan menerbitkan makalah Multics pertama pada 1965. Namanya mencerminkan gagasan tersebut: Multiplexed Information and Computing Service. Service, dalam arti layanan yang dibayar berdasarkan jam penggunaan.
Multics membutuhkan waktu jauh lebih lama daripada rencana awal. Mesin GE-645 prototipe tiba di MIT dan Bell Labs pada Januari 1967. Bell Labs meninggalkan proyek tersebut pada April 1969. Multics mulai digunakan oleh pelanggan MIT Information Processing Center pada 1 Oktober 1969, lalu berjalan dalam production di suatu tempat selama tiga puluh satu tahun. Sistem Multics terakhir yang masih aktif, di Canadian Department of National Defence di Halifax, Nova Scotia, dimatikan pada 30 Oktober 2000.
Multics sering dianggap sebagai kegagalan karena hadir terlambat dan berjalan lambat. Kosakatanya menunjukkan hal yang berbeda. Multics memperkenalkan hierarchical file system dengan direktori di dalam direktori, access control list pada setiap file, segmented virtual memory yang memungkinkan program mengakses file seolah-olah file tersebut adalah memory, serta protection ring yang mengurutkan code berdasarkan tingkat kepercayaannya. Ring tersebut masih terdapat di silicon di depan Anda. Ring 0 untuk kernel dan ring 3 untuk user code merupakan kosakata Multics. Hardware virtualisation kemudian menambahkan mode di bawah ring 0 untuk hypervisor, yang secara informal disebut ring -1.
Unix: time-sharing pada mesin yang terjangkau
Setelah meninggalkan Multics, Ken Thompson berada di Bell Labs tanpa sistem yang ingin digunakannya. Pada 1969, ia mulai membuat sistem yang jauh lebih kecil pada PDP-7 bekas. Unix Programmer's Manual pertama bertanggal November 1971. Saat itu, pengembangan telah dipindahkan ke PDP-11. Pada 1973, Thompson dan Dennis Ritchie menulis ulang kernel dalam C. Dengan demikian, sistem dapat dipindahkan ke perangkat keras baru tanpa harus ditulis ulang secara manual.
Itulah sebabnya Anda mengetik pada turunan Unix, bukan turunan Multics. Multics memerlukan perangkat keras yang dibuat khusus untuk Multics. Unix dapat berjalan pada perangkat keras yang murah dan tersedia. Hal itu kemudian menjadi fitur penentu.
"The UNIX Time-Sharing System" karya Ritchie dan Thompson diterbitkan dalam Communications of the ACM pada July 1974. Makalah tersebut menjelaskan VPS Anda: proses, satu sistem berkas hierarkis, berkas sebagai aliran byte biasa, fork, pengguna dan grup dengan bit izin, serta shell yang merupakan program biasa, bukan bagian dari kernel. Lima puluh dua tahun kemudian, antarmuka tersebut telah diperluas, bukan digantikan.
Apakah mainframe benar-benar menjalankan mesin virtual pada 1972?
Ya, dan inilah bagian dari sejarah yang sering terlewatkan. Saat MIT membangun Multics, IBM Cambridge Scientific Center mengejar tujuan yang sama dari arah berlawanan. Alih-alih satu sistem operasi melayani banyak pengguna, Robert Creasy dan Les Comeau membangun control program yang memberikan setiap pengguna komputer simulasi lengkap. CP-40 mulai digunakan dalam produksi pada Januari 1967. Setiap pengguna memperoleh System/360 virtual dan menjalankan sistem operasi single-user kecil, CMS, di dalamnya.
CP-40 menjadi CP-67 pada System/360-67 pada 1968, dan IBM mengumumkan VM/370 pada 2 Agustus 1972. Itu adalah hypervisor komersial yang dijual kepada pelanggan berbayar, 54 tahun yang lalu. Control program melakukan multiplexing terhadap hardware nyata, sedangkan sistem operasi guest berjalan tanpa modifikasi di dalam mesin virtual yang mengira dirinya memiliki mesin tersebut.
Teorinya muncul dua tahun kemudian, dalam edisi Juli 1974 Communications of the ACM yang sama dengan edisi yang memuat makalah tentang Unix. "Formal Requirements for Virtualizable Third Generation Architectures" karya Gerald Popek dan Robert Goldberg menjelaskan hal-hal yang harus dilakukan prosesor agar dapat divirtualisasi. Aturan utamanya sederhana. Setiap instruksi yang dapat membaca atau mengubah status mesin harus memicu trap saat guest menjalankannya di luar kernel mode. Dengan demikian, hypervisor mengambil alih dan memberikan jawaban berupa versi privat dari status tersebut milik guest. Mekanisme ini disebut trap and emulate. Hardware IBM mematuhi aturan tersebut.
Mengapa minicomputer mengubah model
DEC memperkenalkan PDP-8 pada 22 Maret 1965 dengan harga sekitar $18,000 dalam nilai dolar tahun 1965. PDP-8 adalah minicomputer pertama yang harganya di bawah $20,000, dan kemudian terjual lebih dari 50,000 unit. Setelah itu, mikroprosesor kembali menurunkan harga. Ketika sebuah departemen dapat membeli mesinnya sendiri, dan kemudian ketika seseorang juga dapat melakukannya, berbagi satu komputer pusat tampak seperti masalah yang sudah terselesaikan dan tidak perlu diselesaikan lagi. Sepanjang tahun 1980-an dan 1990-an, komputasi berpindah ke meja kerja dan ke dalam rack yang berisi server x86 berukuran kecil.
Pemborosan muncul kembali dalam bentuk yang berbeda. Satu aplikasi per server mudah dipahami, tetapi sebagian besar hardware tetap tidak digunakan, sementara biaya listrik dan ruang rack tetap harus dibayar sepenuhnya. Ini adalah masalah CTSS dalam skala baru. Sumber daya yang mahal kini berupa ruangan dan listrik, bukan prosesor. Jawabannya tetap sama seperti sebelumnya. Bagikan mesin tersebut.
Mengapa x86 begitu sulit divirtualisasi?
Karena x86 melanggar aturan Popek dan Goldberg. Pada USENIX Security Symposium ke-9 pada Agustus 2000, John Scott Robin dan Cynthia Irvine menelusuri set instruksi Pentium dan menemukan tujuh belas instruksi yang membaca atau mengubah status terprivilegi tanpa menghasilkan fault saat dijalankan oleh kode dalam user mode. popf adalah contoh standar. Jalankan instruksi tersebut dalam user mode, lalu prosesor diam-diam mengabaikan bit yang tidak boleh diatur oleh program, alih-alih menghasilkan trap. Akibatnya, hypervisor yang menggunakan mekanisme trap dan emulate tidak pernah mengetahui bahwa guest mencoba menjalankan instruksi tersebut.
Sebelum perangkat keras diperbaiki, muncul dua solusi. VMware, yang didirikan pada 1998 berdasarkan riset Disco dari Stanford, memeriksa kode kernel guest dan menulis ulang instruksi yang bermasalah sebelum instruksi tersebut dijalankan. Teknik ini disebut binary translation. Xen, yang dikembangkan di University of Cambridge Computer Laboratory, mengubah guest itu sendiri. Makalah "Xen and the Art of Virtualization", yang dipresentasikan pada SOSP pada Oktober 2003, menjelaskan paravirtualisation: kernel guest yang telah dimodifikasi secara sengaja memanggil hypervisor, alih-alih menjalankan instruksi yang tidak dapat diintersep oleh hypervisor.
Kemudian perangkat keras diperbaiki, seperti yang dilakukan IBM pada 1960-an. Intel merilis VT-x pada dua model Pentium 4 pada 14 November 2005, dan AMD merilis AMD-V pada Mei 2006. Keduanya menambahkan mode prosesor di bawah mode kernel guest. Dengan demikian, guest dapat menjalankan kernelnya sendiri dengan kecepatan penuh, sementara hypervisor tetap mengendalikan peristiwa yang perlu dikendalikannya. Hal ini membuat hypervisor cukup kecil untuk berjalan di dalam sistem operasi biasa. KVM milik Avi Kivity di Qumranet melakukan hal tersebut: KVM mengubah kernel Linux itu sendiri menjadi hypervisor. KVM digabungkan ke Linux 2.6.20, yang dirilis pada Februari 2007, dan saat ini digunakan oleh sebagian besar host VPS.
Asal nama VPS
Dua perkembangan bertemu pada awal tahun 2000-an. Yang pertama adalah mesin virtual penuh pada x86, dengan guest yang menjalankan kernelnya sendiri. Yang kedua adalah virtualisasi tingkat sistem operasi: satu kernel Linux bersama yang dibagi menjadi beberapa environment, masing-masing dengan root user dan process table sendiri. Linux-VServer dan Virtuozzo milik SWsoft sama-sama muncul pada 2001, lalu SWsoft merilis sebagian Virtuozzo sebagai OpenVZ open source pada 2005. Istilah "virtual private server" berasal dari sisi sejarah tersebut, dibentuk berdasarkan analogi dengan virtual private network.
Amazon mengubah penyewaan menjadi panggilan API. S3 diluncurkan pada 14 March 2006, dan EC2 dibuka sebagai public beta terbatas pada 25 August 2006 dengan satu jenis instance yang berjalan pada Xen. Pembelian compute tidak lagi berupa kontrak dengan service bureau, tetapi menjadi permintaan yang menghasilkan resource dalam satu menit.
Kedua perkembangan tersebut tetap ada, dan perbedaannya masih menentukan hal yang dapat Anda lakukan pada server yang disewa. KVM VPS menjalankan kernelnya sendiri, sehingga Anda dapat memuat kernel modules dan bahkan menjalankan hypervisor di dalam VPS Anda. Paket berbasis container menggunakan kernel host dan tidak dapat melakukannya. Sejarah selama enam puluh tahun berada di balik satu baris pada halaman harga tersebut. Karena itu, pahami perbedaan VPS, VM, dan VPC sebelum memilih salah satunya.
Perubahan dari mainframe ke VPS, dan yang tidak berubah
Empat hal berubah. Mesin tersebut tidak berada di gedung Anda. Terminal sekarang berupa program, bukan perabot. Unit yang Anda sewa adalah komputer utuh dengan kernel sendiri, bukan akun pada sistem operasi milik orang lain. Selain itu, harganya turun cukup jauh sehingga pembeliannya cukup dilakukan melalui pembayaran kartu, bukan proses pengadaan.
Mekanismenya sama sekali tidak berubah.
- Sesi ssh Anda adalah terminal time-sharing. Anda memperoleh login dan shell, lalu scheduler menentukan kapan proses Anda berjalan berikutnya.
- Isolasi masih diberlakukan oleh perangkat keras. MMU dan tingkat hak akses prosesor menjalankan tugas tersebut, persis seperti yang dibutuhkan CP-40 pada 1967.
- Anda tetap ditagih untuk sebagian kapasitas mesin berdasarkan waktu yang berlalu, seperti biro layanan yang dahulu menagih berdasarkan jam koneksi.
- Anda tetap merasakan keberadaan tenant lain. Ketika sebuah host mengalami oversubscription, guest Anda menunggu CPU fisik, dan Linux melaporkan waktu tunggu tersebut sebagai waktu CPU steal dari tenant yang membebani host.
Poin terakhir tersebut adalah ringkasan paling jujur dari seluruh sejarah ini. Berbagi mesin adalah sebuah pertukaran. Hal itu diterima pada 1961 karena harga komputer lebih tinggi daripada biaya manusia yang menggunakannya. Hal itu diterima pada 2026 karena server yang berjalan pada kapasitas sepuluh persen berarti uang yang terbuang. Jika Anda lebih memilih berada di sisi operator dalam pertukaran tersebut, menjalankan Proxmox pada perangkat keras milik Anda memberi Anda hypervisor sekaligus masalah yang harus dihadapi operator.
Ingat perbandingan ini. CTSS melayani empat pengguna pada mesin yang harganya mencapai jutaan dolar tahun 1961 dan memenuhi satu ruangan. Dengan biaya beberapa dolar per bulan pada 2026, VPS Anda adalah komputer yang jauh lebih baik daripada komputer yang harus dibagi secara bergiliran oleh tim Corbató, dan komputer itu tersedia khusus untuk Anda. Anda dapat menyewanya karena gagasan berusia enam puluh lima tahun akhirnya bertemu dengan perangkat keras murah. Jika Anda sedang menentukan apa yang akan dijalankan di dalamnya, mulai dari apa yang sebenarnya diberikan VPS kepada Anda, lalu baca apa yang biasanya dijalankan orang pada VPS.
FAQ
Apa sistem komputer time-sharing yang pertama?
CTSS, Compatible Time-Sharing System, yang dibuat oleh kelompok Fernando Corbató di MIT Computation Center. Sistem ini pertama kali didemonstrasikan pada November 1961 menggunakan IBM 709 dan melayani empat pengguna, yang masing-masing ditukar ke tape drive terpisah. Layanan time-sharing pertama untuk seluruh komunitas adalah Dartmouth Time-Sharing System: pada 1 May 1964, John Kemeny dan seorang programmer mahasiswa menjalankan program BASIC secara bersamaan pada dua terminal, dan keduanya menerima jawaban yang benar.
Apakah virtual machine benar-benar ditemukan pada 1960-an?
Ya. IBM's Cambridge Scientific Center mulai menggunakan CP-40 dalam produksi pada January 1967. Sistem ini memberikan setiap pengguna System/360 virtual lengkap dengan sistem operasi CMS yang berjalan di dalamnya. CP-67 menyusul pada 1968 untuk System/360-67, dan IBM mengumumkan VM/370 pada 2 August 1972. Semuanya adalah hypervisor nyata yang menjalankan sistem operasi guest tanpa modifikasi dan dijual secara komersial, puluhan tahun sebelum hardware x86 dapat melakukan hal yang sama.
Mengapa x86 sulit divirtualisasi, sedangkan mainframe tidak?
Aturan Popek dan Goldberg dari 1974 menyatakan bahwa setiap instruksi yang dapat membaca atau mengubah status mesin harus memicu trap saat guest menjalankannya di luar kernel mode. x86 melanggar aturan tersebut. Robin dan Irvine menghitung tujuh belas instruksi Pentium yang gagal secara diam-diam dalam user mode, alih-alih memicu trap. Akibatnya, hypervisor trap-and-emulate klasik tidak pernah melihat instruksi tersebut, dan popf adalah contoh yang umum digunakan. VMware mengatasinya dengan binary translation, sedangkan Xen menggunakan paravirtualisation. Hal ini berlangsung hingga Intel VT-x pada November 2005 dan AMD-V pada May 2006 menambahkan hardware mode untuk hypervisor.
Apakah menyewa VPS sama dengan memiliki akun time-sharing?
Model penagihan dan masalah isolasinya sama. Unitnya berbeda. Pengguna time-sharing memperoleh akun pada sistem operasi yang digunakan bersama oleh semua orang. Karena itu, administratornya adalah seseorang di pusat komputer. KVM VPS memberi Anda virtual machine dengan kernel dan akun root milik Anda sendiri. Karena itu, Andalah administratornya. VPS berbasis container berada di antara keduanya karena menggunakan kernel host bersama, tetapi tetap memberi Anda akses root di lingkungan Anda sendiri.