Xen | |
---|---|
Xen kører NetBSD og tre Linux- distributioner | |
Type | Virtualiseringsserver _ |
Udvikler | Xen-projektet, XenSource, Inc. |
Skrevet i | C [1] |
Operativ system | Linux , OpenSolaris , BSD |
Første udgave | 2003 |
nyeste version | |
Licens | GNU GPL 2 [3] |
Internet side | xenproject.org |
Mediefiler på Wikimedia Commons |
Xen (pron. / ˈzɛn / ) er en cross-platform hypervisor udviklet ved University of Cambridge Computer Lab og licenseret under GPL . Hovedfunktioner: understøttelse af paravirtualiseringstilstanden ud over hardwarevirtualisering, minimumskoden for selve hypervisoren på grund af fjernelse af det maksimale antal komponenter uden for hypervisoren.
Xen begyndte som et forskningsprojekt ved University of Cambridge ledet af Ian Pratt , som senere blev grundlæggeren af XenSource. Virksomheden støttede udviklingen af en open source-version (xen) og solgte samtidig kommercielle versioner af softwaren kaldet XenServer og XenEnterprise.
Den første offentlige udgivelse af Xen var i 2003. I oktober 2007 købte Citrix XenSource og rebrandede produkterne:
De blev senere omdøbt til XenServer (gratis), Essentials for XenServer Enterprise og Essentials for XenServer Platinum.
Den 22. oktober 2007 afsluttede Citrix sin overtagelse af XenSource [4] , og det gratis projekt flyttede til xen.org.
Den 21. oktober 2009 annoncerede Citrix, at kommercielle versioner af XenServer ville blive helt gratis [5] . Simon Crosby , Principal Engineer for Citrix's Virtualization Division, udtalte, "XenServer er 100 % gratis og vil snart være fuldt open source. Vi planlægger slet ikke at tjene [fra dette]” [6] ). Mens der er en gratis version af Citrix XenServer, er XenCenter (centraliseret administrationssoftware) ikke kildekodet, selvom den er tilgængelig til gratis download.
15. april 2013 Xen kom under Linux Foundations vinge [1] Arkiveret 19. april 2013 på Wayback Machine
Version | Udgivelses dato | Noter |
---|---|---|
1.0 | 2003.10.02 [7] [8] | |
2.0 | 2004.11.05 [9] | Live migration til paravirtuelle gæstemaskiner |
3.0 | 2005.12.05 [10] [11] |
Version 3.0.4 tilføjede også: |
3.1 | 18.05.2007 [15] | Live migration for HVM-gæster, XenAPI-understøttelse |
3.2 | 17.01.2008 [16] | "Forwarding" PCI, "sleep"-tilstand ACPI S3. |
3.3 | 24.08.2008 [17] | Forbedringer til PCI-videresendelse og strømstyring. |
3.4 | 18.05.2009 [18] | Indeholder den første version af "Xen Client Initiative" (XCI). |
4.0 | 07.04.2010 [19] | Tillader, at Linux-kerner bruges som dom0 ved hjælp af den nye PVOps-mekanisme. [tyve] |
4.1 | 25/03/2011 [21] | Understøttelse af mere end 255 processorer, forbedret stabilitet.( [22] ). |
4.2 | 17.09.2012 [23] | Understøttelse af 4095 fysiske (og op til 512 virtuelle) processorer, understøttelse af flere PCI-segmenter, forbedret sikkerhed og dokumentation.( [24] ). |
4.3 | 09.07.2013 [25] | Eksperimentel støtte til ARM. Regnskab for funktionerne i NUMA-arkitekturen i skemalæggeren. Åbn vSwitch- understøttelse . |
4.4 | 10/03/2014 [26] | ARM-understøttelse er nu stabil. Understøttelse af libxl af libvirt-biblioteket. Ny skalerbar grænseflade til begivenhedskanaler. Understøttelse af oprettelse af indlejrede virtuelle miljøer på Intel-hardware. Fjernet understøttelse af x86 32-bit og ia64 (itanium) hypervisorer. |
4.5 | 15.01.2015 [27] | Toolstack er nu omskrevet i C og kaldet xl eller libxl, der fuldstændig erstatter den gamle toolstack xend, som blev skrevet i python. |
4.6 | 13.10.2015 [28] | |
4.7 | 24.06.2016 [29] | Forbedringer: sikkerhed, live-migrering, ydeevne og arbejdsbyrde. Hardware support (ARM og Intel Xeon). [tredive] |
4.8.1 | 12.04.2017 [31] | |
4.9 | 28.07.2017 [32] | Xen Project 4.9 Release Notes |
4.10 | 12.12.2017 [33] | Xen Project 4.10 Release Notes |
4.11 | 10.07.2018 [34] | Xen Project 4.11 Release Notes |
4.12 | 02.04.2019 [35] | Xen Project 4.12 Release Notes |
Teknologien i virtuelle maskiner giver dig mulighed for at udvide udstyrets funktionalitet på følgende måder:
Kernekonceptet for en hypervisor er et domæne . En kørende kopi af en virtuel maskine kaldes et domæne. Hvis den virtuelle maskine genstartes, afsluttes dens domæne (på genstartstidspunktet), og et nyt domæne vises. Desuden kopieres indhold selv under migreringen fra et domæne til et andet domæne. I løbet af deres levetid befinder næsten alle virtuelle maskiner sig således på skift i forskellige domæner. Xen opererer kun med konceptet om et domæne, og konceptet om en "virtuel maskine" optræder på administrationsniveau (applikationsprogrammer, der styrer hypervisoren).
Domæner er af flere typer. De mest kendte er dom0 og domU . dom0 er det første lancerede Xen-domæne, normalt oprettes og indlæses det automatisk umiddelbart efter at hypervisoren er indlæst og initialiseret. Dette domæne har særlige rettigheder til at kontrollere hypervisoren, og som standard er al computerhardware tilgængelig fra dom0. Faktisk er dom0, hvor softwaren, der administrerer Xen, bor. dom0 er altid alene.
domU er et medlemsdomæne (en forkortelse for User domain), der indeholder domænet for kørende virtuelle maskiner. Har normalt ikke adgang til rigtig hardware og er "nyttelasten" af virtualiseringssystemet. I modsætning til dom0 kan domU være mange (normalt flere dusin).
stub-domæne - et domæne, der kører et meget specialiseret OS, der giver arbejde med enhver hardware eller driver back-end. Det er en udvikling af Xen-sikkerhedsmodellen.
domænebygger (domænekonstruktør) - et program, der opretter domU (indlæser den nødvendige kode i det og fortæller hypervisoren at køre). Ud over at konstruere domænet, beskæftiger han sig normalt med at forbinde og konfigurere de virtuelle enheder, der er tilgængelige for den virtuelle maskine. Hun er også ansvarlig for processen med at migrere en virtuel maskine fra vært til vært.
Paravirtualisering er tilpasningen af kernen af et eksekverbart OS til at arbejde sammen med Xen, normalt forkortet til PV. Giver dig mulighed for at opnå meget høj ydeevne på grund af manglen på emulering af "rigtig hardware", enkelheden af grænseflader og under hensyntagen til eksistensen af en hypervisor, når du udfører systemkald i kernekoden. Udførelse af privilegerede operationer er forbudt, i stedet for dem foretages hyperkald ( eng. hypercalls ) - anmodninger fra gæste-OS-kernen til hypervisoren med en anmodning om at udføre visse operationer. I de fleste tilfælde påvirker ændringer ved portering af et OS til Xen kun OS-kernen, selvom de kan involvere mindre ændringer i systembiblioteker (f.eks. libc). Processen med at tilpasse til Xen ligner meget portering til en ny platform, men den er meget enklere på grund af den nemme implementering af "gæste"-delen af driveren (drivere i Xen består af to dele - den ene udføres uden for virtuel maskine, den anden er inde i. Den del af driveren i gæstesystemet er ekstremt primitiv og tjener kun som en forespørgselsoversætter til den anden del (dette blev gjort med vilje for at lette porteringen af OS til Xen). PV-tilstand understøtter ikke "indlejrede" processortilstande, såsom real-86, virtuel-86, skift mellem 32-bit og 64-bit tilstand, understøttelse af hardwarevirtualiseringsemulering osv. I denne henseende er der PV-tilstand. intet indledende fragment af computerstarten (med efterligning af BIOS-kode, bootloader osv.), og gæstesystemkernen starter straks i den ønskede tilstand, ligesom almindelige programmer starter. Især i denne henseende kan Xen ikke selv køre i PV-tilstand (det vil sige, at det er umuligt at køre en "indlejret" hypervisor i PV-tilstand).
I hardwarevirtualiseringstilstand (HVM) "ved" gæsteoperativsystemet ikke til eksistensen af hypervisoren. Xen, ved hjælp af moduler fra QEMU , emulerer ægte hardware og giver dig mulighed for at starte operativsystemet. I slutningen af det, for normal ydeevne, bør PV-drivere lanceres, der implementerer en hurtig grænseflade med virtuelle enheder, svarende til hvordan det fungerer i PV-tilstand. Da de fleste af de privilegerede operationer emuleres, er det muligt at køre Xen i HVM-tilstand fra under Xen. I dette tilfælde kan den indlejrede hypervisor kun arbejde i PV-tilstand.
Xen-hypervisoren (til version 3.4) implementerer et minimalt sæt operationer til styring af hovedhukommelse, processortilstand, processor-realtidstimere og clock-tællere (TSC), interrupts og DMA-kontrol. Alle andre funktioner, såsom implementering af disk- og blokenheder, oprettelse og fjernelse af virtuelle maskiner, deres migrering mellem servere osv., implementeres i kontroldomænet. På grund af dette er størrelsen af hypervisoren meget lille (for version 3.4 er størrelsen af den binære kode for hele hypervisoren mindre end 600 KB), såvel som størrelsen af dens kildekode. Ifølge forfatternes hensigt øger dette stabiliteten af virtualiseringssystemet, da en fejl i komponenter uden for hypervisoren ikke fører til kompromittering/skade på selve hypervisoren og begrænser skaden til kun den fejlbehæftede komponent, uden at forstyrre resten.
Alle funktioner relateret til driften af netværket, blok (disk) enheder, emulering af videoadaptere og andre enheder flyttes ud af hypervisoren. De fleste af disse enheder består af to dele: drivere i domU og programmer i dom0. Driveren (oftest indbygget i OS-kernen eller indlæst som et modul) implementerer den minimale mængde arbejde, faktisk ved at oversætte anmodninger fra OS til programmet i dom0. Programmet i dom0 klarer det meste af arbejdet. I dette tilfælde kører programmet oftest som en separat proces for hver serviceret enhed. En fejl i et sådant program fører til fejl på kun én enhed (blok, netværk) og påvirker ikke driften af andre kopier af programmet (det vil sige, det påvirker ikke netværket / blokerer enheder på andre domæner, eller endda andre enheder af samme domæne).
Følgende terminologi bruges traditionelt: frontend er den del af modulet, der er placeret i domU, backend er den del, der er placeret i dom0. For nogle enhedstyper kan backend-delen være anderledes, mens den samme frontend-del bevares. For eksempel kan en blokenhedsdriver have en backend i form af en VHD-imager, en blokenhedsdriver, en iscsi-initiator og så videre.
Xen giver tre kommunikationsmekanismer til domæner: en med hypervisoren (hyperkald) og to mellem domæner. Oftest sker interaktion mellem dom0 og domU, selvom modellen tillader interaktion mellem to domU'er.
Interaktion på tværs af domæner kommer ned til to typer: begivenheder (begivenheder) og delt mem (delt hukommelsesadgang). Den tredje mulighed, hukommelsessideoverførsel, er et særligt tilfælde af adgang til delt hukommelse.
Hændelser tjener nogenlunde samme formål som afbrydelser i x86-arkitekturen eller signaler i Unix - hurtig synkron eller asynkron transmission af et signal om forekomsten af en begivenhed. Delt hukommelsesadgang giver mulighed for at overføre betydelige mængder information, og hændelser giver en overførselshastighed.
Begivenheder kan maskeres eller demaskeres. Umaskerede hændelser forårsager et tilbagekald (kalder den funktion, hvis adresse blev sendt tidligere) og giver dig mulighed for at behandle hændelsen umiddelbart efter dens forekomst. Maskerede hændelser sætter kun et flag om, at hændelsen har fundet sted, og handleren ser med jævne mellemrum for at se, om hændelsen (en eller flere) er fundet sted. Den anden metode giver dig mulighed for ikke at ringe tilbage for hver hændelse, og i tilfælde af hyppige hændelser reduceres behandlingstiden betydeligt. Tværtimod giver den første mulighed (med et tilbagekaldsopkald) dig mulighed for at øge hastigheden på behandlingen af en hændelse, der måske ikke forekommer særlig ofte, men som kræver et øjeblikkeligt svar.
Xen (via administrationsstakken) understøtter migrering af virtuelle gæstemaskiner over netværket. Migrering af paravirtuelle maskiner understøttes fra version Xen 2, og HVM - fra version 3. Migrering kan ske med gæstesystemet slået fra, eller lige i processen, den såkaldte "live" migration ( engelsk live migration ) uden tab af tilgængelighed.
Det er påkrævet, at begge fysiske Xen-servere ser det samme lager, hvor de virtuelle maskindata befinder sig. Dette er påkrævet, fordi ved migrering af en virtuel maskine kopieres dens filsystem ikke, da dette ville tage for meget tid, selv i tilfælde af et hurtigt netværk. Delt lagring kan være baseret på forskellige SAN- eller NAS -teknologier såsom Fibre Channel , iSCSI eller DRBD .
På grund af det faktum, at hypervisoren selv (ca. 500-600 KB) kun implementerer "kernen" af systemet, flyttes al anden funktionalitet til applikationslaget, der kører i dom0. Et sæt programmer, der implementerer funktionalitet uden for Xen, kaldes engelsk. toolstack (der er ingen veletableret oversættelse, nogle gange bruges udtrykket "management stack").
Der er to versioner af værktøjstakken til Xen: xend- baseret (inkluderet i de fleste Xen-distributioner) og xapi- baseret (inkluderet i Citrix XenServer og Xen Cloud Platform). Xend blev udviklet samtidig med Xen, skrevet i Python, og fra starten var det under en open source-licens. Xapi var ejet af Xensource (herefter Citrix), men blev frigivet under GPL i 2009. Xapi er skrevet i OCaml , i skrivende stund havde det et mindre sæt funktioner, men var mere stabilt.
I version 4.5 blev xend skrevet i python erstattet af xl/libxl skrevet i C.
Begge versioner af værktøjstakken inkluderer følgende hjælpeprogrammer:
Toolstack giver styring af virtuelle maskiner (oprettelse/sletning, start/stop, migrering, tilslutning af ressourcer osv.). Derudover giver værktøjssættet ressourcestyring til store systemer: det opretter og vedligeholder depoter til lagring af virtuelle maskine diskbilleder (SR - storage repository), understøtter serverpuljer til migrering af virtuelle maskiner og kan administrere komplekse lokale netværkskonfigurationer, herunder de med VLAN- understøttelse . Derudover understøttes XenApi-fjernbetjeningsgrænsefladen baseret på XML-RPC [36] .
Xen understøtter flere og flere platforme hver dag.
Som en type 1 hybrid hypervisor kører Xen direkte på hardwareplatformen, men kræver et værtsoperativsystem i dom0 for at køre. Xen understøtter processorer fra Pentium II , der er versioner til x86-64 , PowerPC , Itanium (op til version 4.4) og ARM-arkitekturer (stabil siden version 4.4). Indlæsning af Xen sker med en boot loader som GRUB eller lignende. Umiddelbart efter indlæsning starter Xen styresystemet i dom0.
De fleste installationer bruger Linux som styresystem for dom0-kontroldomænet. I lang tid var Xen-understøttelse ikke inkluderet i den officielle Linux-kerne og eksisterede som et sæt patches til v2.6.18-kernen. Siden v2.6.37 er pv_ops- mekanismen dukket op i Linux-kernen til interaktion med hypervisorer [37] . Denne mekanisme gør det muligt for kernen at arbejde både i paravirtuel tilstand og direkte på hardwaren. Fra Xen 4.0 understøtter den pv_ops-mekanismen for Linux-kernen i dom0 [38] . Linux-kerner over 3.0 understøtter også fuldt ud Xen for både dom0 og domU [39] .
Følgende operativsystemer kan også fungere som dom0:
De fleste operativsystemer kan køres i HVM-hardwarevirtualiseringstilstand, dog bruges paravirtualiseringsteknologi til at opnå høj eksekveringshastighed. Følgende gæsteoperativsystemer kan køres i paravirtuel tilstand i domU:
Havne til andre operativsystemer såsom Plan 9 er også under arbejde. Det forventes, at officielle porte til Xen vil blive frigivet til alle disse operativsystemer (som det skete for NetBSD).
Operativsystemer i Microsoft Windows-familien kan køre i fuld HVM-virtualiseringstilstand begyndende med Xen 3 på processorer, der understøtter hardwarevirtualisering. I dette tilfælde emuleres virtuelle enheder (disk, netværk) ved hjælp af en speciel version af QEMU . For at fremskynde Windows kan der bruges såkaldte paravirtuelle drivere . I modsætning til Linux i paravirtuel tilstand er Windows-kernen uændret og kører i hardwarevirtualiseringstilstand, men enhedsdrivere får direkte adgang til Xen (via HyperCalls), og omgår QEMU-emuleringslaget. Der er en udvikling af GPL'ed Paravirtualization-drivere til Windows, og Citrix XenServer og Oracle VM-produkter indeholder signerede paravirtualiseringsdrivere til Windows.
Xen er meget udbredt som en virtualiseringskomponent i cloud computing og dedikerede private servertjenester . Hostingfirmaer som Amazon Elastic Compute Cloud , Liquid Web , Fujitsu Global Cloud Platform , [46] Linode , SparkNode [47] og Rackspace Cloud bruger Xen som en virtuel maskine-hypervisor.
I øjeblikket[ afklar ] Xen-fællesskabet udvikler Xen Cloud Platform (XCP), et servervirtualiseringssystem. XCP stammer fra den gratis version af Citrix XenServer og udgives udelukkende under GNU GPL .
Der er flere kommercielle serverkonsolideringsprodukter baseret på Xen. Det drejer sig især om produkter som:
Emulerings- og virtualiseringssoftware ( sammenligning ) _ _ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Anvendelseslag |
| ||||||||||||||
OS -niveau (containere) |
| ||||||||||||||
Hardware niveau |
| ||||||||||||||
Netværksvirtualisering |
|