InglesPransesEspanyol

Ad


OnWorks favicon

guestfs-faq - Online sa Cloud

Patakbuhin ang guestfs-faq sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command guestfs-faq na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


guestfs-faq - libguestfs Frequently Asked Questions (FAQ)

TUNGKOL LIBGUESTFS


Ano is libguestfs?
Ang libguestfs ay isang paraan upang lumikha, mag-access at magbago ng mga imahe sa disk. Maaari kang tumingin sa loob ng disk
mga larawan, baguhin ang mga file na nilalaman nito, gawin ang mga ito mula sa simula, baguhin ang laki ng mga ito, at marami pa
higit pa. Ito ay lalong kapaki-pakinabang mula sa mga script at programa at mula sa command line.

Ang libguestfs ay isang C library (kaya "lib-"), at isang set ng mga tool na binuo sa library na ito, at
binding para sa maraming karaniwang programming language.

Para sa karagdagang impormasyon tungkol sa kung ano ang maaaring gawin ng libguestfs basahin ang panimula sa home page
(http://libguestfs.org).

Ano ay ang birt mga tool?
Virt tool (website: http://virt-tools.org) ay isang buong hanay ng pamamahala ng virtualization
mga tool na naglalayong sa mga tagapangasiwa ng system. Ang ilan sa kanila ay nagmula sa libguestfs, ang ilan ay mula sa
libvirt at marami pang iba mula sa iba pang open source na proyekto. Kaya ang virt tools ay isang superset ng
libguestfs. Gayunpaman, ang libguestfs ay may kasamang maraming mahahalagang tool. Tingnan mo
http://libguestfs.org para sa isang buong listahan.

Ba libguestfs kailangan { libog / KVM / pula Sombrero / Fedora }?
Hindi!

Ang libvirt ay hindi kinakailangan para sa libguestfs.

Gumagana ang libguestfs sa anumang imahe ng disk, kabilang ang mga nilikha sa VMware, KVM, qemu,
VirtualBox, Xen, at marami pang ibang hypervisors, at ang mga nilikha mo mula sa simula.

Mga sponsor ng Red Hat (ibig sabihin, nagbabayad para sa) pagbuo ng libguestfs at isang malaking bilang ng iba pang bukas
pinagmumulan ng mga proyekto. Ngunit maaari mong patakbuhin ang libguestfs at ang virt tool sa maraming iba't ibang Linux
distros at Mac OS X. Sinusubukan namin ang aming makakaya upang suportahan ang lahat ng Linux distros bilang first-class
mamamayan. Ang ilang virt tool ay na-port sa Windows.

Gaano ang libguestfs ihambing sa iba mga tool?
kumpara sa kpartx
Iba ang diskarte ng Libguestfs mula sa kpartx. Ang kpartx ay nangangailangan ng ugat, at nag-mount
filesystem sa host kernel (na maaaring hindi secure - tingnan guestfs-seguridad(1)).
Ibinubukod ng Libguestfs ang iyong host kernel mula sa mga bisita, ay mas flexible, scriptable,
sumusuporta sa LVM, hindi nangangailangan ng ugat, nakahiwalay sa ibang mga proseso, at naglilinis
pagkatapos mismo. Ang Libguestfs ay higit pa sa pag-access sa file dahil magagamit mo ito
lumikha ng mga larawan mula sa simula.

kumpara sa vdfuse
Ang vdfuse ay parang kpartx ngunit para sa mga imahe ng VirtualBox. Tingnan ang paghahambing ng kpartx sa itaas.
Maaari mong gamitin ang libguestfs sa mga partition file na nalantad ng vdfuse, kahit na hindi
kinakailangan dahil ang libguestfs ay maaaring direktang ma-access ang mga imahe ng VirtualBox.

kumpara sa qemu-nbd
Ang NBD (Network Block Device) ay isang protocol para sa pag-export ng mga block device sa network.
Ang qemu-nbd ay isang NBD server na maaaring humawak ng anumang format ng disk na sinusuportahan ng qemu (hal. raw,
qcow2). Maaari mong gamitin ang libguestfs at qemu-nbd o nbdkit nang magkasama upang ma-access ang block
mga device sa network, halimbawa: "guestfish -a nbd://remote"

kumpara sa kabitan mga filesystem in ang marami
Ang pag-mount ng mga guest filesystem sa host ay hindi secure at dapat na ganap na iwasan
para sa mga hindi pinagkakatiwalaang bisita. Gumamit ng libguestfs para magbigay ng layer ng proteksyon laban sa
pagsasamantala ng filesystem. Tingnan din guestmountNa (1).

kumpara sa nahati
Sinusuportahan ng Libguestfs ang LVM. Gumagamit ang Libguestfs ng parted at nagbibigay ng karamihan sa mga feature na pinaghiwalay
sa pamamagitan ng libguestfs API.

PAGKAKITA HELP AT Pag-uulat TUMBOK


Gaano do I kilala Ano bersyon Ako ay gamit?
Ang pinakasimpleng paraan ay:

guestfish --bersyon

Ang pag-unlad ng Libguestfs ay nangyayari sa isang hindi matatag na sangay at pana-panahon kaming gumagawa ng a
stable branch kung saan namin i-backport ang mga stable patch. Upang malaman ang higit pa, basahin ang "LIBGUESTFS
VERSION NUMBERS" sa guestfsNa (3).

Gaano maaari I makuha tulong?
Ano mailing mga listahan or chat rooms ay magagamit?
Kung ikaw ay isang customer ng Red Hat na gumagamit ng Red Hat Enterprise Linux, mangyaring makipag-ugnayan
Suporta sa Red Hat: http://redhat.com/support

Mayroong isang mailing list, pangunahin para sa pagpapaunlad, ngunit ang mga gumagamit ay malugod ding magtanong
mga tanong tungkol sa libguestfs at sa virt tools:
https://www.redhat.com/mailman/listinfo/libguestfs

Maaari mo rin kaming kausapin sa IRC channel na "#libguestfs" sa FreeNode. Hindi naman kami palagi
sa paligid, kaya mangyaring manatili sa channel pagkatapos itanong ang iyong tanong at may babalik
sa iyo.

Para sa iba pang mga tool sa birt (hindi ang mga ibinigay na may libguestfs) mayroong isang pangkalahatang mga tool sa birt
mailing list: https://www.redhat.com/mailman/listinfo/virt-tools-list

Gaano do I ulat mga bug?
Mangyaring gamitin ang sumusunod na link upang magpasok ng isang bug sa Bugzilla:

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

Isama ang mas maraming detalye hangga't maaari at isang paraan upang muling gawin ang problema.

Isama ang buong output ng libguestfs-test-toolNa (1).

KARANIWANG PROBLEMA


Tingnan din ang "LIBGUESTFS GOTCHAS" sa guestfs(3) para sa ilang "gotchas" sa paggamit ng libguestfs
API.

"Maaari hindi maglaan dynamic Tagasalin buffer"
Ang hindi malinaw na error na ito ay sa katunayan isang pagkabigo ng SELinux. Kailangan mong paganahin ang sumusunod
SELinux boolean:

setsebool -P virt_use_execmem=on

Para sa higit pang impormasyon tingnan ang https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"anak paraan namatay nang hindi inaasahan"
[Ang mensahe ng error na ito ay binago sa libguestfs 1.21.18 sa isang bagay na mas paliwanag.]

Ang error na ito ay nagpapahiwatig na ang qemu ay nabigo o ang host kernel ay hindi makapag-boot. Para mas lumayo pa
impormasyon tungkol sa kabiguan, kailangan mong tumakbo:

libguestfs-test-tool

Kung, pagkatapos gamitin ito, hindi mo pa rin naiintindihan ang kabiguan, makipag-ugnayan sa amin (tingnan ang nakaraan
seksyon).

libguestfs: error: hindi maaari mahanap anumang angkop libguestfs supermin, maayos or lumang istilo kasangkapan
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: magulang direktoryo hindi natagpuan
supermin-helper: ext2: magulang direktoryo hindi natagpuan
[Ang isyung ito ay permanenteng naayos sa libguestfs ≥ 1.26.]

Kung nakikita mo ang alinman sa mga error na ito sa Debian/Ubuntu, kailangan mong patakbuhin ang sumusunod na command:

sudo update-guestfs-appliance

"Pahintulot tinanggihan" kailan tumatakbo libguestfs as ugat
Makakakuha ka ng error na tinanggihan ng pahintulot kapag nagbubukas ng imahe sa disk, kahit na tumatakbo ka
libguestfs bilang ugat.

Ito ay sanhi ng libvirt, at ito ay nangyayari lamang kapag ginagamit ang libvirt backend. Kapag tumakbo
bilang ugat, nagpasya ang libvirt na patakbuhin ang qemu appliance bilang user na "qemu.qemu". Sa kasamaang palad
kadalasang nangangahulugan ito na hindi mabubuksan ng qemu ang mga imahe sa disk, lalo na kung ang mga larawang iyon sa disk ay
pagmamay-ari ng root, o naroroon sa mga direktoryo na nangangailangan ng root access.

Mayroong bukas na bug laban sa libvirt upang ayusin ito:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Magagawa mo ito sa pamamagitan ng isa sa mga sumusunod na pamamaraan:

· Lumipat sa direktang backend:

i-export ang LIBGUESTFS_BACKEND=direkta

· Huwag patakbuhin ang libguestfs bilang ugat.

· I-chmod ang disk image at alinmang parent directory para ma-access ng qemu user ang mga ito.

· (Nasty) I-edit /etc/libvirt/qemu.conf at baguhin ang setting ng "user".

execl: /sa loob: Pahintulot tinanggihan
tandaan: Kung mangyari ang error na ito kapag gumagamit ka ng distro package ng libguestfs (hal. from
Fedora, Debian, atbp) pagkatapos ay mag-file ng isang bug laban sa distro. Ito ay hindi isang error na
dapat makita ng mga normal na user kung naihanda nang tama ang distro package.

Ang error na ito ay nangyayari sa panahon ng supermin boot phase ng pagsisimula ng appliance:

supermin: naka-mount ang bagong ugat / ugat
supermin: chroot
execl: /init: Tinanggihan ang pahintulot
supermin: debug: listahan ng direktoryo /
[...sinusundan ng maraming debug na output...]

Ito ay isang kumplikadong bug na nauugnay sa supermin(1) mga kasangkapan. Ang appliance ay ginawa
sa pamamagitan ng pagkopya ng mga file tulad ng / basahan / bash at maraming mga aklatan mula sa host. Ang file na "hostfiles"
naglilista ng mga file na dapat kopyahin mula sa host papunta sa appliance. Kung ilang file
hindi umiiral sa host kung gayon ang mga ito ay napalampas, ngunit kung ang mga file na ito ay kinakailangan sa pagkakasunud-sunod
upang (hal.) tumakbo / basahan / bash pagkatapos ay makikita mo ang error sa itaas.

Ang pag-diagnose ng problema ay kinabibilangan ng pag-aaral ng mga aklatan na kailangan ng / basahan / bash, ibig sabihin:

ldd / basahan / bash

paghahambing nito sa "hostfiles", sa mga file na aktwal na magagamit sa host filesystem,
at kasama ang output ng debug na naka-print sa mensahe ng error. Kapag nagawa mo na kung aling file
nawawala, i-install ang file na iyon gamit ang iyong manager ng package at subukang muli.

Dapat mo ring suriin na gusto ng mga file /sa loob at / basahan / bash (sa appliance) ay
maipapatupad. Ang output ng debug ay nagpapakita ng mga mode ng file.

Nagda-download, PAG-INSTALL, PAG-COMPILE LIBGUESTFS


Saan maaari I makuha ang pinakahuli binary para ...?
Fedora ≥ 11
Gamitin ang:

yum install '*guestf*'

Para sa mga pinakabagong build, tingnan ang:
http://koji.fedoraproject.org/koji/packageinfo?packageID=8391

Red Hat Enterprise Linux
RHEL 5
Ang bersyon na ipinadala sa opisyal na RHEL 5 ay napakaluma at hindi dapat gamitin maliban
kasabay ng virt-v2v. Gamitin ang up-to-date na libguestfs 1.20 package sa EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Ito ay bahagi ng default na pag-install. Sa RHEL 6 at 7 (lamang) kailangan mong i-install
"libguestfs-winsupport" upang makakuha ng suporta sa panauhin sa Windows.

Debian at Ubuntu
Para sa libguestfs <1.26, pagkatapos i-install ang libguestfs kailangan mong gawin:

sudo update-guestfs-appliance

(Ang script na ito ay inalis sa Debian/Ubuntu na may libguestfs ≥ 1.26 at sa halip ay ang
appliance ay binuo on demand.)

Sa Ubuntu lamang:

sudo chmod 0644 /boot/vmlinuz*

Maaaring kailanganin mong idagdag ang iyong sarili sa pangkat na "kvm":

sudo usermod -a -G kvm yourlogin

Debian Squeeze (6)
Nagtayo si Hilko Bengen ng mga libguestfs sa mga squeeze backport:
http://packages.debian.org/search?keywords=guestfs&searchon=name§ion=all&suite=squeeze-backports

Debian Wheezy at mas bago (7+)
Sinusuportahan ng Hilko Bengen ang libguestfs sa Debian. Ang mga opisyal na pakete ng Debian ay
Available ang: http://packages.debian.org/search?keywords=libguestfs

Ubuntu
Wala kaming full time na Ubuntu maintainer, at ang mga package na ibinibigay ng
Ang Canonical (na nasa labas ng ating kontrol) ay minsan nasira.

Nagpasya ang Canonical na baguhin ang mga pahintulot sa kernel upang hindi
nababasa maliban sa ugat. Ito ay ganap na hangal, ngunit hindi nila ito babaguhin
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Kaya bawat gumagamit
dapat gawin ito:

sudo chmod 0644 /boot/vmlinuz*

Ubuntu 12.04
libguestfs sa bersyong ito ng Ubuntu ay gumagana, ngunit kailangan mong i-update ang febootstrap
at mga seabio sa mga pinakabagong bersyon.

Kailangan mo ng febootstrap ≥ 3.14-2 mula sa:
http://packages.ubuntu.com/precise/febootstrap

Pagkatapos i-install o i-update ang febootstrap, muling itayo ang appliance:

sudo update-guestfs-appliance

Kailangan mo ng seabios ≥ 0.6.2-0ubuntu2.1 o ≥ 0.6.2-0ubuntu3 mula sa:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

Kailangan mo ring gawin (tingnan sa itaas):

sudo chmod 0644 /boot/vmlinuz*

Gentoo
Ang Libguestfs ay idinagdag sa Gentoo noong 2012-07 ni Andreis Vinogradovs (libguestfs) at
Maxim Koltsov (pangunahin ang hivex). gawin:

emerge libguestfs

SWITZERLAND
Ang Libguestfs ay idinagdag sa SuSE noong 2012 ni Olaf Hering.

Archlinux
Ang Libguestfs ay idinagdag sa AUR noong 2010.

Iba pang Linux distro
Mag-compile mula sa pinagmulan (susunod na seksyon).

Iba pang di-Linux distro
Kakailanganin mong mag-compile mula sa pinagmulan, at i-port ito.

Gaano maaari I sumulat ng libro at install libguestfs mula pinagmulan?
Maaari kang mag-compile ng libguestfs mula sa git o isang source tarball. Basahin ang README file bago
nagsisimula na

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

Huwag patakbuhin ang "make install"! Gamitin ang "./ patakbuhin" script sa halip (tingnan ang README).

Gaano maaari I sumulat ng libro at install libguestfs if my distro hindi mayroon bago sapat
qemu/supermin/kernel?
Kailangan ng Libguestfs ng supermin 5. Kung hindi pa nai-port ang supermin 5 sa iyong distro, tingnan mo
ang tanong sa ibaba.

I-compile muna ang qemu, supermin at/o ang kernel mula sa pinagmulan. gawin mo hindi kailangang "gumawa
i-install" ang mga ito.

Sa libguestfs source directory, lumikha ng dalawang file. Ang "localconfigure" ay dapat maglaman ng:

source localenv
#export PATH=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --prefix / usr "$@"

Gawing executable ang "localconfigure".

Ang "localenv" ay dapat maglaman ng:

#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

Alisin sa komento at ayusin ang mga linyang ito kung kinakailangan para magamit ang mga kahaliling program na mayroon ka
pinagsama-sama

Gamitin ang "./localconfigure" sa halip na "./configure", ngunit kung hindi man ay nag-compile ka ng libguestfs bilang
karaniwan.

Huwag patakbuhin ang "make install"! Gamitin ang "./ patakbuhin" script sa halip (tingnan ang README).

Gaano maaari I sumulat ng libro at install libguestfs wala supermin?
Kung sinusuportahan ng supermin 5 ang iyong distro, ngunit wala kang sapat na bagong supermin
naka-install, pagkatapos ay tingnan ang nakaraang tanong.

Kung hindi sinusuportahan ng supermin 5 ang iyong distro, kakailanganin mong gamitin ang "fixed
appliance method" kung saan gumagamit ka ng pre-compiled binary appliance. Upang bumuo ng libguestfs
nang walang supermin, kailangan mong ipasa ang "--disable-appliance --disable-daemon" sa alinman
./autogen.sh or . / I-configure (depende kung nagtatayo ka ayon sa pagkakabanggit mula sa git o
mula sa tarballs). Pagkatapos, kapag gumagamit ng libguestfs, ikaw dapat itakda ang "LIBGUESTFS_PATH"
environment variable sa direktoryo ng isang pre-compiled na appliance, gaya ng inilarawan din sa
"FIXED APPLIANCE" sa guestfsNa (3).

Para sa mga pre-compiled appliances, tingnan din ang: http://libguestfs.org/download/binaries/appliance/.

Ang mga patch sa port supermin sa mas maraming Linux distro ay malugod na tinatanggap.

Gaano maaari I idagdag suportahan para sVirt?
nota para Fedora/RHEL mga gumagamit: Ang pagsasaayos na ito ay ang default na nagsisimula sa Fedora 18 at
RHEL 7. Kung makakita ka ng anumang mga problema, mangyaring ipaalam sa amin o maghain ng bug.

Nagbibigay ang SVirt ng pinatigas na appliance gamit ang SELinux, na ginagawa itong napakahirap para sa isang rogue disk
imahe upang "makatakas" mula sa pagkakakulong ng mga libguestfs at makapinsala sa host (makatarungang sabihin
na kahit na sa karaniwang libguestfs ito ay magiging mahirap, ngunit ang sVirt ay nagbibigay ng dagdag na layer ng
proteksyon para sa host at higit sa lahat pinoprotektahan ang mga virtual machine sa parehong host
mula sa isa't isa).

Sa kasalukuyan upang paganahin ang sVirt kakailanganin mo ang libvirt ≥ 0.10.2 (1.0 o mas bago ang ginustong),
libguestfs ≥ 1.20, at ang mga patakaran ng SELinux mula sa kamakailang Fedora. Kung hindi ka tumatakbo
Fedora 18+, kakailanganin mong gumawa ng mga pagbabago sa iyong patakaran sa SELinux - makipag-ugnayan sa amin sa
listahan ng pag-mail.

Kapag mayroon ka nang mga kinakailangan, gawin:

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

Itakda ang SELinux sa Enforcing mode, at dapat na awtomatikong gamitin ang sVirt.

Lahat, o halos lahat, mga tampok ng libguestfs ay dapat gumana sa ilalim ng sVirt. May isang kilala
kakulangan: birt-rescue(1) ay hindi gagamit ng libvirt (kaya sVirt), ngunit bumabalik sa direktang
paglulunsad ng qemu. Kaya hindi ka kasalukuyang makakakuha ng benepisyo ng proteksyon ng sVirt kapag gumagamit
birt-rescue.

Maaari mong suriin kung ang sVirt ay ginagamit sa pamamagitan ng pagpapagana ng libvirtd logging (tingnan ang
/etc/libvirt/libvirtd.log), pagpatay at pag-restart ng libvirtd, at pagsuri sa mga log file
para sa "Pagtatakda ng konteksto ng SELinux sa ..." na mga mensahe.

Sa teorya, dapat suportahan ng sVirt ang AppArmor, ngunit hindi pa namin ito sinubukan. Ito ay halos
tiyak na nangangailangan ng pag-patch ng libvirt at pagsulat ng patakaran ng AppArmor.

Libguestfs ay a Talaga mahaba listahan of dependencies!
Ang base library ay hindi masyadong nakadepende, ngunit may tatlong dahilan ng mahabang listahan
ng iba pang dependencies:

1. Ang Libguestfs ay kailangang makapagbasa at mag-edit ng maraming iba't ibang mga format ng disk. Halimbawa,
Ang suporta ng XFS ay nangangailangan ng mga tool ng XFS.

2. May mga binding sa wika para sa maraming iba't ibang wika, lahat ay nangangailangan ng sarili nilang wika
mga kasangkapan sa pagpapaunlad. Ang lahat ng mga binding ng wika (maliban sa C) ay opsyonal.

3. Mayroong ilang opsyonal na feature ng library na maaaring hindi paganahin.

Dahil ang libguestfs ≥ 1.26 posibleng hatiin ang mga dependency ng appliance (item 1 sa
ang listahan sa itaas) at sa gayon ay mayroong (hal.) "libguestfs-xfs" bilang isang hiwalay na subpackage para sa
pagproseso ng mga imahe ng XFS disk. Hinihikayat namin ang mga downstream packager na simulan ang paghahati sa base
libguestfs package sa mas maliliit na subpackage.

Mali sa panahon ng ilunsad on Fedora 18, RHEL 7
Sa Fedora ≥ 18 at RHEL ≥ 7, ang libguestfs ay gumagamit ng libvirt upang pamahalaan ang appliance. dati
(at upstream) ang libguestfs ay direktang nagpapatakbo ng qemu:

┌────────────────────────────────────
│ libguestfs │
├────────────────┬────────────────────
│ direktang backend │ libvirt backend │
└────────────────┴───────────────────

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

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

upstream Fedora 18+
hindi Fedora RHEL 7+
hindi RHEL

Ang libvirt backend ay mas sopistikado, na sumusuporta sa SELinux/sVirt (tingnan sa itaas),
hotplugging at marami pa. Gayunpaman, ito ay mas kumplikado at hindi gaanong matatag.

Kung mayroon kang mga problema sa pahintulot gamit ang libvirt backend, maaari kang lumipat sa direkta
backend sa pamamagitan ng pagtatakda ng environment variable na ito:

i-export ang LIBGUESTFS_BACKEND=direkta

bago magpatakbo ng anumang libguestfs program o virt tool.

Gaano maaari I lumipat sa a maayos / itayo appliance?
Ito ay maaaring mapabuti ang katatagan at pagganap ng libguestfs sa Fedora at RHEL.

Anumang oras pagkatapos i-install ang libguestfs, patakbuhin ang mga sumusunod na command bilang root:

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

Ngayon itakda ang sumusunod na variable ng kapaligiran bago gamitin ang libguestfs o anumang virt tool:

i-export ang LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance

Siyempre maaari mong baguhin ang landas sa anumang direktoryo na gusto mo. Maaari mong ibahagi ang appliance
sa mga makina na may parehong arkitektura (hal. lahat ng x86-64), ngunit tandaan na ang libvirt
hahadlang sa iyo na ibahagi ang appliance sa NFS dahil sa mga problema sa pahintulot (kaya
lumipat sa direktang backend o huwag gumamit ng NFS).

Gaano maaari I pabilisin up libguestfs nagtatayo?
Sa ngayon ang pinakamahalagang bagay na maaari mong gawin ay i-install at maayos na i-configure ang Squid.
Tandaan na ang default na configuration na ipinapadala kasama ng Squid ay basura, kaya ang pag-configure nito ay basura
hindi opsyonal.

Narito ang isang napakagandang lugar upang magsimula sa configuration ng Squid:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Tiyaking tumatakbo ang Squid, at ang mga variable ng kapaligiran ay $http_proxy at $ftp_proxy
tinuturo ito.

Sa pagtakbo ng Squid at wastong na-configure, ang mga build ng appliance ay dapat bawasan sa iilan
minuto.

Gaano maaari I pabilisin up libguestfs gagawa (Debian)?

Iminumungkahi ni Hilko Bengen ang paggamit ng "approx" na isang Debian archive proxy
(http://packages.debian.org/approx). Ang tool na ito ay nakadokumento sa Debian sa tinatayang(8)
manu-manong pahina.

BILIS, DISK Puwang GINAMIT BY LIBGUESTFS


tandaan: Karamihan sa impormasyon sa seksyong ito ay inilipat: guestfs-performanceNa (1).

Mag-upload or magsulat tila napaka mabagal
Kung ang pinagbabatayan na disk ay hindi ganap na inilalaan (hal. kalat-kalat na raw o qcow2) kung gayon ang mga pagsusulat ay maaaring
mabagal dahil ang host operating system ay kailangang gumawa ng magastos na paglalaan ng disk habang ikaw ay
pagsusulat. Ang solusyon ay gumamit ng ganap na inilaan na format sa halip, ibig sabihin. hindi hiwa-hiwalay na hilaw, o
qcow2 na may opsyong "preallocation=metadata".

Libguestfs Gumagamit masyado magkano disk space!
Ang libguestfs ay nag-cache ng isang malaking appliance sa:

/var/tmp/.guestfs-

Kung ang variable ng kapaligiran na "TMPDIR" ay tinukoy, kung gayon $TMPDIR/.guestfs- Ginagamit
sa halip.

Ligtas na tanggalin ang direktoryo na ito kapag hindi ka gumagamit ng libguestfs.

virt-sparsify tila sa gumawa ang larawan lumaki sa ang ganap laki of ang sa katunayan disk
Kung ang input sa virt-sparsify(1) ay hilaw, pagkatapos ay ang output ay hilaw na kalat-kalat. Siguraduhin mo
sinusukat mo ang output gamit ang isang tool na nauunawaan ang sparseness tulad ng "du -sh".
Maaari itong gumawa ng malaking pagkakaiba:

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

(Ihambing ang nakikitang laki 100M kumpara sa aktwal na laki 3.6M)

Kung ang lahat ng ito ay nalilito sa iyo, gumamit ng hindi kalat-kalat na format ng output sa pamamagitan ng pagtukoy sa --convert
opsyon, hal:

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

Bakit hindi virt-resize trabaho on ang disk larawan sa lugar?
Ang pag-resize ng isang disk image ay napakahirap -- lalo na ang pagtiyak na hindi ka mawawalan ng data o
sirain ang bootloader. Ang kasalukuyang pamamaraan ay epektibong lumilikha ng bagong disk image at mga kopya
ang data plus bootloader mula sa luma. Kung may mali, maaari kang pumunta palagi
bumalik sa orihinal.

Kung gagawin natin ang virt-resize na trabaho sa lugar kung gayon ay magkakaroon ng mga limitasyon: para sa
halimbawa, hindi ka papayagang ilipat ang mga kasalukuyang partisyon (dahil ang paglipat ng data sa kabuuan
ang parehong disk ay malamang na masira ang data sa kaganapan ng pagkawala ng kuryente o pag-crash),
at LVM ay magiging napakahirap na suportahan (dahil sa halos arbitrary na pagmamapa
sa pagitan ng nilalaman ng LV at pinagbabatayan na mga bloke ng disk).

Ang isa pang paraan na aming isinasaalang-alang ay ang paglalagay ng snapshot sa orihinal na imahe ng disk, kaya
na ang orihinal na data ay hindi nagalaw at ang mga pagkakaiba lamang ang naitala sa snapshot.
Magagawa mo ito ngayon gamit ang "qemu-img create" + "virt-resize", ngunit ang qemu ay kasalukuyang hindi
sapat na matalino upang makilala kapag ang parehong bloke ay isinulat pabalik sa snapshot tulad ng dati
ay umiiral sa backing disk, kaya makikita mo na hindi ka nakakatipid ng anumang espasyo o oras.

Sa buod, ito ay isang mahirap na problema, at kung ano ang mayroon kami ngayon ay halos gumagana kaya kami ay nag-aatubili
para baguhin ito.

Bakit hindi virt-sparsify trabaho on ang disk larawan sa lugar?
Sa libguestfs ≥ 1.26, maaari na ngayong gumana ang virt-sparsify sa mga imahe ng disk sa lugar. Gamitin ang:

virt-sparsify --in-place disk.img

Ngunit dapat mo munang basahin ang "IN-PLACE SPARSIFICATION" sa virt-sparsifyNa (1).

PROBLEMA PAGBUKAS DISK Mga larawan


Malayo libog bisita hindi maaari be binuksan.
Ang pagbubukas ng mga malayuang bisita sa libvirt ay hindi suportado sa ngayon. Halimbawa, hindi ito gagana:

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

Upang buksan ang mga malalayong disk kailangan mong i-export ang mga ito kahit papaano, pagkatapos ay kumonekta sa pag-export. Para sa
halimbawa kung nagpasya kang gumamit ng NBD:

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

Kasama sa iba pang mga posibilidad ang ssh (kung ang qemu ay sapat na kamakailan), NFS o iSCSI. Tingnan ang "MALAYO
STORAGE" sa guestfsNa (3).

Gaano maaari I buksan ito kakaiba disk pinagmulan?
Mayroon kang isang disk image na matatagpuan sa loob ng isa pang system na nangangailangan ng access sa pamamagitan ng isang library /
HTTP / REST / proprietary API, o na-compress o naka-archive sa ilang paraan. (Isang halimbawa
ay magiging malayuang pag-access sa mga larawang sulyap ng OpenStack nang hindi aktwal na dina-download ang mga ito.)

Mayroon kaming kapatid na proyekto na tinatawag na nbdkit (https://github.com/libguestfs/nbdkit). Ito
Hinahayaan ka ng proyekto na gawing NBD server ang anumang disk source. Maaaring ma-access ng Libguestfs ang NBD
direkta sa mga server, hal:

guestfish -a nbd://remote

Ang nbdkit ay may malawak na lisensya, kaya maaari mo itong i-link o isama ito sa mga proprietary library
at code. Mayroon din itong simple, stable na plugin API kaya madali mong maisulat ang mga plugin laban sa
ang API na patuloy na gagana sa hinaharap.

pagkakamali pagbubukas VMDK mga disk: "ginagamit a vmdk tampok alin is hindi suportado by ito qemu bersyon:
VMDK bersyon 3"
Sinusuportahan lamang ng Qemu (at samakatuwid ang libguestfs) ng ilang partikular na imahe ng disk ng VMDK. Ang iba ay hindi gagana,
pagbibigay nito o katulad na mga pagkakamali.

Pinakamainam na may mag-aayos ng qemu upang suportahan ang pinakabagong mga tampok ng VMDK, ngunit pansamantala
mayroon kang tatlong pagpipilian:

1. Kung ang bisita ay naka-host sa isang live, maaabot na ESX server, pagkatapos ay hanapin at i-download ang
tinatawag na disk image somename-flat.vmdk. Sa kabila ng pangalan, ito ay isang raw disk image, at
maaaring mabuksan ng kahit ano.

Kung mayroon kang isang kamakailang sapat na bersyon ng qemu at libguestfs, maaaring magagawa mo ito
i-access ang disk image na ito nang malayuan gamit ang alinman sa HTTPS o ssh. Tingnan ang "REMOTE STORAGE" sa
guestfsNa (3).

2. Gamitin ang proprietary vdiskmanager tool ng VMware para i-convert ang imahe sa raw na format.

3. Gumamit ng nbdkit gamit ang proprietary VDDK plugin para live na i-export ang disk image bilang isang NBD
pinagmulan. Ito ay dapat magpapahintulot sa iyo na basahin at isulat ang VMDK file.

UFS mga disk (as ginamit by BSD) hindi maaari be binuksan.
Ang format ng UFS filesystem ay may maraming mga variant, at ang mga ito ay hindi nagpapakilala sa sarili. Ang
Dapat sabihin sa Linux kernel kung aling variant ng UFS ang dapat nitong gamitin, na hindi maaaring gamitin ng libguestfs
kilala.

Kailangan mong ipasa ang tamang opsyon sa pag-mount na "ufstype" kapag ini-mount ang mga filesystem na ito.

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

Windows ReFS
Ang Windows ReFS ay ZFS/Btrfs copy ng Microsoft. Ang filesystem na ito ay hindi pa nababaligtad
ininhinyero at ipinatupad sa Linux kernel, at samakatuwid ay hindi sinusuportahan ng libguestfs
ito. Sa sandaling ito ay tila napakabihirang "sa ligaw".

Hindi ASCII character huwag lumitaw on VFAT mga filesystem.
Mga karaniwang sintomas ng problemang ito:

· Makakakuha ka ng error kapag gumawa ka ng file kung saan naglalaman ang filename ng hindi ASCII
mga character, partikular na hindi 8-bit na mga character mula sa mga wikang Asyano (Chinese, Japanese,
atbp). Ang filesystem ay VFAT.

· Kapag naglista ka ng isang direktoryo mula sa isang VFAT filesystem, lalabas ang mga filename bilang mga tandang pananong.

Ito ay isang depekto sa disenyo ng GNU/Linux system.

Nag-iimbak ang VFAT ng mahahabang filename bilang mga UTF-16 na character. Kapag binubuksan o ibinabalik ang mga filename, ang
Kailangang isalin ng Linux kernel ang mga ito sa ilang anyo ng 8 bit string. Ang UTF-8 ay ang
malinaw na pagpipilian, maliban sa mga user ng Linux na nagpapatuloy sa paggamit ng mga lokal na hindi UTF-8 (ang user's
locale ay hindi kilala sa kernel dahil ito ay isang function ng libc).

Samakatuwid kailangan mong sabihin sa kernel kung anong pagsasalin ang gusto mong gawin kapag ini-mount mo ang
filesystem. Ang dalawang pamamaraan ay ang parameter na "iocharset" (na hindi nauugnay sa
libguestfs) at ang flag na "utf8".

Kaya para gumamit ng VFAT filesystem dapat mong idagdag ang flag na "utf8" kapag nag-mount. Mula sa guestfish,
gamitin ang:

> mount-options utf8 /dev/sda1 /

o sa command line ng guestfish:

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

o mula sa API:

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

Pagkatapos ay isasalin ng kernel ang mga filename papunta at mula sa mga string ng UTF-8.

Isinaalang-alang namin ang pagdaragdag ng opsyon sa pag-mount na ito nang malinaw, ngunit sa kasamaang-palad mayroong ilan
mga problema sa paggawa nito:

· Sa ilang sistema ng Linux, hindi gumagana ang "utf8" mount option. Hindi namin tiyak
maunawaan kung anong mga system o bakit, ngunit ito ay mapagkakatiwalaang naiulat ng isang user.

· Pipigilan ka nitong gamitin ang parameter na "iocharset" dahil hindi ito tugma
gamit ang "utf8". Malamang na hindi magandang ideya na gamitin ang parameter na ito, ngunit hindi namin gusto
upang maiwasan ito.

Hindi ASCII character lumitaw as magbigay-diin (_) on ISO9660 mga filesystem.
Ang filesystem ay hindi naihanda nang tama gamit ang mkisofs o genisoimage. Siguraduhin na ang
filesystem ay nilikha gamit ang Joliet at/o Rock Ridge extension. libguestfs ay hindi
nangangailangan ng anumang espesyal na opsyon sa pag-mount upang mahawakan ang filesystem.

Maaari mong hindi buksan Windows bisita alin gamitin NTFS
Nakikita mo ang mga error tulad ng:

mount: hindi kilalang uri ng filesystem 'ntfs'

Sa Red Hat Enterprise Linux o CentOS, kailangan mong i-install ang libguestfs-winsupport
Pakete.

Maaari mong hindi buksan or siyasatin RHEL 7 panauhin.
Maaari mong hindi buksan Linux bisita alin gamitin XFS.
Ang mga panauhin ng RHEL 7, at sinumang iba pang panauhin na gumagamit ng XFS, ay mabubuksan ng mga libguestfs, ngunit ikaw
kailangang i-install ang package na "libguestfs-xfs".

GAMIT LIBGUESTFS IN IYONG SARILI MONG MGA PROGRAMA


Ang API ay daan-daan of paraan, saan do I magsisimula?
Inirerekomenda namin na magsimula ka sa pamamagitan ng pagbabasa ng pangkalahatang-ideya ng API: "PANGKALAHATANG-IDEYA ng API" sa guestfsNa (3).

Bagama't sinasaklaw ng pangkalahatang-ideya ng API ang C API, sulit pa rin itong basahin kahit na ikaw
gagamit ng ibang programming language, dahil pareho lang ang API, simple lang
lohikal na pagbabago sa mga pangalan ng mga tawag:

C guestfs_ln_sf (g, target, linkname);
Python g.ln_sf (target, linkname);
OCaml g#ln_sf target na linkname;
Perl $g->ln_sf (target, linkname);
Shell (guestfish) ln-sf target na linkname
PHP guestfs_ln_sf ($g, $target, $linkname);

Kapag pamilyar ka na sa pangkalahatang-ideya ng API, dapat mong tingnan ang listahang ito ng pagsisimula
mga puntos para sa iba pang mga binding ng wika: "PAGGAMIT NG LIBGUESTFS WITH OTHER PROGRAMMING WIKA" sa
guestfsNa (3).

Maaari I gamitin libguestfs in my pagmamay-ari / sarado pinagmulan / komersyal programa?
Sa pangkalahatan, oo. Gayunpaman, hindi ito legal na payo - basahin ang lisensyang kasama
libguestfs, at kung mayroon kang mga partikular na katanungan makipag-ugnayan sa isang abogado.

Sa source tree ang lisensya ay nasa file na "COPYING.LIB" (LGPLv2+ para sa library at
bindings) at "KOPYA" (GPLv2+ para sa mga standalone na programa).

NAG-DEBUGG LIBGUESTFS


Tulong, ito hindi nagtatrabaho!
Kung walang libguestfs program ang tila gumagana, patakbuhin ang program sa ibaba at i-paste ang
kumpleto, hindi nabago output sa isang email sa "libguestfs" @ "redhat.com":

libguestfs-test-tool

Kung nabigo ang isang partikular na operasyon, ibigay ang lahat ng impormasyon sa checklist na ito, sa isang email
sa "libguestfs" @ "redhat.com":

1. Ano ang sinusubukan mong gawin?

2. Anong eksaktong (mga) utos ang iyong pinatakbo?

3. Ano ang eksaktong error o output ng mga utos na ito?

4. Paganahin ang pag-debug, patakbuhin muli ang mga command, at kunin ang matapos output. Do hindi
i-edit ang output.

i-export ang LIBGUESTFS_DEBUG=1
i-export ang LIBGUESTFS_TRACE=1

5. Isama ang bersyon ng libguestfs, ang bersyon ng operating system, at kung paano mo na-install
libguestfs (hal. mula sa pinagmulan, "yum install", atbp.)

Gaano do I mag-alis ng mga insekto kailan paggamit anumang libguestfs programa or kasangkapan (eg. virt-v2v or virt-df)?
Mayroong dalawang "LIBGUESTFS_*" na environment variable na maaari mong itakda upang makakuha ng higit pa
impormasyon mula sa libguestfs.

"LIBGUESTFS_TRACE"
Itakda ito sa 1 at ipi-print ng libguestfs ang bawat command / API na tawag sa isang format na
ay katulad ng mga utos ng guestfish.

"LIBGUESTFS_DEBUG"
Itakda ito sa 1 upang paganahin ang napakalaking halaga ng mga mensahe sa pag-debug. Kung sa tingin mo
may ilang problema sa loob ng libguestfs appliance, kung gayon dapat mong gamitin ito
pagpipilian.

Upang itakda ang mga ito mula sa shell, gawin ito bago patakbuhin ang programa:

i-export ang LIBGUESTFS_TRACE=1
i-export ang LIBGUESTFS_DEBUG=1

Para sa csh/tcsh ang katumbas na mga utos ay:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Para sa karagdagang impormasyon, tingnan ang: "Mga VARIABLE NG KAPALIGIRAN" sa guestfsNa (3).

Gaano do I mag-alis ng mga insekto kailan paggamit guestfish?
Maaari mong gamitin ang parehong mga variable ng kapaligiran sa itaas. Bilang kahalili, gamitin ang mga pagpipilian sa guestfish
-x (upang masubaybayan ang mga utos) o -v (upang makuha ang buong debug na output), o pareho.

Para sa karagdagang impormasyon, tingnan ang: guestfishNa (1).

Gaano do I mag-alis ng mga insekto kailan paggamit ang API?
Tawagan ang "guestfs_set_trace" sa guestfs(3) upang paganahin ang mga bakas ng utos, at/o
"guestfs_set_verbose" sa guestfs(3) upang paganahin ang mga mensahe sa pag-debug.

Para sa pinakamahusay na mga resulta, tawagan ang mga function na ito sa lalong madaling panahon, pagkatapos lamang gawin ang
pinangangasiwaan ng guestfs kung kaya mo, at tiyak bago tumawag sa paglunsad.

Gaano do I pagbihag mag-alis ng mga insekto output at ilagay it sa my pagtotroso sistema?
Gamitin ang API ng kaganapan. Para sa mga halimbawa, tingnan ang: "SETTING CALBACKS TO HANDLE EVENTS" in guestfs(3)
at ang mga halimbawa/debug-logging.c programa sa mga mapagkukunan ng libguestfs.

Paghuhukay mas malalim sa ang kasangkapan sipain proseso.
Paganahin ang pag-debug at pagkatapos ay basahin ang dokumentasyong ito sa proseso ng pag-boot ng appliance:
guestfs-internalsNa (1).

libguestfs nag-hang or nabigo sa panahon ng tumakbo/ilunsad.
Paganahin ang pag-debug at tingnan ang buong output. Kung hindi mo alam kung ano ang nangyayari,
maghain ng ulat ng bug, kasama ang matapos output ng libguestfs-test-toolNa (1).

Pag-debug libog
Kung gumagamit ka ng libvirt backend, at nabigo ang libvirt, maaari mong paganahin
pag-debug sa pamamagitan ng pag-edit /etc/libvirt/libvirtd.conf.

Kung tumatakbo ka bilang non-root, kailangan mong mag-edit ng ibang file. Lumikha
~/.config/libvirt/libvirtd.conf naglalaman ng:

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

Patayin ang anumang session (non-root) libvirtd na tumatakbo, at sa susunod na patakbuhin mo ang libguestfs
command, dapat kang makakita ng malaking halaga ng kapaki-pakinabang na impormasyon sa pag-debug mula sa libvirtd in
/tmp/libvirtd.log

DISENYO/INTERNAL OF LIBGUESTFS


Tingnan din guestfs-internalsNa (1).

Bakit huwag ikaw do lahat ng bagay sa pamamagitan ng ang Piyus / filesystem interface?
Nag-aalok kami ng isang utos na tinatawag guestmount(1) na nagbibigay-daan sa iyong i-mount ang mga guest filesystem sa
host. Ito ay ipinatupad bilang isang FUSE module. Bakit hindi na lang natin ipatupad ang kabuuan ng
libguestfs gamit ang mekanismong ito, sa halip na magkaroon ng malaki at medyo kumplikadong API?

Dalawang beses ang mga dahilan. Una, nag-aalok ang libguestfs ng mga tawag sa API para sa paggawa ng mga bagay tulad ng
paggawa at pagtanggal ng mga partisyon at lohikal na volume, na hindi akma sa isang filesystem
modelo nang napakadali. O sa halip, maaari mong magkasya ang mga ito sa: halimbawa, paggawa ng partition
maaaring i-mapa sa "mkdir /fs/hda1" ngunit pagkatapos ay kailangan mong tukuyin ang ilang paraan upang pumili
ang laki ng partition (marahil "echo 100M > /fs/hda1/.size"), at ang uri ng partition,
pagsisimula at pagtatapos ng mga sektor atbp., ngunit kapag nagawa mo na ang filesystem-based na API ay magsisimula na
mukhang mas kumplikado kaysa sa call-based na API na mayroon kami sa kasalukuyan.

Ang pangalawang dahilan ay para sa kahusayan. Ang FUSE mismo ay makatwirang mahusay, ngunit ginagawa nito
gumawa ng maraming maliliit at independiyenteng mga tawag sa FUSE module. Sa guestmount ang mga ito ay kailangang
isalin sa mga mensahe sa libguestfs appliance na may malaking overhead (sa oras
at mga round trip). Halimbawa, ang pagbabasa ng file sa 64 KB na mga tipak ay hindi epektibo dahil ang bawat isa
chunk ay magiging isang solong round trip. Sa libguestfs API ito ay higit pa
mahusay na mag-download ng isang buong file o direktoryo sa pamamagitan ng isa sa mga streaming na tawag tulad ng
"guestfs_download" o "guestfs_tar_out".

Bakit huwag ikaw do lahat ng bagay sa pamamagitan ng GVFS?
Ang mga problema ay katulad ng mga problema sa FUSE.

Ang GVFS ay isang mas mahusay na abstraction kaysa sa POSIX/FUSE. Mayroong isang FTP backend para sa GVFS, na
nakapagpapatibay dahil ang FTP ay konseptong katulad ng libguestfs API. Gayunpaman ang GVFS
Ang FTP backend ay gumagawa ng maraming sabay-sabay na koneksyon upang mapanatili ang interaktibidad, na
hindi namin madaling gawin sa libguestfs.

Bakit maaari I magsulat sa ang disk, kahit na bagaman I idinagdag it Basahin lamang?
Bakit ang "--ro" lumitaw sa mayroon hindi epekto?
Kapag nagdagdag ka ng disk read-only, ang libguestfs ay naglalagay ng nasusulat na overlay sa ibabaw ng
pinagbabatayan na disk. Ang mga pagsusulat ay napupunta sa overlay na ito, at itinatapon kapag nakasara ang hawakan
(o "guestfish" atbp. paglabas).

Mayroong dalawang dahilan para gawin ito sa ganitong paraan: Una ang mga read-only na disk ay hindi posible sa
maraming kaso (hal. Hindi lang sinusuportahan ng IDE ang mga ito, kaya hindi ka maaaring magkaroon ng IDE-emulated
read-only na disk, bagama't hindi ito karaniwan sa mga tunay na libguestfs installation).

Pangalawa at higit sa lahat, kahit na ang mga read-only na disk ay posible, hindi mo gugustuhin
sila. Ang pag-mount ng anumang filesystem na may journal, kahit na "mount -o ro", ay nagiging sanhi ng pagsusulat sa
ang filesystem dahil kailangang i-replay ang journal at i-update ang metadata. Kung ang disk
ay talagang read-only, hindi ka makakapag-mount ng maruming filesystem.

Upang gawin itong magagamit, ginagawa namin ang overlay bilang isang lugar upang pansamantalang iimbak ang mga pagsusulat na ito, at
pagkatapos ay itinatapon namin ito pagkatapos. Tinitiyak nito na ang pinagbabatayan na disk ay palaging hindi nagagalaw.

Tandaan din na mayroong isang regression test para dito kapag bumubuo ng libguestfs (in
"mga pagsubok/qemu"). Ito ay isang dahilan kung bakit mahalaga para sa mga packager na patakbuhin ang test suite.

Ba "--ro" gumawa lahat mga disk Basahin lamang?
Hindi! Ang pagpipiliang "--ro" ay nakakaapekto lamang sa mga disk na idinagdag sa command line, ibig sabihin. gamit ang "-a" at
"-d" na mga opsyon.

Sa guestfish, kung gagamitin mo ang "add" command, ang disk ay idinagdag read-write (maliban kung ikaw
tahasang tukuyin ang flag na "readonly:true" kasama ng command).

Maaari I gamitin "guestfish --ro" as a paraan sa backup my sa katunayan machine?
Kadalasan ito ay hindi isang magandang ideya. Ang tanong ay sinasagot nang mas detalyado sa pag-mail na ito
pag-post ng listahan: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Tingnan din ang susunod na tanong.

Bakit hindi pwede I tumakbo fsck on a mabuhay filesystem paggamit "guestfish --ro"?
Ang utos na ito ay karaniwang hindi trabaho:

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

Ang dahilan nito ay ang qemu ay lumilikha ng isang snapshot sa orihinal na filesystem, ngunit ito
ay hindi gumagawa ng mahigpit na point-in-time na snapshot. Mga bloke ng data sa pinagbabatayan
Ang filesystem ay binabasa ng qemu sa iba't ibang oras habang umuusad ang operasyon ng fsck, kasama ang host
nagsusulat sa pagitan. Ang resulta ay nakikita ng fsck ang napakalaking katiwalian (haka-haka, hindi totoo!)
at nabigo.

Ang kailangan mong gawin ay lumikha ng isang point-in-time na snapshot. Kung ito ay isang lohikal na dami, gamitin
isang snapshot ng LVM2. Kung ang filesystem ay matatagpuan sa loob ng isang bagay tulad ng btrfs/ZFS file,
gumamit ng btrfs/ZFS snapshot, at pagkatapos ay patakbuhin ang fsck sa snapshot. Sa pagsasanay ay hindi mo
kailangang gumamit ng libguestfs para dito -- tumakbo lang /sbin/fsck direkta.

Ang paggawa ng mga point-in-time na snapshot ng mga host device at file ay nasa labas ng saklaw ng
libguestfs, bagama't ang libguestfs ay maaaring gumana sa kanila kapag nalikha na ang mga ito.

Ano ang ang pagkakaiba sa pagitan ng guestfish at virt-rescue?
Maraming tao ang nalilito sa dalawang mababaw na magkatulad na tool na ibinibigay namin:

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

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

At ang kaugnay na tanong na pagkatapos ay lumitaw ay kung bakit hindi mo ma-type ang buong shell command
kasama ang lahat ng --opsyon sa guestfish (ngunit maaari mong in birt-rescue(1)).

guestfish(1) ay isang programang nagbibigay ng structured na access sa guestfs(3) API. Nangyayari ito
upang maging isang magandang interactive na shell din, ngunit ang pangunahing layunin nito ay nakabalangkas na pag-access mula sa
mga script ng shell. Isipin ito na parang isang wika na nagbubuklod, tulad ng Python at iba pang mga binding,
ngunit para sa shell. Ang pangunahing kadahilanan ng pagkakaiba ng guestfish (at ang libguestfs API sa
pangkalahatan) ay ang kakayahang i-automate ang mga pagbabago.

birt-rescueAng (1) ay isang libreng-para-sa-lahat na libreng form na paraan upang i-boot ang libguestfs appliance at gawin
di-makatwirang mga pagbabago sa iyong VM. Hindi ito nakabalangkas, hindi mo ito ma-automate, ngunit para sa paggawa
mabilis na ad-hoc na pag-aayos sa iyong mga bisita, maaari itong maging kapaki-pakinabang.

Ngunit, ang libguestfs ay mayroon ding "backdoor" sa appliance na nagpapahintulot sa iyong magpadala ng arbitrary
mga utos ng shell. Hindi ito kasing flexible gaya ng virt-rescue, dahil hindi ka maaaring makipag-ugnayan sa
mga utos ng shell, ngunit narito pa rin:

> debug sh "cmd arg1 arg2 ..."

Tandaan na dapat mo hindi umasa dito. Maaari itong alisin o baguhin sa hinaharap. Kung ang iyong
Ang programa ay nangangailangan ng ilang operasyon, mangyaring idagdag ito sa libguestfs API sa halip.

Ano ang ang makitungo sa "guestfish -ako"?
Bakit ang birt-pusa lamang trabaho on a tunay VM imahe, pero virt-df gumagana on anumang disk larawan?
Ano ang "hindi ugat aparato natagpuan in ito pampag-oopera sistema imahe " ibig sabihin?
Ang lahat ng mga tanong na ito ay nauugnay sa isang pangunahing antas na maaaring hindi kaagad
halata.

Sa guestfs(3) API level, ang isang "disk image" ay isang tumpok lamang ng mga partition at filesystem.

Sa kaibahan, kapag nag-boot ang virtual machine, ini-mount ang mga filesystem na iyon sa isang pare-pareho
hierarchy tulad ng:

/ (/dev/sda2)

.. / boot (/dev/sda1)

.. / home (/dev/vg_external/Homes)

.. / usr (/dev/vg_os/lv_usr)

.. / var (/dev/vg_os/lv_var)

(o mga drive letter sa Windows).

Una sa lahat, nakikita ng API ang imahe ng disk sa antas ng "pile ng mga filesystem." Ngunit ito rin
ay may paraan upang siyasatin ang disk image upang makita kung naglalaman ito ng operating system, at kung paano ang
ang mga disk ay naka-mount kapag nag-boot ang operating system: "INSPECTION" in guestfsNa (3).

Inaasahan ng mga gumagamit ang ilang mga tool (tulad ng birt-pusa(1)) upang gumana sa mga VM path:

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

Paano nalaman ni virt-cat yan / var ay isang hiwalay na partisyon? Ang daya ay ang birt-pusa
nagsasagawa ng inspeksyon sa imahe ng disk, at ginagamit iyon upang isalin nang tama ang landas.

Ilang tool (kabilang ang birt-pusaNa (1), virt-editNa (1), birt-ls(1)) gumamit ng inspeksyon upang i-map ang VM
mga landas. Iba pang mga tool, tulad ng virt-df(1) at virt-filesystems(1) gumana nang buo sa
hilaw na "malaking tumpok ng mga filesystem" na antas ng libguestfs API, at huwag gumamit ng inspeksyon.

guestfish(1) ay nasa isang kawili-wiling gitnang lupa. Kung gagamitin mo ang -a at -m command line
mga pagpipilian, pagkatapos ay kailangan mong sabihin sa guestfish nang eksakto kung paano magdagdag ng mga imahe sa disk at kung saan i-mount
mga partisyon. Ito ang hilaw na antas ng API.

Kung gagamitin mo ang -i opsyon, ang libguestfs ay nagsasagawa ng inspeksyon at ini-mount ang mga filesystem para sa
iyo.

Ang error na "walang root device na natagpuan sa imahe ng operating system na ito" ay nauugnay dito. Ito
nangangahulugan na ang inspeksyon ay hindi mahanap ang isang operating system sa loob ng disk image na iyong ibinigay
ito. Maaari mong makita ito mula sa mga programa tulad ng virt-cat kung susubukan mong patakbuhin ang mga ito sa isang bagay
na isang disk image lamang, hindi isang virtual machine disk image.

Ano do mga ito "debug*" at "panloob-*" function gawin?
Mayroong ilang mga function na ginagamit para sa pag-debug at mga panloob na layunin na hindi
bahagi ng matatag na API.

Ang "debug*" (o "guestfs_debug*") ay gumagana, pangunahin ang "guestfs_debug" sa guestfs(3) at
isang dakot ng iba, ay ginagamit para sa pag-debug ng mga libguestfs. Bagama't hindi sila bahagi ng
stable na API at sa gayon ay maaaring magbago o maalis anumang oras, maaaring gustong tumawag ng ilang program
ang mga ito habang naghihintay ng mga feature na maidagdag sa libguestfs.

Ang mga function na "internal-*" (o "guestfs_internal_*") ay para lang gamitin ng libguestfs
mismo. Walang dahilan para tawagan sila ng mga program, at hindi dapat subukang gamitin ng mga program
sila. Ang paggamit sa mga ito ay kadalasang nagiging sanhi ng masamang bagay na mangyari, gayundin ang hindi pagiging bahagi ng
dokumentadong matatag na API.

Mga Nag-develop


Saan do I magpadala mga patch?
Mangyaring magpadala ng mga patch sa libguestfs mailing list
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
magkakaroon ng pagkaantala hanggang sa ang iyong pag-post ay manu-manong naaprubahan.

Pakiusap huwag gamitin github paghila kahilingan - sila habilin be ignorado. Ang mga dahilan ay (a) gusto natin
upang talakayin at i-dissect ang mga patch sa mailing list, at (b) ang github pull request ay nagiging
merge commits pero mas gusto naming magkaroon ng linear history.

Gaano do I ipanukala a tampok?
Ang malalaking bagong feature na balak mong i-ambag ay dapat talakayin sa mailing list
una (https://www.redhat.com/mailman/listinfo/libguestfs). Iniiwasan nito ang pagkabigo
at nasayang na trabaho kung sa tingin namin ay hindi magkakasya ang feature sa proyektong libguestfs.

Kung nais mong magmungkahi ng isang kapaki-pakinabang na tampok ngunit ayaw mong isulat ang code, maaari kang maghain ng a
bug (tingnan ang "Pagkuha ng TULONG AT PAG-UULAT NG MGA BUGS") na may "RFE: " sa simula ng Buod
linya.

Sino maaari gumawa sa libguestfs git?
Humigit-kumulang 5 tao ang may commit na access sa github. Dapat i-post muna ang mga patch sa listahan
at ACKed. Ang patakaran para sa ACKing at pushing patch ay nakabalangkas dito:

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

Maaari I tinidor libguestfs?
Syempre kaya mo. Pinapadali ng Git ang pag-fork ng libguestfs. Ginagawang mas madali ng Github.
Maganda kung sasabihin mo sa amin sa mailing list ang tungkol sa mga tinidor at ang mga dahilan nito.

IBA PA KATANUNGAN


Maaari I monitor ang mabuhay disk aktibidad of a sa katunayan makina paggamit libguestfs?
Ang isang karaniwang kahilingan ay ang magamit ang libguestfs upang subaybayan ang aktibidad ng live na disk ng a
bisita, halimbawa, upang maabisuhan sa tuwing ang isang bisita ay gagawa ng bagong file. Libguestfs
ang hindi gumana sa paraang iniisip ng ilang tao, gaya ng makikita mo sa diagram na ito:

┌────────────────────────────────────────
│ monitoring program gamit ang libguestfs │
└──────────────────────────────‘───‘─

┌───────────┐ ┌──────────────────────
│ live na VM │ │ libguestfs appliance │
├───────────┤ ├──────────────────────
│ kernel (1)│ │ appliance kernel (2) │
└───────────┘ └────────────────—─────
↓ ↓ (r/o koneksyon)
┌──────────────────────┐
| imahe sa disk |
└──────────────────────┘

Ligtas ang sitwasyong ito (hangga't itatakda mo ang flag na "readonly" kapag idinaragdag ang drive).
Gayunpaman, hindi nakikita ng libguestfs appliance kernel (2) ang lahat ng mga pagbabagong ginawa sa disk
larawan, sa dalawang kadahilanan:

i. Maaaring i-cache ng VM kernel (1) ang data sa memorya, kaya hindi ito lumilitaw sa disk image.

ii. Ang libguestfs appliance kernel (2) ay hindi inaasahan na ang disk image ay nagbabago
sa ilalim nito, kaya ang sarili nitong cache ay hindi mahiwagang na-update kahit na ang VM kernel (1)
ina-update ang imahe ng disk.

Ang tanging suportadong solusyon ay i-restart ang buong libguestfs appliance sa tuwing ikaw
gusto mong tingnan ang mga pagbabago sa imahe ng disk. Sa antas ng API na tumutugma sa pagtawag
"guestfs_shutdown" na sinusundan ng "guestfs_launch", na isang heavyweight na operasyon (tingnan
Rin guestfs-performance(3)).

Mayroong ilang mga hindi sinusuportahang hack na maaari mong subukan kung ang muling paglulunsad ng appliance ay talagang masyadong
mahal:

· Tawagan ang "guestfs_drop_caches (g, 3)". Nagdudulot ito ng tulong ng lahat ng naka-cache na data ng libguestfs
appliance kernel (2) na itatapon, kaya bumalik ito sa disk image.

Gayunpaman ito sa sarili nitong hindi sapat, dahil ang qemu ay nag-cache din ng ilang data. Ikaw
ay kailangan ding i-patch ang libguestfs upang (muling) paganahin ang "cache=unsafe" na mode. Tingnan:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Gumamit ng tool tulad ng virt-bmap sa halip.

· Magpatakbo ng ahente sa loob ng bisita.

Walang makakatulong kung ang panauhin ay gumagawa ng mas pangunahing mga pagbabago (hal. pagtanggal ng mga filesystem).
Para sa mga ganoong uri ng bagay kailangan mong muling ilunsad ang appliance.

(Tandaan na mayroong pangatlong problema na kailangan mong gumamit ng pare-parehong mga snapshot upang talagang suriin
live na mga imahe ng disk, ngunit iyon ay isang pangkalahatang problema sa paggamit ng libguestfs laban sa anumang live na disk
larawan.)

Gumamit ng guestfs-faq online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

Linux command

Ad