SSD Nodes Learn 🎉 VPS від $5.50/міс
Посібники Matt ConnorВід Matt Connor · Оновлено 2026-08-13

Історія VPS: від мейнфреймів до хмари

Дізнайтеся, як CTSS, Multics, Unix, IBM VM/370, Xen і KVM привели до сучасного VPS та чому розподіл часу досі визначає оренду серверів.

Звідки береться ваш VPS

Історія обчислень — від мейнфреймів до хмари — це історія здешевлення однієї ідеї. Ця ідея називається розподілом часу: багато людей одночасно використовують одну дорогу машину, але кожен бачить її як приватну систему. Концепцію винайшли приблизно 1960 року, оскільки комп’ютер коштував дорожче, ніж люди, які ним користувалися. Усі компоненти сучасного орендованого VPS створювалися для вирішення цієї проблеми: ізоляція між користувачами, планувальник, який розподіляє процесорний час, гіпервізор і рахунок, у якому враховується кількість годин. Проблема нікуди не зникла. Обладнання здешевшало, тому частина ресурсів, на яку колись потрібен був науковий грант, тепер коштує кілька доларів на місяць.

1959–1961: навіщо винайшли time-sharing

У 1950-х комп’ютери працювали в пакетному режимі. Ви переносили програму на перфокарти, передавали колоду оператору, а потім поверталися за роздруківкою. Одна помилка в символі коштувала цілого дня. Машина не простоювала, і саме в цьому був сенс, адже комп’ютер на кшталт IBM 7090 коштував мільйони доларів, а час людей, які чекали на результат, не зазначався в жодному рахунку.

У січні 1959 року John McCarthy виклав протилежну позицію в службовій записці в MIT. Машина мала чекати на людину. Того самого року Christopher Strachey описав одну з форм time-sharing на конференції UNESCO, хоча йшлося про налагодження програми одним програмістом, поки виконувалися інші завдання, а не про одночасне введення команд багатьма користувачами. Виступаючи на святкуванні сторіччя MIT у 1961 році, McCarthy пішов далі: обчислювальні ресурси можна було продавати як комунальну послугу, обліковуючи їхнє використання так само, як споживання електроенергії.

Тоді противники time-sharing стверджували, що він марнує ресурси машини. Перемикання між користувачами потребує тактів процесора, а саме такти були найдорожчим ресурсом. Це заперечення було обґрунтованим, але згодом втратило значення: протягом шістдесяти років вартість одного такту знижувалася, тоді як вартість години людської уваги — ні.

Що CTSS довелося винайти

Група Фернандо Корбато в Обчислювальному центрі MIT створила Compatible Time-Sharing System (CTSS), щоб вирішити цю суперечку. Систему вперше продемонстрували в листопаді 1961 року на IBM 709. Вона обслуговувала чотирьох користувачів і зберігала робочі дані кожного на окремому магнітному накопичувачі. «Compatible» означало, що машина й надалі могла запускати стару пакетну систему, оскільки ніхто не купує комп’ютер, який уміє виконувати лише нові завдання.

Чотири користувачі — це небагато. Але перелік проблем, які потрібно було розв’язати, щоб досягти цього, великий. Це той самий перелік проблем, над яким ваше ядро працює зараз. CTSS потребувала планувальника, щоб одне тривале завдання не блокувало всі інші термінали. Вона потребувала захисту пам’яті, щоб аварійне завершення програми виводило з ладу лише одного користувача, а не всю систему. Потрібне було сховище, дані в якому зберігалися після виходу користувача із системи. Саме тому CTSS мала одну з перших файлових систем, яку сучасний користувач міг би впізнати. Також були потрібні паролі, щоб один користувач не міг читати файли іншого.

Якщо перейменувати ці компоненти, ви отримаєте Linux-систему. Планувальник — це EEVDF, який замінив CFS у Linux 6.6. Захист пам’яті забезпечує MMU (memory management unit), надаючи кожному процесу власний віртуальний адресний простір. Сховище, дані в якому зберігаються після виходу із системи, — це ваш домашній каталог. Файл паролів досі називається /etc/passwd.

Multics і комп’ютерна утиліта

Наступна система MIT мала стати тією утилітою, яку описував McCarthy. Проєкт MAC розпочався в 1963 році, у серпні 1964 року було укладено контракт на постачання General Electric GE-645, а перші статті про Multics опубліковано в 1965 році. Назва містить саму ідею: Multiplexed Information and Computing Service. Service — тобто послуга, яку купують погодинно.

