Попередня установка
Для запуску KVM необхідно процесор який підтримує апаратну віртуалізацію. Intel та AMD і розробили розширення для своїх процесорів, вважаються відповідно Intel VT-х (кодова назва Vanderpool) та AMD-V (кодова назва Pacifica). Щоб дізнатися чи підтримує ваш процесор цю опцію, виконайте:
# egrep -c '(vmx|svm)' /proc/cpuinfo
- Якщо отримаєте відповідь 0, це означає, що ваш процесор не підтримує апаратну віртуалізацію.
- Якщо отримаєте відповідь 1 або інше число, це означає, що ваш процесор підтримує віртуалізацію в BIOS.
За замовчуванням, якщо ви завантажилися в XEN, ядро не відображатиметься SVM або прапор VMX за допомогою команди GREP. Щоб побачити, чи включені дані прапори від Xen, введіть:
# cat /sys/hypervisor/properties/capabilities
Ви повинні побачити прапори HVM.
Крім того, ви можете виконати:
# kvm-ok
Якщо отримаєте наступний висновок, то у вас все добре і у вас є підтримка:
INFO: /dev/kvm exists
KVM acceleration can be used
Якщо ви отримаєте наступний висновок, то у вас немає підтримки і буде працювати набагато повільніше без цих розширень KVM:
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
ПРИМІТКА: Ви можете побачити повідомлення на кшталт KVM acceleration can/can NOT be used. Це вводить в оману, і тільки означає, що KVM є *currently* available (i.e. "turned on"), і говорить що вони включені, але не підтримуються.
Використовуйте 64 бітне ядро (якщо це можливо)
Запуск на 64-бітному ядрі рекомендується, але не потрібен.
Щоб забезпечити підтримку більш ніж 2 Гб оперативної пам'яті для віртуальних машин, необхідно використовувати 64-бітове ядро. На 32-бітному ядрі буде обмежено використання РАМ до 2 Гб.
Крім того, 64-розрядна система може містити як 32-розрядні, так і 64-розрядні ОС, а 32-бітна система може вмістити лише 32-розрядні ОС ваших віртуальних машин. Щоб перевірити, який розрядність ваш процесор, ви можете запустити цю команду:
# egrep -c ' lm ' /proc/cpuinfo
- Якщо ви маєте 0, то це означає, що ваш процесор не 64-бітний.
- Якщо ви маєте 1 і вище, це говорить що має підтримку.
Щоб переглянути архітектуру вашого сервера, використовуйте:
# uname -m
x86_64 вказує роботу з 64-розрядним ядром. Якщо ви використовуєте i386, i486, i586 або i686, ви працюєте у 32-бітовому ядрі.
Встановлення гіпервізора KVM на Debian/Ubuntu
Для мінімальної установки, потрібно лише наступний пакет virtinst який можна встановити:
# aptitude install virtinst
Наступні пакети необхідні, якщо вам необхідно включити KVM на вже встановленій ОС, я встановлю і їх:
# aptitude install kvm libvirt-bin virtinst bridge-utils
Для того щоб використовувати графічний інтерфейс встановіть:
# aptitude install virt-manager virt-viewer
Моя перша віртуальна машина буде встановлена саме через графічний інтерфейс, оскільки він дуже простий.
Додаємо свого користувача до груп:
# adduser `id -un` libvirtd
$ sudo adduser `id -un` kvm
Наприклад:
# adduser captain kvm
# adduser captain libvirtd
Після встановлення, ви повинні увійти знову, щоб ваш користувач стає дійсним членом KVM та libvirtd груп користувачів. Члени цієї групи можуть запускати віртуальні машини.
Налаштування мережного мосту для підключення віртуальних машин до реальної мережі
Це налаштування необхідне для вашого гіпервізера, щоб віртуальні сервери мали прямий доступ до інтернету. Внесемо деякі зміни до конфігураційного файлу
# nano /etc/network/interfaces
Якщо у вас є інтерфейс eth0, то його потрібно замінити на br0 з додаванням наступних рядків:
#auto eth0
#iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.10.10
gateway 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
ЧИ
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Я буду використовувати DHCP
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Це створить віртуальний інтерфейс BR0.
Тепер перезавантажте мережу:
# /etc/init.d/networking restart
Якщо ваша VM «заморожена» протягом декількох секунд після запуску або зупинки KVM під час використання мостової мережі, це тому, що міст Linux прийме апаратну адресу з найменшим номером інтерфейсу. Щоб уникнути цієї проблеми, додайте наступну конфігурацію вашого мосту:
# post-up ip link set br0 address f4:6d:04:08:f1:5f
Замініть f4:6d:04:08:f1:5f на апаратну адресу фізичного адаптера Ethernet, який завжди буде частиною мосту.
Перевірка установки KVM
$ virsh -c qemu:///system list
Id Name State
----------------------------------
Якщо отримаєте вивід:
$ virsh -c qemu:///system list
libvir: Remote error : Permission denied
error: failed to connect to the hypervisor
$
Файл sock повинен мати права, аналогичні таким:
$ sudo ls -la /var/run/libvirt/libvirt-sock
srwxrwx--- 1 root libvirtd 0 2010-08-24 14:54 /var/run/libvirt/libvirt-sock
Також, /dev/kvm повинен мати правильні групи. Якщо ти бачиш:
$ ls -l /dev/kvm
crw-rw----+ 1 root root 10, 232 Jul 8 22:04 /dev/kvm
Ви можете мати проблеми при створенні віртуальної машини. Змінити групу пристрою для kvm/libvirtd:
# chown root:libvirtd /dev/kvm
Тепер вам потрібно або увійти знову або перезавантажити модулі ядра:
# rmmod kvm
# modprobe -a kvm
Далі розглянемо створення віртуальної машини KVM.