Как я запилил виртуализацию

Всем привет! Вот обещанный пост по KVM+pci-e passthrough + steamlink.

Итак, начнем. Дома у меня уже лет так 10 живет сервер, живет себе, раздает интернет, качает торрнеты, файлопомойка на нем, еще по мелочи что-то. Сделано все было на Gentoo, ну и так до сих пор на ней. Менялось железо (основной упор на mini-itx + тихие кулеры).


Остальное железо дома - это айпад, рабочий ноутбук на дебиане, айфон, андроид телефон,  андроид(minix neo +KODI) для телевизора, пара одноплатных пк (pi3 + odroid c2) и достаточно приличный ПК с виндой(честно приобретенной, если что) для игор. В какой то момент я с семьей переехал и стало понятно, что придется пожертвовать размерами моего рабочего стола и места для нормального пк не будет, увы. и я стал посматривать на всякие вещи для ускоренной графики на тонких клиентах.

Сразуже мне попался вариант на VirtualGL+ tigerVNC, но не проканало, поскольку пришлось бы использовать решения на wine и прочий playonlinux, который работает не очень, во всяком случае у меня на не запустился Origin.

Следущее решение которое я нашел - Steamlink, если кратко -то это вроде бы решение с ARM камнем и ffmpeg с короткими буферами. для моих задач подошел отлично, но куда же девать сам ПК? так я и пришел к идее запихнуть винду в KVM виртуалку и дать ей видеокарту. Стимлинк я притащил с ибея, через посредников, обошелся он мне в 5500р, в том году еще не продавался официально, сейчас уже да, но цены в наших магазинах -неадекват.

Сразу скажу, что такое требует некоего специфичного железа, т.е. мать и проц должны быть интел и уметь vt-d/vt-x и желательно NVIDIA. Про АМД - вроде как тоже можно, но все неоднозначно, ну и был изначально набор именно Intel+Nvidia.

Как я запилил виртуализацию Proxmox, Pci-e passthrough, Steamlink, Длиннопост

Сейчас конфиг такой:

mobo: asus P8Q77–M2

i7 3770

16gb ram

2x2tb wd

intel 240ssd+bestbuy 240ssd

seagate 500gb

3tb wd green,

Корпус termaltake core v21(влезает 3 диска по 3.5 и 3 диска по 2.5 и он mATX, есть крепеж для СВО)

видюха gigabyte 650ti(тоже поменяю, когда-нибудь на 1060, эхх)

Охлаждение - смесь из noctua +scythe

сетевушка вторая на пси–е. апц упс, точка доступа для вайфая RT–N66U.

Железо - собирал несколько месяцев по авито, постепенно набрал нужный набор.

Как все устроено:

гипервизор proxmox 4.4+ пара патчей с их форума (девелоперская репа)

стартует с 500 гигового винта (потом будет поменян на что то, вернее весь этот зоопарк из ссд поменяю на большой ссд), грузится проксмокс, внутри 2 машины:

1. гента(та самая, которая была), 2физ ядра, 4 гигапамяти, 240 ссд, виртио, mdraid1–2x2tb+luks, 3tb wd backup, машина ничего не делает там особо такого, ну пара проектов по работе, коммунигейт, заббикс, овпн, самба, трансмишшн, seafile, plex, бекапится через bareos, еще пара вещей по мелочи типа раздавания инторнетов. работает в kvm (пока поленился все это перетаскивать в lxc)

2. вин10, 5 ядер, 10 гб оперативки, ссд на 240, kvm, vfio pcie–passhrough, tianocore ovmf uefi bios (без него не заводился проброс видюхи, ну и вин10 же).

ну вин10 стартует, по ац вайфаю стимлинк к ней целяется и можно погонять, например, в stellaris. но по вайфаю есть лаг, так что гораздо лучше проводом. Внутри Стимлинка есть VirtualHere и всякие юсб девайсы типа моего старинного razer imperator и прочих вебкамер успешно попадают в вин машину. Так же мать умеет в AMT+ tty на физ порту, если я совсем что то упорю(АМТ работает с процами БЕЗ литеры К, обратите внимание)

3. Еще есть LXC контейнер для всякого баловства.

Почему не сделал гипервизор из генты?