Multics розробляли значно довше, ніж планували. Прототипи GE-645 прибули до MIT і Bell Labs у січні 1967 року. Bell Labs вийшла з проєкту у квітні 1969 року. Multics стала доступною для клієнтів MIT Information Processing Center 1 жовтня 1969 року, а згодом десь у production працювала протягом тридцяти одного року. Останню активну систему Multics у Canadian Department of National Defence в Halifax, Nova Scotia, вимкнули 30 жовтня 2000 року.

Multics часто вважають невдалою системою, оскільки вона вийшла із запізненням і працювала повільно. Її термінологія свідчить про інше. Multics принесла нам ієрархічну файлову систему з каталогами всередині каталогів, список контролю доступу для кожного файлу, сегментовану віртуальну пам’ять, яка давала програмі змогу звертатися до файлу так, ніби це пам’ять, а також кільця захисту, що визначали рівень довіри до коду. Кільця захисту досі реалізовані в кремнії перед вами. Ring 0 для kernel і ring 3 для user code — це термінологія Multics. Пізніше апаратна віртуалізація додала режим під ring 0 для hypervisor, який неформально називають ring -1.

Unix: розподіл часу на доступній машині

Після виходу з Multics Ken Thompson залишився в Bell Labs без системи, якою хотів користуватися. У 1969 році він почав створювати значно меншу систему на списаному PDP-7. Перше Unix Programmer's Manual датоване листопадом 1971 року. На той час роботу вже перенесли на PDP-11. У 1973 році Thompson і Dennis Ritchie переписали ядро мовою C. Завдяки цьому систему можна було переносити на нове обладнання без повторного ручного переписування.

Саме тому ви працюєте з нащадком Unix, а не з нащадком Multics. Для Multics було потрібне обладнання, створене спеціально для Multics. Unix працював на тому, що було дешевим і доступним. Саме це зрештою стало вирішальною перевагою.

Стаття Ritchie і Thompson «The UNIX Time-Sharing System» вийшла в Communications of the ACM у липні 1974 року. У ній описано ваш VPS: процеси, одну ієрархічну файлову систему, файли як звичайні потоки байтів, fork, користувачів і груп із бітами дозволів, а також shell, який є звичайною програмою, а не частиною ядра. Через п’ятдесят два роки цей інтерфейс розширюють, але не замінюють.

Невже мейнфрейми справді запускали віртуальні машини у 1972 році?

Так, і саме цю частину історії більшість людей пропускає. Поки MIT розробляв Multics, IBM Cambridge Scientific Center підійшов до тієї самої мети з іншого боку. Замість однієї операційної системи для багатьох користувачів Robert Creasy і Les Comeau створили керівну програму, яка надавала кожному користувачеві повністю змодельований комп’ютер. CP-40 ввели в експлуатацію в січні 1967 року. Кожен користувач отримував віртуальну систему System/360 і запускав у ній невелику однокористувацьку операційну систему CMS.

У 1968 році CP-40 перетворилася на CP-67 для System/360-67, а 2 August 1972 року IBM оголосила VM/370. Це комерційний hypervisor, який продавали клієнтам за гроші, п’ятдесят чотири роки тому. Керівна програма розподіляла ресурси реального обладнання, а гостьові операційні системи запускалися без змін усередині віртуальних машин і вважали, що володіють усім комп’ютером.

Теорія з’явилася через два роки, у тому самому липневому випуску Communications of the ACM за 1974 рік, де також була опублікована стаття про Unix. Праця Gerald Popek і Robert Goldberg «Formal Requirements for Virtualizable Third Generation Architectures» визначила, що має робити процесор, щоб підтримувати віртуалізацію. Основне правило коротке. Кожна інструкція, яка може прочитати або змінити стан комп’ютера, повинна генерувати trap, якщо гість виконує її поза kernel mode. Тоді hypervisor отримує керування і відповідає власною приватною версією стану цього гостя. Це називається trap and emulate. Обладнання IBM відповідало цьому правилу.

Як мінікомп’ютер зруйнував попередню модель

22 March 1965 DEC представила PDP-8 за ціною близько $18,000 у доларах 1965 року. Це був перший мінікомп’ютер вартістю менше ніж $20,000. Згодом було продано понад 50,000 таких систем. Потім мікропроцесор знову знизив ціну. Коли окремий підрозділ отримав змогу придбати власну машину, а пізніше — і окрема людина, спільне використання одного центрального комп’ютера стало проблемою, яку вважали вирішеною. У 1980-х і 1990-х роках обчислення перемістилися на робочі столи та в стійки з невеликими x86-серверами.

