Виртуализация в отдельно взятой квартире

Сегодня закончилась очередная модернизация моего домашнего сетевого накопителя. Всем, кто не читал предыдущую статью, напомню, что в тот раз я купил серверный корпус Procase EB306S-B-0, установил в него простенькую материнскую плату + простенький процессор + немного памяти + накатил на все это XPEnology и был счастлив как слон. Однако, прогресс не стоит на месте, и на том же сайте XPEnology я начал натыкаться на идеи запускать сетевой накопитель в качестве виртуального ПК на сервере виртуализации. Со временем я узнал, что на рынке много продуктов для виртуализации, кроме того, в самых базовых вариантах все они имеют бесплатную версию. Идея понравилось, кроме того захотелось открыть для себя что-то новое, в общем, начался очередной апгрейд.

Для экспериментов я выбрал аппаратный гипервизор VMWare vSphere ESXi версии 6.0, поэтому все дальнейшие рассуждения надо рассматривать применительно к этому выбору.

ЖЕЛЕЗО

Официально гипервизор ESXi поддерживает только очень ограниченный набор железа, причем все это железо относится к разряду серверного и стоит приличных денег. Однако, множество энтузиастов со всего мира собирают себе домашние сервера на обычных "бытовых" комплектующих, соблюдая ряд требований. Большинство их них выкладывает свои наблюдения в интернет (поиск в Google по ключевым словам "homelab esxi whitebox").

Основные требования выглядят так: чипсет материнской платы, ее BIOS и центральный процессор должны поддерживать аппаратную виртуализацию. Обязательна поддержка технологии IOMMU для материнских плат и технологии Intel VT-d / AMD-Vi для чипсетов и процессоров Intel /  AMD соответственно.

Мой выбор пал на материнскую плату Ashrock Z87 Extreme6 со встроенными видеовыходами, 2 гигабитными сетевыми интерфейсами Intel и аж 10 портами SATA3. В помощь ей куплен процессор Intel Core i5-4440 Haswell со встроенным графическим контроллером и 4 процессорными ядрами по 3.1ГГц, а также 2 планки памяти DDR3 по 8Гб каждая. Также я добавил в систему выделенную видеокарту Asus HD5450 (самая дешевая с возможностью вывода звука по HDMI) и выделенную звуковую карту C-media CMI8738-LX (самая дешевая с аналоговыми выходами 5.1), которые использовал в дальнейших экспериментах. Для установки самого гипервизора была найдена старая флешка минимальной емкости (1Гб хватит с головой), а для хранилища файлов  виртуальных машин был куплен твердотельный жесткий диск Kingston V300 емкостью 120Гб.

Фотографии результатов сборки ниже (снято на мобильный):

СОФТ

Далее регистрируемся на сайте VMWare, скачиваем инсталлятор гипервизора (VMware-VMvisor-Installer-6.0.0-2494585.x86_64.iso), инсталлятор программы-клиента для удаленного управления сервером (VMware-viclient-all-6.0.0-2502222.exe), обязательно сохраняем в доступном месте свой бесплатный лицензионный ключ. Инсталляцию можно проводить как записав ISO-образ на компакт-диск, так и забросив его на чистую флешку (рекомендую воспользоваться программой Rufus). Инсталлировать гипервизор можно как на любой жесткий диск, так и на любую свободную флешку (на моей материнской плате был специальный внутренний порт USB, наличием которого я и не преминул воспользоваться). Основные вопросы во время инсталляции ESXi 6.0 - куда инсталлировать, какой пароль + пару раз подтвердить свои намерения, каждый раз разными клавишами, но все подсказки на виду. После завершения инсталляции отключите все лишние носители информации и проверьте последний раз в настройках BIOS, откуда именно будет загрузка системы. Теоретически, тут же есть возможность сменить IP-адрес сервера, но это можно сделать и позже из клиента vSphere Client, главное, запишите IP-адрес сервера на листочек. Инсталлируем клиент на любую свободную машину, запускаем, вводим IP-адрес сервера, в качестве логина вводим "root", в качестве пароля - ваш пароль, введенный на этапе инсталляции, соглашаемся установить сертификат безопасности и видим скриншот ниже. Если вы проделали весь этот путь - поздравляю - вы владелец собственной платформы виртуализации!!!

