Speed up FreeBSD KVM guests using Virtio
Установка VirtIO в FreeBSD.
Про паравиртуальные драйвера VirtIO я уже писал, поэтому повторно расписывать что это, не имеет смысла. Привожу пример установки virtio-драйверов в гостевую систему FreeBSD.
Обновляем систему
# freebsd-update fetch
# freebsd-update install
Устанавливаем пакет virtio-kmod. В диалогах везде принимаем настройки по умолчанию.
# cd /usr/ports/emulators/virtio-kmod
# make clean install
После установки копируем модули в каталог ядра
# cp -Rp /usr/local/modules/* /boot/kernel/
# kldxref /boot/kernel
Правим конфигурацию загрузчика
# vi /boot/loader.conf
virtio_load="YES"
virtio_pci_load="YES"
virtio_blk_load="YES"
if_vtnet_load="YES"
virtio_balloon_load="YES"
Правим /etc/fstab, использование virtio определяет другое именование блочных устройств
# vi /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/vtbd0p2 / ufs rw 1 1
/dev/vtbd0p3 none swap sw 0 0
Имена сетевых карт также изменятся, поэтому следует отредактировать имена в rc.conf
# vi /etc/rc.conf
ifconfig_vtnet0="DHCP"
Выключаем гостя.
# shutdown -p now
Перед запуском меняем настрйоки виртуальной машины, менятем тип блочного устройства на virtio. После чего запускаем машину и проверяем что VirtIO включено и используется.
# kvm ... -drive file=/dev/vg00/k101-fbsd-root,if=none,index=0,id=disk101 -device virtio-blk-pci,drive=disk101
— netdev tap,ifname=itap101,id=itap101,script=no,downscript=no -device virtio-net-pci,netdev=itap101,mac=00:fc:44:d5:01:01
# kldstat
Id Refs Address Size Name
1 12 0xffffffff80200000 11cdab0 kernel
2 5 0xffffffff813ce000 4ca0 virtio.ko
3 1 0xffffffff813d3000 5880 virtio_pci.ko
4 1 0xffffffff813d9000 5010 virtio_blk.ko
5 1 0xffffffff813df000 aeb0 if_vtnet.ko
6 1 0xffffffff813ea000 3210 virtio_balloon.ko