С това казано, нека опитаме да настроим наш собствен 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 kvmkvm_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, която ще използваме, ще извика мрежата по подразбиране, към която може да се свърже VM:
$ virsh net-autostart по подразбиране$ virsh net-start по подразбиране
Това ще стартира мрежата по подразбиране и ще се увери, че тя се стартира автоматично, когато хостът се рестартира. За да проверите подробностите за тази мрежа по подразбиране, използвайте командата:
$ virsh net-dumpxml по подразбиране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. Прегледайте официалната документация и напишете собствения си страхотен скрипт, за да завъртите флота от виртуални машини и ни уведомете, ако намерите този урок за полезен.