vClient01

Рис. 1. Первый запуск клиента vSphere Client

Основные пункты меню, которые потребуются в ближайшее время:

  • Configuration - Licensed Features - Edit - Assign a new license key to this host - Enter Key - вводим свой лицензионный ключ;
  • Configuration - Networking - находим Physical Adapters - Properties - Management - Edit - IP Settings - тут можно поменять настройки сетевого подключения сервера;
  • Configuration - Storage - Add Storage и далее согласно подсказкам - создаем хранилище для файлов виртуальных машин (можно выбрать только HDD/SSD, даже если инсталлировали гипервизор на флешку);
  • Configuration - Storage - выбираем созданный только что DataStor, жмем правой кнопкой и выбираем Browse Datastore - сюда можно закидывать ISO-образы компакт-дисков с дистрибутивами ОС, здесь же будут создаваться файлы виртуальных машин (рекомендую воспользоваться возможностью создавать папки);
  • Configuration - Advances Settings - Edit - тут можно выбрать некоторые устройства, которые можно пробросить в виртуальный ПК, нужные устройства отмечаются галочками, для вступления настроек этого раздела в силу, необходимо перезагрузить сервер (Inventory - Host - Reboot).

Внимание! Не пробрасывайте в виртуальный ПК сетевую карту, относящуюся к сети Management сервера. Кроме того, конкретно в моем случае у меня не получилось пробросить отдельную видеокарту до тех пор, пока я не отключил в BIOS встроенную. Да, я потерял возможность видеть изображение из консоли сервера, но оно на самом деле никогда и не понадобится. В итоге, я пробросил 5 устройств, как на рис. ниже:

vClient02

Рис. 2. Список проброшенных устройств

Все, можно начать создавать виртуальные машины! Жмем CTRL-N, отвечаем на вопросы подсказчика, выбираем только что созданную машину в списке слева, еще раз проверяем ее конфигурацию и жмем Play! При необходимости поиграться внутри машины, открываем вкладку Console и пользуемся клавиатурой и мышью как обычно.

ЭКСПЕРИМЕНТАЛЬНАЯ МАШИНА #1

Выбираю в качестве ОС Windows 8.1, добавляю в виртуальную машину аппаратную видеокарту, инсталлирую ОС, дожидаюсь автоматической установки драйверов видеокарты (иначе что-то не срастается), инсталлирую Kodi 15.0 для Windows. Осталось сделать минимальные настройки: добавить Kodi в автозагрузку и прописать в его настройках вывод изображения на монитор 2 (тот, который на реальной видеокарте). Протестировал и звук по HDMI - все работает как надо.

vClient03

Рис. 3. Виртуальная машина Windows 8.1 x64 с установленным плеером
Kodi 15.0 и возможностью вывода видео и звука по HDMI

ЭКСПЕРИМЕНТАЛЬНАЯ МАШИНА #2

Выбираю в качестве ОС Ubuntu 12.04 x64, добавляю в виртуальную машину аппаратную звуковую карту, запуская ОС прямо с диска (живой образ, без инсталляции). Запускаю в браузере Youtube, проверяю звук с аудиовыхода - все работает. Есть смысл сымитировать на этой виртуальной машине аналог аудиосервера Russound SMS3, благо, что на звуковой карте есть нужное число стереовыходов.

vClient04

Рис. 4. Виртуальная машина Ubuntu 12.04 x64 с возможностью
вывода звука через аппаратную звуковую карту

ЭКСПЕРИМЕНТАЛЬНАЯ МАШИНА #3

