Внедряем виртуализацию KVM – часть 2

Продолжаем цикл статей Virus’а про виртуализацию средствами KVM.

Вы уже читали первую часть?

В этой части рассказ пойдет о пробросе USB в ВМ и миграции с VMware Server.

Проброс USB-устройств
Чтобы пропихнуть внутрь контейнера “свитчуемое” усб устройство, нужно сразу указать оба идентификатора: до и после свитчинга, например, для МТС модема: -usbdevice host:19d2:2000 -usbdevice host:19d2:2003
На этом месте нужно остановиться более подробно:
Как оказалось, пробрасываются устройства только в режиме usb1.1, режим 2.0 находится в разработке, и вряд ли будет готов в течении месяца или двух.
На практике, не все “свитчуемые” устройства пробрасываются нормально даже в режиме usb1.1, некоторые подвешивают гипервизор и/или приводят к различным странностям работы системы, (например, у меня отрубался один из усб портов в 2.6.38).Чтобы не быть голословным – таким устройством является amikonvpnkey, который выдает Сбербанк.
Впрочем, все будет отлично у тех, кому не нужны подобные извращения, а нужны eToken и более банальные устройства типа принтеров/модемов.
Оказалось, что у меня для того чтобы корректно работал проброс девайсов нужно включить «amd_iommu=fullflush», не могу утверждать что это обязательно, может, у вас будет работать без него. Для процессоров intel ничего активировать не нужно.
Есть более  новый формат указания проброса, увы в данный момент он глючит, но чтобы вы его знали:

-deviceusb-host,vendorid=1516,productid=8628,id=usb1
Возможен проброс по адресу на шине

-deviceusb-host,hostbus=002,hostaddr=003,id=usbdev2.

Увы, это оказалось бессмысленным занятием, так как при каждом переподключении адрес меняется, в том числе при каждом “свитче”.
Вот так можно отдать лпт порт: -parallel /dev/usblp0

Миграция с VMware server 2

Нужно заметить, что при переносе из других продуктов этой компании все будет аналогично.
Собственно, всё ради этого и затевалось, поскольку vmware откровенно достали с маркетинговыми заморочками ESXi, а на продукт VMware Server 2, похоже, совершенно забили. Поэтому приходится постепенно переходить на более адекватное и развиваемое решение, то есть на KVM, а там как известно или привыкнем, или барин одумается. 🙂
Как оказалось, диск у меня был создан в режиме SCSI, и kvm его в исходном виде использовать не может.
Нормального способа сконвертировать  чем-либо родным из набора VMware я не нашел, пришлось делать так:

  • Добавляем ещё один иде-диск на 1гб большего размера
  • Загружаем клонезиллу, копируем туда все, загружаемся с него, обязательно на этом этапе сносим VMware Tools (потом это безобразие не даст себя удалить и придется мучатсья с удалятором http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1001354) и заменяем ide драйвера на “стандартный двухканальный контроллер ide”
  • Потом переписываем на хост с kvm, прописываем данные из ethernet0.generatedAddress и uuid.bios в командную строку в виде -uuid 564d125f-0948-a1ff-7ae3-c9acb9a25626 и -netnic,vlan=0,macaddr=00:0c:29:a2:56:26,model=virtio
  • потом грузимся с такими параметрами, чтобы установить драйвера на blockvirtio:
    kvm -boot c -drive file=”/raid5/1.vmdk”,cache=unsafe,if=ide,boot=on -drive file=”/raid5/fake.img”,cache=none,if=virtio,boot=off -name vmwin1 -uuid 564d125f-0948-a1ff-7ae3-c9acb9a25626 -cdrom /virtio-win-1.1.11-0.iso -fda /virtio-win-1.1.11-0.vfd -enable-kvm -m 1024 -usb -smp 1 -net vde,vlan=0,name=vmwin1,sock=/var/run/vde.sock -net nic,vlan=0,macaddr=00:0c:29:a2:56:26,model=virtio
  • ставим драйвера на сетевуху и диск с подключенного сидирома и флоппи, потом менял строку запуска на уже рабочий вариант, обратите внимание что кеш насильно отключен.
    kvm -boot c -drive file=”/raid5/1.vmdk”,cache=none,if=virtio,boot=on -name vmwin1 -uuid 564d125f-0948-a1ff-7ae3-c9acb9a25626 -enable-kvm -m 1024 -usb -smp 1-usbdevicetablet  -vnc :8 -monitortelnet:0.0.0.0:4008,server,nowait-balloonvirtio -net vde,vlan=0,name=vmwin1,sock=/var/run/vde.sock -net nic,vlan=0,macaddr=00:0c:29:a2:56:26,model=virtio -watchdog ib700 -watchdog-action reset –daemonize
    Параметры проброса USBключей опущены.

Дерзайте 🙂

One thought on “Внедряем виртуализацию KVM – часть 2”

Leave a Reply

Your email address will not be published. Required fields are marked *