Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

guestfs-faq — Online w chmurze

Uruchom guestfs-faq u dostawcy bezpłatnego hostingu OnWorks przez Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS

Jest to polecenie guestfs-faq, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu darmowych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS

PROGRAM:

IMIĘ


guestfs-faq — często zadawane pytania dotyczące libguestfs (FAQ)

JAK TO SIĘ ZACZĘŁO LIBGUESTFS


Co is libguestfs?
libguestfs to sposób na tworzenie, dostęp i modyfikowanie obrazów dysków. Możesz zajrzeć do wnętrza dysku
obrazy, modyfikować zawarte w nich pliki, tworzyć je od podstaw, zmieniać ich rozmiar i wiele
jeszcze. Jest to szczególnie przydatne w skryptach i programach oraz z wiersza poleceń.

libguestfs to biblioteka C (stąd „lib-”) i zestaw narzędzi zbudowanych na tej bibliotece, oraz
powiązania dla wielu popularnych języków programowania.

Aby uzyskać więcej informacji o tym, co libguestfs może zrobić, przeczytaj wstęp na stronie głównej
(http://libguestfs.org).

Co jest dotychczasowy wirtualna przybory?
Narzędzia wirtualne (strona internetowa: http://virt-tools.org) to cały zestaw zarządzania wirtualizacją
narzędzia skierowane do administratorów systemów. Niektóre z nich pochodzą z libguestfs, niektóre z
libvirt i wiele innych z innych projektów open source. Więc wirtualne narzędzia to nadzbiór
libguestfs. Jednak libguestfs zawiera wiele ważnych narzędzi. Widzieć
http://libguestfs.org Pełną listę.

Czy libguestfs potrzeba { libvirt / KVM / Czerwony Kapelusz / Fedora }?
Nie!

libvirt nie jest wymagany dla libguestfs.

libguestfs działa z dowolnym obrazem dysku, w tym utworzonym w VMware, KVM, qemu,
VirtualBox, Xen i wiele innych hipernadzorców oraz te, które stworzyłeś od podstaw.

Red Hat sponsoruje (tj. płaci za) rozwój libguestfs i ogromną liczbę innych otwartych
projekty źródłowe. Ale możesz uruchomić libguestfs i narzędzia virt na wielu różnych Linuksach
dystrybucje i Mac OS X. Staramy się jak najlepiej obsługiwać wszystkie dystrybucje Linuksa jako pierwszorzędne
obywateli. Niektóre narzędzia wirtualne zostały przeniesione do systemu Windows.

W jaki sposób robi libguestfs porównać do inny przybory?
vs kpartx
Libguestfs ma inne podejście niż kpartx. kpartx potrzebuje roota i montuje
systemy plików w jądrze hosta (które mogą być niezabezpieczone - patrz guestfs-bezpieczeństwo(1)).
Libguestfs izoluje jądro hosta od gości, jest bardziej elastyczne, skryptowalne,
obsługuje LVM, nie wymaga rootowania, jest odizolowany od innych procesów i czyści
po sobie. Libguestfs to więcej niż tylko dostęp do plików, ponieważ możesz go używać do
tworzyć obrazy od podstaw.

vs vdfuse
vdfuse działa jak kpartx, ale dla obrazów VirtualBox. Zobacz porównanie kpartx powyżej.
Możesz użyć libguestfs na plikach partycji ujawnionych przez vdfuse, chociaż tak nie jest
konieczne, ponieważ libguestfs może uzyskać bezpośredni dostęp do obrazów VirtualBox.

vs qemu-nbd
NBD (Network Block Device) to protokół do eksportowania urządzeń blokowych przez sieć.
qemu-nbd to serwer NBD, który może obsługiwać dowolny format dysku obsługiwany przez qemu (np. raw,
qkrowa2). Możesz użyć libguestfs i qemu-nbd lub nbdkit razem, aby uzyskać dostęp do bloku
urządzenia w sieci, na przykład: "guestfish -a nbd://remote"

vs montowanie systemy plików in dotychczasowy gospodarz
Montowanie systemów plików gościa na hoście jest niepewne i należy go całkowicie unikać
dla niepewnych gości. Użyj libguestfs, aby zapewnić warstwę ochrony przed
exploity w systemie plików. Zobacz też gość(1).

vs rozstał się
Libguestfs obsługuje LVM. Libguestfs używa parted i zapewnia większość funkcji parted
poprzez API libguestfs.

DOSTAĆ POMÓC ROLNICZE RAPORTOWANIE ROBAKI


W jaki sposób do I wiedzieć co wersja Jestem za pomocą?
Najprostsza metoda to:

guestfish --wersja

Rozwój Libguestfs odbywa się wzdłuż niestabilnej gałęzi i okresowo tworzymy
stabilna gałąź, do której przenosimy stabilne łaty. Aby dowiedzieć się więcej, przeczytaj „LIBGUESTFS
NUMERY WERSJI” w goście(3).

W jaki sposób mogą I otrzymać pomóc?
Co pocztowy wykazy or pogawędzić pokoje jest dostępny?
Jeśli jesteś klientem Red Hat korzystającym z Red Hat Enterprise Linux, skontaktuj się z
Wsparcie Red Hat: http://redhat.com/support

Istnieje lista mailingowa, głównie do rozwoju, ale użytkownicy mogą również pytać
pytania dotyczące libguestfs i narzędzi virt:
https://www.redhat.com/mailman/listinfo/libguestfs

Możesz również porozmawiać z nami na kanale IRC "#libguestfs" na FreeNode. Nie zawsze jesteśmy
w pobliżu, więc proszę zostań na kanale po zadaniu pytania, a ktoś wróci
do Ciebie.

W przypadku innych narzędzi virt (nie dostarczonych z libguestfs) dostępne są ogólne narzędzia virt
lista mailingowa: https://www.redhat.com/mailman/listinfo/virt-tools-list

W jaki sposób do I raport robaki?
Użyj poniższego linku, aby wprowadzić błąd w Bugzilli:

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

Podaj jak najwięcej szczegółów i sposób na odtworzenie problemu.

Uwzględnij pełne dane wyjściowe libguestfs-narzędzie-testowe(1).

WSPÓLNY PROBLEMY


Zobacz także „LIBGUESTFS GOTCHAS” w goście(3) dla niektórych "gotchas" z użyciem libguestfs
API.

"Mógłby nie przeznaczyć dynamiczny tłumacz bufor"
Ten niejasny błąd jest w rzeczywistości awarią SELinux. Musisz włączyć następujące
Wartość logiczna SELinux:

setsebool -P virt_use_execmem=on

Aby uzyskać więcej informacji, zobacz https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"dziecko wygląda tak zmarł niespodziewanie"
[Ten komunikat o błędzie został zmieniony w libguestfs 1.21.18 na coś bardziej wyjaśniającego.]

Ten błąd wskazuje, że qemu nie powiodło się lub jądro hosta nie mogło się uruchomić. Aby dostać się dalej
informacja o awarii, musisz uruchomić:

libguestfs-narzędzie-testowe

Jeśli po użyciu tego nadal nie rozumiesz awarii, skontaktuj się z nami (patrz poprzedni
Sekcja).

libguestfs: błąd: nie może odnaleźć każdy odpowiedni libguestfs supermin, ustalony or w starym stylu urządzenie
on LIBGUEESTFS_PATH
febootstrap-supermin-pomocnik: wew2: roślina mateczna katalog nie znaleziono
supermin-pomocnik: wew2: roślina mateczna katalog nie znaleziono
[Ten problem został naprawiony na stałe w libguestfs ≥ 1.26.]

Jeśli widzisz którykolwiek z tych błędów w Debianie/Ubuntu, musisz uruchomić następujące polecenie:

sudo update-guestfs-urządzenie

"Pozwolenie odmówiono" jeśli chodzi o komunikację i motywację bieganie libguestfs as korzeń
Podczas otwierania obrazu dysku pojawia się błąd odmowy uprawnień, mimo że pracujesz
libguestfs jako root.

Jest to spowodowane przez libvirt i dzieje się tak tylko podczas korzystania z backendu libvirt. Po uruchomieniu
jako root, libvirt decyduje się uruchomić urządzenie qemu jako użytkownik "qemu.qemu". Niestety
zwykle oznacza to, że qemu nie może otworzyć obrazów dysków, zwłaszcza jeśli te obrazy dysków są
należące do roota lub znajdują się w katalogach, które wymagają dostępu do roota.

W libvirt jest otwarty błąd, który to naprawi:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Możesz obejść ten problem za pomocą jednej z następujących metod:

· Przełącz się na bezpośredni backend:

eksportuj LIBGUESTFS_BACKEND=bezpośrednio

· Nie uruchamiaj libguestfs jako root.

· Chmod obraz dysku i wszelkie katalogi nadrzędne, aby użytkownik qemu miał do nich dostęp.

· (Wstrętny) Edytuj /etc/libvirt/qemu.conf i zmień ustawienie „użytkownika”.

wyk.: /w tym: pozwolenie odmówiono
Uwaga: Jeśli ten błąd wystąpi, gdy używasz pakietu dystrybucyjnego libguestfs (np. z
Fedora, Debian itp.) następnie zgłoś błąd w dystrybucji. To nie jest błąd, który
zwykli użytkownicy powinni kiedykolwiek sprawdzić, czy pakiet dystrybucyjny został przygotowany poprawnie.

Ten błąd występuje podczas fazy rozruchu supermin podczas uruchamiania urządzenia:

supermin: montowanie nowego roota na / root
supermin: chroot
execl: /init: Odmowa zezwolenia
supermin: debug: katalog listingu /
[...po którym następuje wiele danych wyjściowych debugowania...]

Jest to skomplikowany błąd związany z supermin(1) urządzenia. Urządzenie jest skonstruowane
kopiując pliki takie jak / bin / bash i wiele bibliotek od gospodarza. Plik "hostfiles"
wyświetla listę plików, które należy skopiować z hosta do urządzenia. Jeśli niektóre pliki
nie istnieją na hoście, to są pominięte, ale jeśli te pliki są potrzebne w kolejności
(np. biegać) / bin / bash wtedy zobaczysz powyższy błąd.

Zdiagnozowanie problemu polega na przestudiowaniu bibliotek potrzebnych do / bin / bash, tj:

ldd / bin / bash

porównanie tego z "plikami hosta", z plikami faktycznie dostępnymi w systemie plików hosta,
i z wyjściem debugowania wydrukowanym w komunikacie o błędzie. Po ustaleniu, który plik
brakuje, zainstaluj ten plik za pomocą menedżera pakietów i spróbuj ponownie.

Powinieneś również sprawdzić, czy pliki takie jak /w tym i / bin / bash (w urządzeniu) są
wykonywalny. Dane wyjściowe debugowania pokazują tryby plików.

ŚCIĄGANIE, INSTALACJA, KOMPILOWANIE LIBGUESTFS


Gdzie mogą I otrzymać dotychczasowy firmy pliki binarne dla ? ...
Fedora ≥ 11
Użyj:

mniam zainstaluj '*gość*'

Aby zapoznać się z najnowszymi kompilacjami, zobacz:
http://koji.fedoraproject.org/koji/packageinfo?ID pakietu=8391

Red Hat Enterprise Linux
RHEL 5
Wersja dostarczona w oficjalnym RHEL 5 jest bardzo stara i nie należy jej używać z wyjątkiem
w połączeniu z virt-v2v. Użyj aktualnego pakietu libguestfs 1.20 w EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Jest to część domyślnej instalacji. Na RHEL 6 i 7 (tylko) musisz zainstalować
"libguestfs-winsupport", aby uzyskać obsługę gości Windows.

Debian i Ubuntu
Dla libguestfs < 1.26 po zainstalowaniu libguestfs musisz wykonać:

sudo update-guestfs-urządzenie

(Ten skrypt został usunięty w Debianie/Ubuntu z libguestfs ≥ 1.26 i zamiast tego
urządzenie jest budowane na zamówienie.)

Tylko w Ubuntu:

sudo chmod 0644 /boot/vmlinuz*

Może być konieczne dodanie siebie do grupy „kvm”:

sudo usermod -a -G kvm twój login

Ściskanie Debiana (6)
Hilko Bengen zbudował libguestfs w backportach squeeze:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports

Debian Wheezy i nowsze (7+)
Hilko Bengen obsługuje libguestfs w Debianie. Oficjalne pakiety Debiana są
dostępne: http://packages.debian.org/search?słowa kluczowe=libguestfs

Ubuntu
Nie mamy pełnoetatowego opiekuna Ubuntu, a pakiety dostarczane przez
Kanoniczne (które są poza naszą kontrolą) są czasami zepsute.

Firma Canonical postanowiła zmienić uprawnienia jądra, aby tak nie było
czytelny z wyjątkiem roota. To kompletnie głupie, ale oni tego nie zmienią
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Więc każdy użytkownik
powinien to zrobić:

sudo chmod 0644 /boot/vmlinuz*

Ubuntu 12.04
libguestfs w tej wersji Ubuntu działa, ale musisz zaktualizować febootstrap
i seabios do najnowszych wersji.

Potrzebujesz febootstrap ≥ 3.14-2 od:
http://packages.ubuntu.com/precise/febootstrap

Po zainstalowaniu lub aktualizacji febootstrap odbuduj urządzenie:

sudo update-guestfs-urządzenie

Potrzebujesz seabios ≥ 0.6.2-0ubuntu2.1 lub ≥ 0.6.2-0ubuntu3 z:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

Również musisz zrobić (patrz wyżej):

sudo chmod 0644 /boot/vmlinuz*

Gentoo
Libguestfs został dodany do Gentoo w 2012-07 przez Andreisa Vinogradovsa (libguestfs) i
Maxim Koltsov (głównie hivex). Robić:

pojawi się libguestfs

SZWAJCARIA
Libguestfs został dodany do SuSE w 2012 roku przez Olafa Heringa.

ArchLinux
Libguestfs został dodany do AUR w 2010 roku.

Inna dystrybucja Linuksa
Kompiluj ze źródła (następna sekcja).

Inne dystrybucje inne niż Linux
Będziesz musiał skompilować ze źródeł i przenieść je.

W jaki sposób mogą I skompilować i zainstalować libguestfs od źródło?
Możesz skompilować libguestfs z git lub tarballa źródłowego. Przeczytaj plik README wcześniej
startowy.

Git: https://github.com/libguestfs/libguestfs tarballe źródłowe:
http://libguestfs.org/download

Nie uruchamiaj "make install"! Użyj "./ biegaćzamiast tego skryptu (zobacz README).

W jaki sposób mogą I skompilować i zainstalować libguestfs if my Distro nie mieć nowa dość
qemu/supermin/jądro?
Libguestfs potrzebuje supermin 5. Jeśli supermin 5 nie został przeniesiony do twojej dystrybucji, zobacz
pytanie poniżej.

Najpierw skompiluj qemu, supermin i/lub jądro ze źródeł. Ty robisz nie musi zrobić
zainstaluj je.

W katalogu źródłowym libguestfs utwórz dwa pliki. „lokalna konfiguracja” powinna zawierać:

źródło lokalne środowisko
#export PATH=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --prefiks / usr „$@”

Ustaw plik wykonywalny „localconfigure”.

„localenv” powinno zawierać:

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

Odkomentuj i dostosuj te wiersze zgodnie z wymaganiami, aby korzystać z alternatywnych programów, które posiadasz
skompilowany.

Użyj "./localconfigure" zamiast "./configure", ale w przeciwnym razie libguestfs kompilujesz jako
zwykły.

Nie uruchamiaj "make install"! Użyj "./ biegaćzamiast tego skryptu (zobacz README).

W jaki sposób mogą I skompilować i zainstalować libguestfs bez supermin?
Jeśli supermin 5 obsługuje twoją dystrybucję, ale nie masz wystarczająco nowej supermini
zainstalowany, a następnie zobacz poprzednie pytanie.

Jeśli supermin 5 w ogóle nie obsługuje twojej dystrybucji, będziesz musiał użyć "fixed
metoda urządzenia”, w której używasz prekompilowanego urządzenia binarnego. Aby zbudować libguestfs
bez supermina musisz przekazać "--disable-appliance --disable-daemon" do obu
./autogen.sh or . / Konfiguracja (w zależności od tego, czy budujesz odpowiednio z git czy
z tarballi). Następnie, używając libguestfs, możesz musi ustaw „LIBGUESTFS_PATH”
zmienna środowiskowa do katalogu wstępnie skompilowanego urządzenia, jak również opisano w
„URZĄDZENIE STAŁE” w goście(3).

W przypadku wstępnie skompilowanych urządzeń zobacz również: http://libguestfs.org/download/binaries/appliance/.

Mile widziane są łatki umożliwiające przeniesienie supermina do większej liczby dystrybucji Linuksa.

W jaki sposób mogą I Dodaj wsparcie dla sVirt?
Note dla Fedora/RHEL użytkownicy: Ta konfiguracja jest domyślna począwszy od Fedory 18 i
RHEL 7. Jeśli znajdziesz jakieś problemy, daj nam znać lub zgłoś błąd.

SVirt zapewnia wzmocnione urządzenie używające SELinux, co czyni go bardzo trudnym dla nieuczciwego dysku
obraz, aby "uciec" z zamknięcia libguestfs i uszkodzić hosta (można powiedzieć
że nawet w standardowych libguestfs byłoby to trudne, ale sVirt zapewnia dodatkową warstwę
ochrona hosta i co ważniejsze chroni maszyny wirtualne na tym samym hoście
od siebie nawzajem).

Obecnie, aby włączyć sVirt, potrzebujesz libvirt ≥ 0.10.2 (preferowany 1.0 lub nowszy),
libguestfs ≥ 1.20 oraz polityki SELinux z ostatniej Fedory. Jeśli nie biegasz
Fedora 18+, będziesz musiał wprowadzić zmiany w swojej polityce SELinux - skontaktuj się z nami na
lista mailingowa.

Gdy masz już wymagania, wykonaj:

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

Ustaw SELinux na tryb Wymuszania, a sVirt powinien być używany automatycznie.

Wszystkie lub prawie wszystkie funkcje libguestfs powinny działać pod sVirt. Jest jeden znany
niedociągnięcie: ratownictwo wirtualne(1) nie użyje libvirt (stąd sVirt), ale wraca do direct
uruchomienie qemu. Więc obecnie nie będziesz korzystać z ochrony sVirt podczas używania
ratownictwo wirtualne.

Możesz sprawdzić, czy sVirt jest używany, włączając logowanie libvirtd (zobacz
/etc/libvirt/libvirtd.log), zabijanie i ponowne uruchamianie libvirtd oraz sprawdzanie plików dziennika
dla komunikatów "Ustawianie kontekstu SELinux na...".

W teorii sVirt powinien wspierać AppArmor, ale nie próbowaliśmy tego. Będzie prawie
z pewnością wymaga łatania libvirt i napisania polityki AppArmor.

Libguestfs ma a naprawdę długie podstęp of zależności!
Podstawowa biblioteka nie zależy od zbyt wiele, ale są trzy przyczyny długiej listy
innych zależności:

1. Libguestfs musi być w stanie czytać i edytować wiele różnych formatów dysków. Na przykład,
Obsługa XFS wymaga narzędzi XFS.

2. Istnieją powiązania językowe dla wielu różnych języków, wszystkie wymagają własnych
narzędzia programistyczne. Wszystkie powiązania językowe (z wyjątkiem C) są opcjonalne.

3. Istnieje kilka opcjonalnych funkcji biblioteki, które można wyłączyć.

Ponieważ libguestfs ≥ 1.26 możliwe jest rozdzielenie zależności od urządzenia (pozycja 1 w
powyższą listę) i dlatego mają (np.) "libguestfs-xfs" jako oddzielny podpakiet dla
przetwarzanie obrazów dysków XFS. Zachęcamy dalszych pakowaczy do rozpoczęcia dzielenia bazy
Pakiet libguestfs na mniejsze podpakiety.

Błędy podczas uruchomić on Fedora 18, RHEL 7
W Fedorze ≥ 18 i RHEL ≥ 7, libguestfs używa libvirt do zarządzania urządzeniem. Poprzednio
(i upstream) libguestfs uruchamia qemu bezpośrednio:

┌┌───────────────────────────────┐┐┐.
libguestfs │
├├──────────────┬┬┬─────────────┤┤┤┤.
│ bezpośredni backend │ backend libvirt │
└└──────────────┴┴┴─────────────┘┘┘┘.
↓ ↓
┌┌─────┐┐ ┌┌────────┐┐.
qemu libvirtd │
└└─────┘┘ └└────────┘┘.

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

nadrzędna Fedora 18+
inne niż Fedora RHEL 7+
nie-RHEL

Backend libvirt jest bardziej wyrafinowany, obsługuje SELinux/sVirt (patrz wyżej),
hotplugging i nie tylko. Jest jednak bardziej złożony i przez to mniej wytrzymały.

Jeśli masz problemy z uprawnieniami przy użyciu backendu libvirt, możesz przełączyć się na bezpośredni
backend, ustawiając tę ​​zmienną środowiskową:

eksportuj LIBGUESTFS_BACKEND=bezpośrednio

przed uruchomieniem jakiegokolwiek programu libguestfs lub narzędzia virt.

W jaki sposób mogą I wyłącznik do a ustalony / wstępnie zbudowany urządzenie?
Może to poprawić stabilność i wydajność libguestfs w Fedorze i RHEL.

W dowolnym momencie po zainstalowaniu libguestfs uruchom następujące polecenia jako root:

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

Teraz ustaw następującą zmienną środowiskową przed użyciem libguestfs lub dowolnego narzędzia virt:

eksportuj LIBGUESTFS_PATH=/usr/local/lib/guestfs/urządzenie

Oczywiście możesz zmienić ścieżkę do dowolnego katalogu. Możesz udostępnić urządzenie
na maszynach, które mają tę samą architekturę (np. wszystkie x86-64), ale pamiętaj, że libvirt
uniemożliwi współdzielenie urządzenia przez NFS z powodu problemów z uprawnieniami (więc
przełącz się na bezpośrednie zaplecze lub nie używaj NFS).

W jaki sposób mogą I prędkość up libguestfs buduje?
Zdecydowanie najważniejszą rzeczą, jaką możesz zrobić, to zainstalować i poprawnie skonfigurować Squida.
Zwróć uwagę, że domyślna konfiguracja dostarczana z programem Squid to śmieci, więc konfiguracja jest
nie opcjonalne.

Bardzo dobrym miejscem do rozpoczęcia konfiguracji Squida jest tutaj:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Upewnij się, że Squid jest uruchomiony i że zmienne środowiskowe $http_proxy i $ftp_proxy
wskazują na to.

Gdy Squid działa i jest poprawnie skonfigurowany, liczba kompilacji urządzeń powinna zostać ograniczona do kilku
minut.

W jaki sposób mogą I prędkość up libguestfs Buduje (Debianie)?

Hilko Bengen sugeruje użycie „w przybliżeniu”, czyli proxy archiwum Debiana
(http://packages.debian.org/approx). To narzędzie jest udokumentowane w Debianie w około(8)
strony podręcznika.

PRĘDKOŚĆ, DYSK SPACE UŻYWANE BY LIBGUESTFS


Uwaga: Większość informacji w tej sekcji została przeniesiona: występ gościa(1).

Prześlij or napisać wydać się początku. powolny.
Jeśli podstawowy dysk nie jest w pełni przydzielony (np. sparse raw lub qcow2), zapisy mogą być
powolny, ponieważ system operacyjny hosta musi wykonywać kosztowne alokacje dysków, gdy jesteś
pismo. Rozwiązaniem jest użycie w pełni przydzielonego formatu, tj. nierzadki surowy lub
qcow2 z opcją „preallocation=metadata”.

Libguestfs zastosowania także dużo dysk przestrzeń!
libguestfs buforuje duże urządzenie w:

/var/tmp/.guestfs-

Jeśli zmienna środowiskowa „TMPDIR” jest zdefiniowana, to $TMPDIR/.guestfs- służy
zamiast.

Usunięcie tego katalogu jest bezpieczne, gdy nie używasz libguestfs.

wirt-sparsify wydaje do robić dotychczasowy obraz rosnąć do dotychczasowy pełny rozmiar of dotychczasowy faktyczny dysk
Jeśli dane wejściowe do wirt-sparsify(1) jest surowe, wtedy wyjście będzie surowe rzadkie. Upewnić się
mierzysz wynik za pomocą narzędzia, które rozumie rzadkość, takiego jak "du -sh".
Może to zrobić ogromną różnicę:

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

(Porównaj pozorny rozmiar 100M a rzeczywisty rozmiar 3.6M)

Jeśli to wszystko cię dezorientuje, użyj nierozrzedzonego formatu wyjściowego, określając --konwertować
opcja np.:

virt-sparsify --convert qcow2 dysk.raw dysk.qcow2

Czemu nie Wirtualna zmiana rozmiaru praca on dotychczasowy dysk obraz w miejscu?
Zmiana rozmiaru obrazu dysku jest bardzo trudna — szczególnie upewnij się, że nie stracisz danych lub
zepsuć bootloader. Obecna metoda skutecznie tworzy nowy obraz dysku i kopie
data plus bootloader ze starego. Jeśli coś pójdzie nie tak, zawsze możesz iść
powrót do oryginału.

Gdybyśmy mieli sprawić, że virt-resize działa w miejscu, musiałyby istnieć ograniczenia: na
na przykład nie będziesz mógł przenosić istniejących partycji (ponieważ przenoszenie danych w poprzek
ten sam dysk najprawdopodobniej uszkodzi dane w przypadku awarii zasilania lub awarii),
a LVM byłoby bardzo trudne do obsługi (ze względu na prawie dowolne mapowanie)
między zawartością LV a podstawowymi blokami dysku).

Inną metodą, którą rozważaliśmy, jest umieszczenie migawki na oryginalnym obrazie dysku, więc
że oryginalne dane są nienaruszone i tylko różnice są rejestrowane w migawce.
Możesz to zrobić dzisiaj, używając „qemu-img create” + „virt-resize”, ale qemu obecnie nie jest
wystarczająco sprytny, aby rozpoznać, kiedy ten sam blok jest zapisywany z powrotem do migawki, jak już
istnieje na dysku zapasowym, więc przekonasz się, że nie oszczędza to miejsca ani czasu.

Podsumowując, jest to trudny problem, a to, co mamy teraz, w większości działa, więc jesteśmy niechętni
aby to zmienić.

Czemu nie wirt-sparsify praca on dotychczasowy dysk obraz w miejscu?
W libguestfs ≥ 1.26, virt-sparsify może teraz pracować na obrazach dysków w miejscu. Posługiwać się:

virt-sparsify --in-place disc.img

Ale najpierw powinieneś przeczytać „SPARSYFIKACJA NA MIEJSCU” w wirt-sparsify(1).

PROBLEMY OTWARCIE DYSK ZDJĘCIA


Zdalny libvirt gości nie może be otwierany.
Otwieranie zdalnych gości libvirt nie jest obecnie obsługiwane. Na przykład to nie zadziała:

guestfish -c qemu://zdalny/system -d Gość

Aby otworzyć dyski zdalne, musisz je jakoś wyeksportować, a następnie połączyć się z eksportem. Do
przykład, jeśli zdecydowałeś się na NBD:

remote$ qemu-nbd -t -p 10809 gość.img
local$ Guestfish -a nbd://remote:10809 -i

Inne możliwości obejmują ssh (jeśli qemu jest wystarczająco nowe), NFS lub iSCSI. Zobacz „ZDALNE
PRZECHOWYWANIE” w goście(3).

W jaki sposób mogą I koncepcja to dziwny dysk źródło?
Masz obraz dysku znajdujący się w innym systemie, który wymaga dostępu przez bibliotekę /
HTTP / REST / zastrzeżone API lub jest w jakiś sposób skompresowany lub zarchiwizowany. (Jeden przykład
byłby zdalny dostęp do obrazów podglądu OpenStack bez ich pobierania.)

Mamy siostrzany projekt o nazwie nbdkit (https://github.com/libguestfs/nbdkit). Ten
Projekt pozwala zamienić dowolne źródło dysku w serwer NBD. Libguestfs może uzyskać dostęp do NBD
serwery bezpośrednio, np.:

Guestfish -a nbd://remote

nbdkit jest swobodnie licencjonowany, więc możesz go połączyć lub dołączyć do zastrzeżonych bibliotek
i kod. Posiada również proste, stabilne API wtyczek, dzięki czemu możesz łatwo pisać wtyczki przeciwko
API, które będzie nadal działać w przyszłości.

Błąd otwarcie VMDK dyski: „używa a vmdk cecha który is nie utrzymany by to qemu wersja:
VMDK wersja 3"
Qemu (a tym samym libguestfs) obsługuje tylko niektóre obrazy dysków VMDK. Inni nie będą działać,
podając ten lub podobny błąd.

Najlepiej byłoby, gdyby ktoś naprawił qemu, aby obsługiwał najnowsze funkcje VMDK, ale w międzyczasie
masz trzy opcje:

1. Jeśli gość jest hostowany na dostępnym na żywo serwerze ESX, zlokalizuj i pobierz plik
obraz dysku o nazwie jakas-mieszkanie.vmdk. Pomimo nazwy jest to surowy obraz dysku i
można otworzyć przez cokolwiek.

Jeśli masz wystarczająco najnowszą wersję qemu i libguestfs, możesz być w stanie
uzyskać zdalny dostęp do tego obrazu dysku za pomocą protokołu HTTPS lub ssh. Zobacz „PRZECHOWYWANIE ZDALNE” w
goście(3).

2. Użyj zastrzeżonego narzędzia VMware vdiskmanager, aby przekonwertować obraz do formatu raw.

3. Użyj nbdkit z zastrzeżoną wtyczką VDDK, aby wyeksportować obraz dysku na żywo jako NBD
źródło. Powinno to umożliwić odczytanie i zapisanie pliku VMDK.

UFS dyski (tak jak używany by BSD) nie może be otwierany.
Format systemu plików UFS ma wiele wariantów i nie są one samoidentyfikujące. ten
Jądro Linuksa musi zostać poinformowane, którego wariantu UFS ma używać, a którego libguestfs nie może
Wiem.

Podczas montowania tych systemów plików musisz przekazać odpowiednią opcję montowania "ufstype".

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

Windows Bibl.
Windows ReFS to kopia ZFS/Btrfs firmy Microsoft. Ten system plików nie został jeszcze odwrócony
zaprojektowany i zaimplementowany w jądrze Linux, dlatego libguestfs nie obsługuje
to. W tej chwili wydaje się, że "na wolności" jest bardzo rzadki.

Nie-ASCII znaków nie zjawić się on VFAT systemy plików.
Typowe objawy tego problemu:

· Pojawia się błąd podczas tworzenia pliku, w którym nazwa pliku zawiera kod inny niż ASCII
znaki, w szczególności znaki inne niż 8-bitowe z języków azjatyckich (chiński, japoński,
itp). System plików to VFAT.

· Kiedy wyświetlasz katalog z systemu plików VFAT, nazwy plików pojawiają się jako znaki zapytania.

Jest to wada konstrukcyjna systemu GNU/Linux.

VFAT przechowuje długie nazwy plików jako znaki UTF-16. Podczas otwierania lub zwracania nazw plików,
Jądro Linuksa musi je przetłumaczyć na jakąś formę ciągu 8-bitowego. UTF-8 byłby
oczywisty wybór, z wyjątkiem użytkowników Linuksa, którzy upierają się przy korzystaniu z lokalizacji innych niż UTF-8
locale nie jest znane jądru, ponieważ jest funkcją biblioteki libc).

Dlatego musisz powiedzieć jądru, jakie tłumaczenie chcesz wykonać, gdy montujesz
system plików. Te dwie metody to parametr „iocharset” (który nie ma znaczenia w przypadku:
libguestfs) i flagę „utf8”.

Tak więc, aby użyć systemu plików VFAT, podczas montowania musisz dodać flagę „utf8”. Od gościa,
posługiwać się:

> opcje montowania utf8 /dev/sda1 /

lub w wierszu poleceń guestfish:

gość-ryba [...] -m /dev/sda1:/:utf8

lub z API:

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

Jądro następnie przetłumaczy nazwy plików na i z łańcuchów UTF-8.

Rozważaliśmy dodanie tej opcji montażu w sposób przezroczysty, ale niestety jest ich kilka
problemy z wykonaniem tego:

· W niektórych systemach Linux opcja montowania "utf8" nie działa. Nie dokładnie
zrozumieć, jakie systemy i dlaczego, ale zostało to rzetelnie zgłoszone przez jednego użytkownika.

· Uniemożliwiłoby to użycie parametru „iocharset”, ponieważ jest on niekompatybilny
z „utf8”. Prawdopodobnie nie jest dobrym pomysłem używanie tego parametru, ale nie chcemy
aby temu zapobiec.

Nie-ASCII znaków zjawić się as podkreślać (_) on ISO9660 systemy plików.
System plików nie został poprawnie przygotowany za pomocą mkisofs lub genisoimage. Upewnij się, że
system plików został stworzony przy użyciu rozszerzeń Joliet i/lub Rock Ridge. libguestfs nie
wymagają specjalnych opcji montowania do obsługi systemu plików.

Nie może koncepcja Windows gości który posługiwać się NTFS
Widzisz błędy, takie jak:

mount: nieznany typ systemu plików 'ntfs'

W Red Hat Enterprise Linux lub CentOS musisz zainstalować libguestfs-winsupport
pakiet.

Nie może koncepcja or sprawdzać RHEL 7 goście.
Nie może koncepcja Linux gości który posługiwać się XFS.
Goście RHEL 7 i wszyscy inni goście korzystający z XFS mogą być otwierani przez libguestfs, ale ty
trzeba zainstalować pakiet "libguestfs-xfs".

ZA POMOCĄ LIBGUESTFS IN TWÓJ WŁASNY PROGRAMY


Połączenia API ma setki of metody, gdzie do I początek?
Zalecamy zacząć od przeczytania przeglądu API: „PRZEGLĄD API” w goście(3).

Chociaż przegląd API obejmuje API C, nadal warto go przeczytać, nawet jeśli:
zamierzam użyć innego języka programowania, ponieważ API jest takie samo, tylko z simple
logiczne zmiany w nazwach połączeń:

C guestfs_ln_sf (g, cel, nazwa łącza);
Python g.ln_sf (cel, nazwa łącza);
OCaml g#ln_sf nazwa łącza docelowego;
Perl $g->ln_sf (cel, nazwa łącza);
Shell (guestfish) ln-sf target nazwa łącza
PHP guestfs_ln_sf ($g, $cel, $nazwa linku);

Kiedy już zapoznasz się z przeglądem API, powinieneś spojrzeć na tę listę początkowych
punkty za inne powiązania językowe: "UŻYWANIE LIBGUESTFS Z INNYMI JĘZYKAMI PROGRAMOWANIA" w
goście(3).

Czy I posługiwać się libguestfs in my własność / zamknięte źródło / handlowy program?
Ogólnie tak. Nie jest to jednak porada prawna – zapoznaj się z dołączoną do niej licencją
libguestfs, a jeśli masz konkretne pytania, skontaktuj się z prawnikiem.

W drzewie źródłowym licencja znajduje się w pliku „COPYING.LIB” (LGPLv2+ dla biblioteki i
powiązania) i „KOPIOWANIE” (GPLv2+ dla programów samodzielnych).

DEBUGOWANIE LIBGUESTFS


Pomoc, to nie pracujący!
Jeśli żaden program libguestfs w ogóle nie działa, uruchom poniższy program i wklej
kompletny, nieedytowane wyślij do e-maila do "libguestfs" @ "redhat.com":

libguestfs-narzędzie-testowe

Jeśli dana operacja się nie powiedzie, podaj wszystkie informacje z tej listy kontrolnej w wiadomości e-mail
do "libguestfs" @ "redhat.com":

1. Co próbujesz zrobić?

2. Jakie dokładnie polecenia uruchomiłeś?

3. Jaki był dokładny błąd lub wynik tych poleceń?

4. Włącz debugowanie, uruchom ponownie polecenia i przechwyć kompletny wyjście. Do nie
edit dotychczasowy wyjście.

eksportuj LIBGUESTFS_DEBUG=1
eksportuj LIBGUESTFS_TRACE=1

5. Dołącz wersję libguestfs, wersję systemu operacyjnego i sposób instalacji
libguestfs (np. ze źródeł, "yum install" itp.)

W jaki sposób do I debug jeśli chodzi o komunikację i motywację za pomocą każdy libguestfs program or narzędzie (na przykład. virt-v2v or virt-df)?
Istnieją dwie zmienne środowiskowe „LIBGUESTFS_*”, które możesz ustawić, aby uzyskać więcej
informacje z libguestfs.

„LIBGUESTFS_TRACE”
Ustaw to na 1, a libguestfs wypisze każde wywołanie polecenia / API w formacie, który
jest podobny do poleceń guestfish.

„LIBGUESTFS_DEBUG”
Ustaw to na 1, aby włączyć ogromną liczbę komunikatów debugowania. Jeśli myślisz
jest jakiś problem w urządzeniu libguestfs, powinieneś użyć tego
opcja.

Aby ustawić je z powłoki, zrób to przed uruchomieniem programu:

eksportuj LIBGUESTFS_TRACE=1
eksportuj LIBGUESTFS_DEBUG=1

Dla csh/tcsh równoważnymi poleceniami byłyby:

ustaw LIBGUESTFS_TRACE 1
ustaw LIBGUESTFS_DEBUG 1

Więcej informacji patrz: "ZMIENNE ŚRODOWISKOWE" w goście(3).

W jaki sposób do I debug jeśli chodzi o komunikację i motywację za pomocą gościnność?
Możesz użyć tych samych zmiennych środowiskowych powyżej. Alternatywnie skorzystaj z opcji guestfish
-x (aby śledzić polecenia) lub -v (aby uzyskać pełne dane debugowania) lub oba.

Aby uzyskać więcej informacji, zobacz: gość(1).

W jaki sposób do I debug jeśli chodzi o komunikację i motywację za pomocą dotychczasowy API?
Zadzwoń „guestfs_set_trace” w goście(3) aby włączyć śledzenie poleceń i/lub
"guestfs_set_verbose" w goście(3), aby włączyć komunikaty debugowania.

Aby uzyskać najlepsze wyniki, wywołuj te funkcje jak najwcześniej, zaraz po utworzeniu
guestfs obsłuży, jeśli możesz, i zdecydowanie przed wywołaniem uruchomienia.

W jaki sposób do I zdobyć debug wydajność i położyć it najnowszych my zalogowaniu system?
Użyj interfejsu API zdarzeń. Przykłady patrz: "USTAWIANIE ODDZWOŃ DO OBSŁUGI ZDARZEŃ" w goście(3)
oraz przykłady/debug-logging.c program w źródłach libguestfs.

Kopanie głębiej najnowszych dotychczasowy urządzenie bagażnik proces.
Włącz debugowanie, a następnie przeczytaj tę dokumentację na temat procesu uruchamiania urządzenia:
gościefs-wewnętrzni(1).

libguestfs zawiesza się or nie podczas uruchom/uruchom.
Włącz debugowanie i spójrz na pełne dane wyjściowe. Jeśli nie możesz zrozumieć, co się dzieje,
zgłosić błąd, w tym kompletny wyjście z libguestfs-narzędzie-testowe(1).

Debugowanie libvirt
Jeśli używasz backendu libvirt i libvirt nie działa, możesz włączyć
debugowanie przez edycję /etc/libvirt/libvirtd.conf.

Jeśli pracujesz jako użytkownik inny niż root, musisz edytować inny plik. Tworzyć
~/.config/libvirt/libvirtd.conf zawierający:

poziom_logu=1
log_outputs = "1: plik:/tmp/libvirtd.log"

Zabij wszystkie uruchomione sesje (inne niż root) libvirtd i następnym razem, gdy uruchomisz libguestfs
polecenie, powinieneś zobaczyć dużą ilość przydatnych informacji debugowania z libvirtd w
/tmp/libvirtd.log

PROJEKT/WNĘTRZA OF LIBGUESTFS


Zobacz też gościefs-wewnętrzni(1).

Czemu nie ty do wszystko przez dotychczasowy FUSE / system plików berło?
Oferujemy polecenie o nazwie gość(1) co pozwala na montowanie systemów plików gościa na
gospodarz. Jest to zaimplementowane jako moduł FUSE. Dlaczego po prostu nie wdrożymy całości
libguestfs używający tego mechanizmu, zamiast posiadania dużego i dość skomplikowanego API?

Powody są dwojakie. Po pierwsze, libguestfs oferuje wywołania API do robienia rzeczy takich jak
tworzenie i usuwanie partycji i woluminów logicznych, które nie mieszczą się w systemie plików
model bardzo łatwo. A raczej możesz je zmieścić: na przykład tworząc partycję
może być zmapowany do "mkdir /fs/hda1", ale wtedy będziesz musiał określić jakąś metodę do wyboru
rozmiar partycji (może "echo 100M > /fs/hda1/.size") i typ partycji,
sektory początkowe i końcowe itp., ale kiedy już to zrobisz, zaczyna się API oparte na systemie plików
wyglądają na bardziej skomplikowane niż API oparte na wywołaniach, które mamy obecnie.

Drugim powodem jest wydajność. Sam FUSE jest dość wydajny, ale działa
wykonywać wiele małych, niezależnych połączeń do modułu FUSE. W guestmount te muszą
być tłumaczone na wiadomości do urządzenia libguestfs, które ma duży narzut (z czasem
i w obie strony). Na przykład odczytywanie pliku w kawałkach o wielkości 64 KB jest nieefektywne, ponieważ każdy z nich
kawałek zamieniłby się w jedną podróż w obie strony. W API libguestfs jest o wiele więcej
wydajne pobieranie całego pliku lub katalogu za pośrednictwem jednego z połączeń strumieniowych, takich jak
„guestfs_download” lub „guestfs_tar_out”.

Czemu nie ty do wszystko przez GVFS?
Problemy są podobne do problemów z FUSE.

GVFS jest lepszą abstrakcją niż POSIX/FUSE. Istnieje backend FTP dla GVFS, który jest
zachęcające, ponieważ FTP jest koncepcyjnie podobny do API libguestfs. Jednak GVFS
Backend FTP wykonuje wiele jednoczesnych połączeń w celu zachowania interaktywności, co
nie możemy łatwo zrobić z libguestfs.

Czemu mogą I napisać do dotychczasowy dysk, nawet chociaż I w dodatku it tylko czytać?
Czemu robi "--ro" zjawić się do mieć Nie efekt?
Kiedy dodajesz dysk tylko do odczytu, libguestfs umieszcza zapisywalną nakładkę na górze
podstawowy dysk. Zapisy trafiają do tej nakładki i są odrzucane po zamknięciu uchwytu
(lub wyjścia "guestfish" itp.).

Istnieją dwa powody, aby zrobić to w ten sposób: Po pierwsze dyski tylko do odczytu nie są możliwe w
w wielu przypadkach (np. IDE po prostu ich nie obsługuje, więc nie możesz mieć emulowanego IDE
dysk tylko do odczytu, chociaż nie jest to powszechne w rzeczywistych instalacjach libguestfs).

Po drugie i ważniejsze, nawet gdyby dyski tylko do odczytu były możliwe, nie chciałbyś
ich. Montowanie dowolnego systemu plików, który ma dziennik, nawet "mount -o ro", powoduje, że zapisy do
system plików, ponieważ dziennik musi zostać odtworzony, a metadane zaktualizowane. Jeśli dysk
był naprawdę tylko do odczytu, nie byłbyś w stanie zamontować brudnego systemu plików.

Aby uczynić go użytecznym, tworzymy nakładkę jako miejsce do tymczasowego przechowywania tych zapisów i
potem go odrzucamy. Gwarantuje to, że podstawowy dysk jest zawsze nienaruszony.

Zwróć też uwagę, że jest dla tego test regresji podczas budowania libguestfs (in
„testy/qemu”). Jest to jeden z powodów, dla których osoby zajmujące się pakowaniem muszą uruchamiać zestaw testów.

Czy "--ro" robić cała kolekcja dyski tylko czytać?
Nie! Opcja "--ro" dotyczy tylko dysków dodanych w wierszu poleceń, tj. używając "-a" i
Opcje "-d".

W guestfish, jeśli użyjesz polecenia "dodaj", dysk zostanie dodany do odczytu i zapisu (chyba że
określ flagę "readonly:true" jawnie za pomocą polecenia).

Czy I posługiwać się „ryba gości --ro" as a droga do backup my faktyczny maszyny?
Zwykle tak jest nie dobry pomysł. Na to pytanie bardziej szczegółowo odpowiada ten mailing
publikowanie listy: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Zobacz także następne pytanie.

Czemu nie może I biegać fsck on a relacja na żywo system plików za pomocą „ryba gości --ro"?
To polecenie zwykle: nie pracy:

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

Powodem tego jest to, że qemu tworzy migawkę na oryginalnym systemie plików, ale
nie tworzy ścisłej migawki punktu w czasie. Bloki danych na podłożu
systemy plików są odczytywane przez qemu w różnym czasie w miarę postępu operacji fsck, z host
pisze pomiędzy. W rezultacie fsck widzi masową korupcję (wyobrażeniową, a nie rzeczywistą!)
i zawodzi.

To, co musisz zrobić, to utworzyć migawkę z określonego punktu w czasie. Jeśli jest to wolumin logiczny, użyj
migawka LVM2. Jeśli system plików znajduje się wewnątrz czegoś takiego jak plik btrfs/ZFS,
użyj migawki btrfs/ZFS, a następnie uruchom fsck na migawce. W praktyce nie
trzeba do tego użyć libguestfs -- po prostu uruchom /sbin/fsck bezpośrednio.

Tworzenie migawek urządzeń hosta i plików w określonym czasie jest poza zakresem
libguestfs, chociaż libguestfs może na nich operować po ich utworzeniu.

Co znajduje się w dotychczasowy różnica pomiędzy gość i ratunek wirtualny?
Wiele osób jest zdezorientowanych dwoma pozornie podobnymi narzędziami, które udostępniamy:

$ guestfish --ro -a gość.img
> biegać
> fsck /dev/sda1

$ virt-rescue --ro gość.img
> /sbin/fsck / Dev / sda1

I pojawia się powiązane pytanie, dlaczego nie możesz wpisywać pełnych poleceń powłoki?
ze wszystkimi --opcjami w guestfish (ale możesz w ratownictwo wirtualne(1)).

gość(1) to program zapewniający uporządkowany dostęp do goście(3) API. Zdarza się
być również przyjemną interaktywną powłoką, ale jej głównym celem jest ustrukturyzowany dostęp z
skrypty powłoki. Pomyśl o tym bardziej jak o wiązaniu języka, takim jak Python i inne wiązania,
ale dla powłoki. Kluczowy czynnik wyróżniający guestfish (i API libguestfs in
ogólne) to możliwość automatyzacji zmian.

ratownictwo wirtualne(1) to darmowy dla wszystkich, swobodny sposób uruchamiania urządzenia libguestfs i make
dowolne zmiany w Twojej maszynie wirtualnej. Nie jest uporządkowany, nie można go zautomatyzować, ale do robienia
szybkie poprawki doraźne dla gości, może to być całkiem przydatne.

Ale libguestfs ma również „tylne drzwi” do urządzenia, które pozwala na wysyłanie dowolnych wiadomości
polecenia powłoki. Nie jest tak elastyczny jak ratownictwo wirtualne, ponieważ nie możesz wchodzić w interakcje z
polecenia powłoki, ale i tak jest tutaj:

> debug sh "cmd arg1 arg2 ..."

Pamiętaj, że powinieneś nie polegać na tym. Może zostać usunięty lub zmieniony w przyszłości. Jeżeli twój
program wymaga jakiejś operacji, zamiast tego dodaj go do API libguestfs.

Co znajduje się w dotychczasowy sprawa w „ryba gości -i"?
Czemu robi Virt-cat tylko praca on a real VM obraz, ale virt-df działa on każdy dysk wizerunek?
Co robi "Nie korzeń urządzenie znaleziono in to operacyjny system obraz " oznaczać?
Wszystkie te pytania są powiązane na podstawowym poziomie, który może nie być natychmiastowy
oczywisty.

Na goście(3) Poziom API, "obraz dysku" to tylko stos partycji i systemów plików.

W przeciwieństwie do tego, gdy maszyna wirtualna uruchamia się, montuje te systemy plików w spójny
hierarchia taka jak:

/ (/dev/sda2)

├── /bagażnik (/dev/sda1)

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

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

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

(lub litery dysków w systemie Windows).

API przede wszystkim widzi obraz dysku na poziomie „stosu systemów plików”. Ale to również
ma sposób na sprawdzenie obrazu dysku, aby sprawdzić, czy zawiera on system operacyjny i w jaki sposób
dyski są montowane podczas uruchamiania systemu operacyjnego: „INSPECTION” w goście(3).

Użytkownicy oczekują niektórych narzędzi (takich jak Virt-cat(1)) do pracy ze ścieżkami VM:

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

Skąd wirtualny kot to wie? / var to osobna partycja? Sztuczka polega na tym, że virt-cat
wykonuje inspekcję obrazu dysku i używa go do poprawnego przetłumaczenia ścieżki.

Niektóre narzędzia (w tym Virt-cat(1) wirtualna edycja(1) virt-ls(1)) użyj inspekcji do mapowania VM
ścieżki. Inne narzędzia, takie jak virt-df(1) i wirtualne systemy plików(1) działają całkowicie w
surowy poziom "duży stos systemów plików" API libguestfs i nie używaj inspekcji.

gość(1) znajduje się na interesującym pośrednim gruncie. Jeśli używasz -a i -m linii poleceń
opcje, wtedy musisz dokładnie powiedzieć guestfishowi, jak dodać obrazy dysków i gdzie montować
przegrody. To jest surowy poziom API.

Jeśli używasz -i libguestfs przeprowadza inspekcję i montuje systemy plików dla
ty.

Z tym związany jest błąd „nie znaleziono urządzenia root w tym obrazie systemu operacyjnego”. To
oznacza, że ​​inspekcja nie mogła zlokalizować systemu operacyjnego na obrazie dysku, który podałeś
to. Możesz to zobaczyć w programach takich jak virt-cat, jeśli spróbujesz je uruchomić na czymś
który jest tylko obrazem dysku, a nie obrazem dysku maszyny wirtualnej.

Co do te "odpluskwić*" i "wewnętrzny-*" Funkcje zrobić?
Istnieje kilka funkcji używanych do debugowania i do celów wewnętrznych, które: nie
część stabilnego API.

Funkcje "debug*" (lub "guestfs_debug*"), głównie "guestfs_debug" w goście(3) i
kilka innych służy do debugowania libguestfs. Chociaż nie są częścią
stabilne API, a zatem może się zmienić lub zostać usunięte w dowolnym momencie, niektóre programy mogą chcieć wywołać
te podczas oczekiwania na dodanie funkcji do libguestfs.

Funkcje "internal-*" (lub "guestfs_internal_*") są przeznaczone wyłącznie do użytku przez libguestfs
samo. Nie ma powodu, aby programy je wywoływały, a programy nie powinny próbować ich używać
ich. Korzystanie z nich często powoduje złe rzeczy, a także nie bycie częścią
udokumentowane stabilne API.

DEVELOPERS


Gdzie do I wysłać łatki?
Prosimy o przesyłanie łatek na listę dyskusyjną libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
będzie opóźnienie do ręcznego zatwierdzenia Twojej publikacji.

Proszę nie posługiwać się GitHub Ciągnąć wywołań - one będzie be ignorowane. Powody to (a) chcemy
aby omawiać i analizować łatki na liście dyskusyjnej oraz (b) pull requesty na githubie zamieniają się w
scalaj zatwierdzenia, ale wolimy mieć liniową historię.

W jaki sposób do I zaproponować a cecha?
Duże nowe funkcje, które zamierzasz wnieść, powinny zostać omówione na liście mailingowej
najpierw (https://www.redhat.com/mailman/listinfo/libguestfs). Pozwala to uniknąć rozczarowania
i marnujemy pracę, jeśli uważamy, że funkcja nie pasowałaby do projektu libguestfs.

Jeśli chcesz zasugerować przydatną funkcję, ale nie chcesz pisać kodu, możesz złożyć
błąd (patrz "UZYSKIWANIE POMOCY I ZGŁASZANIE BŁĘDÓW") z "RFE: " na początku podsumowania
Linia.

Kto mogą popełnić do libguestfs głupku?
Około 5 osób ma dostęp do github. Łatki należy umieścić na liście w pierwszej kolejności
i POTWIERDZONE. Zasady dotyczące potwierdzania i wypychania poprawek są opisane tutaj:

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

Czy I widelec libguestfs?
Oczywiście, że możesz. Git ułatwia fork libguestfs. Github sprawia, że ​​jest to jeszcze łatwiejsze.
Miło, jeśli powiesz nam na liście mailingowej o forkach i ich przyczynach.

RÓŻNE PYTANIA


Czy I monitor dotychczasowy relacja na żywo dysk działalność of a faktyczny maszyna za pomocą libguestfs?
Częstym żądaniem jest możliwość użycia libguestfs do monitorowania aktywności dysku na żywo
gość, na przykład, aby otrzymywać powiadomienia za każdym razem, gdy gość utworzy nowy plik. Libguestfs
robi nie działaj w sposób, w jaki niektórzy ludzie wyobrażają sobie, jak widać na tym diagramie:

┌┌──────────────────────────────────┐┐.
│ program monitorujący za pomocą libguestfs │
└└──────────────────────────────────┘┘.

┌┌─────────┐┐ ┌┌───────────────────┐┐┐.
│ maszyna wirtualna na żywo │ │ urządzenie libguestfs │
├├─────────┤┤ ├├───────────────────┤┤┤.
│ jądro (1)│ │ jądro urządzenia (2) │
└└─────────┘┘ └└───────────────────┘┘┘.
↓ ↓ (połączenie r/o)
┌┌────────────────────┐┐.
| obraz dysku |
└└────────────────────┘┘.

Ten scenariusz jest bezpieczny (o ile ustawisz flagę „tylko do odczytu” podczas dodawania dysku).
Jednak jądro urządzenia libguestfs (2) nie widzi wszystkich zmian wprowadzonych na dysku
obraz, z dwóch powodów:

i. Jądro maszyny wirtualnej (1) może buforować dane w pamięci, więc nie pojawiają się na obrazie dysku.

ii. Jądro urządzenia libguestfs (2) nie przewiduje zmiany obrazu dysku
pod nim, więc jego własna pamięć podręczna nie jest magicznie aktualizowana, nawet gdy jądro VM (1)
aktualizuje obraz dysku.

Jedynym obsługiwanym rozwiązaniem jest ponowne uruchomienie całego urządzenia libguestfs za każdym razem, gdy
chcesz przyjrzeć się zmianom w obrazie dysku. Na poziomie API odpowiadającym wywoływaniu
"guestfs_shutdown", po którym następuje "guestfs_launch", co jest operacją o dużej wadze (zobacz
również występ gościa(3)).

Istnieje kilka nieobsługiwanych hacków, które możesz wypróbować, jeśli ponowne uruchomienie urządzenia to naprawdę zbyt
kosztowny:

· Wywołaj „guestfs_drop_cache (g, 3)”. Powoduje to, że wszystkie dane w pamięci podręcznej pomagają libguestfs
jądro urządzenia (2) ma zostać odrzucone, więc wraca do obrazu dysku.

Jednak samo to nie wystarczy, ponieważ qemu również buforuje niektóre dane. ty
będzie również musiał załatać libguestfs, aby (ponownie) włączyć tryb "cache=unsafe". Widzieć:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Zamiast tego użyj narzędzia takiego jak virt-bmap.

· Uruchom agenta wewnątrz gościa.

Nic nie pomaga, jeśli gość dokonuje bardziej fundamentalnych zmian (np. usuwa systemy plików).
W przypadku takich rzeczy należy ponownie uruchomić urządzenie.

(Zauważ, że jest trzeci problem, który musisz użyć spójnych migawek, aby naprawdę je zbadać)
obrazy dysków na żywo, ale jest to ogólny problem przy używaniu libguestfs na dowolnym dysku na żywo
obraz.)

Korzystaj z guestfs-faq online za pomocą usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

Komendy systemu Linux

Ad