Ну затеял я все собирать в 2015 году, тогда для маскировки виртуализации от драйвера нвидии требовалось патчить либвирт,а мне было лень и на форуме проксмокс достаточно оперативно ответили девелоперы, так что я остановлся на проксмоксе.

Как собирать и что почитать

1. Вики проксмокса

2. Архиполезный ресурс по vfio  -http://vfio.блогспот__ru

3. Ошибка 43 и как с этим жить

4. Как победить отвал звука по HDMI в госте (это если вы хотите например телевизор физически подрубить) - -http://vfio.блогспот__ru/2014/09/vfio-interrupts-and-how-to-coax-windows.html

(блогспот нелья, увы)

Собирать ставить просто:

берем проксмокс свежий (там скорее всего поправлен тот косяк что вызывал ошибку 43, если нет - курим форумы.

Читаем вики, там подробно все как настраивать.

Обязательно tianocore uefi,

конфиг для виртуалки вот тут мой

bios: ovmf

boot: c

bootdisk: virtio0

cores: 2

hostpci0: 01:00,pcie=1,x-vga=on

ide0: iso1:iso/virtio-win-0.1.112.iso,media=cdrom,size=55592K

machine: q35

memory: 4096

name: win1

net0: e1000=32:33:62:38:63:35,bridge=vmbr0

numa: 0

ostype: win8

scsihw: virtio-scsi-pci

smbios1: uuid=6b380506-55b3-4c7e-a4cb-caacded045fe

sockets: 1

usb0: host=3-1

usb1: host=1-4

virtio0: /dev/disk/by-id/my-ssd-serial


Внимание на то, что нельзя вставлять QXL видеокарту (это приведет к ошибке 43), и пробросу целиком диска через /dev/disk/by-id , без нее - плохо почему-то перезагружается гость, уж не знаю почему, Все остальное - бриджи, проброс юсб -стандартное.

Немного про ошибку 43 - если кратко фирма нвидия -жмоты, на консьюмер сериях видеокарт драйвер определяет что он запущен в вирт машине и принудительно выключается(не устраивает - покупайте GRID), суть манипуляций - прячем hv-vendor-id и шерсть становится густой и шелковистой (не навсех версиях либвирта оно норм работает, читайте маны и ченджлоги).

Еще косяк со стимлинком - отваливается трансляция если выскакивает виндовый UAC и пользователь должен быть залогинен, иначе естственно, не стартует серверная часть Steam (т.е. сам энкодер это не демон)

Отдельно про IOMMU изоляцию - на обычных матерях возможны некие танцы в бубнами, и пробрасываться будет только одно устройство, если нужно больше пробросов богу пробросов - покупайте ксеоны, увы.

Была идея еще заюзать intel HD для Коди - но увы, нет. vGPU (т.е. разделение ресурсов гпу для гостей) только на свежих поколениях. вроде как QEMU 2.7 уже можно.


По времени все вместе заняло где то 3 мес с покупкой железок, сама установка-настройка-пляска с бубном - пару недель неспешного ковыряния по вечерам.

В планах таки перейти на moonlight+odroid c2, может к весне.

Надеюсь, это будет кому-то полезным. Спрашивайте вопросы.

GNU/Linux

1K постов15.5K подписчиков

Добавить пост

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

12
Автор поста оценил этот комментарий

Мне кажется первым пунктом должно идти ЗАЧЕМ это нужно.

На профильном сайте может и не нужно, а на пикабу это обязательно.

раскрыть ветку
3
Автор поста оценил этот комментарий

Пишешь

желательно NVIDIA

и треть мануала о том, как обойти ошибку 43. С амд картами то таких проблем и в помине нет, хехе.

Она, кстати, раньше не вылазила по крайней мере с -vga std, а теперь, видать, зеленые устранили этот досадный "недостаток", теперь мышь/клавиатура с хоста не захватить никак.

раскрыть ветку
DELETED
Автор поста оценил этот комментарий
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку
Автор поста оценил этот комментарий

Слишком много завязано на одну железяку. Если стухнет материка - похерится всё.

раскрыть ветку
Автор поста оценил этот комментарий

почему не на винде? или это не тру

раскрыть ветку