Выбираю в качестве ОС XPEnology NanoBoot с прошивкой DSM 5.0.4482, добавляю в виртуальную машину 2 контроллера SATA ASMedia ASM1062, далее штатным способом устанавливаю прошивку DSM 5.0.4482 и сходу получаю отлично работающий виртуальный сетевой накопитель на 4 диска!

vClient05

Рис. 5. Виртуальная машина XPEnology NanoBoot с прошивкой DSM 5.0.448212.04

vClient06

Рис. 6. Информационная страница сетевого накопителя

vClient07

Рис. 7. Информация по жестким дискам - видны все 4 HDD,
подключенные к двум контроллерам ASMedia ASM1062

ВМЕСТО ЗАКЛЮЧЕНИЯ

В данный момент я могу с уверенностью заявлять, что у меня дома трудится самый настоящий сервер виртуализации с совсем недомашними возможностями! Я могу запускать как минимум десяток ОС на одном физическом сервере, собранном из вполне доступных "домашних" комплектующих.

На сервере с легкостью одновременно работают 3 экспериментальных машины. Одна из них выводит видео и звук по HDMI, другая спокойно играет ролики с Youtube на виртуальном экране и выводит звук на реальную звуковую карту, третья отлично работает с 4 реальными жесткими дисками.

Что еще я хотел бы запустить на этом сервере? Как минимум мне очень хочется установить при входе в квартиру микрофон и настроить одну из систем распознавания речи на свой голос. В идеале, было бы очень круто получить в пользование ограниченный парой сотней слов оффлайновый движок распознавания речи от Яндекс, но они совершенно не торопятся его продавать : )

Ну и самый интересный вопрос напоследок: как думаете, сколько процессорного времени отнимают все 3 работающие вхолостую машины? Ответ на скриншоте ниже:

vClient08

Рис. 8. Ресурсы процессора на 3 виртуальные машины без нагрузки

Готов ответить на любые вопросы, заданные в комментариях!

Оставите комментарий ?

