Здравствуй, Хабр!
Интересует решение для виртуализации десктопов в домашних условиях. Виртуализация домашнего сервера тоже интересует, но проблема именно в десктопах.
Чего хочется
Поскольку темя для меня новая и неизведанная, вместо нормального ТЗ напишу просто список хотелок, которые у меня есть:
1. Возможность запускать нужное (штук 15-20, не больше) количество виртуалок на мощном ПК, возможность подключаться к ним с относительно слабых клиентов, не имеющих жесткого диска (или иного накопителя). Клиент для iOS — желателен, но не необходим;
2. Возможность автоматического динамического изменения реального размера файлов хранилищ виртуальных машин, хотя бы в сторону увеличения;
3. Возможность динамического распределения ОЗУ хоста между виртуальными машинами без необходимости их перезагрузки;
4. Возможность просмотра HD-видео на клиентских устройствах, возможность «пробрасывания USB» и звука;
5. Совместимость с Linux. В смысле, сейчас на рабочих станциях установлен Debian, и отказываться от него очень не хочется;
6. Низкая стоимость решения. Бюджет проекта (включая и ПО, и аппаратуру) — до 40 тыс. руб. Если можно сделать на бесплатном софте и имеющемся железе — будет замечательно;
7. Отсутствие шума. Клиенты должны охлаждаться пассивно (вероятно, это требование ограничит список потенциально пригодного к использованию «железа», что, в свою очередь, может повлиять на выбор ПО).
Как организована сеть сейчас, и почему такой вариант не устраивает
В сети четыре ПК:
1. Мощная рабочая станция (i7 2600K, 16 гигабайт ОЗУ, SSD),. Именно её планируется сделать хостом. Охлаждается пассивно;
2. Слабый сервер (старый «Целерон», 1 гигабайт ОЗУ). Если получится, будет использоваться в качестве «тонкого клиента» после изъятия вентиляторов и HDD (чтобы не шумел);
3. Слабая рабочая станция (Sempron 145, 2 гигабайта ОЗУ). Кандидат на преобразование в тонкий клиент. Охлаждается пассивно;
4. Рабочий ноутбук с Win 7. В сети сейчас не используется, в будущем хочу открыть доступ с него к файловому хранилищу сервера для бэкапа.
Ещё есть роутер, раздающий интернет, и смартфон. В сети два пользователя, оба они не любят делить свой десктоп с кем-либо другим (особенно друг с другом), т.е. вариант «временно поработать за чужим компьютером» — неприемлем.
Текущая организация не нравится пользователям по ряду причин:
1. Ресурсы оборудования не используются на полную мощность (пока один из пользователей оккупировал мощную станцию с целью просмотра няшных котиков, второй вынужден редактировать видео на гораздо более слабой машине);
2. Рабочие станции требуют установки SSD, которые, как показала практика, не так надежны, как хотелось бы (пытались использовать SLC и MLC-устройства, на разных контроллерах). При том, что все данные хранятся на сервере, установка SSD ради удовлетворения требований ОС представляется весьма расточительным шагом.
3. Низкая скорость копирования видеоконтента с мобильных устройств / камер, на которых он был записан, на сервер, на котором он будет храниться;
4. Сложность запуска дополнительных ОС при необходимости. Довольно часто ко мне обращаются с вопросами, касающимися поведения различного ПО в условиях, несколько отличающихся от «нормальных» ("
а что, если я запущу эту штуку под вайном, а не под виндой, и поставлю импорт?"). Чтобы ответить на такие вопросы, приходится воссоздавать часть среды вопрошающего, что без виртуализации сделать не так просто. Кстати, паравиртуализация не подходит, т.к. ОС приходится разворачивать самые разные;
5. Сложность перераспределения дискового пространства. На текущий момент на сервере не настроен LVM, поэтому возникают ситуации, при которых контент логически следует поместить на /media/home_storage, а место есть только на /media/work_resources, что не есть правильно.
Очевидные решения, которые не устраивают
1. VMWare
ESXi +
Horizon View. Мощное удобное средство, обеспечивающее всё, что нужно. Перераспределение памяти, динамическое управление размерами хранилищ и файлов ВМ, прекрасная реализация PCoIP, позволяющая смотреть HDTV на клиенте. Недостатков два — цена (адекватная для предприятия, но слишком высокая для рассматриваемого здесь домашнего применения) и необходимость держать сервер под Windows (не то что бы мне не нравилась ОС от Microsoft, но просто ни для чего, кроме запуска View, она мне не нужна);
2. Решения на основе
KVM (например,
Proxmox). Здесь стоимость гораздо более приемлема, но нет PCoIP. Для виртуализации десктопов в Сети рекомендуют использовать VNC, но (не знаю, может, просто я не умею его использовать) он представляется мне слишком медленным и не лишенным неприятных мелких багов (я понимаю, что «баги» — это особенности реализации, а не протокола, но я ни разу не видел свободную от них реализацию);
3. MS Hyper-V + Windows 7/8 + RDP. Главный недостаток этого варианта заключается в том, что в качестве ОС для виртуализованных рабочих станций предполагается использовать Windows (в ином случае этот вариант эквивалентен предыдущему, т.к. снова придется использовать VNC). Я не хочу разводить холивар Windows vs. Linux, просто у обоих пользователей под Linux уже сформирован круг используемого софта, выработаны привычки, которые не хочется менять и т.п. Чистая вкусовщина, но т.к. речь о домашней инфраструктуре, хотелось бы учесть и её.
Вопрос
Возможно ли реализовать все хотелки, если нет — от каких следует отказаться? Если да, то как это сделать? Буду рад и готовым рецептам, и ключевым словам для дальнейшего поиска информации.
Если удастся найти решение, не требующее использования
достижений современной фармакологии, напишу статью.