Ennek ellenére próbáljuk meg beállítani saját KVM hipervizorunkat egy Debian 9 szerveren .
A VT-x vagy AMD-V kiterjesztések engedélyezése
Ideális esetben tiszta Linux telepítésre lesz szüksége egy olyan gépen (nem virtuális gépen), amely meglehetősen modern CPU-val rendelkezik. A legtöbb modern Intel CPU támogatja a VT-x kiterjesztéseket, és hasonlóan az AMD rendelkezik AMD-V kiterjesztéseivel. Ezek a bővítmények a CPU szilíciumába épített „fejlesztések”, amelyek gyorsabb és biztonságosabb virtualizációt tesznek lehetővé. Engedélyeznie kell ezeket a kiterjesztéseket az alaplap BIOS / UEFI menüjéből. További információkért olvassa el az alaplap kézikönyvét.
Ha nem akarja elrontani tökéletesen működő Linux munkaállomását, használhatja a virtuális gépet a felhőben a kísérletek futtatásához. A DigitalOcean például olyan virtuális gépeket kínál, amelyek beágyazott virtualizációt engedélyeztek. Ez lehetővé teszi a virtuális gépek futtatását a felhőben tárolt virtuális gépen belül (ezt beágyazott virtualizációnak hívják). Nyilvánvaló, hogy ez egy nagyon nem hatékony módszer a hipervizor gyakorlatias futtatására, de kísérletként nagyon jól fog működni. Ügyeljen arra, hogy legalább 4 GB memóriát és több mint 2 CPU-t szerezzen be.
Miután engedélyezte az említett kiterjesztéseket, az lscpu futtatásával és a Virtualizáció bejegyzés megkeresésével ellenőrizheti:
$ lscpu… .
Virtualizáció: VT-x
… .
Most, hogy a bővítmények lehetővé tették, hogy tovább haladjunk a veremben.
A KVM és a QEMU telepítése
A KVM (vagy kernel alapú virtuális gép) néhány Linux kernelmodulból áll, amelyek kihasználják a korábban engedélyezett CPU kiterjesztéseket. A QEMU viszont egy csomó userland programból áll, amelyek emulációs képességeket biztosítanak számunkra. Önálló szoftverként a QEMU használható az egyik architektúrából származó programok futtatására, például az ARM, a másikra, például az x86_64, és fordítva. Bármelyik futtatására használható egyetlen bináris fájltól a teljes operációs rendszerig.
Természetesen csak az x86_64 operációs rendszerek virtualizálására fogjuk használni az x86_64 platformon. Ehhez csak egyetlen csomagra van szükségünk:
$ sudo apt install qemu-kvmA futtatással ellenőrizheti, hogy a csomag betöltötte-e az összes szükséges modult:
$ lsmod | grep kvmkvm_intel 200704 0
kvm 598016 1 kvm_intel
irqbypass 16384 1 kvm
Elméletileg ennyi kell. De hamarosan rájössz, hogy ez praktikus. A virtuális gépek rendkívül összetettek, és szoftverkövetőre van szükségünk a különféle igények, például a hálózatépítés, a fájlrendszer-kezelés stb. Kezeléséhez, meglehetősen automatizált (és skálázható módon). Ehhez szükségünk van a Libvirt virtualizációs könyvtárra / démonra.
A Libvirt telepítése
A Libvirt a virtualizációs verem lényegi része. A libvirtd démon virtualizációval kapcsolatos szolgáltatásokat futtat a háttérben. Szolgáltatások, amelyek olyan kéréseket hallgatnak meg, mint a „virtuális gép létrehozása”, a „virtuális gép megsemmisítése”, a „hálózat létrehozása” stb., És azokat az alapvető Linux segédprogramokkal (például qemu bináris fájlokkal, iptables stb.) Hajtják végre.
A Libvirt nagyon általános, és KVM vendégek, LXC tárolók és Xen virtualizációs verem kezelésére használható. Egyelőre csak a Libvirtre koncentrálunk a KVM vendégei számára. A Libvirtd olyan API-t mutat be, amelyet GUI alkalmazások, például virt-manager vagy oVirt, vagy parancssori eszközök, például virt-install, virsh stb. Írhatunk akár saját egyedi klienseket is, amelyek ugyanazt a szabványos API-t használják. A dolgok szabványosítása érdekében a parancssori eszközöket fogjuk használni, mint például a virsh és a virt-install.
Telepítsük ezeket az eszközöket:
$ apt install libvirt-clients libvirt-daemon-system virtinstSzükségünk lesz egy másik libguestfs-tools csomagra is, amely segít a vendég virtuális gép merevlemezeinek és fájlrendszereinek szerkesztésében.
Nagy! Most már telepítettük a teljes verem és tudjuk, hogyan van felépítve az architektúra. A libvirt (és a kapcsolódó eszközök) használatához vegye fel a felhasználót a libvirt-qemu és a libvirt csoportokba.
$ sudo usermod -aG libvirt$ sudo usermod -aG libvirt-qemu
Vagy futtassa a parancsokat root felhasználóként.
Virsh és az alapértelmezett hálózat indítása
A virsh parancssori segédprogram sokat fog használni a virtuális gépek kezelésénél. Egyszerűen beírhatja a virsh parancsot, és beléphet a virsh parancssori felületébe, vagy beírhatja a virsh parancsot
Az első virsh parancs, amelyet használunk, meghívja az alapértelmezett hálózatot, amelyhez a virtuális gép csatlakozni tud:
A $ virsh net-autostart alapértelmezett$ virsh net-start alapértelmezett
Ez elindítja az alapértelmezett hálózatot, és gondoskodik arról, hogy automatikusan elinduljon, amikor a gazdagép újraindul. Az alapértelmezett hálózat részleteinek ellenőrzéséhez használja a következő parancsot:
$ virsh net-dumpxml alapértelmezettAz xml fájl megmutatja a lehetséges IP-címek tartományát és azt, hogy miként fognak kommunikálni a külvilággal. Alapvetően a forgalom egy NAT-on keresztül érkezik hozzájuk, és nem lesznek a gazdagép külső hálózatának részei. A Bridge Networking használatával minden virtuális gép kiszolgáltatható a gazdagép LAN-jának.
Virtuális gép indításához
A virtuális gép elindításához szükségünk van egy telepítési adathordozóra (például bármely operációs rendszer telepítési ISO-jára), és hogy hány CPU-t és mennyi memóriát kell lefoglalni a virtuális gépnek, és ha szüksége van VNC-re. Ebben a lépésben igazán értékelheti a GUI telepítőjét, mint például a virt-manager, azonban ezt egy meglehetősen összetett virt-install paranccsal fogjuk megtenni.
Szeretném az összes indító adathordozómat a / var / lib / libvirt / boot és az összes virtuális gépet, valamint virtuális merevlemezüket a / var / lib / libvirt / images (az alapértelmezett hely) címen tartani, ez leegyszerűsíti a szervezetet.
$ cd / var / lib / libvirt / boot$ wget http: // kiadások.ubuntu.com / 18.04.2 / ubuntu-18.04.2-desktop-amd64.iso
A fenti parancs lekéri az Ubuntu asztali ISO-t, ugyanolyan egyszerűen megszerezheti a CentOS-t vagy bármely más disztribúciót, amelyre vágyik.
Új virtuális gép létrehozása és futtatása:
$ virt-install --virt-type kvm \--nevezze el myVM \
--memória 2048 --vcpus = 2 \
--cdrom / var / lib / libvirt / boot / ubuntu-18.04.2-desktop-amd64.iso \
--lemez mérete = 40 \
--grafikus vnc, figyelj = 0.0.0.0, port = 5900 \
--noautoconsole
A fenti parancs valóban bonyolult. Javaslom, hogy ezeket a parancsokat mentse szöveges fájlokba, és futtatható parancsfájlként futtassa azokat, amikor új virtuális gépet hoz létre. A legtöbb paraméter, például a virt-típus és a virt-név, eléggé magától értetődő. Csak unalmasak leírni.
A VNC megjelenítésének utolsó opciója elindítja a VNC-kiszolgálót, és lehetővé teszi, hogy konzolosan férjen hozzá a virtuális gépéhez távolról, csatlakozva az állomás 5900-as portjához. Nyisson meg egy VNC klienst az asztalon, és lépjen a KVM gazdagép IP-jéhez az 5900-as porton. Győződjön meg arról, hogy a gazdagép IP-címét érte el, és nem a virtuális gép IP-címét. A virtuális gép csatlakozik a virtuális gép videó kimenetéhez, és folytathatja a telepítést.
Hol tovább?
Innentől kezdve megpróbálhatja szüneteltetni, leállítani és törölni a virtuális gépeket. Az alapul szolgáló infrastruktúrát módosíthatja tárolók hozzáadásával és a hídhálózatok konfigurálásával is. Az egyes virtuális gépek, hálózati interfészek és tárolókészletek összes konfigurációs fájlja az / etc / libvirt / és / etc / libvirt / qemu könyvtárban van tárolva.
Néha fizikailag is törölnie kell a / lib / libvirt / images fájlba mentett merevlemez-fájlokat még a virtuális gép eltávolítása után is. A dolgok további automatizálásához próbáljon meg olyan qcow2 képeket importálni, amelyek a legtöbb linux disztribúcióhoz hasonlóak, mint az Ubuntu és a CentOS. Ezekben az operációs rendszer előre van telepítve.
Következtetés
Ennek beállítása egyáltalán nem olyan egyszerű, mint a VirtualBox beállítása, és ennek sokféle oka van. A verem nagy része bonyolult, mert modulárisnak és nagymértékben méretezhetőnek tervezték. Nem tesz feltételezéseket arról, hogy hol futtatja a virtuális gépet. A környezet lehet személyes asztali számítógép vagy adatközpont. A grafikus felhasználói felülettel való együttműködés bizonyos mértékben csökkentheti ezt a bonyolultságot. Ezeket a rendszereket azonban úgy tervezték, hogy egy REST API-val működjenek együtt, hogy csatlakozzanak a szervezet számlázási rendszereihez, felügyeleti rendszereihez stb. Bevetésük után szinte soha nem érinti őket ember.
Ennek ellenére az automatizálás a libvirt és a qemu-kvm játék neve. Olvassa el a hivatalos dokumentációt, és írja meg a saját szkriptjét, hogy felpörgesse a virtuális gépek flottáját, és tudassa velünk, ha hasznosnak találta ezt az oktatóanyagot.