Втрати ресурсів повернулися в іншій формі. Один застосунок на сервері спрощує адміністрування, але більша частина апаратних ресурсів простоює, тоді як електроенергію та місце в стійці оплачують повністю. Це знову проблема CTSS, але в іншому масштабі. Тепер дорогим ресурсом є не процесор, а приміщення та електроенергія. Рішення залишилося тим самим: спільно використовувати машину.

Чому x86 було так важко віртуалізувати?

Тому що x86 порушувала правило Попека та Голдберга. На 9-му USENIX Security Symposium у серпні 2000 року John Scott Robin і Cynthia Irvine проаналізували набір інструкцій Pentium і виявили сімнадцять інструкцій, які читають або змінюють привілейований стан без генерації винятку, коли їх виконує код у режимі користувача. popf — стандартний приклад. Якщо виконати її в режимі користувача, процесор мовчки ігнорує біти, які програмі заборонено встановлювати, замість того щоб згенерувати перехоплення. Тому hypervisor, побудований на підході trap and emulate, не дізнається, що гість намагався це зробити.

До виправлення апаратної частини з’явилися два рішення. VMware, заснована у 1998 році на основі досліджень Stanford Disco, аналізувала код ядра гостя та переписувала проблемні інструкції перед їх виконанням. Ця техніка називається binary translation. Xen, створений у Computer Laboratory Кембриджського університету, натомість змінював самого гостя. У статті "Xen and the Art of Virtualization", представленій на SOSP у жовтні 2003 року, описано paravirtualisation: модифіковане ядро гостя навмисно викликає hypervisor, замість того щоб виконувати інструкції, які hypervisor не може перехопити.

Потім апаратну частину виправили — так само, як IBM виправила її в 1960-х роках. Intel випустила VT-x у двох моделях Pentium 4 14 листопада 2005 року, а AMD випустила AMD-V у травні 2006 року. Обидві технології додають режим процесора, розташований нижче за режим ядра гостя. Завдяки цьому гість виконує власне ядро на повній швидкості, а hypervisor зберігає контроль над подіями, для яких він запитує перехоплення. Це зробило hypervisor достатньо малим, щоб він міг працювати всередині звичайної операційної системи. Avi Kivity реалізував саме такий підхід у KVM для Qumranet: він перетворив саме ядро Linux на hypervisor. KVM було включено до Linux 2.6.20, випущеного в лютому 2007 року, і сьогодні його використовує значна частина VPS-хостингів.

Як VPS отримав свою назву

На початку 2000-х років збіглися два напрямки. Першим була повноцінна віртуальна машина на x86, у якій гостьова система запускала власне ядро. Другим — віртуалізація на рівні операційної системи: одне спільне ядро Linux розділялося на окремі середовища, кожне з власним користувачем root і власною таблицею процесів. Linux-VServer і Virtuozzo від SWsoft з’явилися у 2001 році, а у 2005 році SWsoft випустила частину Virtuozzo як open-source OpenVZ. Назва "virtual private server" походить саме з цього напрямку. Її утворили за аналогією з назвою virtual private network.

Amazon перетворила оренду ресурсів на виклик API. S3 запустили 14 March 2006 року, а EC2 відкрили для обмеженого public beta 25 August 2006 року з одним типом інстансу на базі Xen. Придбання обчислювальних ресурсів перестало бути контрактом із сервісною компанією та стало запитом, результат якого повертається за хвилину.

Обидва напрямки збереглися, і цей поділ досі визначає, що можна робити з орендованим сервером. KVM VPS запускає власне ядро, тому на нього можна завантажувати kernel modules і навіть запускати гіпервізор усередині VPS. План на основі контейнерів використовує спільне ядро хоста, тому це неможливо. За цим одним рядком на сторінці з тарифами стоїть шістдесят років історії. Тому перед вибором варто зрозуміти чим відрізняються VPS, VM і VPC.

Що змінилося від mainframe до вашого VPS, а що залишилося без змін

Змінилися чотири речі. Машина розташована не у вашій будівлі. Термінал є програмою, а не предметом меблів. Орендований вами unit — це повноцінний комп’ютер із власним kernel, а не обліковий запис у чужій операційній системі. І ціна стала настільки низькою, що оплату виконують карткою, а не через процедуру закупівлі.

