Предыстория. Ранее для своих экспериментов я пользовался сервером виртуализации на базе Citrix XenServer, который был бесплатным с шестой версии. Сначала я использовал версию 6.2, затем перешёл на 6.5, затем на 7.1 - с тех пор утекло много воды и два из трёх своих сервачков пришлось продать: сильно были нужны деньги.
Ну и несколько напрягло, что последующие версии Citrix XenServer снова стали платными. К счастью, появилась группа энтузиастов, которые стали делать бесплатную версию этого продукта - причём, по возможности совместимую с платной версией. Подробнее об этом можно прочитать здесь. Аббревиатура расшифровывается как "Xen Cloud Platform", что на русском языке можно понять как "Облачная платформа виртуализации Xen". В качестве базовой системы гипервизора используется CentOS-7.
Тем временем финансовые вопросы стали потихоньку решаться и я приобрёл сначала материнскую плату с сокетом am4, две планки памяти по 16 гигабайт и вот, наконец, недавно осилил покупку Ryzen 7 2700X.
8 ядер, 16 потоков, 32 гигабайта оперативки, SSD на 240 гигабайт и жёсткий диск на 3 терабайта - самое время заняться настройкой сервера.
Немного забавно, но образ на 800 мегабайт запросто убирается на флешку объёмом меньше гигабайта. Там же авторы любезно дают ссылку на Rufus.
После разгребания авгиевых конюшен старых виртуалок старый сервер тоже пошёл на обновление - и вот перед нами открылся интерфейс удалённого администрирования.
Специально для тех, кто не понимает, что такое виртуалки и не любит смотреть скучные графики нагрузок, я приготовил чуть более интересные картинки . Возможно, это кого-то заинтересует.
Возможно, найдутся те, кто скажет, что семёрка уже не поддерживается, что надо десятку ставить. Десятку тоже можно, но она и ресурсов жрёт больше. Для моих задач пока хватает возможностей семёрки.
Можно ли майнить в виртуалке или играть в игры? Обычно виртуальное железо слабое, но производители материнской платы и авторы чуда XCP (Xen Cloud Platform) даже обещают полноценную поддержку IOMMU (это новая технология проброса в виртуальную машину физических устройств, например видеокарт).
Впрочем, есть операции, которые из центра управления не сделаешь. Например, у меня видно диски для хранения виртуалок Local storage 1 и Local storage 2 - изначально я переименовал Local Storage во второй, а затем подсоединил первый. Команды присоединения хранилища (SR - Storage Repository) описаны на сайте Citrix и отдавать их можно через консоль SSH, например, PuTTY.
Вот, к примеру, процесс установки Midnight Commander
И результат
Из подводных камней: если виртуальные машины находятся не в основной сети, а в созданном Вами интерфейсе VLAN - к ним применяются правила файрволла. Да, тут есть файрволл и он даже не отключен. И это не родной CentOS firewalld, а старый добрый iptables - так что не забудьте добавить в правила разрешения для порта 53 UDP, иначе фиг вам, а не разрешение имён в службе DNS. Да, без него и интернет не работает, и пакеты из внешних репозиториев не устанавливаются...
И уж, конечно, не забудьте в sysctl добавить ip_forward=1 Не хотите? Вас устраивают все виртуалки в одной сети? Ну... хозяин-барин. Кстати, мощности процессорных потоков тут тоже регулируются - полной производительности гипервизор виртуалкам не даёт. Вы сами должны решить, давать ли "полную мощность" или позволять делить ресурсы одного потока с другими виртуалками.
Из других проблем - стоит отметить почти полное отсутствие драйверов виртуализации. Поиск в гугле по "Xen PV Tools" или "Xen PV Drivers" даёт удручающую картину.
Вы спросите - а разве в комплекте с системой нет виртуального диска? Есть... но драйверы на нём только для Linux. Под Windows есть только это. Я пробовал брать диски от XenServer-7.4, но... На старой системе под Intel они ещё работали, а на новой под AMD стали падать с синим экраном и руганью по поводу xenbus.sys - так что всё грустно. Я нашёл ещё один вариант: ставить драйверы отсюда, а агент управления запускать вручную - хотя я бы не сказал, что такой геморрой меня сильно порадовал. Да, раньше с бесплатным Citrix всё было намного проще - эх, было времечко...
К сожалению, я не занимался нагрузочным тестированием, но на этом железе полтора десятка виртуальных машин чувствуют себя вполне уверенно - и даже почти не тормозят. Впрочем, возможно это я просто придираюсь - процессор довольно дорогой и я ожидал от него большего. Кстати, установка драйверов Xen PV реально сильно помогает ускорить эти виртуалки.
Хотя здесь кто-то может просто пожать плечами по поводу цен. Но если на канале будет достаточно посетителей, возможно я смогу позволить себе AMD Ryzen 9 3950x - если на плате будет 16 ядер, 32 потока и 64 гигабайта оперативки, можно будет развернуться на полную...
Кто-то может спросить - а зачем мне столько виртуалок? В своё время у меня был внешний статический IP-адрес, а привязанные к Яндекс-Коннект домены есть и сейчас. Как минимум можно развернуть веб-сервер и выставить свой сайт в интернет. Или предлагать другим развёртывать сайты на своём домашнем компьютере. Или не сайты, а полноценный сервер терминалов с установленной 1С. Разумеется, RDP наружу напрямую выставлять нельзя, но через VPN-то можно. Кстати, сейчас многие роутеры - даже из домашнего сегмента - могут работать в качестве PPTP-сервера.
Ну и... Как же я мог забыть про геймеров? Развернуть сервер игры CS:GO Steam или No-Steam - нет проблем. Или Майнкрафт. Или ГТА Сан-Андреас мультиплеер (SAMP).
Человек, который хочет стать специалистом, никогда не будет ставить эксперименты на железе, которое в продакшене. И если вы думаете, что для учёбы достаточно Oracle VirtualBox, то я вас разочарую.
В принципе кто хочет - может по-прежнему использовать Citrix XenServer старых версий. Но в них не поддерживаются Windows 10 (при желании можно, но не факт) и загрузка UEFI Boot (бывает нужно). С новыми версиями Linux тоже всё печально. Допустим, сервер CS:GO для сына я развёртывал на базе Ubuntu-16.04: более новые версии просто не поддерживались. И эта-то встала чудом, поддержка была только для версии то ли 12, то ли 14. Зато нам скоро обещают новую версию XCP - 8.2 и в ней уже не будет поддерживаться Windows 2008 R2. Зато более тонко можно будет настраивать производительность. А ещё ей обещают длительную поддержку (LTS - Long-Time Support) в течение пяти лет.
Итак, это у нас был краткий обзор бесплатной системы виртуализации. Если дочитали до конца, то спасибо за внимание.
В следующем обзоре постараюсь рассказать про "клетки" FreeBSD Jail и контейнеры Linux Containers (LXC). Почему я думаю, что это может быть кому-то интересно? Потому что тему можно озвучить в таком ключе: "как в виртуалке на 1-2 потока выполнения развернуть ещё кучу полноценных виртуалок с дополнительными задачами". У Вас в сети сколько хостов? Ну пусть мы по одному ядру (2 потока) у зтого процессора отберём. Не все восемь ядер - надо и гипервизору что-то оставить. Пусть будет семь.
А теперь в каждой из этих семи виртуалок запустим по дюжине контейнеров - это уже 84 хоста в сети. И это дома! Почти сотня компьютеров в одном системном блоке! Если мощности позволяют, то почему бы и нет?