KVM

Настройване на Libvirt QEMU и KVM стека на Debian

Настройване на Libvirt QEMU и KVM стека на Debian
Виртуализацията, базирана на QEMU-KVM, е в основата на стека за виртуализация, базиран на Linux. Той е безплатен и с отворен код и е една от най-разпространените технологии за виртуализация в индустрията. Повечето доставчици на облачни услуги използват KVM и по основателна причина. Той предлага много ефективен и същевременно много сигурен стек за виртуализация и няма сложно лицензиране, с което да се справите. Това не е така при типичните настройки на Hyper-V или VMWare. Компромисът обаче е, че настройката може да бъде много сложна, особено за неопитни потребители. Тази статия има за цел да намали тази сложност за читателя.

С това казано, нека опитаме да настроим наш собствен KVM хипервизор на сървър на Debian 9 .

Активиране на разширения VT-x или AMD-V

В идеалния случай ще ви е необходима чиста инсталация на вашата любима дистрибуция на Linux на машина (не VM), която има доста модерен процесор. Повечето съвременни процесори на Intel поддържат разширения VT-x и по подобен начин AMD има своите разширения AMD-V. Тези разширения са „подобрения“, вградени точно в силикона на вашия процесор, което позволява по-бърза и по-сигурна виртуализация. Трябва да активирате тези разширения от менюто BIOS / UEFI на дънната ви платка. За повече информация вижте ръководството на дънната платка.

Ако не искате да измъчвате перфектно работещата си работна станция на Linux, можете да използвате виртуална машина в облака, за да стартирате тези експерименти. DigitalOcean, например, предлага виртуални машини, в които е активирана вложена виртуализация. Това ви позволява да стартирате виртуални машини във вашата виртуална машина, хоствана в облака (това е известно като вложена виртуализация). Очевидно това ще бъде много неефективен начин за практически стартиране на хипервизор, но като експеримент ще се справи добре. Уверете се, че сте получили поне 4 GB памет и повече от 2 процесора.

След като активирате споменатите разширения, можете да проверите това, като стартирате lscpu и потърсите записа за виртуализация:

$ lscpu
.. .
Виртуализация: VT-x
.. .

Сега, след като разполагаме с разширенията, времето за придвижване е по-напред в стека.

Инсталиране на KVM и QEMU

KVM (или базирана на ядро ​​виртуална машина) се състои от няколко модула на ядрото на Linux, които ще се възползват от разширенията на процесора, които активирахме по-рано. QEMU, от друга страна, се състои от куп потребителски програми, които ни предоставят възможности за емулация. Като самостоятелен софтуер QEMU може да се използва за стартиране на програми от една архитектура, като ARM, на друга като x86_64 и обратно. Може да се използва за стартиране на всичко от един двоичен файл до пълна операционна система.

Ние, разбира се, ще го използваме само за виртуализиране на операционни системи x86_64 на платформата x86_64. И за това ни трябва само един пакет:

$ sudo apt инсталира qemu-kvm

Можете да проверите дали пакетът е заредил всички необходими модули, като изпълните:

$ lsmod | grep kvm
kvm_intel 200704 0
kvm 598016 1 kvm_intel
irqbypass 16384 1 kvm

Това е всичко, от което се нуждаете, теоретично. Но скоро ще разберете, че това е практично. Виртуалните машини са изключително сложни и ние се нуждаем от софтуерна обвивка, за да управляваме всички различни изисквания като мрежи, управление на файлова система и т.н. по доста автоматизиран (и мащабируем начин). За да направим това, се нуждаем от библиотека за виртуализация на Libvirt / демон.

Инсталиране на Libvirt

Libvirt е типична част от вашия стек за виртуализация. Демонът libvirtd изпълнява свързани с виртуализацията услуги във фонов режим. Услуги, които слушат заявки като „Създаване на виртуална машина“, „Унищожаване на виртуална машина“, „Създаване на мрежа“ и др., И ги изпълнява в тях, използвайки основните помощни програми на Linux като двоични файлове qemu, iptables и т.н.

Libvirt е много обобщен и може да се използва за управление на KVM гости, LXC контейнери и стек за виртуализация на Xen. Засега ще се съсредоточим само върху Libvirt за гостите на KVM. Libvirtd излага API, който може да се използва от GUI приложения като virt-manager или oVirt или инструменти за команден ред като virt-install, virsh и т.н. Можем да напишем дори собствени клиенти, които използват същия стандартен API.  Ще използваме инструменти на командния ред, като virsh и virt-install, за да поддържаме нещата стандартизирани.

Нека инсталираме всички тези инструменти:

$ apt инсталира libvirt-client libvirt-daemon-system virtinst

Ще ни е необходим и друг пакет libguestfs-tools, който да ни помогне да редактираме или модифицираме твърдите дискове и файловите системи на виртуалната машина за гости.

Страхотен! Сега инсталирахме целия стек и знаем как е изложена архитектурата. За да използвате libvirt (и свързаните с него инструменти), добавете вашия потребител към libvirt-qemu и libvirt групи.

$ sudo usermod -aG libvirt
$ sudo usermod -aG libvirt-qemu

Или изпълнете командите като root потребител.

Virsh и стартиране на мрежата по подразбиране

