Generelt serieindeks: Computernetværk til SMV'er: Introduktion
Titlen på dette indlæg refererer til en række konsolkommandoer, der begynder med «dygtighed « Og det kan være nyttigt under visse omstændigheder. Vi giver kun en kort beskrivelse af hver enkelt og nogle eksempler på brug. Vi gentager det: Vi kan ikke erstatte manualerne, der følger med hver kommando. Vi foreslår kraftigt tjek disse sider ved at køre mand dygd-comando.
- Hovedformålet med denne artikel er at fortsætte med at vise det brede univers, at virtualisering i Linux i øjeblikket bruger Qemu-KVM Hypervisor. Selvom vi i titlen skriver navnet distributionen «Debian«, De generelle principper gælder for enhver anden distribution ved hjælp af de specifikke kommandoer for hver enkelt af dem. Især dem, der er relateret til blandt andet søgning, beskrivelse og installation af pakker.
Inden du fortsætter med læsningen, Vi anbefaler besøg den forrige artikel: Qemu-KVM + Virt-Manager på Debian - Computernetværk til SMV'er.
Hvornår skal man bruge kommandoerne?
Ved mange lejligheder styrer vi eksternt en virtualiseringssupport-server med Qemu-KVM installeret, og af en eller anden grund har vi ikke den grafiske grænseflade til Virtual Machine Manager - Virt Manager:
- Typisk tilfælde, når vi får adgang til fjernserveren fra en Windows-station via PuTTYeller andre af de mange alternativer der findes for at oprette forbindelse via SSH med en Debian GNU / Linux-server, og sidstnævnte har ingen support installeret til «X«, Eller grafisk support.
- Vi ønsker simpelthen at administrere de virtuelle maskiner på den lokale eller eksterne server ved hjælp af konsolkommandoer.
Installeret med libvirt-klienter
I tidligere artikel vi installerer pakken libvirt-beholder, og som en del af processen blev den installeret libvirt-klienter. Hvis vi kører i en konsol:
buzz @ sysadmin: ~ $ sudo dpkg -L libvirt-klienter | grep / bin / Usr / bin / usr / bin / virsh / usr / bin / virt-host-validate / usr / bin / virt-login-shell / usr / bin / virt-xml-validere / usr / bin / virt-pki-validere
- Virsh: virsh-programmet er den vigtigste brugergrænseflade til komplet styring af gæstedomæner - Gæster. Det bruges til at liste, oprette, pause og lukke domæner. Denne kommando skal påberåbes med tilladelser fra rod. Det har to måder at køre på: i kommandotilstand og i interaktiv tilstand. Vi vil dedikere en næste artikel til virsh.
- virt-vært-validere: værktøj, der gør det muligt at validere værtskonfigurationen - Host, så det er i stand til at understøtte alle Hypervisor-drivere - hypervisor. For at opnå korrekte resultater skal kommandoen køres med tilladelser fra rod.
- virt-login-shell: kommando til at udføre a Shell tilpasset til en normal bruger i en container LXC, hvis navn er det samme som den bruger, der påberåber det. Hvis beholderen ikke kører, kommandoen virt-login-shell vil prøve at starte det. Denne kommando kan ikke påberåbes med brugertilladelser rod. Den meget eksplicitte konfigurationsfil for dette program er /etc/libvirt/virt-login-shell.conf.
- virt-xml-validere: valider XML-filer fra libvirt sammenligne dem med en skematisk - skema gyldig. Vi får en liste over gyldige skemanavne, hvis vi udfører mand virt-xml-validere.
- virt-pki-validere- Bruges til at validere, om PKI-filer af libvirt De er korrekt konfigureret, både på den sikre serverside og på klienten, der bruger TLS-krypteringsprotokollen til at få fjernadgang til serveren. Dens udførelse er nødvendig, hvis vi har aktiveret fjernadministration via TLS og SSL. Kapitel 22.2 i dokumentet Vejledning til implementering og administration af virtualisering, er dedikeret til denne løsning. Vi foreslår at vores forretningsnetværk bruger fjernadministration via SSH, den enkleste og sikreste metode til et Business LAN, som vi vil afsætte en senere artikel til.
Installeret med virtisnt
I den forrige artikel installerede vi også pakken virt-manager. Som en del af denne proces blev pakken installeret koge. Hvis vi vil vide, hvilke kommandoer sidstnævnte indeholder, udfører vi:
byzz @ sysadmin: ~ $ sudo dpkg -L virtinst | grep / bin / Usr / bin / usr / bin / virt-convert / usr / bin / virt-image / usr / bin / virt-xml / usr / bin / virt-install / usr / bin / virt-klon
- virt-konvert- kommando, der konverterer definitioner af virtuel maskine til formater VMX y Ovf til det oprindelige libvirt-format XML. VMX-formatet bruges typisk af VMware, mens OVF «Åbn virtualiseringsformat»Kan bruges af enhver hypervisor støtte det.
- virt-billede- Opretter en virtuel maskine ud fra en billedbeskrivelsesfil i XML-format. Dette særlige værktøj fjernes fra fremtidige versioner af koge, så Vi foreslår ikke dets anvendelse.
- virt-xml: Tillader redigering af native XML-filer, der bruges af libvirt, ved hjælp af kommandolinjemuligheder.
- virt-install: kommandolinjeværktøj, der gør det muligt at oprette nye virtuelle maskiner i Hypervisors såsom KVM, Xen eller Linux Containere, der bruger hypervisor management biblioteket "Libvirt". Dette værktøj understøtter grafisk installation, hvis vi f.eks. Bruger VNC Virtual Network Computing, Eller KRYDDERI. Det understøtter også fuldt ud konsol- eller teksttilstand. Gennem brugen kan vi oprette en virtuel maskine med en eller flere harddiske, et eller flere netværkskort, lydenheder, fysiske USB- eller PCI-enheder osv. Installationsmediet kan være lokalt, fjerntliggende, offentliggjort ved hjælp af den oprindelige UNIX NFS Network File System-protokol, HTTP, FTP. etc.
- virt-klon- kommandolinjeværktøj til at klone eksisterende virtuelle maskiner ved hjælp af hypervisor management biblioteket "Libvirt". Kopier grundlæggende billedet af en virtuel maskine, og opret en ny gæst - Gæst med identisk hardwarekonfiguration. Hardwareartikler, der skal være unikke, f.eks. Hardwareadressen til et netværkskort, opdateres for at undgå kollisioner eller støj mellem det gamle og det nye Gæst.
virt-seer
Dette værktøj installeres også, når du gør virt-manager. virt-seer det er en separat pakke.
- virt-seer: giver os mulighed for at vise en grafisk konsol via VNC eller SPICE af en bestemt virtuel maskine, uanset om den er placeret lokalt eller eksternt. Vi kan henvise til Gæst som vi vil vise gennem dets navn, ID eller UUID. Hvis den virtuelle maskine ikke kører, vil virt-viewer vente på, at den starter.
Andre "virt-" kommandoer, der kan installeres fra separate pakker
- god-godbidder- En samling værktøjer relateret til virtualisering. Inkluderer et plugin til «Munin«Og et script til at konvertere virtuelle maskiner oprettet med VMware Workstation eller VMware Server til det format, der bruges i Qemu-KVM.
- virt-top: Viser statistikker over virtualiserede domæner. En slags top o htop til virtuelle maskiner
Installeret med qemu-værktøjer
Selvom navnet på disse værktøjer ikke begynder med dygtighed-Vi bliver helt sikkert nødt til at bruge nogle af dem på et bestemt tidspunkt, især den der er relateret til billederne på de virtuelle maskindiske.
Vi kan påberåbe dem efter installation af Qemu-Kvm virtualiseringsplatform, som angivet i den foregående artikel. Hvis vi vil vide, hvilke kommandoer pakken har til rådighed qemu-værktøjer, vi skal bare løbe:
buzz @ sysadmin: ~ $ sudo dpkg -L qemu-utils | grep / bin / Usr / bin / usr / bin / qemu-img / usr / bin / qemu-nbd / usr / bin / qemu-io
Hvis i stedet for at diskriminere ved / bin vi ville have gjort det for / sbin, ville vi opnå et andet resultat, som vi overlader til din overvejelse.
- qemu-img: giver os mulighed for at oprette og konvertere og / eller ændre billeder på diske, der ikke fungerer, eller som er Ikke på linje.
Vi foreslår kør kommandoen mand qemu-img. Vi vil kun understrege, at vi ALDRIG skal bruge denne kommando til ændre ethvert billede, der bruges af enhver virtuel maskine eller anden proces, fordi det kan ødelægge billedet. Vi bør heller ikke konsultere dataene for et billede, der er i færd med at blive ændret, da vi kan finde uoverensstemmelser i dets tilstand.
Eksempler på brug af nogle af kommandoerne
virt-vært-validere
buzz @ sysadmin: ~ $ virt-host-validate QEMU: Kontrol af hardwarevirtualisering: PASS QEMU: Kontrol af enhed / dev / kvm: PASS QEMU: Kontrol af enhed / dev / vhost-net: WARN (Indlæs 'vhost_net' -modulet for at forbedre ydelsen af virtio-netværk) QEMU: Kontrol af enhed / dev / net / tun: PASS LXC: Kontrol af Linux> = 2.6.26: PASS buzz @ sysadmin: ~ $ sudo virt-host-validere [sudo] adgangskode til buzz: QEMU: Kontrol af hardwarevirtualisering: PASS QEMU: Kontrol af enhed / dev / kvm: PASS QEMU: Kontrol af enhed / dev / vhost-net: PASS QEMU: Kontrol af enhed / dev / net / tun : PASS LXC: Kontrol af Linux> = 2.6.26: PASS
virt-xml-validere
buzz @ sysadmin: ~ $ sudo virt-xml-validate /etc/libvirt/qemu/dns.xml /etc/libvirt/qemu/dns.xml validerer buzz @ sysadmin: ~ $ sudo virt-xml-validate /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/default.xml validerer
qemu-img
buzz @ sysadmin: ~ $ qemu-img check /tera/vmware/omicron/omicron.vmdk
Der blev ikke fundet nogen fejl på billedet.
buzz @ sysadmin: ~ $ qemu-img info /tera/vmware/omicron/omicron.vmdk
billede: /tera/vmware/omicron/omicron.vmdk
filformat: vmdk virtuel størrelse: 20G (21474836480 bytes) diskstørrelse: 3.6G cluster_size: 65536 Format specifik information: cid: 1473577509 overordnet cid: 4294967295 opret type: monolitiskSparse udvidelser: [0]: virtuel størrelse: 21474836480 filnavn: / tera / vmware / omicron / omicron.vmdk klyngestørrelse: 65536 format:
buzz @ sysadmin: ~ $ qemu-img info /tera/vms/omicron.raw
billede: /tera/vms/omicron.raw
filformat: rå virtuel størrelse: 20G (21474836480 bytes) diskstørrelse: 3.4G
buzz @ sysadmin: ~ $ qemu-img info /tera/vms/miweb.qcow2
billede: /tera/vms/miweb.qcow2
filformat: qcow2 virtuel størrelse: 10G (10737418240 bytes) diskstørrelse: 4.5G cluster_size: 65536 Formatspecifik information: compat: 1.1 dozy refcounts: false
buzz @ sysadmin: ~ $ sudo qemu-img konvertere -p /tera/vms/omicron.raw -O qcow2 /tera/vms/omicron.qcow2
(27.56 / 100%)
buzz @ sysadmin: ~ $ qemu-img info /tera/vms/omicron.qcow2
billede: /tera/vms/omicron.qcow2
filformat: qcow2 virtuel størrelse: 20G (21474836480 bytes) diskstørrelse: 3.5G cluster_size: 65536 Formatspecifik information: compat: 1.1 dozy refcounts: false
buzz @ sysadmin: ~ $ sudo qemu-img oprette -f qcow2 /tera/vms/hyp2.qcow2 20G Formatering '/tera/vms/hyp2.qcow2', fmt = qcow2 størrelse = 21474836480 kryptering = off cluster_size = 65536 lazy_refcounts = off buzz @ sysadmin: ~ $ sudo qemu-img info /tera/vms/hyp2.qcow2 billede: /tera/vms/hyp2.qcow2 filformat: qcow2 virtuel størrelse: 20G (21474836480 byte) diskstørrelse: 196K cluster_size: 65536 Formatspecifik information: kompat: 1.1 doven refcounts: falsk
virt-xml
Først opretter vi et nyt album:
buzz @ sysadmin: ~ $ sudo qemu-img oprette -f qcow2 /tera/vms/dns2.qcow2 10G
Derefter slutter vi os til det eksisterende "dns" -domæne:
buzz @ sysadmin: ~ $ virt-xml --connect qemu: /// system dns --add-device --disk /tera/vms/dns2.qcow2 --confirm --- Original XML +++ Ændret XML @@ -128,5 +128,10 @@ + + + + + Definer 'dns' med den ændrede XML? (y / n): y Domæne 'dns' er defineret med succes.
I slutningen af artiklen giver vi den komplette struktur for den nymodificerede /etc/libvirt/qemu/dns.xml fil.
virt-konvert
Lad os konvertere en virtuel maskine oprettet ved hjælp af VMware Workstation mod formatet libvirt, men ikke før du angiver, at formatet på den konverterede harddisk er qcow2, og også at det nye virtuelle maskinebillede oprettes i hovedlageret / tera / vms. Vi ønsker også, at kommandooutputtet skal være så eksplicit som muligt, så vi bruger muligheden -d.
buzz @ sysadmin: ~ $ sudo virt-convert -d / tera / vmware / miweb / --disk-format qcow2 --destination / tera / vms
Bagefter forbinder virt-vieweren automatisk til den nyligt konverterede gæst, og vi kan se hele opstartsprocessen.
virt-klon
Lad os klone den virtuelle maskine «dns":
buzz @ sysadmin: ~ $ virt-clone --connect qemu: /// system -o dns --auto-clone Tildeling af 'dns-clone.qcow2' | 10 GB 00:20 Tildeling af 'dns2-clone.qcow2' | 10 GB 00:01 Klonen 'dns-klon' er oprettet med succes.
Vi kontrollerer ved hjælp af kommandoen Virsh, som er en forhåndsvisning af den næste artikel:
buzz @ sysadmin: ~ $ sudo virsh liste Id Navn Stat ----------------------------------------------- ----- buzz @ sysadmin: ~ $ sudo virsh liste - alt Id-navn Tilstand ------------------------------------------------------- ----- - dns lukket - dns-klon lukket - miweb lukket buzz @ sysadmin: ~ $ sudo virsh start dns-klon Domain dns-clone startet
buzz @ sysadmin: ~ $ virt-viewer - forbind qemu: /// system dns-clone
virt-install
Vi vil oprette en virtuel maskine med navnet «hood.discount»At være vært for webstedet for Forretningsintranet. Det offentliggøres ikke på Internettet. At den har ca. 1024 megabyte RAM, en harddisk på 80 gigabyte dynamisk vækst, som er baseret på Debian Jessie, og er forbundet til netværket «standard".
For at gøre vores liv lettere opretter vi først diskbilledet ved hjælp af qemu-img:
buzz @ sysadmin: ~ $ sudo qemu-img oprette -f qcow2 /tera/vms/wordpress.qcow2 80G Formatering '/tera/vms/wordpress.qcow2', fmt = qcow2 størrelse = 85899345920 kryptering = off cluster_size = 65536 lazy_refcounts = off
Dernæst opretter vi maskinen og begynder installationsprocessen:
buzz @ sysadmin: ~ $ sudo virt-install --connect qemu: /// system --virt-type = kvm \ - navn wordpress - ram 1024 --vcpus = 1 \ --disk /tera/vms/wordpress.qcow2 \ --cdrom /home/buzz/isos/Linux/debian-8/debian-8.0.0-amd64-CD-1.iso \ --os-type linux --netværk netværk = standard \ --beskrivelse wordpress.desdelinux.ventilator
virt-top
buzz @ sysadmin: ~ $ virt-top - forbind qemu: /// system virt-top 15:39:21 - x86_64 2 / 2CPU 1600MHz 3863MB 2 domæner, 2 aktive, 2 kører, 0 sovende, 0 pause, 0 inaktive D: 0 O: 0 X: 0 CPU: 0.7% Mem: 768 MB ( 768 MB af gæster) ID S RDRQ WRRQ RXBY TXBY% CPU% MEM TIDSNAVN 22 R 0 0 104 0 0.3 6.0 0: 11.49 dns 21 R 0 0 104 0 0.3 13.0 0: 13.42 miweb
Strukturen af filen dns.xml
Først kan det virke lidt svært at forstå strukturen i definitionsfilen på en virtuel maskine eller Gæst, som forstået af Qemu-KVM hypervisor og relaterede biblioteker som libvirt. Filen er i standardformat.xml. Den er struktureret ved definitionsblokke, der er indeholdt i hovedblokken «domæne".
....
Inden for den blok finder vi definitioner af hele den virtuelle maskine:
- holdets navn
- uuid af holdet
- mængde RAM
- antal processorer
- type operativsystem og dets arkitektur. enhed af støvle.
- Funktioner, som den understøtter såsom ACPI "Automatic Control Power Interface", APM "Automatic Power Management" og PAE.
- CPU-model (er) og deres egenskaber
- urindstilling: om det er UTC "United Time Cordinate" eller ej.
- svar på begivenheder som lukning, genstart eller systemnedbrud
- hvis PM «Power Management» har aktiveret begivenhederne «suspenderer skrivning til hukommelse» og «suspenderer skrivning til harddisk»
- emulator type forskellige enheder eller KVM-enheder
- for alle harddiske: driver, disktype, billedfilsti, målenhed, busstype, slot «slot»Pci, som den er tilsluttet osv., Afhængigt af den virtuelle disk: IDE, SATA, SCSI, USB eller Virtio.
- optiske enheder som CDR
- antal og type USB-stik
- PCI-slot til IDE-disk
- serielt stik til kommunikation
- parallelstik til printere
- netværkskort med en unik MAC-adresse, type netværkskort, til hvilken PCI-slot det er tilsluttet, og til hvilket virtuelt netværk det skal oprette forbindelse
- pty seriekonsoller
- inputenheder såsom pad «tablet", Musetastatur"mus", etc.
- grafikkort og dets RAM, type, model, slot, bus osv.
- og en anden lang osv
Kort sagt, La Mar Océana af definitioner og enheder, der er nødvendige og understøttet af Qemu-KVM hypervisor og relaterede biblioteker, for at have en fuldt funktionel virtuel maskine, som om det var en rigtig maskine.
buzz @ sysadmin: ~ $ sudo cat /etc/libvirt/qemu/dns.xml <!--
WARNING: THIS IS AN AUTO-GENERATED FILE. ÆNDRINGER PÅ DET ER MULIGT AT VÆRE OVERKRIFTET OG MISTET. Ændringer i denne xml-konfiguration skal foretages ved hjælp af: virsh edit dns eller anden applikation ved hjælp af libvirt API.
-->
<domain type='kvm'>
<name>dns</name>
<uuid>9e69ebc6-213e-42f7-99bf-83b333e93958</uuid>
<memory unit='KiB'>262144</memory>
<currentMemory unit='KiB'>262144</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='custom' match='exact'>
<model fallback='allow'>Nehalem</model>
<vendor>Intel</vendor>
<feature policy='require' name='tsc-deadline'/>
<feature policy='require' name='dtes64'/>
<feature policy='require' name='xsave'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='erms'/>
<feature policy='require' name='xtpr'/>
<feature policy='require' name='smep'/>
<feature policy='require' name='pcid'/>
<feature policy='require' name='est'/>
<feature policy='require' name='monitor'/>
<feature policy='require' name='tm'/>
<feature policy='require' name='pclmuldq'/>
<feature policy='require' name='acpi'/>
<feature policy='require' name='vme'/>
<feature policy='require' name='osxsave'/>
<feature policy='require' name='tm2'/>
<feature policy='require' name='ht'/>
<feature policy='require' name='pdcm'/>
<feature policy='require' name='fsgsbase'/>
<feature policy='require' name='ds'/>
<feature policy='require' name='invtsc'/>
<feature policy='require' name='rdtscp'/>
<feature policy='require' name='ss'/>
<feature policy='require' name='pbe'/>
<feature policy='require' name='ds_cpl'/>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/tera/vms/dns.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/tera/vms/dns2.qcow2'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</controller>
<interface type='network'>
<mac address='52:54:00:08:07:5e'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice' autoport='yes'/>
<sound model='ich6'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='qxl' ram='65536' vram='65536' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</memballoon>
</devices>
</domain>
Næste leverancer
- Virsh kommando
- Fjernstyring af hypervisorer og deres virtuelle maskiner ved hjælp af SSH
Husk, at dette vil være en serie artikler af Computernetværk til SMV'er. Vi venter på dig!