EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

guestfs-faq - Online în cloud

Rulați guestfs-faq în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda guestfs-faq care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


guestfs-faq - libguestfs Întrebări frecvente (FAQ)

DESPRE NOI LIBGUESTFS


Ce is libguestfs?
libguestfs este o modalitate de a crea, accesa și modifica imagini de disc. Te poți uita în interiorul discului
imagini, modificați fișierele pe care le conțin, creați-le de la zero, redimensionați-le și multe altele
Mai Mult. Este util mai ales din scripturi și programe și din linia de comandă.

libguestfs este o bibliotecă C (de unde „lib-”) și un set de instrumente construit pe această bibliotecă și
legături pentru multe limbaje de programare comune.

Pentru mai multe informații despre ceea ce poate face libguestfs, citiți introducerea de pe pagina principală
(http://libguestfs.org).

Ce sunt il virtute instrumente?
Instrumente Virt (site web: http://virt-tools.org) sunt un întreg set de management al virtualizării
instrumente destinate administratorilor de sistem. Unele dintre ele provin de la libguestfs, altele de la
libvirt și multe altele din alte proiecte open source. Deci virt tools este un superset de
libguestfs. Cu toate acestea, libguestfs vine cu multe instrumente importante. Vedea
http://libguestfs.org pentru o listă completă.

Face libguestfs nevoie { libvirt / KVM / Roșu Pălărie / Fedora }?
Nu!

libvirt nu este o cerință pentru libguestfs.

libguestfs funcționează cu orice imagine de disc, inclusiv cu cele create în VMware, KVM, qemu,
VirtualBox, Xen și multe alte hipervizoare și cele pe care le-ați creat de la zero.

Red Hat sponsorizează (adică plătește) dezvoltarea libguestfs și un număr mare de altele deschise
proiecte sursă. Dar puteți rula libguestfs și instrumentele virt pe multe Linux diferite
distribuții și Mac OS X. Facem tot posibilul să acceptăm toate distribuțiile Linux ca fiind de primă clasă
cetăţenii. Unele instrumente virt au fost portate pe Windows.

Cum face libguestfs comparaţie la alte instrumente?
Raport kpartx
Libguestfs adoptă o abordare diferită de kpartx. kpartx are nevoie de root și se montează
sistemele de fișiere de pe nucleul gazdă (care poate fi nesigur - vezi guestfs-securitate(1)).
Libguestfs izolează nucleul dvs. gazdă de oaspeți, este mai flexibil, mai ușor de realizat scripturi,
acceptă LVM, nu necesită root, este izolat de alte procese și curăță
după sine. Libguestfs este mai mult decât acces la fișiere, deoarece îl puteți utiliza
creați imagini de la zero.

Raport vdfuse
vdfuse este ca kpartx, dar pentru imaginile VirtualBox. Vedeți comparația kpartx de mai sus.
Puteți folosi libguestfs pe fișierele de partiție expuse de vdfuse, deși nu este
necesar deoarece libguestfs poate accesa direct imaginile VirtualBox.

Raport qemu-nbd
NBD (Network Block Device) este un protocol pentru exportarea dispozitivelor bloc prin rețea.
qemu-nbd este un server NBD care poate gestiona orice format de disc acceptat de qemu (de exemplu, brut,
qcow2). Puteți folosi libguestfs și qemu-nbd sau nbdkit împreună pentru a accesa blocul
dispozitive prin rețea, de exemplu: „guestfish -a nbd://remote”

Raport montare sisteme de fișiere in il gazdă
Montarea sistemelor de fișiere invitate în gazdă este nesigură și ar trebui evitată complet
pentru oaspeții neîncrezători. Utilizați libguestfs pentru a oferi un strat de protecție împotriva
exploatările sistemului de fișiere. Vezi si guestmount(1).

Raport despărțit
Libguestfs acceptă LVM. Libguestfs folosește parted și oferă cele mai multe caracteristici parted
prin API-ul libguestfs.

PRIMII AJUTOR AND RAPORTAREA GANDACI


Cum do I ști ceea ce versiune Sunt folosind?
Cea mai simplă metodă este:

guestfish --versiune

Dezvoltarea Libguestfs are loc de-a lungul unei ramuri instabile și creăm periodic un
ramură stabilă la care backportăm patch-urile stabile. Pentru a afla mai multe, citiți „LIBGUESTFS
NUMERE DE VERSIUNE" în guestfs(3).

Cum poate să I obține Ajutor?
Ce discuții Listele or Chat camere sunt disponibil?
Dacă sunteți client Red Hat care utilizează Red Hat Enterprise Linux, vă rugăm să contactați
Suport Red Hat: http://redhat.com/support

Există o listă de corespondență, în principal pentru dezvoltare, dar și utilizatorii sunt bineveniți să întrebe
întrebări despre libguestfs și instrumentele virt:
https://www.redhat.com/mailman/listinfo/libguestfs

De asemenea, puteți vorbi cu noi pe canalul IRC „#libguestfs” pe FreeNode. Nu suntem mereu
în jur, așa că vă rugăm să rămâneți pe canal după ce v-ați pus întrebarea și cineva va reveni
pentru tine.

Pentru alte instrumente virt (nu cele furnizate cu libguestfs) există un instrument virtual general
lista de corespondență: https://www.redhat.com/mailman/listinfo/virt-tools-list

Cum do I raportează gandaci?
Vă rugăm să utilizați următorul link pentru a introduce o eroare în Bugzilla:

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

Includeți cât mai multe detalii posibil și o modalitate de a reproduce problema.

Includeți rezultatul complet al libguestfs-test-tool(1).

COMUNĂ PROBLEME


Vezi și „LIBGUESTFS GOTCHAS” în guestfs(3) pentru unele „înțelegeri” cu utilizarea libguestfs
API-ul.

"Ar putea nu aloca dinamic traducător tampon"
Această eroare obscure este de fapt un eșec SELinux. Trebuie să activați următoarele
boolean SELinux:

setsebool -P virt_use_execmem=on

Pentru mai multe informații, consultați https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"copil proces decedat neasteptat"
[Acest mesaj de eroare a fost schimbat în libguestfs 1.21.18 cu ceva mai explicativ.]

Această eroare indică faptul că qemu a eșuat sau că kernel-ul gazdă nu a putut porni. Pentru a ajunge mai departe
informații despre defecțiune, trebuie să rulați:

libguestfs-test-tool

Dacă, după folosirea acestuia, tot nu înțelegeți defecțiunea, contactați-ne (vezi anterior
secțiune).

libguestfs: eroare: nu poti găsi Orice potrivit libguestfs supermin, fixată or stil vechi aparat
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: mamă director nu găsit
supermin-helper: ext2: mamă director nu găsit
[Această problemă este remediată permanent în libguestfs ≥ 1.26.]

Dacă vedeți oricare dintre aceste erori pe Debian/Ubuntu, trebuie să rulați următoarea comandă:

sudo update-guestfs-appliance

"Permisiune negat" cand funcţionare libguestfs as rădăcină
Primiți o eroare de permisiune refuzată când deschideți o imagine de disc, chiar dacă rulați
libguestfs ca root.

Acest lucru este cauzat de libvirt și așa se întâmplă numai atunci când utilizați backend-ul libvirt. Când alergați
ca root, libvirt decide să ruleze dispozitivul qemu ca utilizator „qemu.qemu”. din pacate
aceasta înseamnă de obicei că qemu nu poate deschide imagini de disc, mai ales dacă acele imagini de disc sunt
sunt deținute de root sau sunt prezente în directoare care necesită acces root.

Există o eroare deschisă împotriva libvirt pentru a remedia acest lucru:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Puteți rezolva acest lucru prin una dintre următoarele metode:

· Comutați la backend direct:

export LIBGUESTFS_BACKEND=direct

· Nu rulați libguestfs ca root.

· Modificați imaginea discului și orice directoare părinte, astfel încât utilizatorul qemu să le poată accesa.

· Editare (Urâtă). /etc/libvirt/qemu.conf și modificați setarea „utilizator”.

execl: /init: permisiune negat
Notă: Dacă această eroare se întâmplă atunci când utilizați un pachet de distribuție libguestfs (de ex. de la
Fedora, Debian, etc) apoi depuneți o eroare împotriva distribuției. Aceasta nu este o eroare care
utilizatorii normali ar trebui să vadă vreodată dacă pachetul de distribuție a fost pregătit corect.

Această eroare apare în timpul fazei de pornire supermin a dispozitivului:

supermin: montarea rădăcină nouă pe / Rădăcină
supermin: chroot
execl: /init: Permisiune refuzată
supermin: depanare: director de listare /
[...urmat de o mulțime de rezultate de depanare...]

Acesta este un bug complicat legat de supermin(1) aparate. Aparatul este construit
prin copierea fișierelor precum / bin / bash și multe biblioteci de la gazdă. Fișierul „fișiere gazdă”
listează fișierele care ar trebui copiate de pe gazdă în dispozitiv. Dacă unele fișiere
nu există pe gazdă, atunci acestea sunt pierdute, dar dacă aceste fișiere sunt necesare în ordine
a (de ex.) alerga / bin / bash atunci vei vedea eroarea de mai sus.

Diagnosticarea problemei presupune studierea bibliotecilor necesare / bin / bash, adică:

ldd / bin / bash

comparând asta cu „fișierele gazdă”, cu fișierele disponibile efectiv în sistemul de fișiere gazdă,
și cu rezultatul de depanare imprimat în mesajul de eroare. Odată ce ați stabilit ce fișier
lipsește, instalați acel fișier folosind managerul de pachete și încercați din nou.

De asemenea, ar trebui să verificați fișierele precum /init și / bin / bash (în aparat) sunt
executabil. Ieșirea de depanare arată modurile fișierelor.

DESCĂRCAREA, INSTALARE, COMPILARE LIBGUESTFS


Unde poate să I obține il Ultimele binare pentru ...?
Fedora ≥ 11
Utilizare:

yum instalează '*guestf*'

Pentru cele mai recente versiuni, consultați:
http://koji.fedoraproject.org/koji/packageinfo?packageID=8391

Red Hat Enterprise Linux
rhel 5
Versiunea livrată în RHEL 5 oficial este foarte veche și nu trebuie folosită decât
împreună cu virt-v2v. Utilizați pachetul actualizat libguestfs 1.20 în EPEL
5: https://fedoraproject.org/wiki/EPEL

rhel 6
rhel 7
Face parte din instalarea implicită. Pe RHEL 6 și 7 (doar) trebuie să instalați
„libguestfs-winsupport” pentru a obține asistență pentru oaspeți Windows.

Debian și Ubuntu
Pentru libguestfs < 1.26, după instalarea libguestfs trebuie să faceți:

sudo update-guestfs-appliance

(Acest script a fost eliminat pe Debian/Ubuntu cu libguestfs ≥ 1.26 și, în schimb,
aparatul este construit la cerere.)

Numai pe Ubuntu:

sudo chmod 0644 /boot/vmlinuz*

Poate fi necesar să vă adăugați în grupul „kvm”:

sudo usermod -a -G kvm yourlogin

Debian Squeeze (6)
Hilko Bengen a construit libguestfs în backport-uri squeeze:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports

Debian Wheezy și mai târziu (7+)
Hilko Bengen acceptă libguestfs pe Debian. Pachetele oficiale Debian sunt
disponibil: http://packages.debian.org/search?keywords=libguestfs

Ubuntu
Nu avem un întreținător Ubuntu cu normă întreagă și pachetele furnizate de
Canonice (care sunt în afara controlului nostru) sunt uneori rupte.

Canonical a decis să schimbe permisiunile pe nucleu, astfel încât să nu fie
lizibil cu excepția rădăcinilor. Este complet stupid, dar nu o vor schimba
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Deci fiecare utilizator
ar trebui sa faca asta:

sudo chmod 0644 /boot/vmlinuz*

Ubuntu 12.04
libguestfs în această versiune de Ubuntu funcționează, dar trebuie să actualizați febootstrap
și seabios la cele mai recente versiuni.

Aveți nevoie de febootstrap ≥ 3.14-2 de la:
http://packages.ubuntu.com/precise/febootstrap

După instalarea sau actualizarea febootstrap, reconstruiți dispozitivul:

sudo update-guestfs-appliance

Aveți nevoie de seabios ≥ 0.6.2-0ubuntu2.1 sau ≥ 0.6.2-0ubuntu3 de la:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

De asemenea, trebuie să faceți (vezi mai sus):

sudo chmod 0644 /boot/vmlinuz*

Gentoo
Libguestfs a fost adăugat la Gentoo în 2012-07 de Andreis Vinogradovs (libguestfs) și
Maxim Koltsov (în principal stup). Do:

emerge libguestfs

ELVEŢIA
Libguestfs a fost adăugat la SuSE în 2012 de Olaf Hering.

ArchLinux
Libguestfs a fost adăugat la AUR în 2010.

Altă distribuție Linux
Compilați din sursă (secțiunea următoare).

Altă distribuție non-Linux
Va trebui să compilați din sursă și să-l portați.

Cum poate să I compila și instala libguestfs din sursă?
Puteți compila libguestfs din git sau dintr-un tarball sursă. Citiți fișierul README înainte
pornire.

Git: https://github.com/libguestfs/libguestfs Sursa tarball-uri:
http://libguestfs.org/download

Nu rulați „make install”! Folosește "./ alerga", în schimb (consultați README).

Cum poate să I compila și instala libguestfs if my distro nu avea nou suficient de
qemu/supermin/kernel?
Libguestfs are nevoie de supermin 5. Dacă supermin 5 nu a fost portat în distribuția dvs., vedeți
intrebarea de mai jos.

Mai întâi compilați qemu, supermin și/sau nucleul din sursă. Tu faci nu trebuie să „facem
instalați"-le.

În directorul sursă libguestfs, creați două fișiere. „localconfigure” ar trebui să conțină:

sursa localenv
#export PATH=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --prefix / usr „$@”

Faceți „localconfigure” executabil.

„localenv” ar trebui să conțină:

#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

Anulați comentariile și ajustați aceste rânduri după cum este necesar pentru a utiliza programele alternative pe care le aveți
compilat.

Folosiți „./localconfigure” în loc de „./configure”, dar altfel compilați libguestfs ca
ca de obicei.

Nu rulați „make install”! Folosește "./ alerga", în schimb (consultați README).

Cum poate să I compila și instala libguestfs fără supermin?
Dacă supermin 5 acceptă distribuția ta, dar se întâmplă să nu ai un supermin suficient de nou
instalat, apoi vedeți întrebarea anterioară.

Dacă supermin 5 nu vă acceptă deloc distro, va trebui să utilizați „fixed
metoda dispozitivului" în care utilizați un dispozitiv binar pre-compilat. Pentru a construi libguestfs
fără supermin, trebuie să transmiteți „--disable-appliance --disable-daemon” la oricare
./autogen.sh or . / Configurare (depinde dacă construiți, respectiv, din git sau
din tarballs). Apoi, când utilizați libguestfs, dvs trebuie sa setați „LIBGUESTFS_PATH”
variabilă de mediu în directorul unui dispozitiv pre-compilat, așa cum este descris și în
„APARAT FIX” în guestfs(3).

Pentru dispozitivele pre-compilate, consultați și: http://libguestfs.org/download/binaries/appliance/.

Patch-urile pentru a porta supermin la mai multe distribuții Linux sunt binevenite.

Cum poate să I adăuga a sustine pentru sVirt?
notițe pentru Fedora/RHEL utilizatori: Această configurație este implicită, începând cu Fedora 18 și
RHEL 7. Dacă găsiți probleme, vă rugăm să ne anunțați sau să trimiteți o eroare.

SVirt furnizează un dispozitiv întărit folosind SELinux, făcându-l foarte greu pentru un disc necinstit
imagine pentru a „scăpa” din izolarea libguestfs și a deteriora gazda (este corect să spunem
că chiar și în libguestfs standard acest lucru ar fi greu, dar sVirt oferă un strat suplimentar de
protecție pentru gazdă și, mai important, protejează mașinile virtuale de pe aceeași gazdă
unul de altul).

În prezent, pentru a activa sVirt, veți avea nevoie de libvirt ≥ 0.10.2 (de preferință 1.0 sau o versiune ulterioară),
libguestfs ≥ 1.20 și politicile SELinux de la Fedora recentă. Dacă nu alergi
Fedora 18+, va trebui să faceți modificări în politica dvs. SELinux - contactați-ne la
lista de discuții.

Odată ce aveți cerințele, faceți:

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

Setați SELinux în modul de aplicare și sVirt ar trebui să fie utilizat automat.

Toate, sau aproape toate, caracteristicile libguestfs ar trebui să funcționeze sub sVirt. Există unul cunoscut
neajuns: virt-salvare(1) nu va folosi libvirt (deci sVirt), dar revine la direct
lansarea qemu. Deci, în prezent, nu veți beneficia de protecția sVirt atunci când utilizați
virt-salvare.

Puteți verifica dacă sVirt este utilizat activând înregistrarea libvirtd (vezi
/etc/libvirt/libvirtd.log), uciderea și repornirea libvirtd și verificarea fișierelor jurnal
pentru mesajele „Setarea contextului SELinux pe...”.

În teorie, sVirt ar trebui să accepte AppArmor, dar nu am încercat. Aproape va fi
cu siguranță necesită corecția libvirt și scrierea unei politici AppArmor.

Libguestfs are a într-adevăr lung listă of dependențe!
Biblioteca de bază nu depinde de foarte mult, dar există trei cauze ale listei lungi
a altor dependențe:

1. Libguestfs trebuie să poată citi și edita multe formate diferite de disc. De exemplu,
Suportul XFS necesită instrumente XFS.

2. Există legături de limbă pentru multe limbi diferite, toate necesitând propria lor
instrumente de dezvoltare. Toate legăturile de limbă (cu excepția C) sunt opționale.

3. Există câteva caracteristici opționale ale bibliotecii care pot fi dezactivate.

Deoarece libguestfs ≥ 1.26, este posibil să împărțiți dependențele dispozitivului (articolul 1 din
lista de mai sus) și astfel au (de exemplu) „libguestfs-xfs” ca subpachet separat pentru
procesarea imaginilor de disc XFS. Îi încurajăm pe ambalatori din aval să înceapă împărțirea bazei
pachetul libguestfs în subpachete mai mici.

Erori în timpul lansa on Fedora 18, RHEL 7
În Fedora ≥ 18 și RHEL ≥ 7, libguestfs folosește libvirt pentru a gestiona dispozitivul. Anterior
(și în amonte) libguestfs rulează direct qemu:

┌───────────────────────────────────
│ libguestfs │
├────────────────┬───────────────────
│ backend direct │ backend libvirt │
└────────────────┴──────────────────
↓ ↓
┌───────┐ ┌──────────┐
│ qemu │ │ libvirtd │
└───────┘ └──────────┘

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

în amonte Fedora 18+
non-Fedora RHEL 7+
non-RHEL

Backend-ul libvirt este mai sofisticat, acceptând SELinux/sVirt (vezi mai sus),
hotplugging și multe altele. Este, totuși, mai complex și deci mai puțin robust.

Dacă aveți probleme cu permisiunile folosind backend-ul libvirt, puteți trece la direct
backend prin setarea acestei variabile de mediu:

export LIBGUESTFS_BACKEND=direct

înainte de a rula orice program libguestfs sau instrument virt.

Cum poate să I comuta la a fixată / precompilate aparat?
Acest lucru poate îmbunătăți stabilitatea și performanța libguestfs pe Fedora și RHEL.

În orice moment după instalarea libguestfs, rulați următoarele comenzi ca root:

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

Acum setați următoarea variabilă de mediu înainte de a utiliza libguestfs sau orice instrument virt:

exportați LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance

Desigur, puteți schimba calea către orice director doriți. Puteți partaja aparatul
pe mașini care au aceeași arhitectură (de exemplu, toate x86-64), dar rețineți că libvirt
vă va împiedica să partajați dispozitivul prin NFS din cauza problemelor de permisiuni (deci
fie treceți la backend direct sau nu utilizați NFS).

Cum poate să I viteză up libguestfs construiește?
De departe cel mai important lucru pe care îl puteți face este să instalați și să configurați corect Squid.
Rețineți că configurația implicită livrată cu Squid este o mizerie, așa că configurarea este
nu optional.

Un loc foarte bun pentru a începe cu configurația Squid este aici:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Asigurați-vă că Squid rulează și că variabilele de mediu $http_proxy și $ftp_proxy
arata spre ea.

Cu Squid în funcțiune și configurat corect, versiunile de aparate ar trebui reduse la câteva
minute.

Cum poate să I viteză up libguestfs construiește (Debian)?

Hilko Bengen sugerează utilizarea „aprox”, care este un proxy de arhivă Debian
(http://packages.debian.org/approx). Acest instrument este documentat pe Debian în aproximativ(8)
pagina de manual.

VITEZĂ, DISC SPACE FOLOSIT BY LIBGUESTFS


Notă: Majoritatea informațiilor din această secțiune au fost mutate: guestfs-performanță(1).

Încărcați or scrie părea foarte încet.
Dacă discul de bază nu este alocat complet (de exemplu, sparse raw sau qcow2), atunci scrierile pot fi
lent, deoarece sistemul de operare gazdă trebuie să facă alocări costisitoare de disc în timp ce sunteți
scris. Soluția este să folosiți în schimb un format complet alocat, de exemplu. crud non-rare, sau
qcow2 cu opțiunea „preallocation=metadata”.

Libguestfs utilizări de asemenea mult disc spaţiu!
libguestfs memorează în cache un dispozitiv mare în:

/var/tmp/.guestfs-

Dacă este definită variabila de mediu „TMPDIR”, atunci $TMPDIR/.guestfs- este utilizat
in schimb.

Este sigur să ștergeți acest director atunci când nu utilizați libguestfs.

virt-sparsify pare la face il imagine creşte la il Complet mărimea of il virtual disc
Dacă intrarea către virt-sparsify(1) este brut, atunci rezultatul va fi brut rare. A te asigura
Măsurați rezultatul cu un instrument care înțelege rară, cum ar fi „du -sh”.
Poate face o mare diferență:

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

(Comparați dimensiunea aparentă 100M față de dimensiunea reală 3.6M)

Dacă toate acestea vă încurcă, utilizați un format de ieșire non-rare specificând codul --convertit
opțiune, de exemplu:

virt-sparsify --convert qcow2 disc.raw disk.qcow2

De ce nu virt-redimensionare muncă on il disc imagine la loc?
Redimensionarea unei imagini de disc este foarte dificilă -- mai ales asigurându-vă că nu pierdeți date sau
sparge bootloader-ul. Metoda actuală creează efectiv o nouă imagine de disc și o copie
datele plus bootloader-ul de pe cel vechi. Dacă ceva nu merge bine, poți oricând să pleci
înapoi la original.

Dacă ar fi să facem ca virt-resize să funcționeze în loc, atunci ar trebui să existe limitări: pentru
de exemplu, nu vi s-ar permite să mutați partițiile existente (pentru că mutați datele peste
același disc este cel mai probabil să corupă datele în cazul unei căderi de curent sau al unui accident),
și LVM ar fi foarte greu de susținut (din cauza mapării aproape arbitrare
între conținutul LV și blocurile de disc subiacente).

O altă metodă pe care am luat-o în considerare este să plasăm un instantaneu peste imaginea originală a discului, deci
că datele originale sunt neatinse și numai diferențele sunt înregistrate în instantaneu.
Puteți face asta astăzi folosind „qemu-img create” + „virt-resize”, dar qemu în prezent nu este
suficient de inteligent pentru a recunoaște când același bloc este scris înapoi în instantaneu ca deja
există în discul de rezervă, așa că veți descoperi că acest lucru nu vă economisește spațiu sau timp.

În rezumat, aceasta este o problemă grea și ceea ce avem acum funcționează în mare parte, așa că suntem reticenți
s-o schimb.

De ce nu virt-sparsify muncă on il disc imagine la loc?
În libguestfs ≥ 1.26, virt-sparsify poate funcționa acum pe imaginile de pe disc. Utilizare:

virt-sparsify --in-place disk.img

Dar mai întâi ar trebui să citiți „SPARIFICAREA ÎN LOCAL” în virt-sparsify(1).

PROBLEME DESCHIDERE DISC IMAGINI


Îndepărtat libvirt oaspeți nu poti be deschis.
Deschiderea de la distanță a invitaților libvirt nu este acceptată în acest moment. De exemplu, acest lucru nu va funcționa:

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

Pentru a deschide discuri la distanță, trebuie să le exportați cumva, apoi să vă conectați la export. Pentru
exemplu dacă ați decis să utilizați NBD:

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

Alte posibilități includ ssh (dacă qemu este suficient de recent), NFS sau iSCSI. Consultați „TELECOMANDĂ
DEPOZITARE" în guestfs(3).

Cum poate să I deschide acest ciudat disc sursă?
Aveți o imagine de disc situată în interiorul unui alt sistem care necesită acces printr-o bibliotecă /
HTTP / REST / API proprietar sau este comprimat sau arhivat într-un fel. (Un exemplu
ar fi accesul de la distanță la imaginile cu privire la OpenStack fără a le descărca efectiv.)

Avem un proiect partener numit nbdkit (https://github.com/libguestfs/nbdkit). Acest
proiect vă permite să transformați orice sursă de disc într-un server NBD. Libguestfs poate accesa NBD
servere direct, de exemplu:

guestfish -a nbd://remote

nbdkit are licență liberală, așa că îl puteți conecta la sau include în bibliotecile proprietare
și cod. Are, de asemenea, un plugin API simplu și stabil, astfel încât să puteți scrie cu ușurință pluginuri
API-ul care va continua să funcționeze în viitor.

Eroare de deschidere VMDK discuri: „utilizări a vmdk trăsătură care is nu sprijinite by acest whoa versiune:
VMDK versiune 3"
Qemu (și, prin urmare, libguestfs) acceptă doar anumite imagini de disc VMDK. Alții nu vor funcționa,
dând aceasta sau erori similare.

În mod ideal, cineva ar repara qemu pentru a suporta cele mai recente caracteristici VMDK, dar între timp
ai trei variante:

1. Dacă oaspetele este găzduit pe un server ESX live accesibil, atunci localizați și descărcați
imagine de disc numită somename-flat.vmdk. În ciuda numelui, aceasta este o imagine de disc brută și
poate fi deschis de orice.

Dacă aveți o versiune destul de recentă de qemu și libguestfs, atunci este posibil să o puteți
accesați această imagine de disc de la distanță folosind fie HTTPS, fie ssh. Consultați „STOCARE LA DISTANȚĂ” în
guestfs(3).

2. Utilizați instrumentul proprietar vdiskmanager al VMware pentru a converti imaginea în format brut.

3. Utilizați nbdkit cu pluginul proprietar VDDK pentru a exporta în direct imaginea discului ca NBD
sursă. Acest lucru ar trebui să vă permită să citiți și să scrieți fișierul VMDK.

UFS discuri (la fel de utilizat by BSD) nu poti be deschis.
Formatul sistemului de fișiere UFS are multe variante, iar acestea nu se autoidentifică. The
Nucleul Linux trebuie să i se spună ce variantă de UFS trebuie să folosească, ceea ce libguestfs nu poate
știu.

Trebuie să treceți opțiunea corectă de montare „ufstype” atunci când montați aceste sisteme de fișiere.

Consultați https://www.kernel.org/doc/Documentation/filesystems/ufs.txt

ferestre din refs
Windows ReFS este copia Microsoft ZFS/Btrfs. Acest sistem de fișiere nu a fost încă invers
proiectat și implementat în nucleul Linux și, prin urmare, libguestfs nu acceptă
aceasta. Momentan pare a fi foarte rar „în sălbăticie”.

Non-ASCII caractere nu face apărea on VFAT sisteme de fișiere.
Simptome tipice ale acestei probleme:

· Primiți o eroare când creați un fișier în care numele fișierului conține non-ASCII
caractere, în special caractere care nu sunt pe 8 biți din limbi asiatice (chineză, japoneză,
etc). Sistemul de fișiere este VFAT.

· Când listați un director dintr-un sistem de fișiere VFAT, numele fișierelor apar ca semne de întrebare.

Acesta este un defect de design al sistemului GNU/Linux.

VFAT stochează nume lungi de fișiere ca caractere UTF-16. La deschiderea sau returnarea numelor de fișiere, fișierul
Nucleul Linux trebuie să le traducă într-o formă de șir de 8 biți. UTF-8 ar fi
alegere evidentă, cu excepția utilizatorilor Linux care persistă în utilizarea localităților non-UTF-8 (ale utilizatorului
locale nu este cunoscută de kernel deoarece este o funcție a libc).

Prin urmare, trebuie să spuneți nucleului ce traducere doriți să faceți atunci când montați
Sistemul de fișiere. Cele două metode sunt parametrul „iocharset” (care nu este relevant pentru
libguestfs) și steag-ul „utf8”.

Deci, pentru a utiliza un sistem de fișiere VFAT, trebuie să adăugați indicatorul „utf8” la montare. Din peștele oaspete,
utilizați:

> opțiuni de montare utf8 /dev/sda1 /

sau pe linia de comandă guestfish:

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

sau din API:

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

Nucleul va traduce apoi numele fișierelor în și de la șiruri UTF-8.

Am luat în considerare adăugarea acestei opțiuni de montare în mod transparent, dar, din păcate, există mai multe
probleme în a face asta:

· Pe unele sisteme Linux, opțiunea de montare „utf8” nu funcționează. Noi nu exact
înțelegeți ce sisteme sau de ce, dar acest lucru a fost raportat în mod fiabil de un utilizator.

· V-ar împiedica să utilizați parametrul „iocharset” deoarece este incompatibil
cu „utf8”. Probabil că nu este o idee bună să folosim acest parametru, dar nu vrem
pentru a o preveni.

Non-ASCII caractere apărea as sublinia (_) on ISO9660 sisteme de fișiere.
Sistemul de fișiere nu a fost pregătit corect cu mkisofs sau genisoimage. Asigurați-vă că
sistemul de fișiere a fost creat folosind extensiile Joliet și/sau Rock Ridge. libguestfs nu
necesită orice opțiuni speciale de montare pentru a gestiona sistemul de fișiere.

Nu poti deschide ferestre din oaspeți care utilizare NTFS
Vedeți erori precum:

mount: tip sistem de fișiere necunoscut „ntfs”

Pe Red Hat Enterprise Linux sau CentOS, trebuie să instalați libguestfs-winsupport
pachet.

Nu poti deschide or inspecta RHEL 7 vizitatori.
Nu poti deschide Linux oaspeți care utilizare XFS.
Oaspeții RHEL 7 și orice alți invitați care folosesc XFS pot fi deschiși de libguestfs, dar tu
trebuie să instalați pachetul „libguestfs-xfs”.

UTILIZAREA LIBGUESTFS IN TA PROPRIE PROGRAME


API are sute of metode, Unde do I start?
Vă recomandăm să începeți prin a citi prezentarea generală a API: „PRINCIPALA GENERALĂ API” în guestfs(3).

Deși prezentarea generală API acoperă API-ul C, merită totuși citită chiar dacă sunteți
voi folosi un alt limbaj de programare, pentru că API-ul este același, doar cu simplu
modificări logice ale numelor apelurilor:

C guestfs_ln_sf (g, target, linkname);
Python g.ln_sf (țintă, nume link);
OCaml g#ln_sf nume link-ul țintă;
Perl $g->ln_sf (țintă, nume link);
Shell (guestfish) ln-sf țintă nume link
PHP guestfs_ln_sf ($g, $target, $linkname);

Odată ce vă familiarizați cu prezentarea generală a API-ului, ar trebui să vă uitați la această listă de pornire
puncte pentru alte legături de limbă: „UTILIZARE LIBGUESTFS CU ALTE LIMBI DE PROGRAMARE” în
guestfs(3).

Putea I utilizare libguestfs in my proprietate / închis sursă / comercial program?
În general, da. Totuși, acesta nu este un sfat juridic - citiți licența care vine cu
libguestfs, iar dacă aveți întrebări specifice, contactați un avocat.

În arborele sursă licența se află în fișierul „COPYING.LIB” (LGPLv2+ pentru bibliotecă și
legături) și „COPIERE” (GPLv2+ pentru programele independente).

DEBUGARE LIBGUESTFS


Ajutor, este nu lucru!
Dacă niciun program libguestfs nu pare să funcționeze, rulați programul de mai jos și lipiți
complet, ne-editat ieșiți într-un e-mail către „libguestfs” @ „redhat.com”:

libguestfs-test-tool

Dacă o anumită operațiune eșuează, furnizați toate informațiile din această listă de verificare, într-un e-mail
la „libguestfs” @ „redhat.com”:

1. Ce încerci să faci?

2. Ce comenzi exacte ați executat?

3. Care a fost eroarea exactă sau rezultatul acestor comenzi?

4. Activați depanarea, executați din nou comenzile și capturați Completă ieșire. Do nu
edita il ieșire.

exportați LIBGUESTFS_DEBUG=1
exportați LIBGUESTFS_TRACE=1

5. Includeți versiunea libguestfs, versiunea sistemului de operare și modul în care ați instalat
libguestfs (de exemplu, din sursă, „yum install”, etc.)

Cum do I depana cand folosind Orice libguestfs program or instrument (de exemplu. virt-v2v or virt-df)?
Există două variabile de mediu „LIBGUESTFS_*” pe care le puteți seta pentru a obține mai multe
informații de la libguestfs.

„LIBGUESTFS_TRACE”
Setați acest lucru la 1 și libguestfs va tipări fiecare comandă / apel API într-un format care
este similar cu comenzile guestfish.

„LIBGUESTFS_DEBUG”
Setați acest lucru la 1 pentru a activa cantități masive de mesaje de depanare. Daca tu crezi
există o problemă în interiorul aplicației libguestfs, atunci ar trebui să utilizați aceasta
opțiune.

Pentru a seta acestea din shell, faceți acest lucru înainte de a rula programul:

exportați LIBGUESTFS_TRACE=1
exportați LIBGUESTFS_DEBUG=1

Pentru csh/tcsh comenzile echivalente ar fi:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Pentru mai multe informații, consultați: „VARIABILE DE MEDIU” în guestfs(3).

Cum do I depana cand folosind pește oaspete?
Puteți utiliza aceleași variabile de mediu de mai sus. Alternativ, utilizați opțiunile de pește oaspete
-x (pentru a urmări comenzile) sau -v (pentru a obține rezultatul complet de depanare) sau ambele.

Pentru informații suplimentare, consultați: pește oaspete(1).

Cum do I depana cand folosind il API?
Apelați „guestfs_set_trace” în guestfs(3) pentru a activa urmele comenzilor și/sau
„guestfs_set_verbose” în guestfs(3) pentru a activa mesajele de depanare.

Pentru cele mai bune rezultate, apelați aceste funcții cât mai devreme posibil, imediat după crearea
guestfs se ocupă dacă poți și cu siguranță înainte de a apela lansarea.

Cum do I captura depana producție și pune it în my logare sistem?
Utilizați API-ul evenimentului. Pentru exemple, consultați: „SETAREA APELURILOR INTRODUCERE PENTRU A TRATA EVENIMENTE” în guestfs(3)
si exemple/debug-logging.c program în sursele libguestfs.

Săpat Mai adânc în il aparat porni proces.
Activați depanarea și apoi citiți această documentație despre procesul de pornire a dispozitivului:
guestfs-interni(1).

libguestfs atîrnă or eșuează în timpul rulează/lansează.
Activați depanarea și uitați-vă la rezultatul complet. Dacă nu poți înțelege ce se întâmplă,
depuneți un raport de eroare, inclusiv Completă ieșire din libguestfs-test-tool(1).

Depanarea libvirt
Dacă utilizați backend-ul libvirt și libvirt eșuează, atunci puteți activa
depanare prin editare /etc/libvirt/libvirtd.conf.

Dacă rulați ca non-root, atunci trebuie să editați un alt fișier. Crea
~/.config/libvirt/libvirtd.conf conținând:

log_level=1
log_outputs="1:file:/tmp/libvirtd.log"

Omorâți orice sesiune (non-root) libvirtd care rulează și data viitoare când rulați libguestfs
comandă, ar trebui să vedeți o cantitate mare de informații utile de depanare din libvirtd în
/tmp/libvirtd.log

DESIGN/INTERNE OF LIBGUESTFS


Vezi si guestfs-interni(1).

De ce nu face tu do tot prin il FUSE / Sistemul de fișiere interfață?
Oferim o comandă numită guestmount(1) care vă permite să montați sisteme de fișiere invitați pe
gazdă. Acesta este implementat ca un modul FUSE. De ce nu punem în aplicare tot
libguestfs folosind acest mecanism, în loc să aibă API-ul mare și destul de complicat?

Motivele sunt duble. În primul rând, libguestfs oferă apeluri API pentru a face lucruri precum
crearea și ștergerea partițiilor și volumelor logice, care nu se încadrează într-un sistem de fișiere
modeleaza foarte usor. Sau, mai degrabă, le puteți încadra în: de exemplu, crearea unei partiții
ar putea fi mapat la „mkdir /fs/hda1”, dar apoi ar trebui să specificați o metodă de a alege
dimensiunea partiției (poate „echo 100M > /fs/hda1/.size”) și tipul partiției,
pornirea și sfârșitul sectoarelor etc., dar odată ce ați făcut asta, API-ul bazat pe sistemul de fișiere începe să
arată mai complicat decât API-ul bazat pe apeluri pe care îl avem în prezent.

Al doilea motiv este pentru eficiență. FUSE în sine este rezonabil de eficient, dar o face
efectuați o mulțime de apeluri mici și independente în modulul FUSE. În guestmount acestea trebuie să
să fie tradus în mesaje către dispozitivul libguestfs care are o mare suprasarcină (în timp
și călătorii dus-întors). De exemplu, citirea unui fișier în bucăți de 64 KB este ineficientă, deoarece fiecare
bucată s-ar transforma într-o singură călătorie dus-întors. În API-ul libguestfs este mult mai mult
eficient pentru a descărca un întreg fișier sau director printr-unul dintre apelurile de streaming, cum ar fi
„guestfs_download” sau „guestfs_tar_out”.

De ce nu face tu do tot prin GVFS?
Problemele sunt similare cu problemele cu FUSE.

GVFS este o abstractizare mai bună decât POSIX/FUSE. Există un backend FTP pentru GVFS, adică
încurajator deoarece FTP este similar conceptual cu API-ul libguestfs. Cu toate acestea, GVFS
Backend-ul FTP realizează mai multe conexiuni simultane pentru a menține interactivitatea, ceea ce
nu ne putem descurca cu libguestfs.

De ce poate să I scrie la il disc, chiar deşi I adăugat it numai pentru citire?
De ce face "--ro" apărea la avea Nu. efect?
Când adăugați un disc doar pentru citire, libguestfs plasează o suprapunere care poate fi scrisă deasupra discului
discul de bază. Scrierile intră în această suprapunere și sunt aruncate atunci când mânerul este închis
(sau ieșiri „pește oaspete” etc.).

Există două motive pentru a proceda astfel: în primul rând, nu sunt posibile discuri doar pentru citire
multe cazuri (de exemplu, IDE pur și simplu nu le acceptă, așa că nu ați putea avea un IDE emulat
disc doar pentru citire, deși acest lucru nu este obișnuit în instalările reale libguestfs).

În al doilea rând și mai important, chiar dacă ar fi posibile discuri doar pentru citire, nu ai vrea
lor. Montarea oricărui sistem de fișiere care are un jurnal, chiar și „mount -o ro”, provoacă scrieri în
sistemul de fișiere deoarece jurnalul trebuie reluat și metadatele actualizate. Dacă discul
a fost cu adevărat doar pentru citire, nu ați putea monta un sistem de fișiere murdar.

Pentru a o face utilizabilă, creăm suprapunerea ca loc pentru a stoca temporar aceste scrieri și
apoi îl aruncăm după aceea. Acest lucru asigură că discul de bază este întotdeauna neatins.

Rețineți, de asemenea, că există un test de regresie pentru aceasta la construirea libguestfs (în
„teste/qemu”). Acesta este unul dintre motivele pentru care este important ca pachetele să ruleze suita de teste.

Face "--ro" face toate discuri numai pentru citire?
Nu! Opțiunea „--ro” afectează doar discurile adăugate pe linia de comandă, adică. folosind „-a” și
opțiunile „-d”.

În guestfish, dacă utilizați comanda „add”, atunci discul este adăugat citire-scriere (cu excepția cazului în care dvs
specificați indicatorul „readonly:true” în mod explicit cu comanda).

Putea I utilizare „peste oaspete --ro" as a mod la de rezervă my virtual mașini?
De obicei asta este nu o idee buna. La întrebare se răspunde mai detaliat în acest mail
postare pe listă: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Vezi și următoarea întrebare.

De ce nu se poate I alerga fsck on a trăi Sistemul de fișiere folosind „peste oaspete --ro"?
Această comandă va de obicei nu muncă:

guestfish --ro -a /dev/vg/my_root_fs run: fsck /dev/sda

Motivul pentru aceasta este că qemu creează un instantaneu peste sistemul de fișiere original, dar acesta
nu creează un instantaneu strict punct-in-time. Blocuri de date pe baza
sistemele de fișiere sunt citite de qemu în momente diferite pe măsură ce operațiunea fsck progresează, cu gazdă
scrie între ele. Rezultatul este că fsck vede corupție masivă (imaginară, nu reală!)
și eșuează.

Ceea ce trebuie să faceți este să creați un instantaneu punct în timp. Dacă este un volum logic, utilizați
un instantaneu LVM2. Dacă sistemul de fișiere este localizat în ceva de genul unui fișier btrfs/ZFS,
utilizați un instantaneu btrfs/ZFS, apoi rulați fsck pe instantaneu. În practică, nu
trebuie să folosiți libguestfs pentru asta -- doar rulați /sbin/fsck direct.

Crearea de instantanee punctuale ale dispozitivelor și fișierelor gazdă este în afara domeniului de aplicare al
libguestfs, deși libguestfs poate opera pe ele odată ce sunt create.

Ceea ce este il diferenţă între pește oaspete și virt-salvare?
Mulți oameni sunt confuzi de cele două instrumente superficial similare pe care le oferim:

$ guestfish --ro -a guest.img
> alerga
> fsck /dev/sda1

$ virt-rescue --ro guest.img
> /sbin/fsck / dev / sda1

Și întrebarea conexă care apare apoi este de ce nu puteți introduce comenzi complete de shell
cu toate --opțiunile din guestfish (dar puteți în virt-salvare(1)).

pește oaspete(1) este un program care oferă acces structurat la guestfs(3) API. S-a întâmplat
să fie și un shell interactiv frumos, dar scopul său principal este accesul structurat din
scripturi shell. Gândiți-vă la asta mai degrabă ca la o legătură de limbaj, cum ar fi Python și alte legături,
dar pentru coajă. Factorul cheie de diferențiere al guestfish (și API-ul libguestfs în
general) este capacitatea de a automatiza modificări.

virt-salvare(1) este o modalitate gratuită de a porni și de a crea aplicația libguestfs
modificări arbitrare la VM. Nu este structurat, nu îl poți automatiza, ci pentru a face
remedieri rapide ad-hoc pentru oaspeții dvs., poate fi destul de util.

Dar, libguestfs are, de asemenea, o „uşă din spate” în aparat care vă permite să trimiteţi arbitrar
comenzi shell. Nu este la fel de flexibil ca virt-rescue, pentru că nu poți interacționa cu
comenzi shell, dar aici este oricum:

> depanare sh "cmd arg1 arg2 ..."

Rețineți că ar trebui nu bazează-te pe asta. Poate fi eliminat sau modificat în viitor. Dacă ale tale
programul necesită operațiuni, vă rugăm să îl adăugați în API-ul libguestfs.

Ceea ce este il afacere cu „peste oaspete - eu"?
De ce face virt-cat afară muncă on a real VM imagine, dar virt-df fabrică on Orice disc imagine?
Ce face "Nu rădăcină dispozitiv găsit in acest de operare sistem imagine" Adică?
Toate aceste întrebări sunt legate la un nivel fundamental, care poate să nu fie imediat
evident.

De la guestfs(3) Nivelul API, o „imagine de disc” este doar o grămadă de partiții și sisteme de fișiere.

În schimb, atunci când mașina virtuală pornește, montează acele sisteme de fișiere într-un sistem consistent
ierarhie cum ar fi:

/ (/dev/sda2)

├── / boot (/dev/sda1)

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

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

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

(sau litere de unitate pe Windows).

API-ul vede în primul rând imaginea discului la nivel de „grămadă de sisteme de fișiere”. Dar de asemenea
are o modalitate de a inspecta imaginea de disc pentru a vedea dacă conține un sistem de operare și cum
discurile sunt montate când sistemul de operare pornește: „INSPECTION” în guestfs(3).

Utilizatorii se așteaptă la unele instrumente (cum ar fi virt-cat(1)) pentru a lucra cu căile VM:

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

De unde știe virt-cat asta / var este o partiție separată? Trucul este pisica aceea virt
efectuează o inspecție pe imaginea discului și o folosește pentru a traduce calea corect.

Unele instrumente (inclusiv virt-cat(1), virt-edit(1), virt-ls(1)) utilizați inspecția pentru a mapa VM
poteci. Alte instrumente, cum ar fi virt-df(1) și virt-sisteme de fișiere(1) operează în întregime la
nivel brut „grămadă mare de sisteme de fișiere” al API-ului libguestfs și nu utilizați inspecția.

pește oaspete(1) se află într-o cale de mijloc interesantă. Dacă utilizați -a și -m Linie de comanda
opțiuni, atunci trebuie să îi spuneți pe guestfish exact cum să adăugați imagini de disc și unde să le montați
despărțitori. Acesta este nivelul brut API.

Dacă utilizați -i opțiunea, libguestfs efectuează inspecție și montează sistemele de fișiere pentru
te.

Eroarea „nu s-a găsit niciun dispozitiv rădăcină în această imagine a sistemului de operare” este legată de aceasta. Aceasta
înseamnă că inspecția nu a putut localiza un sistem de operare în imaginea de disc pe care ați dat-o
aceasta. S-ar putea să vedeți acest lucru din programe precum virt-cat dacă încercați să le rulați pe ceva
care este doar o imagine de disc, nu o imagine de disc de mașină virtuală.

Ce do acestea "depanare*" și "intern-*" funcții do?
Există unele funcții care sunt folosite pentru depanare și în scopuri interne care sunt nu
parte a API-ului stabil.

Funcțiile „debug*” (sau „guestfs_debug*”), în primul rând „guestfs_debug” în guestfs(3) și
o mână de altele, sunt folosite pentru depanarea libguestfs. Deși nu fac parte din
API stabil și, prin urmare, se poate modifica sau poate fi eliminat în orice moment, unele programe ar putea dori să apeleze
acestea în timp ce așteptăm ca funcțiile să fie adăugate la libguestfs.

Funcțiile „internal-*” (sau „guestfs_internal_*”) sunt utilizate exclusiv de libguestfs
în sine. Nu există niciun motiv ca programele să le apeleze și programele nu ar trebui să încerce să le folosească
lor. Folosirea lor va provoca adesea să se întâmple lucruri rele, precum și să nu facă parte din
API stabil documentat.

DEZVOLTATORI


Unde do I trimite petice?
Vă rugăm să trimiteți corecții la lista de corespondență libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
va exista o întârziere până când postarea dvs. va fi aprobată manual.

Te rugăm să ne contactezi nu face utilizare github trage cereri de - ei voi be nesocotit. Motivele sunt (a) ne dorim
pentru a discuta și a diseca patch-urile de pe lista de corespondență și (b) cererile de pull github se transformă în
merge commit, dar preferăm să avem un istoric liniar.

Cum do I propune a caracteristică?
Noile funcții mari cu care intenționați să contribuiți ar trebui să fie discutate pe lista de corespondență
mai întâi (https://www.redhat.com/mailman/listinfo/libguestfs). Acest lucru evită dezamăgirea
și muncă irosită dacă nu credem că caracteristica s-ar potrivi în proiectul libguestfs.

Dacă doriți să sugerați o caracteristică utilă, dar nu doriți să scrieți codul, puteți trimite a
eroare (consultați „OBȚINEREA AJUTORULUI ȘI RAPORTAREA EROARELOR”) cu „RFE: ” la începutul rezumatului
linia.

Cine poate să comite la libguestfs git?
Aproximativ 5 persoane au acces de comitere la github. Patch-urile ar trebui să fie postate mai întâi pe listă
și ACKed. Politica pentru ACK și împingerea patch-urilor este prezentată aici:

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

Putea I furculiţă libguestfs?
Sigur ca poti. Git ușurează bifurcarea libguestfs. Github face și mai ușor.
E bine dacă ne spui pe lista de corespondență despre furci și motivele acestora.

DIVERSE ÎNTREBĂRI


Putea I monitorizează il trăi disc activitate of a virtual maşină folosind libguestfs?
O solicitare comună este de a putea folosi libguestfs pentru a monitoriza activitatea de disc live a unui
guest, de exemplu, pentru a fi notificat de fiecare dată când un oaspete creează un fișier nou. Libguestfs
face nu lucrează în modul în care unii oameni își imaginează, așa cum poți vedea din această diagramă:

┌───────────────────────────────────────
│ program de monitorizare folosind libguestfs │
└────────────────────────────────────────

┌───────────┐ ┌───────────────────────
│ VM live │ │ dispozitiv libguestfs │
├───────────┤ ├────────────────────────
│ miez (1)│ │ miez aparat (2) │
└───────────┘ └────────────────────────
↓ ↓ (conexiune r/o)
┌──────────────────────┐
| imagine disc |
└──────────────────────┘

Acest scenariu este sigur (atâta timp cât setați marcajul „numai citire” când adăugați unitatea).
Cu toate acestea, nucleul aplicației libguestfs (2) nu vede toate modificările făcute pe disc
imagine, din două motive:

i. Nucleul VM (1) poate stoca în cache date în memorie, astfel încât să nu apară în imaginea discului.

ii. Nucleul aplicației libguestfs (2) nu se așteaptă ca imaginea discului să se schimbe
dedesubt, astfel încât propriul cache nu este actualizat magic chiar și atunci când nucleul VM (1)
actualizează imaginea discului.

Singura soluție acceptată este să reporniți întregul dispozitiv libguestfs oricând
doresc să se uite la modificările din imaginea discului. La nivelul API care corespunde apelării
„guestfs_shutdown” urmat de „guestfs_launch”, care este o operațiune grea (vezi
de asemenea guestfs-performanță(3)).

Există câteva hack-uri neacceptate pe care le puteți încerca dacă relansarea aparatului este într-adevăr
costisitoare:

· Apelați „guestfs_drop_caches (g, 3)”. Acest lucru determină toate datele stocate în cache de către libguestfs
nucleul aparatului (2) să fie aruncat, astfel încât să revină la imaginea discului.

Totuși, acest lucru în sine nu este suficient, deoarece qemu memorează și unele date în cache. Tu
va trebui, de asemenea, să corecteze libguestfs pentru a (re)activa modul „cache=unsafe”. Vedea:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Folosiți în schimb un instrument precum virt-bmap.

· Rulați un agent în interiorul oaspetelui.

Nimic nu ajută dacă oaspetele face modificări mai fundamentale (de exemplu, ștergerea sistemelor de fișiere).
Pentru astfel de lucruri trebuie să relansați aparatul.

(Rețineți că există o a treia problemă pe care trebuie să utilizați instantanee consistente pentru a o examina cu adevărat
imagini de disc live, dar aceasta este o problemă generală cu utilizarea libguestfs împotriva oricărui disc live
imagine.)

Utilizați online guestfs-faq folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

Comenzi Linux

Ad