Прокидання пристроїв

Віртуальна машина ізольована за своєю природою у віртуальному завантаженні. Однак за бажанням можливе надання доступу віртуальної машини до реальних пристроїв, підключених до хоста.

Для сучасної платформи x86 поширені такі інтерфеси:

  • COM - Послідовний порт
  • LPT - Паралельний порт
  • USB - Порт універсальної послідовної шини
  • PCI - Порт периферійного пристрою

Для прокидання пристроїв, які використовують інші інтерфейси, слід скористатися або USB-адаптером, або PCI-контролером інтерфейсу.

Прокидання COM і LPT пристроїв

Прокидання паралельних і послідовних портів здійснюється такими способами:

  1. Прокидання через емуляцію
  2. Прокидання по мережі
  3. Перекидання адаптера USB-COM/USB-LPT як USB-пристрою
  4. Прокидання PCI-контролера як PCI-пристрою

Прокидання через емуляцію

Більшість сучасних гіпервізорів вміють здійснювати пропитування послідовних і паралельних портів через емуляцію.

Прокидання по мережі

Прокидання по мережі здійснюється через програмні та апаратні рішення. Широко поширені апартатні рішення для прокидання паралельних портів - принт сервери.

Перекидання адаптера USB-COM/USB-LPT як USB-пристрою

Щоб не морочитися з портом, його можна підключити через адаптер USB-COM або USB-LPT і прокинути як USB-пристрій.

  • необхідно придбати адаптер,
  • ускладнюється процес прокидання,
  • збільшення ризику спалити вбудований USB-контролер

Прокидання PCI-контролера як PCI-пристрою

Крім прокидання адаптера можна скористатися прокидом PCI-контролера це дозволить убезпечити вбудований контролер послідовногоабо паралельного порту від замикання.

Прокидання USB-пристроїв

Гіпервізори повної віртуалізації мають можливість прокидати USB-пристрої. Існує два варіанти прокидання USB-пристроїв:

  1. Прокидання через емуляцію
  2. Прокидання через мережу
  3. Прокидання шляхом прокидання PCI-карти USB-контролера

Прокидання через емуляцію

Також на якість емуляції впливає і якість самого пристрою. Так наприклад, апаратні ключі HASP викликають перезавантаження при їх використанні в гостьовій віртуальній машині.

Прокидання USB-пристроїв через мережу

Прокидання USB-пристроїв через мережу здійснюється через клієнти протоколів віддаленого доступу (RDP, PCoIP), також існує безліч апаратних і програмних рішень, що здійснюють прокидання USB-пристроїв по мережі. Якість прокидання залежить від конкретної реалізації. Оптимальне рішення можна знайти лише за допомогою прямого запуску конкретного пристрою. Рекламні буклети дуже часто не містять об'єктивної інформації. Перекидання пристроїв мережі дозволяє підключати пристрої, підключені до іншого комп'ютера.

Прокидання PCI-карти USB-контролера

Прокидання PCI-карти USB-контролера здійснюється так само як і будь-якого PCI-пристрою. Даний метод здійснює найбільш якісний доступ до USB-пристрою у віртуальній машині.

Прокидання PCI-пристроїв

Для успішного здійснення прокидання PCI-пристроїв потрібна підтримка цієї функції материнською платою, самим пристроєм, гіпервізором.

Підтримка прокидання материнською платою

Можливість прокидання PCI-пристроїв мають материнські плати створені на основі чіпсетів з підтримкою VT-d (Intel) і IOMMU (AMD). Як правило підтримкою прокидання PCI-пристроїв мають чіпсети серверних материнських плат, а такожтопові настільні карти.

З чіпсетів топових настільних материнських плат можна виділити два чіпсети: AMD 890FX та Intel X58. Чіпсети AMD відрізняються нижчою вартістю, чіпсети Intel відрізняються вищою продуктивністю.

Більш повний список чіпсетів та материнських плат, що підтримують прокидання PCI-пристроїв, можна знайти на спеціальній сторінці VTdHowTo (http://wiki.xensource.com/xenwiki/VTdHowTo).

Підтримка прокидання пристроєм

Пристрої по-різному мають підтримку прокидання. Найбільш гарантованою можливістю прокидання володіють пристрої, що підтримують скидання на функціональному рівні (FLR). Ця опція дозволяє здійснювати скидання пристрою при перезавантаженні операційної системи віртуальної машини також як би здійснювалося перезавантаження хоста.

Підтримка прокидання гіпервізором