Помощната програма за команден ред virsh е нещо, което ще използвате много, когато управлявате вашите виртуални машини. Можете просто да въведете virsh и да влезете в интерфейса на командния ред на virsh или да напишете virsh [Опции] от вашата обикновена обвивка. Преминете през изхода на virsh help, когато сте заседнали с някаква свързана с VM операция.

Първата команда virsh, която ще използваме, ще извика мрежата по подразбиране, към която може да се свърже VM:

$ virsh net-autostart по подразбиране
$ virsh net-start по подразбиране

Това ще стартира мрежата по подразбиране и ще се увери, че тя се стартира автоматично, когато хостът се рестартира. За да проверите подробностите за тази мрежа по подразбиране, използвайте командата:

$ virsh net-dumpxml по подразбиране

по подразбиране
3d723dc6-49a4-4f73-bf6d-623d6b46b099












Xml файлът може да ви покаже обхвата на възможните IP адреси и как те ще комуникират с външния свят. По принцип трафикът ще идва към тях чрез NAT и те няма да бъдат част от външната мрежа на вашия хост. Можете да използвате Bridge Networking, за да изложите всяка виртуална машина на LAN на хост машината.

За да стартирате виртуална машина

За да стартираме виртуална машина, се нуждаем от инсталационен носител (като инсталационния ISO за всяка операционна система) и колко процесори и колко памет трябва да бъдат разпределени към виртуалната машина и ако се нуждае от VNC. Тази стъпка е мястото, където наистина можете да оцените GUI инсталатора като virt-manager, но ние ще го направим с помощта на доста сложна команда virt-install.

Обичам да пазя всичките си носители за зареждане на / var / lib / libvirt / boot и всички виртуални машини и техния виртуален твърд диск в / var / lib / libvirt / images (местоположението по подразбиране), което опростява организацията.

$ cd / var / lib / libvirt / boot
$ wget http: // releases.ubuntu.com / 18.04.2 / ubuntu-18.04.2-desktop-amd64.изо

Командата по-горе извлича ISO на работния плот на Ubuntu, можете също толкова лесно да получите CentOS или друга дистрибуция, която желаете.

За да създадете нова виртуална машина и да я стартирате:

$ virt-install --virt-type kvm \
--име myVM \
--памет 2048 --vcpus = 2 \
--cdrom / var / lib / libvirt / boot / ubuntu-18.04.2-desktop-amd64.iso \
--размер на диска = 40 \
--графичен vnc, слушане = 0.0.0.0, порт = 5900 \
--noautoconsole

Горната команда наистина е сложна. Предлагам да запазите тези команди в текстови файлове и да ги стартирате като изпълними скриптове, когато създавате нова виртуална машина. Повечето параметри като virt-type и virt-name са доста обясними. Те просто са досадни за записване.

Последната опция за VNC дисплей ще стартира VNC сървър и ще ви позволи да имате конзолен достъп до вашата VM дистанционно, като се свържете към порта на хоста 5900. Отворете VNC клиент на вашия работен плот и отидете на IP адреса на вашия KVM хост на порт 5900. Уверете се, че сте достигнали IP на хоста, а не IP на VM. Вашият VNC ще се свърже с видео изхода на вашата VM и можете да продължите с инсталацията.

Къде следва?

Оттук нататък можете да опитате да направите пауза, спиране и изтриване на виртуалните машини. Можете също така да модифицирате основната инфраструктура, като добавите пулове за съхранение и конфигуриране на мостови мрежи. Всички конфигурационни файлове за отделни виртуални машини, мрежови интерфейси и пулове за съхранение се съхраняват в / etc / libvirt / и / etc / libvirt / qemu.

Понякога ще трябва физически да изтриете файловете на твърдия диск, записани в / lib / libvirt / images, дори след премахване на виртуалната машина от libvirt. За да автоматизирате нещата допълнително, опитайте да импортирате qcow2 изображения, които повечето дистрибуции на Linux като Ubuntu и CentOS. Те имат предварително инсталирана ОС.

Заключение

Настройването на това не е толкова лесно, колкото настройването на VirtualBox и причината за това е многообразна. Повечето от стека са сложни, защото са проектирани да бъдат модулни и силно мащабируеми. Той не прави никакви предположения за това къде използвате VM. Средата може да бъде личен работен плот или център за данни. Работата с GUI може да помогне за намаляване на тази сложност до известна степен. Тези системи обаче са проектирани да работят с REST API за свързване със системи за фактуриране, системи за мониторинг и др. Почти никога не са докосвани от човек, след като са били разположени.

Въпреки това, автоматизацията е името на играта с libvirt и qemu-kvm. Прегледайте официалната документация и напишете собствения си страхотен скрипт, за да завъртите флота от виртуални машини и ни уведомете, ако намерите този урок за полезен.

Как да инсталирате и играете Doom на Linux
Въведение в Doom Серията Doom възниква през 90-те години след пускането на оригиналния Doom. Това беше незабавен хит и от този момент нататък серията ...
Vulkan за потребители на Linux
С всяко ново поколение графични карти виждаме, че разработчиците на игри преместват границите на графичната вярност и се приближават една крачка до фо...
OpenTTD срещу Simutrans
Създаването на собствена транспортна симулация може да бъде забавно, релаксиращо и изключително примамливо. Ето защо трябва да сте сигурни, че изпробв...