Механізм не змінився взагалі.

  • Ваш ssh-сеанс — це термінал із time-sharing. Ви отримуєте login і shell, а scheduler визначає, коли ваш процес запуститься знову.
  • Ізоляцію й надалі забезпечує hardware. MMU і рівні привілеїв processor виконують цю роботу так само, як це було потрібно CP-40 у 1967.
  • Ви й надалі платите за частку machine відповідно до часу її використання, як service bureaus стягували плату за connect hours.
  • Ви й надалі відчуваєте інших tenants. Якщо host перевантажений, ваш guest очікує на physical CPU, а Linux показує цей час очікування як CPU steal time від надмірно активного сусіда.

Останній пункт — чесний підсумок усієї цієї історії. Спільне використання machine — це компроміс. У 1961 його прийняли, тому що computer коштував дорожче за людей. У 2026 його приймають, тому що server, який працює на десяти відсотках capacity, — це спалені гроші. Якщо ви хочете опинитися на боці operator у цьому компромісі, запуск Proxmox на hardware, що вам належить дає вам hypervisor разом із проблемами operator.

Пам’ятайте про це співвідношення. CTSS обслуговував чотирьох users на machine, яка коштувала мільйони доларів 1961 року й займала цілу кімнату. Ваш VPS за кілька доларів на місяць у 2026 — значно потужніший computer, ніж той, час якого команда Corbató розподіляла між users, і він доступний лише вам. Орендувати його взагалі стало можливо завдяки ідеї, якій шістдесят п’ять років і яка зрештою поєдналася з дешевим hardware. Якщо ви вирішуєте, що на ньому розмістити, почніть із того, що насправді дає VPS, а потім перегляньте що люди запускають на VPS.

FAQ

Якою була перша комп’ютерна система з розподілом часу?

CTSS, Compatible Time-Sharing System, створена групою Фернандо Корбато в Обчислювальному центрі MIT. Її вперше продемонстрували в листопаді 1961 року на IBM 709. Система обслуговувала чотирьох користувачів, кожного з яких перемикали на окремий стрічковий накопичувач. Першою службою з розподілом часу для цілої спільноти стала Dartmouth Time-Sharing System: 1 травня 1964 року Джон Кемені та студент-програміст одночасно запустили програми BASIC на двох терміналах і отримали правильні результати.

Чи справді віртуальні машини винайшли в 1960-х роках?

Так. Cambridge Scientific Center компанії IBM ввів CP-40 в експлуатацію в січні 1967 року. Кожен користувач отримував повну віртуальну систему System/360 з операційною системою CMS усередині. У 1968 році на System/360-67 з’явилася CP-67, а 2 серпня 1972 року IBM оголосила VM/370. Це були справжні гіпервізори, які запускали незміненні гостьові операційні системи. Їх продавали комерційно за десятиліття до того, як апаратне забезпечення x86 отримало таку саму можливість.

Чому x86 було складно віртуалізувати, хоча мейнфрейми не мали цієї проблеми?

Правило Попека—Голдберга 1974 року стверджує: кожна інструкція, яка може читати або змінювати стан машини, повинна спричиняти trap, якщо гостьова система виконує її поза режимом ядра. x86 не відповідала цьому правилу. Робін та Ірвайн виявили сімнадцять інструкцій Pentium, які в режимі користувача мовчки завершуються без trap. Тому класичний гіпервізор із моделлю trap-and-emulate їх не бачить. Зазвичай як приклад наводять popf. VMware обійшла цю проблему за допомогою binary translation, а Xen — за допомогою paravirtualisation. Ситуація змінилася після появи Intel VT-x у листопаді 2005 року та AMD-V у травні 2006 року, які додали апаратний режим для гіпервізора.

Чи те саме оренда VPS, що й обліковий запис у системі з розподілом часу?

Модель оплати та проблема ізоляції однакові. Відрізняється одиниця ізоляції. Користувач системи з розподілом часу отримував обліковий запис в операційній системі, спільній для всіх. Тому адміністратором був працівник обчислювального центру. KVM VPS надає віртуальну машину з власним ядром і власним обліковим записом root. Тому адміністратором єте ви. VPS на основі контейнерів займає проміжне положення, оскільки використовує спільне ядро хоста, але водночас надає обліковий запис root у власному середовищі.

#history#computing#virtualization#mainframe#vps