11 Комментарии。

  1. Павел

    Эльдар, спасибо за интересную статью. В тексте промелькнула информация о запуске аналога аудиосервера Russound SMS3. Не очень понял, что вы под этим подразумевали?

    • Эльдар Аблаев

      Павел, здравствуйте! Я имел ввиду установить на этот виртуальный ПК какой-нибудь многозонный аудио плеер. Звуковая карта C-media CMI8738-LX имеет кучу аналоговых выходов, поэтому, теоретически, на фронт можно выдавать один трек, на тыл - второй, на центр/саб - третий. Когда-то я уже экспериментировал на эту тему, за основу брал библиотеку Bass и у меня действительно получилось услышать разные треки в разных АС одновременно. Сейчас уже есть готовый плеер, осталось только протестировать его работоспособность.

  2. Эльдар, здравствуйте! Есть вопрос к Вам, но сначала краткое введение. На аппаратное железо был установлен ESXi 5.5, в "сервера" используется обычная материнская плата (GA-Z97-D3H, LGA1150). На гипервизор были установлены несколько виртуальных машин. Все бы хорошо, но встал вопрос мониторинга температуры на процессоре, жестких дисках, материнской плате... но поскольку это не серверное железо, то ESXi датчики не видит. Поиск в web не дал особых надежд. Была ли у Вас необходимость получать информацию с датчиков температуры и если да, то как Вы решали эту задачу. Спасибо.

    • Эльдар Аблаев

      Петр, здравствуйте. У меня тоже нет информации о температуре процессора. Но он по идее и не должен греться, вот сейчас смотрю, он нагружен всего на 50-100 МГц из доступных 4 х 3 ГГц. Если же его каким-то чудом накроет полной нагрузкой, то по идее процессор сам по себе должен уменьшать свою рабочую частоту, безо всяких там ESXi. По поводу жестких ситуация чуть лучше, гипервизор грузится с твердотельника, его мониторить нет смысла, а 4 полноценных жестких проброшены в виртуалку с сетевым накопителем (XPenology), а вот там уже есть нормальный мониторинг и температуры и состояния S.M.A.R.T. и оповещения о неполадках по электронной почте.

  3. Андрей

    Как в процессе эксплуатации? Не возникало ли проблем?

    • Эльдар Аблаев

      Сам сервер и сетевой накопитель на виртуалке работают 24/7. Остальные виртуалки запускаются по мере появления необходимости в новых экспериментах. Например, ставил медиаплеер Kodi, тестировал сервер видеоконференцсвязи, мучил операционку Windows 7 Embedded (модульная ОС на свой вкус!), расшаривал виртуалки друзьям (они запускали какое-то ПО, которое резалось корпоративным антивирусом). В перспективе хотелось бы попробовать что-то для непрерывного локального распознавания речи (без обращение к серверам Яндекс / Google).

  4. Артём

    Класс! Отличная реализация!
    Расскажите поподробнее про ПО для виртуализации, наверное оно недешевое?

    Интересует виртуализация также для объединения множества систем в одну целую.
    Так подумать, даже маршрутизатор можно было бы "засунуть" в компьютер)
    Также было бы интересно засунуть все "оболочки" для смарт-тв в один комп, т.е. превратить компьютер в "мейнфрейм" для всего в доме, в том числе и для умного дома.
    Есть ли каке то альтернативы для Kodi?

    Подумываю над тем, как реализовать "виртуальную ТВ-приставку", т.е. переложив все функции приставки также на мейнфрейм и управлять ей с телефона\пульта

    • Эльдар Аблаев

      Как ни странно, существует бесплатное ПО виртуализации. Я выбрал VMware ESXi, как самое дружелюбное к пользователю. Сразу после регистрации можно получить бесплатную и бессрочную лицензию, которой за глаза хватит любому домашнему серверу: заработает на сервере с 1 физическим процессором (других ограничений на сервер нет). Да, есть определенные ограничения на материнскую плату (прежде всего чипсет) / процессор / видюху, но в интернете очень много статей с готовыми решениями (вот тут, например, прям вообще пошагово). Есть и другие гипервизоры с бесплатными версиями, например, Citrix XenServer.

      Кстати, я тоже подумываю о виртуализации маршрутизатора. Если займусь, то буду смотреть в сторону ПО Mikrotik Router OS. Это прям швейцарский нож для любых целей, которые могут возникнуть у энтузиаста.

      Также очень хочется развернуть на сервер любое открытое ПО для непрерывного распознавания голоса. Найти бы такое, чтобы внятно инсталлировалось и понимало русский язык... )

      Альтернативы Kodi точно есть, но я не вникал в эту тему.

  5. Нурбол

    Здравствуйте, хорошая статья,
    думал ESXi можно установить только на железо указанное на сайте vmware. Посоветуйсте пжл. на какую современную материнку можно установить ESXi 6.5 и на какой проц Core i7 с установкой SSD Samsung 960 Pro 512 Gb

  6. fАлександр

    Добрый день. И во сколько по деньгам вам вышел данный сервер?. И еще зачем вы в виртуалку хранилища добавляли (добавляю в виртуальную машину 2 контроллера SATA ASMedia ASM1062)

    • Чтобы виртуалка работала с жесткими дисками напрямую, а не создавала виртуальные диски в файлах. Если диски проброшены в виртуалку, то она может следить за показателями СМАРТ этих дисков и предупредить о скором выходе из строя одного из них.
      На мой взгляд этот конфиг слишком избыточен для медиасервера и NAS. Было бы достаточно какой-нибудь платы с интегрированным селероном, главное оперативки побольше. И энергопотребление было бы меньше. Данный системник вхолостую кушает огого при работе 24/7.

Ответить на Андрей ¬
Отменить ответ


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>