Виртуализация даже единственного сервера
Я очень часто встречаю в разговорах о виртуализации ситуацию, когда концепция консолидации — которая в контексте виртуализации серверов означает перенос нескольких прежде физических нагрузок на один физический хост с разделением посредством барьеров виртуальных машин — воспринимается как основная ценность и фундаментальная возможность виртуализации. Без сомнения, консолидация нагрузок представляет собой удивительную возможность виртуализации, однако крайне важно не путать ценность виртуализации и ценность консолидации. Слишком часто я обнаруживаю, что консолидация рассматривается как ключевая ценность виртуализации и основное её обоснование, — но это не так. Консолидация — это бонусная функция, и она никогда не должна быть нужна для обоснования виртуализации. Виртуализация должна быть почти само собой разумеющимся решением, тогда как консолидацию необходимо оценивать отдельно и во многих случаях не использовать. То, что нагрузки не предназначены для консолидации, никогда не должно приводить к убеждению, что эти нагрузки не должны быть виртуальными. Я хотел бы рассмотреть пространство принятия решений о виртуализации, чтобы понять, как следует подходить к этому вопросу.
Виртуализацию следует воспринимать как абстракцию оборудования, поскольку именно таковой она и является в практическом смысле. Виртуализация инкапсулирует оборудование и предоставляет гостевым операционным системам предсказуемый, «чистый» аппаратный набор. Это может показаться усложнением, но в действительности упрощает многое — как для разработчиков операционных систем и драйверов, так и для ИТ-специалистов, проектирующих системы. Именно потому, что компьютеры, периферийные устройства и операционные системы являются столь сложными объектами, этот дополнительный слой в итоге снижает сложность системы, создавая стандартные интерфейсы. Стандартизация ведёт к простоте.
Та же концепция предоставления стандартной виртуальной машины программному слою существует и в других областях вычислений — например, в том, как реализованы многие языки программирования. Это очень зрелая и надёжная вычислительная модель.
Абстракция оборудования и обеспечиваемая ею стабильность сами по себе являются достаточным основанием для стандартизации виртуализации повсеместно, однако практическая природа абстракции оборудования, реализованная во всех корпоративных продуктах виртуализации, доступных нам сегодня, даёт нам ещё более важные возможности. Безусловно, большинство преимуществ виртуализации можно получить и другими способами, но редко столь же полно, надёжно, просто и бесплатно, как посредством виртуализации.
Наибольший набор дополнительных функций, как правило, обеспечивается абстракцией хранилища и памяти — что позволяет делать снимки состояния хранилища или даже всего работающего состояния виртуальной машины, то есть создавать образ работающей системы и сохранять его в файл. Эта возможность открывает множество важных функций, в частности возможность делать снимок состояния системы перед установкой нового программного обеспечения, изменением конфигураций или применением патчей, что позволяет чрезвычайно быстро откатываться в случае проблем. Эта, казалось бы, незначительная функция обеспечивает душевное спокойствие и общую надёжность системы. Она также существенно упрощает тестирование функций, откаты и повторное тестирование в непроизводственных средах.
Возможность создания снимков состояния на уровне абстракции также открывает возможность создания «резервных копий на основе образов» — резервных копий, снимаемых через механизм снимков на уровне блочных устройств, а не из файловой системы операционной системы изнутри. Это позволяет использовать механизмы резервного копирования, не зависящие от операционной системы, и создавать резервные копии, охватывающие весь пул хранилища системы одновременно. Резервные копии на основе образов позволяют выполнять то, что традиционно называлось «восстановлением на «голое железо»» — вся система может быть восстановлена до полностью работающего состояния без дополнительного вмешательства — легко и очень быстро. Не все производители гипервизоров включают эту функцию или включают её в равной мере, поэтому, хотя концептуально это является важной функцией, крайне важно учитывать степень наличия или лицензирования этой функции в каждом конкретном случае (в частности, HyperV включает её полностью, XenServer — частично, а VMware vSphere — только в некоммерческих уровнях лицензирования). При её наличии резервные копии на основе образов обеспечивают чрезвычайно быстрое восстановление со скоростями, немыслимыми при других методологиях резервного копирования. Восстановление систем за считанные минуты возможно — от катастрофы до восстановления работоспособности!
Возможность работы с виртуальными машинами как с файлами (по крайней мере когда они не запущены) даёт дополнительные преимущества, связанные с описанными выше преимуществами резервного копирования. А именно — возможность быстро и легко переносить машины между физическими хостами и даже перемещать их между разнородным оборудованием. Традиционно обновление или замена оборудования означали сложный миграционный процесс, чреватый опасностями. При использовании современной виртуализации переход с существующего оборудования на новое может быть надёжным, неразрушительным процессом с безопасными вариантами отката и минимальным или даже нулевым временем простоя! Задачи, прежде редкие и очень рискованные, сегодня нередко становятся тривиальными.
Зачастую именно в этом и состоит истинная ценность виртуализации и механизмов абстракции. Не обязательно в улучшении повседневной работы системы, а в снижении рисков и обеспечении гибкости и вариантов на будущее. Подготовка к неизвестному, что либо непредсказуемо, либо просто игнорируется в большинстве типичных ситуаций. Подобное планирование редко ведётся вообще, к огорчению ИТ-отделов, которые остаются один на один со сложными и опасными обновлениями, которые могли бы быть легко предотвращены.
Существует множество функций виртуализации, применимых только в особых сценариях. Многие продукты виртуализации включают инструменты живой миграции для перемещения работающих нагрузок между хостами или даже между устройствами хранения без простоя. Часто доступны функции высокой доступности и отказоустойчивости, позволяющие некоторым нагрузкам быстро или даже прозрачно восстанавливаться после отказа аппаратного обеспечения системы — перемещаясь с отказавшего оборудования на резервное без вмешательства пользователя. Хотя это скорее нишевое преимущество и, безусловно, не должно включаться в список причин, по которым «почти все нагрузки» должны быть виртуальными, оно заслуживает упоминания как главный пример функций, которые нередко доступны и могут быть добавлены позднее при возникновении в них необходимости — при условии, что виртуализация использовалась с самого начала. В противном случае перед возможностью воспользоваться такими функциями потребовалась бы миграция на виртуализацию.
Продукты виртуализации, как правило, поставляются с обширным набором дополнительных функций, имеющих значение только в определённых случаях. Большинство из них попадает в большую категорию «на случай будущей потребности». Возможно, самой значимой из всех является концепция консолидации, о которой я упоминал в начале этой статьи. Как и другие расширенные функции, например высокая доступность, консолидация не является базовой ценностью виртуализации, хотя часто принимается за таковую. Нагрузки, не предполагающие использования высокой доступности или консолидации, всё равно должны быть виртуализированы — без сомнения. Но эти функции потенциально настолько ценны как варианты на будущее, даже для сценариев, где они не будут использоваться сегодня, что заслуживают упоминания в любом случае.
Консолидация может быть чрезвычайно ценной, и легко понять, почему так много людей просто предполагают, что она будет использоваться — ведь она так часто оказывается полезной. Наличие этой функции после создания инфраструктуры является ключевым элементом гибкости для работы с неизвестными будущими нагрузками. Даже когда консолидация абсолютно не нужна сегодня, весьма велика вероятность, что даже в самых небольших компаниях она окажется полезной в некий неизвестный момент в будущем. Виртуализация обеспечивает нам хеджирование против неизвестного, подготавливая наши системы к максимальной гибкости. Один из важнейших аспектов любого ИТ-решения — управление рисками и их снижение. Виртуализация делает именно это.
Виртуализация — это стабильность, гибкость, стандартизация, управляемость и следование лучшим практикам. Сегодня ни один крупный корпоративный продукт виртуализации не является недоступным, по крайней мере в какой-либо форме, бесплатно. Любая покупка, разумеется, потребует тщательного анализа ценности в сравнении с расходами. Однако при наличии отличных корпоративных вариантов, бесплатных по всем четырём ключевым продуктовым линейкам в этом пространстве (Xen, KVM, HyperV и VMware vSphere), такой анализ не требуется. Нужно лишь показать, что реализация является неотрицательной.
Что упрощает принятие решения — так это то, что при рассмотрении номинального случая: минимальных возможностей, которые предоставляет вся корпоративная виртуализация — то есть нулевой стоимости, абстракции, инкапсуляции и преимуществ на основе хранилища — мы обнаруживаем небольшой выигрыш практически во всех случаях, отсутствие измеримых недостатков и очень большой потенциальный выигрыш в области гибкости и хеджирования будущих потребностей. Это даёт нам явный выигрыш и простое решение: виртуализация, будучи бесплатной и по существу не имея собственных недостатков, должна использоваться во всех случаях, когда это возможно (а это, на данный момент, практически все нагрузки). Дополнительные, некорневые функции, такие как консолидация и высокая доступность, следует оценивать отдельно и только после того, как решение о виртуализации уже принято. Отсутствие потребности в этих расширенных функциях никоим образом не говорит о том, что виртуализацию не следует выбирать на основании её собственных достоинств.
Это просто объяснение существующих отраслевых лучших практик, которые предписывают виртуализацию всех потенциальных нагрузок уже много лет. Это не ново и не является сменой курса. Сам факт того, что повсеместная виртуализация является лучшей практикой отрасли уже почти десятилетие, свидетельствует о том, насколько это проверенная и общепринятая методология. Всегда будут нагрузки, которые по той или иной причине просто не могут быть виртуализированы, но их должно быть очень мало, и они должны стать поводом для глубокого анализа с целью выяснения причины.
При принятии решения о виртуализации подход должен всегда исходить из того, что виртуализация — это само собой разумеющееся решение, и отклоняться от него только при наличии обоснованной, аргументированной технической причины, делающей это невозможным. Практически все аргументы против виртуализации исходят из позиции непонимания — из убеждения, что консолидация, высокая доступность, внешнее хранилище, стоимость лицензирования и другие слабо связанные или несвязанные концепции каким-то образом являются неотъемлемой частью виртуализации. Это не так, и они не должны включаться в решение «виртуализация против физического развёртывания». Они самостоятельны и должны оцениваться отдельно.
Стоит отметить, что поскольку консолидация не является частью нашей матрицы решений при создании базовой ценности виртуализации, все обозначенные нами причины в равной мере применимы как к развёртываниям «один к одному» (то есть одна виртуальная машина на одном физическом устройстве), так и к консолидированным нагрузкам (то есть несколько виртуальных машин на одном физическом устройстве). Не существует ситуации, при которой нагрузка была бы «слишком мала» для виртуализации. Если на то пошло, то обратное: только самые крупные нагрузки, как правило, с экстремальной чувствительностью к задержкам, где всё ещё существует нишевый сценарий невиртуализации как крайний случай, — но даже эти случаи быстро исчезают по мере улучшения характеристик задержек в виртуализации и роста общей ёмкости нагрузок. Эти случаи настолько редки и исчезают так быстро, что даже упоминать их, пожалуй, неразумно — поскольку это создаёт впечатление, что исключения, основанные на требованиях к ёмкости, достаточно распространены, чтобы их оценивать, — а это не так, особенно не на рынке СМБ. Чем меньше нагрузка, тем более она идеальна для виртуализации, — но это лишь подчёркивает, что малый бизнес с единственными нагрузками является наиболее идеальным случаем для повсеместной виртуализации, а не исключением из лучших практик, — а не предполагает, что крупный бизнес сам должен искать исключения.

