- апаратна частина Материнська плата Gigabyte GA-Q67M-D2H-B3 Прошивка BIOS - F5 Setup: CPU->...
- Оцінка продуктивності системи (віртуальна машина з проброшеной відкритий)
- Продуктивність диска CrystalDiskMark (віртуальна машина з проброшеной відкритий)
- альтернативні варіанти
- Hyper-V 3.0 - гипервизор від MS
- ESXi - гипервизор від фірми VMware
- Xen - гипервизор поширюється під ліцензією GPL
- KVM
- Установка і настройка XenServer (або XCP) і кидок відеокарти
- Посилання (коротко)
апаратна частина
- Материнська плата Gigabyte GA-Q67M-D2H-B3
- Прошивка BIOS - F5
- Setup: CPU-> Intel Virtualization Technology = ON
- Setup: Chipset-> North Bridge-> VT-d = ON
- Setup: Sata mode = ACHI
- Процесор Intel Core i5 2500 3.3 GHz
- Пам'ять 16 GB
- SSD: OCZ Vertex 3 120gb
- Intel GMA вбудована в мат. плату, використовується гіпервізором
- ATI Radeon HD7770 в першому слоті PCIe, віддається гостьовий ОС 1
- ATI Radeon HD7770 в другому слоті PCIe, віддається гостьовий ОС 2
- Мережевий адаптер Intel, вбудований в мат плату
- Другий ПК в тій же локальній мережі з ОС Windows для установки XenCenter і управління сервером
початок
Спочатку для експерименту було обрано платформа віртуалізації XPC 1.5 beta (Xen Cloud Platform), в основі якої лежить гипервизор Xen. Ця платформа повністю безкоштовна, крім того, установка і запуск в роботу займає лічені хвилини. В ході роботи з'ясувалося, що на виртуалке під XCP неможливо запустити Skype, він відразу ж завершується з помилкою. проблема описана тут і тут . Для її виправлення потрібно додати одну строчку в вихідні та пересобрать Xen, на якому заснований XPC. Тому я перейшов на безкоштовну редакцію Citrix Xen Server 6.0.2 в якому дана проблема вже виправлена.
Ще одна небезпека підстерігала при установці драйверів відеокарти. Справа в тому, що Catalyst Control Center викликає BSOD на гостьовий системі (перевірено як на XCP, так і на Xen Server). Тому доведеться ставити драйвер через диспетчер задач, рідний інсталятор теж може викликати BSOD при перевірці відеокарти.
В результаті гостьова система отримала в своє розпорядження повноцінну HD7770 і пройшла всі тести. Після повної настройки гостьовий ОС я створив пов'язану копію (це дозволило неабияк заощадити місце на SSD) і прокинув туди другу відеокарту.
На жаль, окремі USB порти XCP і Xen Server прокидати не вміють, тому я прокинув один контролер USB в одну машину (всі задні порти), другий в іншу (всі порти виведені на корпус). Вбудовані контролери USB висять на PCI і тому прокидаємо так само як і відеокарта.
Справедливості заради варто відзначити, що кидок окремих USB є в Xen, але керувати ним на мій погляд складніше (потрібен певний досвід роботи в Лінуксі)
Все це дозволило повноцінно використовувати один системний блок для роботи та ігор двом людям і паралельно запускати на ньому ж додаткові віртуальні машини, якщо потрібно. Падіння продуктивності відеокарт або процесора помічена не було. Перебоїв у роботі, зависань, будь-яких проблем, крім описаних вище, не виявлено!
Оцінка продуктивності системи (віртуальна машина з проброшеной відкритий)
Продуктивність диска CrystalDiskMark (віртуальна машина з проброшеной відкритий)
альтернативні варіанти
Hyper-V 3.0 - гипервизор від MS
Є безкоштовний варіант з обмеженим функціоналом. Він нам не підходить, тому що поки не має підтримки проброса пристроїв (passthrough). У нього проте є дуже приваблива технологія RemoteFX, яка дозволяє отримувати 3d прискорення через RDP сеанс. Наскільки я зрозумів, деякі сучасні ігри працюють з ним, деякі ні. Крім того, швидше за все, будуть певні витрати на емуляцію, що знизить продуктивність. Цю цікаву технологію я обов'язково спробую і напишу окрему статтю.
ESXi - гипервизор від фірми VMware
Мабуть найпопулярніший і потужний. Під час тестування він був фаворитом, тому що багато в чому, на мій погляд, перевершує XenServer. По-перше дозволяє при створенні віртуальних машин вказувати тонкі настройки заліза, що безсумнівно корисно при підготовці образів для заливки на реальне залізо. XenServer ж навпаки, має лише заздалегідь підготовлені шаблони і все робить на свій розсуд. По друге має відразу три види балансування пам'яті, а так само дозволяє "віддати" гостьовий машині строго певну кількість процесорного часу. Є безкоштовна редакція з обмеженням пам'яті в 32 гинув. Проброс (passthrough) PCI пристроїв тут робиться найпростіше: відзначаємо галочками потрібні пристрої і додаємо їх в гостьову машину. Однак, успішно прокидаємо тільки деякі відеокарти. Успіх не залежить від виробника, прокидаємо як AMD, так і nVidia, але тільки деякі. Мені не пощастило, Radeon 7770 не вдалося передати віртуальній машині. Під час установки драйверів отримуємо BSOD.
Під час проброса я зіткнувся з дуже цікавим багом, який може поставити в глухий кут. Справа в тому, що якщо гостьовий машині виділено більше 2 гб пам'яті, то після проброса відеокарти машина не стартує! Рішення проблеми я знайшов тут .
У цього гипервизора є ще одна проблема: Не можна просто взяти і поставити його на звичайне залізо. Тільки на сертифіковане! На початковому етапі установці він не знайшов підходящої мережевої карти і відмовився продовжувати. Досить дивно, тому що вбудований в мою мат. плату мережевий адаптер - це Intel 82579, не найгірший варіант, погодьтеся. Далі я знайшов в засіках D-link DGE 528T, але і цю плату він не підтримує. Трошки погуглити, знайшов наступне Рішення . Пропатчити образ, нам все ж вдалося встановити ESXi 5.1.
Xen - гипервизор поширюється під ліцензією GPL
На його основі зроблено багато комерційних продуктів, наприклад, дуже популярний зараз Citrix XenServer, або мало кому відомий Oracle VM. Я бачу три варіанти використання цього гипервизора:
- Використовувати власне Xen (найдовший спосіб). У цьому випадку нам буде потрібно встановити який-небудь дистрибутив Лінукса, потім встановити на нього Xen і налаштувати. При цьому настройка і запуск віртуальних машин і самого гипервизора буде проводитися за допомогою створення і редагування конфігураційних файлів. Все управління через командний рядок.
- Використовувати відкритий XCP (Xen Cloud Platform). В цьому випадку ми отримуємо можливість управляти гіпервізором, а так само гостьовими ОС за допомогою сторонніх додатків (зручно і швидко). Найкраще поєднання: XCP + Citrix XenCenter (безкоштовна програма для управління Citrix XenServer). XCP 1.5 beta - це майже точна копія комерційного Citrix XenServer 6.0, при цьому функціонал безкоштовного XCP дорівнює enterprise версії XenServer!
- Використовувати комерційний Citrix XenServer. Є безкоштовна редакція з обмеженим функціоналом: відключена балансування пам'яті, кидок відеокарти засобами XenCenter (через командний рядок карта все одно прокидати). XenServer створений на основі XCP і мало чим від нього відрізняється, однак Citrix випускає часті патчі для XenServer, що є ключовим чинником впливає на вибір.
KVM
маловивчений мною гипервизор, про нього майже нічого сказати не можу. Начебто він вміє прокидати PCI пристрої, в тому числі відеокарти. Наскільки я зрозумів, він не є окремою платформою, а ставиться на лінукс, після чого налаштовується. Я не любитель колупання в командному рядку і не маю достатнього досвіду роботи в Лінуксі, тому вирішив розглядати його в останню чергу.
Установка і настройка XenServer (або XCP) і кидок відеокарти
Я об'єднав два різні продукти, т.к один фактично є клоном іншого, розбіжностей в налаштуванні мало (я буду їх відзначати).
- Качаємо з офіційного сайту XCP і XenServer (Тиснемо try it Free зверху). Навіть якщо ви плануєте використовувати XPC, я рекомендую скачати також XenServer, тому що на установчому диску в папці client_install знаходиться XenCenter, який буде не зайвим.
- Встановлюємо гипервизор на залізо. Установка забезпечена майстром і не викличе труднощів. Однак саме в момент установки варто вибрати HDD для зберігання віртуальних машин, якщо планується використовувати локальні диски, а не iSCSI. Після установки це може викликати труднощі, тому що робиться тільки з командного рядка.
- Встановлюємо на будь-який ПК в тій же локальній мережі Citrix XenCenter з образу Citrix XenServer (його ми завантажили на першому кроці). Запускаємо XenCenter і підключаємося до нашого сервера.
- (Тільки для XPC !!!) Для повноцінної роботи XenCenter c XCP 1.5 beta потрібно в консолі гипервизора виконати наступні команди:
cd / opt / xensource / bin /etc/init.d/xapi stop cp -vp xapi xapi.original sed -i 's / 1 \ .4 \ .90 / 6.0.99 / g' xapi /etc/init.d / xapi start
Після цього в XenCenter з'являться вкладки, що дозволяють включати балансування пам'яті, а так само виконувати кидок відеокарти в гостьові машини. - Створюємо нову віртуальну машину, вибравши потрібний нам шаблон - Windows 7 (64-bit)
- Переходимо у вкладку Console з'явилася в XenCenter віртуальної машини і виробляємо установку Windows 7 x64.
- Встановлюємо паравіртуальние драйвера, cмонтіровав образ xs-tools.iso у вкладці Console.
- Задаємо пароль для користувача (потрібен для підключення через термінал) і включаємо термінальний доступ (Панель Управління -> Система -> Налаштування віддаленого доступу). Це потрібно для доступу до гостьової ОС після проброса відеокарти, тому що зображення перестане виводитися в консоль.
- Переходимо в консоль гипервизора. набираємо
lspci
і бачимо список pci пристроїв з ідентифікаторами. Запам'ятовуємо коди потрібних нам пристроїв. Наприклад, відеокарта в першому pci-e слоті бедет мати ідентифікатор 01: 00.0, а вбудована в неї звукова карта 01: 00.1. - набираємо
xe vm-list
і бачимо список віртуальних машин. Запам'ятовуємо uuid ідентифікатори потрібних нам машин. Наприклад, d103a91d-5c38-844f-14d5-64b3c495eb08. - Для проброса відеокарти набираємо
xe vm-param- set other-config: pci = 0/0000: 01: 00.0,0 / 0000: 01: 00.1 uuid = d103a91d-5c38-844f-14d5-64b3c495eb08
замінюючи значення в прикладі на свої власні. Через кому пречісляем все pci пристрою, який хочемо прокинути. - Увага баг! Проброс пристроїв нормально не працює, якщо для гостьової машини включена балансування пам'яті.
Балансування дозволяє змінювати кількість пам'яті "на льоту". Наприклад, є дві машини з максимально заданим межею пам'яті 8 гинув. Припустимо, в розпорядженні гипервизора всього 8 гинув вільної пам'яті. Тоді, якщо включена одна машина, гипервизор виділяє їй все 8 гинув вільної пам'яті, але варто запустити другу, як гипервизор змінить кількість пам'яті для першої машини (нальоту, не зупиняючи її). Таким чином кожна отримає по 4 гинув і витратить всю вільну пам'ять.
Суть бага полягає в тому, що якщо кількість вільної пам'яті гипервизора менше максимальної кількості пам'яті для віртуальної машини, то при запуску цієї машини від неї відвалиться частина проброшених PCI пристроїв. - Запускаємо гостьову ОС і бачимо що з'явилися нові пристрої. Качаємо останній Catalyst, розпаковуємо в папку без встановлення, потім переходимо в диспетчер пристроїв і звідти оновлюємо драйвер відеокарти, вказавши потрібну папку.
Справа в тому, що Catalyst Control Center викликає BSOD, навіть якщо його вдасться встановити, відеокарта буде працювати не стабільно - періодично будуть вискакувати артефакти зображення. - Після перезавантаження консоль віртуальної машини в XenCenter застигне на етапі завантаження Windows. Значить відеокарта проброшена, можна підключати монітор до її гнізда!
Посилання (коротко)
Загальні відомості: Wiki ( Wiki )
Xen: Проброс відеокарти в Xen, з-під Ubuntu ( Хабр )
Проброс відеокарти в віртуальну машину (Хабр)
Xen: XenVGAPassthrough (legacy) ( Wiki.xen.org )
Xen: Xen VGA Passthrough (new) ( Wiki.xen.org )
ХenServer і XCP: XenServer 5.6 Multi-GPU Passthrough for XenDesktop HDX 3D Pro Graphics ( support.citrix.com )
ХenServer і XCP: PCI passthrough for paravirtualized guests on Citrix XenServer without an IOMMU ( ogris.de/howtos )
XCP: Виправлення бага з XenCenter для XCP ( gossamer-threads.com )