Организуем несколько рабочих мест из одного десктопа.n
Поддержка функций виртуализации в среднебюджетных рабочих станциях позволяет оптимизировать расходы на рабочих местах пользователей.
В этой статье мы рассмотрим, как с помощью технологий виртуализации можно организовать два и более рабочих места на основе одного персонального компьютера.nnОдно из них будет использовать Linux. Это может быть место приходящего админа, веб-разработчика или секретаря, обрабатывающего заказы.nnДругие два, три и даже более (зависит он конфигурации материнской платы) рабочих места будут основаны на виртуальных машинах с выделенными для них ресурсами ввода-вывода (видеокарта, USB-порты). Использование таких виртуальных рабочих мест для пользователя практически ничем не будет отличаться от привычной работы за отдельным ПК. Дополнительным плюсом ко всему вышеуказанному будет возможность организовать на этих же мощностях файловое хранилище и другие необходимые инфраструктурные службы как на основе свободных бесплатных решений с использованием ОС семейства Linux (что предпочтительно), так и коммерческих. Это могут быть сервисы DHCP, DNS, брандмауэр/прокси для доступа в сеть Интернет, ряд других инфраструктурных служб.nnОписанная выше конфигурация очень кстати придется для предприятий малого бизнеса. Преимущества описанного выше подхода использования одного мощного виртуализованного десктопа по сравнению с покупкой бюджетных моделей могут казаться не очевидными. А они есть:n
- Экономия бюджета. Действительно, на первый взгляд с финансовой точки зрения покупка одного десктопа на core-i5 может и не дать преимуществ перед покупкой двух ультрабюджетных десктопов/неттопов. Но уже при необходимости организации трех рабочих мест и хотя бы одной/нескольких инфраструктурных служб финансовые преимущества виртуализации могут быть заметны.
- Увеличение производительности рабочих мест. Даже с учетом расходов на разделение ресурсов и виртуализацию виртуальная рабочая станция будет как минимум в два-три раза производительнее, чем бюджетные не виртуализованные аппаратные решения.
- Гибкость в выделении ресурсов (память, ядра процессора) сотрудникам. В отчетный период можно выделить больше ресурсов на рабочее место бухгалтера, а если горит проект – выделить больше ресурсов разработчику. Пока сотрудник в отпуске или командировке, мощности его виртуальной машины можно отдать другим.
- Более грамотная организация служб и изоляция их конфигураций от пользователей без ущемления их прав на рабочем месте. Часто для сокращения затрат инфраструктурные службы организуются прямо на рабочих местах сотрудника. Например, общие файловые ресурсы, прокси/брандмауэр для доступа в интернет. С использованием виртуализации для таких целей можно выделить отдельные виртуальные машины и не быть ограниченными в выборе ПО, совместимого только с одной операционной системой семейства Windows.
Есть, конечно, и недостатки:n
- Единая точка отказа, которая приведет к неработоспособности сразу нескольких рабочих мест. Здесь в каждом конкретном случае нужно рассмотреть возможные проблемы и пути их решения (ЗИП и резервное копирование никто не отменял).
- Возможные проблемы с недостаточным количеством USB-портов (решаются многопортовым PCI-USB адаптером, USB-хабами).
- Необходимость дискретной видеокарты на количество рабочих мест минус один (одно рабочее место на ОС хоста на встроенной графике).
- Рабочие места на основе одного десктопа не могут быть сильно удалены друг от друга. Однако малый бизнес не настолько богат, чтобы выделять каждому сотруднику отдельный кабинет. В пределах одного-двух находящихся рядом небольших помещений такие виртуализованные рабочие места вполне реально организовать.
Кстати, это не просто теория: конфигурацию, аналогичную описываемой в статье, я использую дома с 2014 года. За это время был накоплен кое-какой опыт, которым мне с вами хочется поделиться.n
Выбор аппаратной и программной конфигураций
Для того чтобы виртуализовать десктоп и организовать на его основе несколько рабочих мест, необходима поддержка аппаратной виртуализации (Hardware-assisted virtualization) и виртуализации ввода/вывода (IOMMU virtualization). Поддержка этих технологий должна быть реализована как на уровне аппаратной платформы, так и на уровне программной реализации (гипервизора).nnСуть аппаратной виртуализации заключается в поддержке процессором специальных инструкций, позволяющих организовать эмуляцию всего аппаратного окружения для виртуальной машины, и она становится независимой от архитектуры аппаратной платформы хоста. При этом производительность остается сравнимой с производительностью хоста.nnНа основе виртуализации ввода/вывода виртуальной машине с помощью «проброса» (pass-through) можно предоставить прямой доступ к устройствам ввода/вывода на шине PCI и более современных (например, PCI-E). Так можно организовать прямой доступ к видеокарте и USB-контроллерам и устройствам.nnОсновные вендоры начиная с 2005-2006 годов во многих своих решениях поддерживают аппаратную виртуализацию. У Intel поддержка аппаратной виртуализации процессором называется Intel VT-x, у AMD – AMD-V. Немного позже Intel и AMD разработали и добавили в свои аппаратные платформы поддержку виртуализации ввода/вывода (IOMMU virtualization). Intel назвал свою технологию Virtualization Technology for Directed I/O (VT-d), AMD – AMD I/O Virtualization Technology, которую сами называют IOMMU (распространено также название AMD-Vi).nnТаким образом, выбор аппаратной платформы заключается в выборе процессора и материнский платы с поддержкой Intel VT-x и VT-d в случае выбора продукции Intel, а в случае AMD – с поддержкой AMD-Vi (IOMMU) для материнской платы и AMD-V и AMD-RVI для процессора.nnЕсли закупка «железа» еще в планах, то не лишним будет заглянуть на сайты производителей, чтобы узнать о поддержке виртуализации ввода-вывода процессорами.nnС материнскими платами сложнее, чипсет и BIOS должны поддерживать виртуализацию ввода/вывода. В BIOS материнской платы должен быть пункт VT-d в случае Intel, IOMMU или AMD-Vi для AMD. Все десктоп-чипсеты Q-серий от Intel начиная с Q35 (из современных это Q87, Q170, Q270) гарантированно поддерживают VT-d. Информацию о поддержке VT-d/Amd IOMMU(AMD-Vi) оборудованием можно почерпнуть в Wiki-разделах сайта проекта Xen и в Википедии. Если «железо» уже в наличии, выполнив команду:n
$ egrep -c "svm|vmx" /proc/cpuinfo
которая выдаст количество вхождений флагов svm (AMD-v) и vmx (VT-x), мы точно узнаем о поддержке аппаратной виртуализации. Определить наличие поддержки виртуализации ввода/вывода (VT-D, AMD IOMMU(VI) можно, выполнив:n
$ dmesg | grep IOMMU
С аппаратным обеспечением понятно, теперь что касается программного. Программное обеспечение для виртуализации будем рассматривать исключительно бесплатное, в целях экономии бюджета. В настоящее время рынок бесплатных гипервизоров представлен следующими продуктами:n
- ESXI от VMware.
- Hyper-V Server от Microsoft.
- KVM от Red Hat и сообщества Linux.
- XenServer/Xen от Citrix.
Все требуют поддержки аппаратной виртуализации для установки на «железо». Также все они поддерживают «проброс» устройств с помощью виртуализации ввода/вывода. Технология «проброса» у всех называется по-разному:n
- для гипервизоров VMware технология «проброса» названа Direct I/O;
- для Hyper-V – Discrete Device Assignment (DDA) и стала доступной совсем недавно, начиная с Hyper-V Server 2016 (на Windows 10 с ролью Hyper-V не поддерживается).
- для остальных гипервизоров принята терминология PCI Passthrough (и GPU или VGA Passthrough в случае «проброса» видеоадаптера).
Также нужно учесть очень важный момент: при использовании гипервизора Xen нельзя «прокинуть» в гостя видеокарты на чипах Nvidia (кроме Quadro и Grid). В KVM таких ограничений нет. Однако совсем старые видеокарты AMD/ATI выпуска ранее 4xxx и Nvidia ранее 8ххх (возможно 9ххх) серии «прокинуть» в гостевую ОС будет невозможно. В моей конфигурации успешно участвовали видеокарты ATI/AMD Radeon HD 7750/6450/6850.nnОднако не все из перечисленных гипервизоров имеют графическое окружение в ОС хоста, необходимое для удобства обслуживания. Поэтому решения ESXI от VMware и XenServer от Citrix, а также Hyper-V Server 2016 от Microsoft не удовлетворяют условиям. А Xen и KVM дают большой простор для построения решений с поддержкой графики на хосте. Использование данных решений возможно в любом дистрибутиве Linux, а это значит, что требование о наличии графического интерфейса на хосте с гипервизором легко выполнить.nnЧтобы определиться, какое из решений будет удобнее и производительнее, можно развернуть оба решения на одном «железе», а потом сравнить производительность различных подсистем. В следующей статье я расскажу, какие тесты производительности у меня получились.n
Заказать установку, настройку и поддержку любого вида виртулизации можете по адресу [email protected] или в разделе контакты