EngelsFransSpaans

Ad


OnWorks-favicon

guestfs-faq - Online in de cloud

Voer guestfs-faq uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdracht guestfs-faq die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


guestfs-faq - libguestfs Veelgestelde vragen (FAQ)

ABOUT LIBGUESTFS


Wat is libguests?
libguestfs is een manier om schijfkopieën te maken, te openen en te wijzigen. Je kunt in de schijf kijken
afbeeldingen, wijzig de bestanden die ze bevatten, maak ze helemaal opnieuw, wijzig het formaat ervan, en nog veel meer
meer. Het is vooral handig vanuit scripts en programma's en vanaf de opdrachtregel.

libguestfs is een C-bibliotheek (vandaar "lib-"), en een set tools die op deze bibliotheek zijn gebouwd, en
bindingen voor veel gangbare programmeertalen.

Voor meer informatie over wat libguestfs kan doen, lees de introductie op de startpagina
(http://libguestfs.org).

Wat zijn de virt hulpmiddelen?
Virtuele tools (website: http://virt-tools.org) zijn een hele reeks virtualisatiebeheer
tools gericht op systeembeheerders. Sommigen van hen komen van libguestfs, anderen van
libvirt en vele anderen van andere open source-projecten. Virt tools is dus een superset van
libguestfs. Libguestfs wordt echter geleverd met veel belangrijke tools. Zien
http://libguestfs.org voor een volledige lijst.

Doet libguestfs genoodzaakt bent { libvirt / KVM / Rood Hoed / Fedora }?
Nee!

libvirt is geen vereiste voor libguestfs.

libguestfs werkt met elke schijfimage, inclusief degenen die zijn gemaakt in VMware, KVM, qemu,
VirtualBox, Xen en vele andere hypervisors, en hypervisors die u helemaal opnieuw hebt gemaakt.

Red Hat sponsort (dwz betaalt) de ontwikkeling van libguestfs en een groot aantal andere open
bron projecten. Maar je kunt libguestfs en de virt-tools op veel verschillende Linux draaien
distributies en Mac OS X. We doen ons best om alle Linux-distributies als eersteklas te ondersteunen
burgers. Sommige virt-tools zijn overgezet naar Windows.

Hoe doet libguestfs vergelijken naar anders hulpmiddelen?
vs kpartx
Libguestfs hanteert een andere benadering dan kpartx. kpartx heeft root nodig, en mounts
bestandssystemen op de hostkernel (die onveilig kunnen zijn - zie guestfs-beveiliging(1)).
Libguestfs isoleert uw hostkernel van gasten, is flexibeler, scriptbaarder,
ondersteunt LVM, vereist geen root, is geïsoleerd van andere processen en ruimt op
na zichzelf. Libguestfs is meer dan alleen bestandstoegang, want u kunt het ook gebruiken
maak afbeeldingen vanaf het begin.

vs vdzekering
vdfuse is als kpartx maar dan voor VirtualBox-images. Zie de kpartx-vergelijking hierboven.
Je kunt libguestfs gebruiken op de partitiebestanden die door vdfuse worden weergegeven, ook al is dat niet het geval
noodzakelijk omdat libguestfs rechtstreeks toegang heeft tot VirtualBox-afbeeldingen.

vs qemu-nbd
NBD (Network Block Device) is een protocol voor het exporteren van blokapparaten via het netwerk.
qemu-nbd is een NBD-server die elk schijfformaat kan verwerken dat door qemu wordt ondersteund (bijv. raw,
qkoe2). Je kunt libguestfs en qemu-nbd of nbdkit samen gebruiken om toegang te krijgen tot blok
apparaten via het netwerk, bijvoorbeeld: "guestfish -a nbd://remote"

vs montage bestandssystemen in de gastheer
Het mounten van gastbestandssystemen op de host is onveilig en moet volledig worden vermeden
voor onbetrouwbare gasten. Gebruik libguestfs om een ​​beschermingslaag te bieden tegen
exploits van bestandssystemen. Zie ook gastberg(1).

vs gescheiden
Libguestfs ondersteunt LVM. Libguestfs gebruikt parted en biedt de meeste parted-functies
via de libguestfs API.

KRIJGEN KLANTENSERVICE EN RAPPORTAGE BUGS


Hoe do I om te weten wat wat versie Im gebruik makend van?
De eenvoudigste methode is:

gastvis --versie

De ontwikkeling van Libguestf vindt plaats langs een onstabiele tak en we creëren periodiek een
stable branch waarnaar we stabiele patches backporten. Voor meer informatie, lees "LIBGUESTFS
VERSIENUMMERS" in gastfs(3).

Hoe wel I krijgen HELP?
Wat mailing lijsten or de chat kamers zijn beschikbaar?
Als u een Red Hat-klant bent die Red Hat Enterprise Linux gebruikt, neem dan contact op met
Red Hat-ondersteuning: http://redhat.com/support

Er is een mailinglijst, voornamelijk voor ontwikkeling, maar gebruikers mogen er ook om vragen
vragen over libguestfs en de virt-tools:
https://www.redhat.com/mailman/listinfo/libguestfs

U kunt ook met ons praten op het IRC-kanaal "#libguestfs" op FreeNode. Dat zijn we niet altijd
rond, dus blijf in het kanaal nadat je je vraag hebt gesteld, dan neemt iemand contact met je op
aan u.

Voor andere virt-tools (niet degene die bij libguestfs worden geleverd) is er een algemeen virt-tool
mailinglijst: https://www.redhat.com/mailman/listinfo/virt-tools-list

Hoe do I verslag insecten?
Gebruik de volgende link om een ​​bug in Bugzilla in te voeren:

https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

Voeg zoveel mogelijk details toe en geef een manier aan om het probleem te reproduceren.

Voeg de volledige uitvoer van toe libguestfs-testtool(1).

GEMEENSCHAPPELIJKE PROBLEMEN


Zie ook "LIBGUESTFS GOTCHAS" in gastfs(3) voor enkele "valkuilen" bij het gebruik van libguestfs
API.

"Kon niet toewijzen dynamisch vertaler buffer"
Deze obscure fout is in feite een SELinux-fout. U moet het volgende inschakelen
SELinux booleaanse waarde:

setsebool -P virt_use_execmem=aan

Zie https://bugzilla.redhat.com/show_bug.cgi?id=806106 voor meer informatie.

"kind gestorven onverwacht"
[Deze foutmelding is in libguestfs 1.21.18 gewijzigd in iets meer verklarends.]

Deze fout geeft aan dat qemu mislukt is of dat de hostkernel niet kon opstarten. Om verder te komen
informatie over de fout, moet u uitvoeren:

libguestfs-testtool

Als u na gebruik de storing nog steeds niet begrijpt, neem dan contact met ons op (zie vorige
sectie).

libguestfs: fout: kan niet vinden elke geschikt libguestfs supermin, vast or oude stijl toestel
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: ouder directory niet gevonden
supermin-helper: ext2: ouder directory niet gevonden
[Dit probleem is permanent opgelost in libguestfs ≥ 1.26.]

Als u een van deze fouten op Debian/Ubuntu tegenkomt, moet u de volgende opdracht uitvoeren:

sudo update-guestfs-appliance

"Toestemming geweigerd" wanneer lopend libguestfs as wortel
U krijgt de foutmelding 'Toestemming geweigerd' wanneer u een schijfkopie opent, ook al bent u actief
libguestfs als root.

Dit wordt veroorzaakt door libvirt, en gebeurt dus alleen bij gebruik van de libvirt-backend. Wanneer uitgevoerd
als root besluit libvirt om het qemu-apparaat uit te voeren als gebruiker "qemu.qemu". Helaas
dit betekent meestal dat qemu geen schijfkopieën kan openen, vooral als die schijfkopieën dat wel zijn
eigendom van root, of aanwezig zijn in mappen waarvoor root-toegang vereist is.

Er is een bug open tegen libvirt om dit te repareren:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

U kunt dit op een van de volgende manieren omzeilen:

· Schakel over naar de directe backend:

exporteren LIBGUESTFS_BACKEND=direct

· Voer libguestfs niet uit als root.

· Chmod de schijfkopie en eventuele bovenliggende mappen zodat de qemu-gebruiker er toegang toe heeft.

· (Vervelend) Bewerken /etc/libvirt/qemu.conf en wijzig de instelling "gebruiker".

voorbeeld: /in het: Toestemming ontkend
Opmerking: Als deze fout optreedt wanneer u een distributiepakket van libguestfs gebruikt (bijv. from
Fedora, Debian, enz.) dien vervolgens een bug in tegen de distro. Dit is geen fout die
normale gebruikers zouden ooit moeten zien of het distributiepakket correct is voorbereid.

Deze fout treedt op tijdens de supermin-opstartfase van het starten van het apparaat:

supermin: nieuwe root installeren op / Root
supermin: chroot
execl: /init: Toestemming geweigerd
supermin: debug: lijstmap /
[...gevolgd door veel debug-uitvoer...]

Dit is een ingewikkelde bug die verband houdt met supermin(1) apparaten. Het apparaat is gebouwd
door bestanden te kopiëren zoals / bin / bash en veel bibliotheken van de host. Het bestand "hostfiles"
vermeldt de bestanden die van de host naar het apparaat moeten worden gekopieerd. Als sommige bestanden
bestaan ​​niet op de host, dan worden ze gemist, maar als deze bestanden wel nodig zijn om te kunnen werken
(bijvoorbeeld) rennen / bin / bash dan zie je de bovenstaande fout.

Om het probleem te diagnosticeren, moet u de bibliotheken bestuderen die nodig zijn / bin / bash, dat wil zeggen:

ldd / bin / bash

door dat te vergelijken met "hostfiles", met de bestanden die daadwerkelijk beschikbaar zijn in het hostbestandssysteem,
en met de debug-uitvoer afgedrukt in het foutbericht. Zodra je weet welk bestand
ontbreekt, installeer dat bestand met behulp van uw pakketbeheerder en probeer het opnieuw.

Je moet ook controleren of bestanden zoals /in het en / bin / bash (in het apparaat) zijn
uitvoerbaar. De debug-uitvoer toont bestandsmodi.

DOWNLOADEN, INSTALLEREN, COMPILEREN LIBGUESTFS


Waar wel I krijgen de laatste binaries For ...?
Fedora ≥ 11
Gebruikmogelijkheden:

yum installeer '*guestf*'

Voor de nieuwste builds, zie:
http://koji.fedoraproject.org/koji/packageinfo?pakketID=8391

Red Hat Enterprise Linux
RHEL 5
De versie die wordt geleverd in de officiële RHEL 5 is erg oud en mag alleen worden gebruikt
in combinatie met virt-v2v. Gebruik het up-to-date libguestfs 1.20-pakket in EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Het maakt deel uit van de standaardinstallatie. Op RHEL 6 en 7 (alleen) moet u installeren
"libguestfs-winsupport" om Windows-gastondersteuning te krijgen.

Debian en Ubuntu
Voor libguestfs < 1.26 moet je na het installeren van libguestfs het volgende doen:

sudo update-guestfs-appliance

(Dit script is verwijderd op Debian/Ubuntu met libguestfs ≥ 1.26 en in plaats daarvan de
apparaat is op aanvraag gebouwd.)

Alleen op Ubuntu:

sudo chmod 0644 /boot/vmlinuz*

Mogelijk moet je jezelf toevoegen aan de groep "kvm":

sudo usermod -a -G kvm jouw login

Debian Knijpen (6)
Hilko Bengen heeft libguestfs gebouwd in squeeze backports:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports

Debian Wheezy en hoger (7+)
Hilko Bengen ondersteunt libguestfs op Debian. Officiële Debian-pakketten zijn
beschikbaar: http://packages.debian.org/search?trefwoorden=libguestfs

Ubuntu
We hebben geen fulltime Ubuntu-onderhouder en de pakketten worden geleverd door
Canonieke (die buiten onze controle liggen) worden soms verbroken.

Canonical heeft besloten de permissies op de kernel te wijzigen, zodat dit niet meer het geval is
leesbaar behalve door root. Dit is volkomen stom, maar ze zullen het niet veranderen
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Iedere gebruiker dus
zou dit moeten doen:

sudo chmod 0644 /boot/vmlinuz*

Ubuntu 12.04
libguestfs in deze versie van Ubuntu werkt, maar je moet febootstrap bijwerken
en seabios naar de nieuwste versies.

Je hebt febootstrap ≥ 3.14-2 nodig van:
http://packages.ubuntu.com/precise/febootstrap

Nadat u febootstrap hebt geïnstalleerd of bijgewerkt, moet u het apparaat opnieuw opbouwen:

sudo update-guestfs-appliance

Je hebt seabios ≥ 0.6.2-0ubuntu2.1 of ≥ 0.6.2-0ubuntu3 nodig van:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

Wat je ook moet doen (zie hierboven):

sudo chmod 0644 /boot/vmlinuz*

Gentoo
Libguestfs werd in 2012-07 aan Gentoo toegevoegd door Andreis Vinogradovs (libguestfs) en
Maxim Koltsov (voornamelijk hivex). Doen:

libguestfs tevoorschijn komen

ZOALS
Libguestfs werd in 2012 aan SuSE toegevoegd door Olaf Hering.

ArchLinux
Libguestfs werd in 2010 aan de AUR toegevoegd.

Andere Linux-distributie
Compileer vanuit de broncode (volgende sectie).

Andere niet-Linux-distributie
Je zult vanaf de broncode moeten compileren en deze moeten porten.

Hoe wel I compileren en installeren libguestfs oppompen van bron?
Je kunt libguestfs compileren vanuit git of een bron-tarball. Lees eerst het README-bestand
beginnend.

Git: https://github.com/libguestfs/libguestfs Bron tarballs:
http://libguestfs.org/download

Voer "make install" niet uit! Gebruik de "./rennen" script in plaats daarvan (zie README).

Hoe wel I compileren en installeren libguestfs if my distro niet hebben nieuwe genoeg
qemu/supermin/kernel?
Libguestfs heeft supermin 5 nodig. Als supermin 5 niet naar je distributie is geport, zie dan
onderstaande vraag.

Compileer eerst qemu, supermin en/of de kernel vanaf de broncode. Je doet niet moeten ‘maken
installeer" ze.

Maak in de bronmap libguestfs twee bestanden. "localconfigure" moet het volgende bevatten:

bron lokale omgevingv
#export PATH=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --voorvoegsel / usr "$@"

Maak "localconfigure" uitvoerbaar.

"localenv" moet het volgende bevatten:

#export SUPERMIN=/tmp/supermin/src/supermin
#export LIBGUESTFS_HV=/tmp/qemu/x86_64-softmmu/qemu-system-x86_64
#export SUPERMIN_KERNEL=/tmp/linux/arch/x86/boot/bzImage
#export SUPERMIN_KERNEL_VERSION=4.XX.0
#export SUPERMIN_MODULES=/tmp/lib/modules/4.XX.0

Verwijder de opmerkingen en pas deze regels indien nodig aan om de alternatieve programma's te gebruiken die u heeft
gecompileerd.

Gebruik "./localconfigure" in plaats van "./configure", maar anders compileer je libguestfs als
gebruikelijk.

Voer "make install" niet uit! Gebruik de "./rennen" script in plaats daarvan (zie README).

Hoe wel I compileren en installeren libguestfs zonder supermin?
Als supermin 5 je distro ondersteunt, maar je hebt toevallig geen supermin die nieuw genoeg is
geïnstalleerd, zie dan de vorige vraag.

Als supermin 5 uw distro helemaal niet ondersteunt, moet u de optie "fixed
device method" waarbij u een vooraf gecompileerd binair apparaat gebruikt. Om libguestfs
zonder supermin moet u "--disable-appliance --disable-daemon" aan beide doorgeven
./autogen.sh or . / Configure (afhankelijk of je respectievelijk bouwt vanuit git of
van teerballen). Wanneer u vervolgens libguestfs gebruikt, kunt u Dan moet je stel de "LIBGUESTFS_PATH" in
omgevingsvariabele naar de map van een vooraf gecompileerd apparaat, zoals ook beschreven in
"VAST APPARAAT" in gastfs(3).

Voor vooraf gecompileerde apparaten, zie ook: http://libguestfs.org/download/binaries/appliance/.

Patches om supermin over te zetten naar meer Linux-distributies zijn welkom.

Hoe wel I toevoegen ondersteuning For sVirt?
Note For Fedora/RHEL gebruikers: Deze configuratie is de standaard vanaf Fedora 18 en
RHEL 7. Als u problemen ondervindt, laat het ons dan weten of meld een bug.

SVirt biedt een gehard apparaat dat SELinux gebruikt, waardoor het erg moeilijk wordt voor een frauduleuze schijf
image om te "ontsnappen" uit de opsluiting van libguestfs en de host te beschadigen (het is eerlijk om te zeggen
dat dit zelfs in standaard libguestfs moeilijk zou zijn, maar sVirt biedt een extra laag
bescherming voor de host en, nog belangrijker, beschermt virtuele machines op dezelfde host
van elkaar).

Momenteel heb je om sVirt in te schakelen libvirt ≥ 0.10.2 nodig (bij voorkeur 1.0 of later),
libguestfs ≥ 1.20, en het SELinux beleid van recent Fedora. Als je niet aan het rennen bent
Fedora 18+, je zult wijzigingen moeten aanbrengen in je SELinux-beleid - neem contact met ons op via de
mailinglijst.

Zodra u aan de vereisten voldoet, doet u het volgende:

./configure --with-default-backend=libvirt # libguestfs >= 1.22
./configure --with-default-attach-method=libvirt # libguestfs <= 1.20
maken

Zet SELinux in de Enforcing-modus, en sVirt zou automatisch gebruikt moeten worden.

Alle, of bijna alle, functies van libguestfs zouden onder sVirt moeten werken. Er is er één bekend
Tekortkoming: virt-redding(1) zal libvirt niet gebruiken (vandaar sVirt), maar valt terug op direct
lancering van qemu. U profiteert momenteel dus niet van het voordeel van sVirt-bescherming tijdens het gebruik
virt-redding.

Je kunt controleren of sVirt wordt gebruikt door libvirtd logging in te schakelen (zie
/etc/libvirt/libvirtd.log), het doden en herstarten van libvirtd, en het controleren van de logbestanden
voor "SELinux context instellen op..." berichten.

In theorie zou sVirt AppArmor moeten ondersteunen, maar we hebben het niet geprobeerd. Het zal bijna
vereisen zeker het patchen van libvirt en het schrijven van een AppArmor-beleid.

Libgastfs heeft a werkelijk lang lijst of afhankelijkheden!
De basisbibliotheek is niet erg afhankelijk van, maar er zijn drie oorzaken voor de lange lijst
van andere afhankelijkheden:

1. Libguestfs moet veel verschillende schijfformaten kunnen lezen en bewerken. Bijvoorbeeld,
Voor XFS-ondersteuning zijn XFS-tools vereist.

2. Er zijn taalbindingen voor veel verschillende talen, die allemaal hun eigen taal vereisen
Ontwikkelingshulpmiddelen. Alle taalbindingen (behalve C) zijn optioneel.

3. Er zijn enkele optionele bibliotheekfuncties die kunnen worden uitgeschakeld.

Omdat libguestfs ≥ 1.26 is het mogelijk om de apparaatafhankelijkheden op te splitsen (item 1 in
de lijst hierboven) en hebben dus (bijvoorbeeld) "libguestfs-xfs" als een afzonderlijk subpakket voor
het verwerken van XFS-schijfimages. We moedigen downstream-verpakkers aan om de basis te gaan splitsen
libguestfs-pakket in kleinere subpakketten.

fouten gedurende lancering on Fedora 18, RHEL 7
In Fedora ≥ 18 en RHEL ≥ 7 gebruikt libguestfs libvirt om het apparaat te beheren. Eerder
(en stroomopwaarts) libguestfs voert qemu rechtstreeks uit:

┌──────────────────────────────────┐
│ libguestfs │
├────────────────┬─────────────────┤
│ directe backend │ libvirt backend │
└────────────────┴─────────────────┘

┌───────┐ ┌──────────┐
│ qemu │ │ libvirtd │
└───────┘ └──────────┘

┌───-- JeF ┐
│ qemu │
└───-- JeF ┘

stroomopwaarts Fedora 18+
niet-Fedora RHEL 7+
niet-RHEL

De libvirt backend is geavanceerder en ondersteunt SELinux/sVirt (zie hierboven),
hotpluggen en meer. Het is echter complexer en dus minder robuust.

Als u permissieproblemen heeft bij het gebruik van de libvirt-backend, kunt u overschakelen naar de direct
backend door deze omgevingsvariabele in te stellen:

exporteren LIBGUESTFS_BACKEND=direct

voordat u een libguestfs-programma of virt-tool uitvoert.

Hoe wel I schakelaar naar a vast / voorgebouwd apparaat?
Dit kan de stabiliteit en prestatie van libguestfs op Fedora en RHEL verbeteren.

Voer op elk moment na het installeren van libguestfs de volgende opdrachten uit als root:

mkdir -p /usr/local/lib/guestfs/appliance
libguestfs-make-fixed-appliance /usr/local/lib/guestfs/appliance
ls -l /usr/local/lib/guestfs/appliance

Stel nu de volgende omgevingsvariabele in voordat u libguestfs of een virt-tool gebruikt:

exporteer LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance

Natuurlijk kunt u het pad naar elke gewenste map wijzigen. U kunt het apparaat delen
op machines die dezelfde architectuur hebben (bijvoorbeeld alle x86-64), maar merk op dat libvirt
zal voorkomen dat u het apparaat via NFS deelt vanwege machtigingsproblemen (zo
schakel over naar de directe backend of gebruik geen NFS).

Hoe wel I snelheid up libguestfs bouwt?
Veruit het belangrijkste dat u kunt doen, is Squid installeren en correct configureren.
Merk op dat de standaardconfiguratie die bij Squid wordt geleverd onzin is, dus het configureren is dat ook
niet optioneel.

Een zeer goede plek om te beginnen met de Squid-configuratie is hier:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Zorg ervoor dat Squid actief is en dat de omgevingsvariabelen $http_proxy en $ftp_proxy
wijzen ernaar.

Als Squid draait en correct is geconfigureerd, moeten het aantal builds van apparaten worden teruggebracht tot een paar
minuten opvullen

Hoe wel I snelheid up libguestfs bouwt (Debian)?

Hilko Bengen stelt voor om "ca." te gebruiken, wat een Debian-archiefproxy is
(http://packages.debian.org/approx). Dit hulpmiddel is op Debian gedocumenteerd in de ongeveer(8)
handleiding pagina.

SNELHEID, SCHIJF SPACE GEBRUIKT BY LIBGUESTFS


Opmerking: De meeste informatie in deze sectie is verplaatst: guestfs-uitvoering(1).

Uploaden or schrijven lijken zeer langzaam.
Als de onderliggende schijf niet volledig is toegewezen (bijvoorbeeld sparse raw of qcow2), kunnen schrijfbewerkingen dat wel zijn
langzaam omdat het hostbesturingssysteem dure schijftoewijzingen moet uitvoeren terwijl u dat doet
schrijven. De oplossing is om in plaats daarvan een volledig toegewezen formaat te gebruiken, dwz. niet-schaars rauw, of
qcow2 met de optie "preallocation=metadata".

Libgastfs toepassingen ook veel schijf ruimte!
libguestfs cachet een groot apparaat in:

/var/tmp/.guestfs-

Als de omgevingsvariabele "TMPDIR" is gedefinieerd, dan $TMPDIR/.guestfs- is gebruikt
gebruiken.

Het is veilig om deze map te verwijderen als u libguestfs niet gebruikt.

virt-spaarzaam lijkt naar maken de beeld groeien naar de vol grootte of de virtueel schijf
Als de invoer naar virt-spaarzaam(1) rauw is, dan zal de uitvoer rauw schaars zijn. Zorg ervoor dat
je meet de output met een tool die schaarsheid begrijpt, zoals "du -sh".
Het kan een groot verschil maken:

$ ls -lh test1.img
-rw-rw-r--. 1 rjones rjones 100M 8 augustus 08:08 test1.img
$ du -sh test1.img
3.6M test1.img

(Vergelijk de schijnbare grootte 100M versus de werkelijke grootte 3.6M)

Als dit alles u in verwarring brengt, gebruik dan een niet-sparse uitvoerindeling door de --overzetten
optie, bijvoorbeeld:

virt-sparsify --convert qcow2 schijf.raw schijf.qcow2

Waarom niet virt-formaat wijzigen werk on de schijf beeld in situ?
Het formaat van een schijfkopie wijzigen is erg lastig, vooral als u ervoor zorgt dat u geen gegevens verliest
breek de bootloader. De huidige methode creëert effectief een nieuwe schijfkopie en kopieën
de data plus bootloader van de oude. Als er iets misgaat, kun je altijd gaan
terug naar het origineel.

Als we virt-resize ter plekke zouden laten werken, zouden er beperkingen moeten zijn: for
U zou bijvoorbeeld geen bestaande partities mogen verplaatsen (omdat het verplaatsen van gegevens naar andere partities).
het is het meest waarschijnlijk dat dezelfde schijf gegevens beschadigt in het geval van een stroomstoring of crash),
en LVM zouden zeer moeilijk te ondersteunen zijn (vanwege de bijna willekeurige mapping
tussen LV-inhoud en onderliggende schijfblokken).

Een andere methode die we hebben overwogen is om een ​​momentopname over de originele schijfkopie te plaatsen, dus
dat de originele gegevens onaangeroerd blijven en dat alleen de verschillen in de momentopname worden vastgelegd.
Je kunt dit vandaag nog doen met "qemu-img create" + "virt-resize", maar qemu is dat momenteel niet
slim genoeg om te herkennen wanneer hetzelfde blok wordt teruggeschreven naar de momentopname als al
bestaat op de back-upschijf, dus u zult merken dat dit u geen ruimte of tijd bespaart.

Samenvattend: dit is een lastig probleem, en wat we nu hebben werkt grotendeels, dus we zijn terughoudend
om het te veranderen.

Waarom niet virt-spaarzaam werk on de schijf beeld in situ?
In libguestfs ≥ 1.26 kan virt-sparsify nu werken op aanwezige schijfimages. Gebruik:

virt-sparsify --in-place schijf.img

Maar eerst moet u "IN-PLACE SPARSIFICATION" lezen virt-spaarzaam(1).

PROBLEMEN OPENING SCHIJF AFBEELDINGEN


op Afstand libvirt gasten kan niet be geopend.
Het openen van externe libvirt-gasten wordt op dit moment niet ondersteund. Dit werkt bijvoorbeeld niet:

guestfish -c qemu://remote/system -d Gast

Om externe schijven te openen, moet u ze op de een of andere manier exporteren en vervolgens verbinding maken met de export. Voor
voorbeeld als u besluit NBD te gebruiken:

afstandsbediening$ qemu-nbd -t -p 10809 guest.img
local$ guestfish -a nbd://remote:10809 -i

Andere mogelijkheden zijn ssh (als qemu recent genoeg is), NFS of iSCSI. Zie "AFSTAND
OPSLAG" in gastfs(3).

Hoe wel I open dit vreemd schijf bron?
U hebt een schijfkopie die zich in een ander systeem bevindt en waarvoor toegang via een bibliotheek /
HTTP / REST / eigen API, of is op een of andere manier gecomprimeerd of gearchiveerd. (Een voorbeeld
zou externe toegang zijn tot OpenStack-bliksemafbeeldingen zonder ze daadwerkelijk te downloaden.)

We hebben een zusterproject genaamd nbdkit (https://github.com/libguestfs/nbdkit). Dit
project kunt u van elke schijfbron een NBD-server maken. Libguestfs hebben toegang tot NBD
rechtstreekse servers, bijvoorbeeld:

guestfish -a nbd://remote

nbdkit heeft een ruime licentie, dus u kunt het koppelen aan of opnemen in eigen bibliotheken
en coderen. Het heeft ook een eenvoudige, stabiele plug-in-API, zodat je gemakkelijk plug-ins kunt schrijven
de API die in de toekomst zal blijven werken.

Fout opening VMDK schijven: "toepassingen a vmdk kenmerken welke is niet ondersteund by dit qemu versie:
VMDK versie 3"
Qemu (en dus libguestfs) ondersteunt alleen bepaalde VMDK-schijfimages. Anderen zullen niet werken,
geeft deze of soortgelijke fouten.

Idealiter zou iemand qemu repareren om de nieuwste VMDK-functies te ondersteunen, maar in de tussentijd
je hebt drie opties:

1. Als de gast wordt gehost op een live, bereikbare ESX-server, zoek en download dan de
schijfkopie genoemd iemandnaam-flat.vmdk. Ondanks de naam is dit een onbewerkte schijfimage, en
kan door alles geopend worden.

Als je een versie van qemu en libguestfs hebt die recent genoeg is, dan kun je dat misschien ook doen
krijg op afstand toegang tot deze schijfkopie via HTTPS of ssh. Zie "OPSLAG OP AFSTAND" in
gastfs(3).

2. Gebruik de eigen vdiskmanager-tool van VMware om de afbeelding naar onbewerkt formaat te converteren.

3. Gebruik nbdkit met de eigen VDDK-plug-in om de schijfimage live te exporteren als een NBD
bron. Hierdoor zou u het VMDK-bestand moeten kunnen lezen en schrijven.

UFS schijven (als gebruikt by BSD) kan niet be geopend.
Het UFS-bestandssysteemformaat kent vele varianten, en deze zijn niet zelfidentificerend. De
De Linux-kernel moet verteld worden welke variant van UFS hij moet gebruiken, en welke libguestfs dat niet kunnen
te leren kennen.

U moet de juiste "ufstype" mount-optie doorgeven bij het mounten van deze bestandssystemen.

Zie https://www.kernel.org/doc/Documentation/filesystems/ufs.txt

Dakramen en raamkozijnen Refs
Windows ReFS is de ZFS/Btrfs-kopie van Microsoft. Dit bestandssysteem is nog niet omgekeerd
ontworpen en geïmplementeerd in de Linux-kernel, en daarom ondersteunt libguestfs dit niet
Het. Op dit moment lijkt het zeer zeldzaam te zijn "in het wild".

Niet-ASCII tekens niet verschijnen on VFAT bestandssystemen.
Typische symptomen van dit probleem:

· U krijgt een foutmelding wanneer u een bestand maakt waarvan de bestandsnaam niet-ASCII bevat
tekens, vooral niet-8-bits tekens uit Aziatische talen (Chinees, Japans,
enz). Het bestandssysteem is VFAT.

· Wanneer u een map uit een VFAT-bestandssysteem vermeldt, verschijnen bestandsnamen als vraagtekens.

Dit is een ontwerpfout van het GNU/Linux-systeem.

VFAT slaat lange bestandsnamen op als UTF-16-tekens. Bij het openen of retourneren van bestandsnamen wordt het
De Linux-kernel moet deze vertalen naar een of andere vorm van 8-bits string. UTF-8 zou de
voor de hand liggende keuze, behalve voor Linux-gebruikers die volharden in het gebruik van niet-UTF-8-landinstellingen (de gebruiker's
locale is niet bekend bij de kernel omdat het een functie is van libc).

Daarom moet je de kernel vertellen welke vertaling je wilt laten doen wanneer je het
bestandssysteem. De twee methoden zijn de parameter "iocharset" (die niet relevant is voor
libguestfs) en de vlag "utf8".

Om een ​​VFAT-bestandssysteem te gebruiken, moet u dus tijdens het mounten de vlag "utf8" toevoegen. Van gastvis,
gebruiken:

> mount-opties utf8 /dev/sda1 /

of op de guestfish-opdrachtregel:

gastvis [...] -m /dev/sda1:/:utf8

of vanuit de API:

guestfs_mount_options (g, "utf8", "/dev/sda1", "/");

De kernel vertaalt vervolgens de bestandsnamen van en naar UTF-8-strings.

We hebben overwogen om deze montageoptie transparant toe te voegen, maar helaas zijn er meerdere
problemen om dat te doen:

· Op sommige Linux-systemen werkt de mount-optie "utf8" niet. Wij niet precies
begrijp welke systemen of waarom, maar dit werd betrouwbaar gerapporteerd door één gebruiker.

· Het zou voorkomen dat u de parameter "iocharset" gebruikt, omdat deze incompatibel is
met "utf8". Het is waarschijnlijk geen goed idee om deze parameter te gebruiken, maar dat willen we niet
om het te voorkomen.

Niet-ASCII tekens verschijnen as benadrukken (_) on ISO9660 bestandssystemen.
Het bestandssysteem is niet correct voorbereid met mkisofs of genisoimage. Zorg ervoor dat de
bestandssysteem is gemaakt met behulp van de extensies Joliet en/of Rock Ridge. libguestfs niet
vereisen speciale mount-opties om met het bestandssysteem om te gaan.

Kan niet open Dakramen en raamkozijnen gasten welke . NTFS
Je ziet fouten zoals:

mount: onbekend bestandssysteemtype 'ntfs'

Op Red Hat Enterprise Linux of CentOS moet je libguestfs-winsupport installeren
pakket.

Kan niet open or inspecteren RHEL 7 gasten.
Kan niet open Linux gasten welke . XFS.
RHEL 7-gasten en alle andere gasten die XFS gebruiken, kunnen worden geopend door libguestfs, maar u
moet het pakket "libguestfs-xfs" installeren.

GEBRUIK MAKEND VAN LIBGUESTFS IN JOUW EIGEN PROGRAMMA'S


De API heeft honderden of methoden, WAAR do I begin?
Wij raden u aan om eerst het API-overzicht: "API OVERVIEW" te lezen gastfs(3).

Hoewel het API-overzicht de C API omvat, is het toch de moeite waard om te lezen, zelfs als dat zo is
ga een andere programmeertaal gebruiken, omdat de API hetzelfde is, alleen met simpel
logische wijzigingen in de namen van de oproepen:

C guestfs_ln_sf (g, doel, linknaam);
Python g.ln_sf (doel, linknaam);
OCaml g#ln_sf doellinknaam;
Perl $g->ln_sf (doel, linknaam);
Shell (gastvis) ln-sf doellinknaam
PHP guestfs_ln_sf ($g, $target, $linkname);

Als u eenmaal bekend bent met het API-overzicht, moet u deze lijst met startpagina's bekijken
punten voor andere taalbindingen: "LIBGUESTFS GEBRUIKEN MET ANDERE PROGRAMMEERTALEN" in
gastfs(3).

Kan I . libguestfs in my gepatenteerd / CLOSED (bron) / commercieel programma?
Over het algemeen wel. Dit is echter geen juridisch advies; lees de meegeleverde licentie
libguestfs, en als u specifieke vragen heeft, neem dan contact op met een advocaat.

In de bronboom bevindt de licentie zich in het bestand "COPYING.LIB" (LGPLv2+ voor de bibliotheek en
bindingen) en "KOPIËREN" (GPLv2+ voor de zelfstandige programma's).

DEBUGEN LIBGUESTFS


Help, haar niet werken!
Als er helemaal geen libguestfs-programma lijkt te werken, voer dan het onderstaande programma uit en plak het
compleet, onbewerkt uitvoer in een e-mail naar "libguestfs" @ "redhat.com":

libguestfs-testtool

Als een bepaalde handeling mislukt, geef dan alle informatie uit deze checklist per e-mail door
naar "libguestfs" @ "redhat.com":

1. Wat probeer je te doen?

2. Welke exacte opdracht(en) heb je uitgevoerd?

3. Wat was de precieze fout of uitvoer van deze opdrachten?

4. Schakel foutopsporing in, voer de opdrachten opnieuw uit en leg het bestand vast compleet uitgang. Do niet
Bewerk de uitgang.

exporteren LIBGUESTFS_DEBUG=1
exporteren LIBGUESTFS_TRACE=1

5. Vermeld de versie van libguestfs, de versie van het besturingssysteem en de manier waarop u het hebt geïnstalleerd
libguestfs (bijv. van de broncode, "yum install", enz.)

Hoe do I debug wanneer gebruik elke libguestfs programma or tools (Bv. virt-v2v or virt-df)?
Er zijn twee "LIBGUESTFS_*" omgevingsvariabelen die u kunt instellen om meer te verkrijgen
informatie van libguestfs.

"LIBGUESTFS_TRACE"
Stel dit in op 1 en libguestfs zal elke opdracht/API-oproep afdrukken in een formaat dat
is vergelijkbaar met guestfish-opdrachten.

"LIBGUESTFS_DEBUG"
Stel dit in op 1 om enorme hoeveelheden foutopsporingsberichten mogelijk te maken. Als je denkt
er is een probleem in het libguestfs-apparaat, dan moet u dit gebruiken
optie.

Om deze vanuit de shell in te stellen, doet u dit voordat u het programma uitvoert:

exporteren LIBGUESTFS_TRACE=1
exporteren LIBGUESTFS_DEBUG=1

Voor csh/tcsh zouden de equivalente opdrachten zijn:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Voor meer informatie, zie: "OMGEVINGVARIABELEN" in gastfs(3).

Hoe do I debug wanneer gebruik gastvis?
U kunt dezelfde omgevingsvariabelen hierboven gebruiken. U kunt ook de gastenvisopties gebruiken
-x (om opdrachten te traceren) of -v (om de volledige debug-uitvoer te krijgen), of beide.

Zie voor meer informatie: gastvis(1).

Hoe do I debug wanneer gebruik de API?
Roep "guestfs_set_trace" aan gastfs(3) om opdrachttracering mogelijk te maken, en/of
"guestfs_set_verbose" in gastfs(3) om foutopsporingsberichten in te schakelen.

Voor de beste resultaten roept u deze functies zo vroeg mogelijk op, net nadat u de
guestfs afhandelen als je kunt, en zeker voordat je launch aanroept.

Hoe do I vangen debug uitgang en zetten it in my logging systeem?
Gebruik de gebeurtenis-API. Zie voor voorbeelden: "CALLBACKS INSTELLEN VOOR HET AFHANDELEN VAN GEBEURTENISSEN" in gastfs(3)
en voorbeelden/debug-logging.c programma in de libguestfs-bronnen.

Het graven diepere in de toestel laarsje proces.
Schakel foutopsporing in en lees vervolgens deze documentatie over het opstartproces van het apparaat:
guestfs-internals(1).

libguestfs hangt or mislukt gedurende rennen/lanceren.
Schakel foutopsporing in en bekijk de volledige uitvoer. Als je niet kunt achterhalen wat er aan de hand is,
een bugrapport indienen, inclusief de compleet output van libguestfs-testtool(1).

Debugging libvirt
Als u de libvirt backend gebruikt, en libvirt faalt, dan kunt u deze inschakelen
debuggen door te bewerken /etc/libvirt/libvirtd.conf.

Als u als niet-root draait, moet u een ander bestand bewerken. Creëren
~/.config/libvirt/libvirtd.conf met daarin:

log_niveau=1
log_outputs="1:bestand:/tmp/libvirtd.log"

Beëindig elke sessie (niet-root) libvirtd die actief is, en de volgende keer dat u libguestfs uitvoert
commando, zou je een grote hoeveelheid nuttige foutopsporingsinformatie van libvirtd in moeten zien
/tmp/libvirtd.log

ONTWERP/BINNENWERK OF LIBGUESTFS


Zie ook guestfs-internals(1).

Waarom niet u do alles door de FUSE / bestandssysteem koppel?
Wij bieden een commando genaamd gastberg(1) waarmee u gastbestandssystemen kunt mounten op de
gastheer. Deze is geïmplementeerd als een FUSE-module. Waarom implementeren we niet gewoon het geheel?
libguestfs dit mechanisme gebruiken, in plaats van de grote en nogal gecompliceerde API te hebben?

De redenen zijn tweeledig. Ten eerste biedt libguestfs API-aanroepen om dingen te doen zoals
het maken en verwijderen van partities en logische volumes, die niet in een bestandssysteem passen
heel gemakkelijk modelleren. Of beter gezegd, je kunt ze inpassen: bijvoorbeeld door een partitie te maken
zou kunnen worden toegewezen aan "mkdir /fs/hda1", maar dan zou je een methode moeten specificeren om te kiezen
de grootte van de partitie (misschien "echo 100M > /fs/hda1/.size"), en het partitietype,
begin- en eindsectoren enz., maar zodra je dat hebt gedaan, begint de op bestandssysteem gebaseerde API
zien er ingewikkelder uit dan de op oproepen gebaseerde API die we momenteel hebben.

De tweede reden is efficiëntie. FUSE zelf is redelijk efficiënt, maar dat is het wel
voer veel kleine, onafhankelijke oproepen uit naar de FUSE-module. In guestmount moeten deze wel
worden vertaald in berichten naar het libguestfs-apparaat, dat een grote overhead heeft (in de tijd
en rondreizen). Het lezen van een bestand in stukjes van 64 KB is bijvoorbeeld inefficiënt omdat elk
stuk zou veranderen in een enkele retourvlucht. In de libguestfs API is het veel meer
efficiënt om een ​​volledig bestand of map te downloaden via een van de streaming-oproepen zoals
"guestfs_download" of "guestfs_tar_out".

Waarom niet u do alles door GVFS?
De problemen zijn vergelijkbaar met de problemen met FUSE.

GVFS is een betere abstractie dan POSIX/FUSE. Er is een FTP-backend voor GVFS, dat wil zeggen
bemoedigend omdat FTP conceptueel vergelijkbaar is met de libguestfs API. Maar de GVFS
FTP-backend maakt meerdere gelijktijdige verbindingen om de interactiviteit te behouden
we kunnen niet gemakkelijk werken met libguestfs.

Waarom wel I schrijven naar de schijf, zal u zelfs hoewel I toegevoegd it alleen lezen?
Waarom doet "--ro" verschijnen naar hebben geen effect?
Wanneer u een alleen-lezen schijf toevoegt, plaatst libguestfs een beschrijfbare overlay bovenop de
onderliggende schijf. Schrijfbewerkingen worden in deze overlay geplaatst en worden weggegooid wanneer de hendel wordt gesloten
(of "guestfish" etc. uitgangen).

Er zijn twee redenen om het op deze manier te doen: Ten eerste zijn alleen-lezen schijven niet mogelijk in
in veel gevallen (bijv. IDE ondersteunt ze eenvoudigweg niet, dus je kunt geen IDE-emulatie krijgen
alleen-lezen schijf, hoewel dit niet gebruikelijk is bij echte libguestfs-installaties).

Ten tweede, en nog belangrijker: zelfs als alleen-lezen schijven mogelijk zouden zijn, zou je dat niet willen
hen. Het aankoppelen van elk bestandssysteem dat een journaal heeft, zelfs "mount -o ro", veroorzaakt schrijfbewerkingen naar
het bestandssysteem omdat het tijdschrift opnieuw moet worden afgespeeld en de metagegevens moeten worden bijgewerkt. Als de schijf
echt alleen-lezen was, zou je geen vies bestandssysteem kunnen mounten.

Om het bruikbaar te maken, maken we de overlay als een plek om deze schrijfbewerkingen tijdelijk op te slaan, en
dan gooien we het daarna weg. Dit zorgt ervoor dat de onderliggende schijf altijd onaangeroerd blijft.

Merk ook op dat hiervoor een regressietest bestaat bij het bouwen van libguestfs (in
"testen/qemu"). Dit is een van de redenen waarom het voor verpakkers belangrijk is om de testsuite uit te voeren.

Doet "--ro" maken allen schijven alleen lezen?
Nee! De optie "--ro" heeft alleen invloed op schijven die op de opdrachtregel zijn toegevoegd, dwz. met behulp van "-a" en
"-d"-opties.

Als u in guestfish de opdracht "add" gebruikt, wordt schijf lezen-schrijven toegevoegd (tenzij u
specificeer de vlag "readonly:true" expliciet met de opdracht).

Kan I . "gastvis --ro" as a weg naar backup my virtueel automaat?
Meestal is dit niet een goed idee. In deze mailing wordt deze vraag nader beantwoord
lijstposten: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Zie ook de volgende vraag.

Waarom kan niet I lopen fsck on a leven bestandssysteem gebruik "gastvis --ro"?
Dit commando zal meestal niet werk:

guestfish --ro -a /dev/vg/my_root_fs voer uit: fsck /dev/sda

De reden hiervoor is dat qemu een momentopname over het originele bestandssysteem maakt, maar it
creëert geen strikte momentopname. Gegevensblokken over de onderliggende waarde
bestandssysteem worden op verschillende tijdstippen door qemu gelezen naarmate de fsck-bewerking vordert, met host
schrijft tussendoor. Het resultaat is dat fsck enorme corruptie (denkbeeldig, niet reëel!)
en mislukt.

Wat u moet doen, is een momentopname maken. Als het een logisch volume is, gebruik dan
een LVM2-momentopname. Als het bestandssysteem zich in bijvoorbeeld een btrfs/ZFS-bestand bevindt,
gebruik een btrfs/ZFS-snapshot en voer vervolgens fsck uit op de snapshot. In de praktijk doe je dat niet
moet hiervoor libguestfs gebruiken - voer het gewoon uit /sbin/fsck direct.

Het maken van point-in-time momentopnamen van hostapparaten en bestanden valt buiten het bereik van
libguestfs, hoewel libguestfs ermee kan werken zodra ze zijn gemaakt.

Wat is de verschil tussen gastvis en virt-redding?
Veel mensen raken in de war door de twee oppervlakkig vergelijkbare tools die we bieden:

$ gastvis --ro -a gast.img
> loop
> fsck /dev/sda1

$ virt-rescue --ro gast.img
> /sbin/fsck / Dev / sda1

En de daarmee samenhangende vraag die dan opkomt is waarom je geen volledige shell-opdrachten kunt typen
met alle --opties in guestfish (maar dat kan ook virt-redding(1)).

gastvis(1) is een programma dat gestructureerde toegang biedt tot de gastfs(3) API. Het gebeurt
om ook een mooie interactieve shell te zijn, maar het primaire doel is gestructureerde toegang vanaf
shell-scripts. Zie het meer als een taalbinding, zoals Python en andere bindingen,
maar voor de schil. De belangrijkste onderscheidende factor van guestfish (en de libguestfs API in
algemeen) is de mogelijkheid om wijzigingen te automatiseren.

virt-redding(1) is een gratis manier om het libguestfs-apparaat op te starten en te maken
willekeurige wijzigingen aan uw VM. Het is niet gestructureerd, je kunt het niet automatiseren, maar om te maken
snelle ad-hocoplossingen voor uw gasten, het kan behoorlijk nuttig zijn.

Maar libguestfs heeft ook een "achterdeur" in het apparaat, waardoor u willekeurig berichten kunt verzenden
shell-opdrachten. Het is niet zo flexibel als virt-rescue, omdat je geen interactie kunt hebben met de
shell-opdrachten, maar hier is het toch:

> debug sh "cmd arg1 arg2 ..."

Merk op dat je dat zou moeten doen niet vertrouw hierop. Het kan in de toekomst worden verwijderd of gewijzigd. Als jouw
programma heeft enige bewerking nodig, voeg het in plaats daarvan toe aan de libguestfs API.

Wat is de transactie Met "gastvis -i"?
Waarom doet virt-kat Slechts werk on a vast VM beeld, maar virtuele-df Bedrijven on elke schijf afbeelding?
Wat doet "Nee wortel apparaat gevonden in dit werkzaam system afbeelding" gemiddelde?
Deze vragen hebben allemaal op een fundamenteel niveau met elkaar te maken, wat misschien niet meteen het geval is
voor de hand liggend.

Op de gastfs(3) Op API-niveau is een "schijfkopie" slechts een stapel partities en bestandssystemen.

Wanneer de virtuele machine daarentegen opstart, worden deze bestandssystemen in een consistent
hiërarchie zoals:

/ (/dev/sda2)

├── /bagageruimte (/dev/sda1)

├── / Home (/dev/vg_external/Huizen)

├── / usr (/dev/vg_os/lv_usr)

└── / var (/dev/vg_os/lv_var)

(of stationsletters in Windows).

De API ziet allereerst de schijfkopie op het niveau van de "stapel bestandssystemen". Maar het ook
heeft een manier om de schijfkopie te inspecteren om te zien of deze een besturingssysteem bevat, en hoe de
schijven worden gemount wanneer het besturingssysteem opstart: "INSPECTION" in gastfs(3).

Gebruikers verwachten dat sommige tools (zoals virt-kat(1)) om met VM-paden te werken:

virt-cat fedora.img /var/log/messages

Hoe weet virt-cat dat? / var is een aparte partitie? De truc is die virtuele kat
voert inspectie uit op de schijfkopie en gebruikt die om het pad correct te vertalen.

Sommige hulpmiddelen (incl virt-kat(1) virt-bewerken(1) virtuele-ls(1)) gebruik inspectie om VM in kaart te brengen
paden. Andere hulpmiddelen, zoals virtuele-df(1) en virt-bestandssystemen(1) opereren volledig op de
onbewerkte "grote stapel bestandssystemen" -niveau van de libguestfs API, en gebruik geen inspectie.

gastvis(1) bevindt zich in een interessante middenweg. Als u gebruik maakt van de -a en -m opdrachtregel
opties, dan moet je guestfish precies vertellen hoe schijfimages moeten worden toegevoegd en waar ze moeten worden gemount
partities. Dit is het onbewerkte API-niveau.

Als u gebruik maken van de -i optie voert libguestfs inspectie uit en koppelt de bestandssystemen daarvoor
je.

De foutmelding "geen root-apparaat gevonden in deze image van het besturingssysteem" houdt hiermee verband. Het
betekent dat de inspectie geen besturingssysteem kon vinden binnen de door u opgegeven schijfkopie
Het. Je zou dit kunnen zien bij programma's als virt-cat als je ze ergens op probeert uit te voeren
dat is slechts een schijfkopie, geen schijfkopie van een virtuele machine.

Wat do deze "debuggen*" en "intern-*" functies do?
Er zijn enkele functies die worden gebruikt voor foutopsporing en voor interne doeleinden niet
onderdeel van de stabiele API.

De functies "debug*" (of "guestfs_debug*"), voornamelijk "guestfs_debug" in gastfs(3) en
een handvol anderen worden gebruikt voor het debuggen van libguestfs. Ook al maken ze geen deel uit van de
stabiele API en kan dus op elk moment worden gewijzigd of verwijderd, sommige programma's willen deze mogelijk aanroepen
deze terwijl u wacht op de toevoeging van functies aan libguestfs.

De functies "internal-*" (of "guestfs_internal_*") zijn uitsluitend bedoeld voor gebruik door libguestfs
zelf. Er is geen reden voor programma's om ze aan te roepen, en programma's mogen ze niet proberen te gebruiken
hen. Het gebruik ervan zal er vaak voor zorgen dat er slechte dingen gebeuren, maar ook dat je er geen deel van uitmaakt
gedocumenteerde stabiele API.

DEVELOPERS


Waar do I sturen pleisters?
Stuur alstublieft patches naar de libguestfs mailinglijst
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
er zal een vertraging optreden totdat uw bericht handmatig wordt goedgekeurd.

Alstublieft niet . GitHub trek verzoeken - ze wil be genegeerd. De redenen zijn (a) wij willen
om patches op de mailinglijst te bespreken en te ontleden, en (b) github pull-verzoeken worden omgezet in
merge commits, maar we geven er de voorkeur aan om een ​​lineaire geschiedenis te hebben.

Hoe do I voorstellen a beschikken?
Grote nieuwe functies waaraan u wilt bijdragen, moeten op de mailinglijst worden besproken
eerst (https://www.redhat.com/mailman/listinfo/libguestfs). Dit voorkomt teleurstelling
en verspild werk als we denken dat de functie niet in het libguestfs-project zou passen.

Als u een nuttige functie wilt voorstellen, maar de code niet wilt schrijven, kunt u een
bug (zie "HULP KRIJGEN EN BUGS RAPPORTEREN") met "RFE: " aan het begin van de samenvatting
lijn.

Wie wel plegen naar libguestfs git?
Ongeveer 5 mensen hebben commit-toegang tot github. Patches moeten als eerste op de lijst worden geplaatst
en ACKed. Het beleid voor het ACKen en pushen van patches wordt hier uiteengezet:

https://www.redhat.com/archives/libguestfs/2012-January/msg00023.html

Kan I vork libguests?
Natuurlijk kan je dat. Git maakt het gemakkelijk om libguestfs te forken. Github maakt het nog eenvoudiger.
Het is leuk als je ons op de mailinglijst vertelt over vorken en de redenen daarvoor.

DIVERSE VRAGEN


Kan I controleren de leven schijf activiteit of a virtueel machine gebruik libguests?
Een veelvoorkomend verzoek is om libguestfs te kunnen gebruiken om de live schijfactiviteit van een
gast, om bijvoorbeeld een melding te krijgen telkens wanneer een gast een nieuw bestand maakt. Libguestfs
doet niet werken op de manier waarop sommige mensen zich voorstellen, zoals je kunt zien in dit diagram:

┌─────────────────────────────────────┐
│ monitoringprogramma met libguestfs │
└─────────────────────────────────────┘

┌───────────┐ ┌──────────────────────┐
│ live VM │ │ libguestfs-apparaat │
├───────────┤ ├──────────────────────┤
│ kernel (1)│ │ toestelkernel (2) │
└───────────┘ └──────────────────────┘
↓ ↓ (r/o-verbinding)
┌──────────────────────┐
| schijfkopie |
└──────────────────────┘

Dit scenario is veilig (zolang u de vlag "alleen-lezen" instelt bij het toevoegen van de schijf).
De kernel van het libguestfs-apparaat (2) ziet echter niet alle wijzigingen die op de schijf zijn aangebracht
beeld, om twee redenen:

i. De VM-kernel (1) kan gegevens in het geheugen cachen, zodat deze niet in de schijfkopie verschijnen.

ii. De libguestfs-apparaatkernel (2) verwacht niet dat de schijfkopie verandert
eronder, dus zijn eigen cache wordt niet op magische wijze bijgewerkt, zelfs niet als de VM-kernel (1)
werkt de schijfkopie bij.

De enige ondersteunde oplossing is om het gehele libguestfs-apparaat opnieuw op te starten wanneer u maar wilt
wilt kijken naar wijzigingen in de schijfkopie. Op API-niveau komt dat overeen met bellen
"guestfs_shutdown" gevolgd door "guestfs_launch", wat een zware operatie is (zie
ook guestfs-uitvoering(3)).

Er zijn enkele niet-ondersteunde hacks die u kunt proberen als het herstarten van het apparaat echt te moeilijk is
duur:

· Roep "guestfs_drop_caches (g, 3)" aan. Dit zorgt ervoor dat alle gegevens in de cache worden geholpen door libguestfs
apparaatkernel (2) moet worden weggegooid, dus deze gaat terug naar de schijfkopie.

Dit op zichzelf is echter niet voldoende, omdat qemu ook bepaalde gegevens in de cache opslaat. Jij
zal ook libguestfs moeten patchen om de "cache=onveilige" modus (opnieuw) in te schakelen. Zien:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Gebruik in plaats daarvan een tool zoals virt-bmap.

· Voer een agent in de gast uit.

Niets helpt als de gast meer fundamentele wijzigingen aanbrengt (bijvoorbeeld het verwijderen van bestandssystemen).
Voor dat soort dingen moet u het apparaat opnieuw opstarten.

(Merk op dat er een derde probleem is dat je nodig hebt om consistente snapshots te gebruiken om het echt te kunnen onderzoeken
live schijfimages, maar dat is een algemeen probleem bij het gebruik van libguestfs tegen elke live schijf
afbeelding.)

Gebruik guestfs-faq online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

Linux-commando's

Ad