Здравствуй, дорогой читатель! Сегодня Автор предлагает сделать следующий шаг и поговорить о настоящей магии — виртуализации. О том, как заставить один компьютер работать так, будто их десяток.
Тема объемная, поэтому Автор решил разбить ее на две части. Сегодня, в первой, мы погрузимся в историю: от гигантских машин 60-х годов до гипервизоров, которые сегодня крутят облака. А во второй части поговорим о контейнеризации и о том, как это все работает на ваших смартфонах.
Статья выйдет чуть длиннее обычного, но Автор обещает: скучно не будет. Поехали!
Как всё начиналось
Чтобы понять, зачем нужно делить компьютер на части, нужно представить себе мир 1960-х годов.
1960-е: Эпоха гигантов
Представьте себе компьютер размером с целую комнату. А лучше — с небольшой заводской цех. Это мэйнфрейм. Стоил он как космический корабль, а работать с ним могли только обученные инженеры в белых халатах. В то время считалось нормальным, что такая махина обрабатывает всего одну задачу: либо рассчитывает траекторию ракеты, либо печатает зарплатные ведомости.
Проблема была в эффективности. Пока оператор загружал перфокарты (такие картонные листы с дырочками), процессор просто... ждал. Скучал. Простаивал. А стоил этот процессор, как самолет. Инженеры быстро поняли, что держать такой дорогой ресурс в бездействии — непозволительная роскошь.
И тогда родилась гениальная идея: а что, если разделить один мощный компьютер на несколько «виртуальных»? Сделать так, чтобы у каждого пользователя была иллюзия, что он работает на своем личном, отдельном устройстве.
IBM System/360 и рождение гипервизора
Компания IBM в конце 60-х выпустила легендарную линейку System/360 и систему виртуализации CP/CMS. Это была настоящая «матрешка». Поверх железа ставился тонкий слой-управленец. Автор любит называть его «смотрителем» или «распределителем». Сегодня мы знаем его как гипервизор.
Именно тогда появился подход, который доминирует до сих пор: есть физическое железо, на нем живет гипервизор, а уже на гипервизоре — несколько операционных систем, которые даже не подозревают о существовании друг друга.
1980–1990-е: Эпоха забытья
А потом случилась революция персональных компьютеров и дешевых x86-серверов от Intel. Логика бизнеса изменилась: «Зачем городить сложный мэйнфрейм с виртуалками, если можно купить 10 маленьких серверов по цене одного большого?». Серверы стоили копейки (по сравнению с мэйнфреймами), и виртуализация на время ушла в тень. Каждой задаче выделяли свой «железный» сервер.
2000-е: Возвращение титана
К концу 90-х — началу 2000-х компании столкнулись с новой напастью. Их серверные превратились в «спагетти». Десятки, а то и сотни серверов стояли в стойках, гудели, грелись, потребляли тонны электричества. Но самое страшное: каждый из них был загружен в среднем на 10–15%. Остальное время железо просто пылилось, кушая бюджет на кондиционирование.
И тут на сцену вышла компания VMware (основанная в 1998 году). Они сделали то, что считалось почти невозможным: создали эффективный гипервизор для обычных x86-серверов. Теперь не нужно было покупать дорогой мэйнфрейм, чтобы получить выгоды виртуализации. Достаточно было взять стандартный сервер и установить на него VMware.
За ней подтянулись гиганты: Microsoft выпустила Hyper-V, появились открытые решения Xen и KVM. Виртуализация стала стандартом де-факто в IT-инфраструктуре.
Как это работает?
Теперь, когда исторический экскурс закончен, Автор предлагает отвлечься от сложных терминов и посмотреть, как это работает, глазами знакомых нам персонажей.
Итак, в центре комнаты стоит огромный игровой стол. Это наш физический сервер. За столом собрались наши старые знакомые:
- Илья задумал построить огромный город из Lego. Ему нужно много места для деталей и схем.
- Алиса хочет рисовать красками. Ей нужна своя зона, где она не боится испачкать стол.
- Арина просто играет с большими кубиками и наблюдает за старшими.
Если они сядут за один стол одновременно без правил, начнется хаос. Илья заденет локтем краски Алисы, Арина растащит Лего, все будут кричать, что им мешают.
Что делать? Нужен Гипервизор.
Роль гипервизора в нашей семье играет мама. Она подходит к столу и проводит «волшебную разметку».
- Разделение: Мама делит стол на три секции. Невидимыми линиями, но очень строго.
- Ресурсы: Она дает Илье 50% стола (самый большой кусок), Алисе — 30%, Арине — 20%. Каждому выдается свой набор ящиков с игрушками, которые трогать другим нельзя.
- Изоляция: Если Алиса случайно прольет краску на своей секции, работы Ильи и Арины останутся чистыми. Беда не перекидывается на соседей.
- Иллюзия: Самое важное! Каждому из детей мама создает иллюзию, что он владеет всем столом целиком. Илья не видит границ, он сосредоточен на своем городе, уверенный, что стол принадлежит только ему.
Точно так же работает виртуализация в компьютере. Гипервизор (наша «мама») делит физические ресурсы (процессор, память, диски) между несколькими виртуальными машинами. Каждая виртуальная машина думает, что у нее есть свой собственный физический сервер, своя операционная система (Windows, Linux) и свои приложения. При этом они надежно изолированы друг от друга.
Зачем это нужно?
Почему же эта технология захватила мир? Автор выделяет четыре главные причины:
- Экономия. Вместо того чтобы покупать 10 серверов, загруженных на 10%, вы покупаете 1 мощный сервер, загружаете его на 70–80% и запускаете на нем 10 виртуальных машин. Счет за электричество, аренду места в дата-центре и охлаждение падает кратно.
- Изоляция. Если одна виртуальная машина «подхватит» вирус или упадет из-за кривого обновления, соседние машины продолжат спокойно работать. Арина не пострадает от краски Алисы.
- Гибкость. Виртуальную машину можно «переехать» с одного физического сервера на другой прямо во время работы. Автор видел, как это делается (live migration): вы даже не заметите, что сервер, на котором открыт ваш сайт, физически переместился в другую стойку или даже в другой город.
- Тестирование. Разработчики обожают виртуализацию. За минуту можно создать чистое окружение, поэкспериментировать, сломать его, не боясь за основную систему, и так же быстро удалить. Это как дать Илье возможность строить город из Лего, не боясь, что он сломает мамин сервиз.
Итог
Виртуализация — это не просто модное слово. Это технология, которая выросла из необходимости эффективно использовать ресурсы на заре компьютерной эры и сегодня превратилась в фундамент, на котором стоят облака. Когда вы запускаете виртуальный сервер в AWS, Azure или Google Cloud, вы пользуетесь наследником тех самых мэйнфреймов IBM и гипервизоров VMware.
Но на этом история не заканчивается. Виртуализация — подход мощный, но немного «тяжеловатый». Каждой виртуальной машине нужна своя полноценная операционная система, которая потребляет ресурсы.
Поэтому в следующей, второй части, Автор расскажет о более легком способе изоляции — контейнеризации. Мы поговорим о том, чем Docker отличается от виртуальной машины, и зачем вообще понадобилось придумывать что-то новое, если виртуализация и так отлично работает.
Чтобы не пропустить продолжение и другие разборы сложных тем простыми словами, подписывайтесь на канал Автора.
UPD
В этой статье Автор намеренно опустил некоторые технические детали, чтобы сохранить чистоту аналогий. Если вы хотите копнуть глубже, вот краткий словарь терминов, которые обычно встречаются при изучении виртуализации:
- Полная виртуализация: Гипервизор полностью эмулирует «железо», гостевая ОС ничего не знает о том, что она в гостях. (Ранние версии VMware).
- Паравиртуализация: Гостевая ОС «знает», что работает на гипервизоре, и сотрудничает с ним для повышения производительности (Xen, современные решения). Это как если бы Илья знал, что мама делит стол, и аккуратно использовал только свою зону, не мешая другим.
- Аппаратная виртуализация (Intel VT-x / AMD-V): Специальные инструкции в современных процессорах, которые позволяют гипервизору работать быстрее и безопаснее. Железо само умеет разделять себя, без костылей.
- Гипервизор 1-го типа (bare-metal): Гипервизор устанавливается прямо на «голое железо». (VMware ESXi, Microsoft Hyper-V, KVM). Это наш случай с мамой, которая сразу пришла к пустому столу.
- Гипервизор 2-го типа (hosted): Гипервизор устанавливается как программа в обычную операционную систему (Windows, macOS). (VMware Workstation, Oracle VirtualBox). Это как если бы дети сначала начали играть сами, а потом пришла мама и попыталась развести их по углам, уже когда бардак начался. Работает, но менее эффективно.