EnglishFrenchSpanyol

Ad


Favicon OnWorks

guestfs-faq - Dalam talian di Awan

Jalankan guestfs-faq dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan guestfs-faq yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


guestfs-faq - libguestfs Soalan Lazim (FAQ)

TENTANG LIBGUESTFS


Servis is libguestfs?
libguestfs ialah satu cara untuk mencipta, mengakses dan mengubah suai imej cakera. Anda boleh melihat di dalam cakera
imej, mengubah suai fail yang terkandung di dalamnya, menciptanya dari awal, mengubah saiznya dan banyak lagi
lebih. Ia amat berguna daripada skrip dan program dan daripada baris arahan.

libguestfs ialah perpustakaan C (oleh itu "lib-"), dan satu set alat yang dibina pada perpustakaan ini, dan
pengikatan untuk banyak bahasa pengaturcaraan biasa.

Untuk maklumat lanjut tentang perkara yang boleh dilakukan oleh libguestfs, baca pengenalan di halaman utama
(http://libguestfs.org).

Servis adalah yang kebajikan alatan?
Alat Virt (laman web: http://virt-tools.org) ialah satu set keseluruhan pengurusan virtualisasi
alat yang ditujukan kepada pentadbir sistem. Sebahagian daripada mereka datang dari libguestfs, beberapa dari
libvirt dan banyak lagi daripada projek sumber terbuka yang lain. Jadi alat virt adalah superset
libguestfs. Walau bagaimanapun libguestfs datang dengan banyak alat penting. Lihat
http://libguestfs.org untuk senarai penuh.

Adakah libguestfs perlu { kebebasan / KVM / Merah Hat / Fedora }?
Tidak!

libvirt bukan keperluan untuk libguestfs.

libguestfs berfungsi dengan mana-mana imej cakera, termasuk yang dibuat dalam VMware, KVM, qemu,
VirtualBox, Xen, dan banyak hipervisor lain, dan yang telah anda buat dari awal.

Red Hat menaja (iaitu membayar untuk) pembangunan libguestfs dan sejumlah besar terbuka lain
projek sumber. Tetapi anda boleh menjalankan libguestfs dan alat virt pada banyak Linux yang berbeza
distro dan Mac OS X. Kami cuba sedaya upaya untuk menyokong semua distro Linux sebagai kelas pertama
warganegara. Beberapa alat virt telah dialihkan ke Windows.

Cara tidak libguestfs bandingkan kepada lain alatan?
vs kpartx
Libguestfs mengambil pendekatan yang berbeza daripada kpartx. kpartx memerlukan akar, dan lekap
sistem fail pada kernel hos (yang boleh menjadi tidak selamat - lihat guestfs-security(1)).
Libguestfs mengasingkan kernel hos anda daripada tetamu, lebih fleksibel, boleh skrip,
menyokong LVM, tidak memerlukan akar, diasingkan daripada proses lain dan membersihkan
selepas dirinya. Libguestfs adalah lebih daripada sekadar akses fail kerana anda boleh menggunakannya untuk
mencipta imej dari awal.

vs vdfuse
vdfuse adalah seperti kpartx tetapi untuk imej VirtualBox. Lihat perbandingan kpartx di atas.
Anda boleh menggunakan libguestfs pada fail partition yang didedahkan oleh vdfuse, walaupun tidak
diperlukan kerana libguestfs boleh mengakses imej VirtualBox secara langsung.

vs qemu-nbd
NBD (Peranti Blok Rangkaian) ialah protokol untuk mengeksport peranti blok melalui rangkaian.
qemu-nbd ialah pelayan NBD yang boleh mengendalikan sebarang format cakera yang disokong oleh qemu (cth. mentah,
qcow2). Anda boleh menggunakan libguestfs dan qemu-nbd atau nbdkit bersama-sama untuk mengakses blok
peranti melalui rangkaian, contohnya: "guestfish -a nbd://remote"

vs pemasangan sistem fail in yang tuan rumah
Memasang sistem fail tetamu dalam hos adalah tidak selamat dan harus dielakkan sepenuhnya
untuk tetamu yang tidak dipercayai. Gunakan libguestfs untuk menyediakan lapisan perlindungan terhadap
eksploitasi sistem fail. Lihat juga guestmount(1).

vs berpisah
Libguestfs menyokong LVM. Libguestfs menggunakan parted dan menyediakan kebanyakan parted features
melalui API libguestfs.

MENDAPAT BANTU DAN PELAPORAN BUANG


Cara do I Tahu apa versi Saya menggunakan?
Kaedah yang paling mudah ialah:

guestfish --version

Pembangunan Libguestfs berlaku di sepanjang cawangan yang tidak stabil dan kami membuat a
cawangan stabil yang kami sandarkan tampalan stabil. Untuk mengetahui lebih lanjut, baca "LIBGUESTFS
NOMBOR VERSI" dalam guestfs(3).

Cara boleh I mendapatkan membantu?
Servis mel senarai or berbual bilik adalah ada?
Jika anda pelanggan Red Hat menggunakan Red Hat Enterprise Linux, sila hubungi
Sokongan Red Hat: http://redhat.com/support

Terdapat senarai mel, terutamanya untuk pembangunan, tetapi pengguna juga dialu-alukan untuk bertanya
soalan tentang libguestfs dan alat virt:
https://www.redhat.com/mailman/listinfo/libguestfs

Anda juga boleh bercakap dengan kami di saluran IRC "#libguestfs" di FreeNode. Kami tidak selalu
sekitar, jadi sila kekal dalam saluran selepas bertanya soalan anda dan seseorang akan menjawabnya
kepada anda.

Untuk alat virt lain (bukan yang dibekalkan dengan libguestfs) terdapat alat virt am
senarai mel: https://www.redhat.com/mailman/listinfo/virt-tools-list

Cara do I melaporkan pepijat?
Sila gunakan pautan berikut untuk memasukkan pepijat dalam Bugzilla:

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

Sertakan seberapa banyak perincian yang anda boleh dan cara untuk menghasilkan semula masalah.

Sertakan output penuh daripada libguestfs-test-tool(1).

SEMUA ORANG MASALAH


Lihat juga "LIBGUESTFS GOTCHAS" dalam guestfs(3) untuk beberapa "gotchas" dengan menggunakan libguestfs
API.

"Boleh tidak memperuntukkan dinamik penterjemah penampan"
Ralat yang tidak jelas ini sebenarnya adalah kegagalan SELinux. Anda perlu mendayakan yang berikut
SELinux boolean:

setsebool -P virt_use_execmem=on

Untuk maklumat lanjut lihat https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"anak proses meninggal dunia tanpa diduga"
[Mesej ralat ini telah ditukar dalam libguestfs 1.21.18 kepada sesuatu yang lebih jelas.]

Ralat ini menunjukkan bahawa qemu gagal atau kernel hos tidak boleh boot. Untuk lebih jauh
maklumat tentang kegagalan, anda perlu menjalankan:

libguestfs-test-tool

Jika, selepas menggunakan ini, anda masih tidak memahami kegagalan, hubungi kami (lihat sebelumnya
bahagian).

libguestfs: ralat: tidak boleh mencari mana-mana sesuai libguestfs supermin, ditetapkan or gaya lama perkakas
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: ibu bapa direktori tidak ditemui
pembantu supermin: ext2: ibu bapa direktori tidak ditemui
[Isu ini dibetulkan secara kekal dalam libguestfs ≥ 1.26.]

Jika anda melihat mana-mana ralat ini pada Debian/Ubuntu, anda perlu menjalankan arahan berikut:

sudo update-guestfs-appliance

"Izin dinafikan" apabila berlari libguestfs as akar
Anda mendapat ralat ditolak kebenaran semasa membuka imej cakera, walaupun anda sedang menjalankan
libguestfs sebagai root.

Ini disebabkan oleh libvirt, dan hanya berlaku apabila menggunakan backend libvirt. Apabila berlari
sebagai akar, libvirt memutuskan untuk menjalankan perkakas qemu sebagai pengguna "qemu.qemu". Malangnya
ini biasanya bermakna qemu tidak boleh membuka imej cakera, terutamanya jika imej cakera tersebut
dimiliki oleh root, atau terdapat dalam direktori yang memerlukan akses root.

Terdapat pepijat terbuka terhadap libvirt untuk membetulkannya:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Anda boleh mengatasinya dengan salah satu kaedah berikut:

· Tukar ke bahagian belakang langsung:

eksport LIBGUESTFS_BACKEND=terus

· Jangan jalankan libguestfs sebagai root.

· Chmod imej cakera dan mana-mana direktori induk supaya pengguna qemu boleh mengaksesnya.

· (Jahat) Edit /etc/libvirt/qemu.conf dan tukar tetapan "pengguna".

execl: /di dalamnya: Kebenaran ditolak
Catatan: Jika ralat ini berlaku apabila anda menggunakan pakej distro libguestfs (cth. from
Fedora, Debian, dll) kemudian failkan pepijat terhadap distro. Ini bukan satu kesilapan yang
pengguna biasa harus melihat sama ada pakej distro telah disediakan dengan betul.

Ralat ini berlaku semasa fasa but supermin memulakan perkakas:

supermin: memasang akar baharu pada / Akar
supermin: chroot
execl: /init: Kebenaran ditolak
supermin: nyahpepijat: direktori penyenaraian /
[...diikuti dengan banyak keluaran nyahpepijat...]

Ini adalah pepijat rumit yang berkaitan dengan supermin(1) peralatan. Perkakas dibina
dengan menyalin fail seperti / bin / bash dan banyak perpustakaan daripada tuan rumah. Fail "hostfiles"
menyenaraikan fail yang perlu disalin daripada hos ke dalam perkakas. Jika beberapa fail
tidak wujud pada hos maka ia terlepas, tetapi jika fail ini diperlukan dengan teratur
untuk (cth) berlari / bin / bash maka anda akan melihat ralat di atas.

Mendiagnosis masalah melibatkan kajian perpustakaan yang diperlukan oleh / bin / bash, iaitu:

ldd / bin / bash

membandingkannya dengan "hostfiles", dengan fail yang sebenarnya tersedia dalam sistem fail hos,
dan dengan output nyahpepijat yang dicetak dalam mesej ralat. Sebaik sahaja anda telah mengetahui fail yang mana
tiada, pasang fail itu menggunakan pengurus pakej anda dan cuba lagi.

Anda juga harus menyemak fail seperti /di dalamnya and / bin / bash (dalam perkakas) adalah
boleh dilaksanakan. Output nyahpepijat menunjukkan mod fail.

MUAT TURUN, MEMASANG, MENYUSUN LIBGUESTFS


Lokasi boleh I mendapatkan yang Terkini binari Untuk ...?
Fedora ≥ 11
gunakan:

yum pasang '*guestf*'

Untuk binaan terkini, lihat:
http://koji.fedoraproject.org/koji/packageinfo?packageID=8391

Red Hat Enterprise Linux
RHEL 5
Versi yang dihantar dalam RHEL 5 rasmi adalah sangat lama dan tidak boleh digunakan kecuali
sempena virt-v2v. Gunakan pakej libguestfs 1.20 terkini dalam EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Ia adalah sebahagian daripada pemasangan lalai. Pada RHEL 6 dan 7 (sahaja) anda perlu memasang
"libguestfs-winsupport" untuk mendapatkan sokongan tetamu Windows.

Debian dan Ubuntu
Untuk libguestfs < 1.26, selepas memasang libguestfs anda perlu lakukan:

sudo update-guestfs-appliance

(Skrip ini telah dialih keluar pada Debian/Ubuntu dengan libguestfs ≥ 1.26 dan sebaliknya
perkakas dibina atas permintaan.)

Pada Ubuntu sahaja:

sudo chmod 0644 /boot/vmlinuz*

Anda mungkin perlu menambah diri anda ke kumpulan "kvm":

sudo usermod -a -G kvm yourlogin

Picit Debian (6)
Hilko Bengen telah membina libguestfs dalam squeeze backports:
http://packages.debian.org/search?kata kunci=guestfs&searchon=nama§ion=semua&suite=squeeze-backports

Debian Wheezy dan kemudian (7+)
Hilko Bengen menyokong libguestfs pada Debian. Pakej Debian rasmi ialah
didapati: http://packages.debian.org/search?keywords=libguestfs

Ubuntu
Kami tidak mempunyai penyelenggara Ubuntu sepenuh masa, dan pakej yang dibekalkan oleh
Canonical (yang di luar kawalan kami) kadangkala rosak.

Canonical memutuskan untuk menukar kebenaran pada kernel supaya tidak
boleh dibaca kecuali dengan akar. Ini benar-benar bodoh, tetapi mereka tidak akan mengubahnya
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Jadi setiap pengguna
harus melakukan ini:

sudo chmod 0644 /boot/vmlinuz*

Ubuntu 12.04
libguestfs dalam versi Ubuntu ini berfungsi, tetapi anda perlu mengemas kini febootstrap
dan sebios kepada versi terkini.

Anda memerlukan febootstrap ≥ 3.14-2 daripada:
http://packages.ubuntu.com/precise/febootstrap

Selepas memasang atau mengemas kini febootstrap, bina semula perkakas:

sudo update-guestfs-appliance

Anda memerlukan seabios ≥ 0.6.2-0ubuntu2.1 atau ≥ 0.6.2-0ubuntu3 daripada:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

Anda juga perlu lakukan (lihat di atas):

sudo chmod 0644 /boot/vmlinuz*

Gentoo
Libguestfs telah ditambahkan pada Gentoo pada 2012-07 oleh Andreis Vinogradovs (libguestfs) dan
Maxim Koltsov (terutamanya hivex). lakukan:

emerge libguestfs

Kejayaan
Libguestfs telah ditambahkan pada SuSE pada tahun 2012 oleh Olaf Hering.

ArchLinux
Libguestfs telah ditambahkan pada AUR pada tahun 2010.

Distro Linux yang lain
Susun dari sumber (bahagian seterusnya).

Distro bukan Linux lain
Anda perlu menyusun daripada sumber, dan mengalihkannya.

Cara boleh I menyusun and memasang libguestfs dari sumber?
Anda boleh menyusun libguestfs dari git atau tarball sumber. Baca fail README sebelum ini
bermula.

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

Jangan jalankan "make install"! Menggunakan "./ lari" skrip sebaliknya (lihat README).

Cara boleh I menyusun and memasang libguestfs if my distro tidak mempunyai baru cukup
qemu/supermin/kernel?
Libguestfs memerlukan supermin 5. Jika supermin 5 belum dialihkan ke distro anda, lihat
soalan di bawah.

Mula-mula susun qemu, supermin dan/atau kernel daripada sumber. awak buat tidak perlu "membuat
pasang" mereka.

Dalam direktori sumber libguestfs, buat dua fail. "localconfigure" harus mengandungi:

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

Jadikan "localconfigure" boleh dilaksanakan.

"localenv" harus mengandungi:

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

Nyahkomen dan laraskan baris ini mengikut keperluan untuk menggunakan atur cara ganti yang anda miliki
disusun.

Gunakan "./localconfigure" bukannya "./configure", tetapi sebaliknya anda menyusun libguestfs sebagai
biasa.

Jangan jalankan "make install"! Menggunakan "./ lari" skrip sebaliknya (lihat README).

Cara boleh I menyusun and memasang libguestfs tanpa supermin?
Jika supermin 5 menyokong distro anda, tetapi anda tidak mempunyai supermin yang cukup baharu
dipasang, kemudian lihat soalan sebelumnya.

Jika supermin 5 tidak menyokong distro anda sama sekali, anda perlu menggunakan fail "fixed
kaedah perkakas" di mana anda menggunakan perkakas binari yang telah disusun sebelumnya. Untuk membina libguestfs
tanpa supermin, anda perlu menghantar "--disable-appliance --disable-daemon" kepada sama ada
./autogen.sh or . / Konfigurasi (bergantung sama ada anda membina masing-masing dari git atau
daripada bola tar). Kemudian, apabila menggunakan libguestfs, anda kemestian tetapkan "LIBGUESTFS_PATH"
pembolehubah persekitaran ke direktori perkakas pra-disusun, seperti yang juga diterangkan dalam
"PERkakas TETAP" dalam guestfs(3).

Untuk peralatan pra-disusun, lihat juga: http://libguestfs.org/download/binaries/appliance/.

Tampalan ke port supermin ke lebih banyak distro Linux dialu-alukan.

Cara boleh I menambah menyokong Untuk sVirt?
Nota Untuk Fedora/RHEL pengguna: Konfigurasi ini ialah lalai bermula dengan Fedora 18 dan
RHEL 7. Jika anda menemui sebarang masalah, sila maklumkan kepada kami atau failkan pepijat.

SVirt menyediakan perkakas yang dikeraskan menggunakan SELinux, menjadikannya sangat sukar untuk cakera penyangak
imej untuk "melarikan diri" daripada kurungan libguestfs dan merosakkan hos (adalah adil untuk mengatakan
walaupun dalam libguestfs standard ini sukar, tetapi sVirt menyediakan lapisan tambahan
perlindungan untuk hos dan yang lebih penting melindungi mesin maya pada hos yang sama
antara satu sama lain).

Pada masa ini untuk mendayakan sVirt anda memerlukan libvirt ≥ 0.10.2 (1.0 atau lebih baru diutamakan),
libguestfs ≥ 1.20, dan dasar SELinux daripada Fedora baru-baru ini. Jika anda tidak berlari
Fedora 18+, anda perlu membuat perubahan pada dasar SELinux anda - hubungi kami di
senarai mel.

Sebaik sahaja anda mempunyai keperluan, lakukan:

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

Tetapkan SELinux kepada mod Penguatkuasaan, dan sVirt harus digunakan secara automatik.

Semua, atau hampir semua, ciri libguestfs harus berfungsi di bawah sVirt. Ada satu yang diketahui
kelemahan: virt-rescue(1) tidak akan menggunakan libvirt (oleh itu sVirt), tetapi kembali kepada mengarahkan
pelancaran qemu. Jadi pada masa ini anda tidak akan mendapat manfaat perlindungan sVirt apabila menggunakan
virt-rescue.

Anda boleh menyemak sama ada sVirt sedang digunakan dengan mendayakan pengelogan libvirtd (lihat
/etc/libvirt/libvirtd.log), membunuh dan memulakan semula libvirtd, dan menyemak fail log
untuk "Menetapkan konteks SELinux pada ..." mesej.

Secara teori sVirt sepatutnya menyokong AppArmor, tetapi kami belum mencubanya. Ia akan hampir
sudah tentu memerlukan menampal libvirt dan menulis dasar AppArmor.

Libguestfs mempunyai a benar-benar lama senarai of kebergantungan!
Perpustakaan asas tidak bergantung pada banyak, tetapi terdapat tiga punca senarai panjang
kebergantungan lain:

1. Libguestfs perlu boleh membaca dan mengedit banyak format cakera yang berbeza. Sebagai contoh,
Sokongan XFS memerlukan alat XFS.

2. Terdapat pengikatan bahasa untuk banyak bahasa yang berbeza, semuanya memerlukan bahasa mereka sendiri
alat pembangunan. Semua ikatan bahasa (kecuali C) adalah pilihan.

3. Terdapat beberapa ciri perpustakaan pilihan yang boleh dilumpuhkan.

Oleh kerana libguestfs ≥ 1.26 adalah mungkin untuk memisahkan kebergantungan perkakas (item 1 dalam
senarai di atas) dan dengan itu mempunyai (cth) "libguestfs-xfs" sebagai subpakej yang berasingan untuk
memproses imej cakera XFS. Kami menggalakkan pembungkus hiliran untuk mula membelah pangkalan
pakej libguestfs ke dalam subpakej yang lebih kecil.

kesilapan semasa melancarkan on Fedora 18, RHEL 7
Dalam Fedora ≥ 18 dan RHEL ≥ 7, libguestfs menggunakan libvirt untuk mengurus perkakas. Sebelum ini
(dan huluan) libguestfs menjalankan qemu secara langsung:

┌────────────────────────────────────
│ libguestfs │
├────────────────┬───────────────────
│ hujung belakang langsung │ hujung belakang libvirt │
└────────────────┴───────────────────
↓ ↓
┌───────┐ ┌──────────┐
│ qemu │ │ libvirtd │
└───────┘ └──────────┘

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

huluan Fedora 18+
bukan Fedora RHEL 7+
bukan RHEL

Bahagian belakang libvirt lebih canggih, menyokong SELinux/sVirt (lihat di atas),
hotplugging dan banyak lagi. Walau bagaimanapun, ia lebih kompleks dan kurang teguh.

Jika anda mempunyai masalah kebenaran menggunakan bahagian belakang libvirt, anda boleh bertukar kepada langsung
bahagian belakang dengan menetapkan pembolehubah persekitaran ini:

eksport LIBGUESTFS_BACKEND=terus

sebelum menjalankan sebarang program libguestfs atau alat virt.

Cara boleh I bertukar kepada a ditetapkan / prabina perkakas?
Ini boleh meningkatkan kestabilan dan prestasi libguestfs pada Fedora dan RHEL.

Bila-bila masa selepas memasang libguestfs, jalankan arahan berikut sebagai root:

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

Sekarang tetapkan pembolehubah persekitaran berikut sebelum menggunakan libguestfs atau mana-mana alat virt:

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

Sudah tentu anda boleh menukar laluan ke mana-mana direktori yang anda mahukan. Anda boleh berkongsi perkakas
merentas mesin yang mempunyai seni bina yang sama (cth. semua x86-64), tetapi ambil perhatian bahawa libvirt
akan menghalang anda daripada berkongsi perkakas merentas NFS kerana masalah kebenaran (jadi
sama ada bertukar ke bahagian belakang langsung atau jangan gunakan NFS).

Cara boleh I kelajuan up libguestfs membina?
Setakat ini perkara paling penting yang boleh anda lakukan ialah memasang dan mengkonfigurasi Squid dengan betul.
Ambil perhatian bahawa konfigurasi lalai yang dihantar dengan Squid adalah sampah, jadi mengkonfigurasinya adalah
bukan pilihan.

Tempat yang sangat baik untuk bermula dengan konfigurasi Squid adalah di sini:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Pastikan Squid sedang berjalan dan pembolehubah persekitaran $http_proxy dan $ftp_proxy
sedang menunjuk ke arahnya.

Dengan Squid berjalan dan dikonfigurasikan dengan betul, binaan perkakas harus dikurangkan kepada beberapa
minit.

Cara boleh I kelajuan up libguestfs membina (Debian)?

Hilko Bengen mencadangkan menggunakan "lebih kurang" yang merupakan proksi arkib Debian
(http://packages.debian.org/approx). Alat ini didokumenkan pada Debian dalam lebih kurang(8)
halaman manual.

LAJU, DISK SPACE DIGUNAKAN BY LIBGUESTFS


Catatan: Kebanyakan maklumat dalam bahagian ini telah berpindah: guestfs-persembahan(1).

Upload or menulis nampaknya sangat lambat.
Jika cakera asas tidak diperuntukkan sepenuhnya (cth. mentah jarang atau qcow2) maka penulisan boleh
lambat kerana sistem pengendalian hos perlu melakukan peruntukan cakera yang mahal semasa anda
menulis. Penyelesaiannya adalah dengan menggunakan format yang diperuntukkan sepenuhnya, iaitu. mentah tidak jarang, atau
qcow2 dengan pilihan "preallocation=metadata".

Libguestfs menggunakan tinggi banyak cakera ruang!
libguestfs menyimpan cache perkakas besar dalam:

/var/tmp/.guestfs-

Jika pembolehubah persekitaran "TMPDIR" ditakrifkan, maka $TMPDIR/.guestfs- digunakan
sebaliknya.

Adalah selamat untuk memadamkan direktori ini apabila anda tidak menggunakan libguestfs.

virt-sparsify seolah-olah kepada membuat yang gambar berkembang kepada yang penuh saiz of yang maya cakera
Jika input kepada virt-sparsify(1) adalah mentah, maka output akan menjadi mentah jarang. Pastikan
anda sedang mengukur output dengan alat yang memahami jarang seperti "du -sh".
Ia boleh membuat perbezaan yang besar:

$ ls -lh ujian1.img
-rw-rw-r--. 1 rjones rjones 100M Ogos 8 08:08 ujian1.img
ujian $ du -sh1.img
3.6M ujian1.img

(Bandingkan saiz yang kelihatan 100M berbanding saiz sebenar 3.6M)

Jika semua ini mengelirukan anda, gunakan format keluaran bukan jarang dengan menyatakan --menukar
pilihan, cth:

virt-sparsify --tukar cakera qcow2. cakera mentah.qcow2

Mengapa tidak vir-saiz bekerja on yang cakera gambar di tempat?
Mengubah saiz imej cakera adalah sangat rumit -- terutamanya memastikan anda tidak kehilangan data atau
memecahkan pemuat but. Kaedah semasa berkesan mencipta imej cakera baharu dan salinan
data ditambah pemuat but daripada yang lama. Jika ada masalah, anda sentiasa boleh pergi
kembali kepada asal.

Jika kita membuat kerja saiz semula vir di tempat maka perlu ada had: untuk
contoh, anda tidak akan dibenarkan untuk mengalihkan partition sedia ada (kerana memindahkan data merentasi
cakera yang sama berkemungkinan besar merosakkan data sekiranya berlaku kegagalan kuasa atau ranap),
dan LVM akan menjadi sangat sukar untuk disokong (kerana pemetaan yang hampir sewenang-wenangnya
antara kandungan LV dan blok cakera asas).

Kaedah lain yang telah kami pertimbangkan ialah meletakkan syot kilat pada imej cakera asal, jadi
bahawa data asal tidak disentuh dan hanya perbezaan direkodkan dalam syot kilat.
Anda boleh melakukan ini hari ini menggunakan "qemu-img create" + "virt-resize", tetapi qemu pada masa ini tidak
cukup pintar untuk mengenali apabila blok yang sama ditulis kembali ke syot kilat seperti yang sudah
wujud dalam cakera sandaran, jadi anda akan mendapati bahawa ini tidak menjimatkan ruang atau masa anda.

Ringkasnya, ini adalah masalah yang sukar, dan apa yang kami ada sekarang kebanyakannya berfungsi jadi kami enggan
untuk mengubahnya.

Mengapa tidak virt-sparsify bekerja on yang cakera gambar di tempat?
Dalam libguestfs ≥ 1.26, virt-sparsify kini boleh berfungsi pada imej cakera yang ada. gunakan:

virt-sparsify --in-place disk.img

Tetapi pertama-tama anda harus membaca "PESPARASI TEMPAT" dalam virt-sparsify(1).

MASALAH PEMBUKAAN DISK IMEJ


Jauh kebebasan tetamu tidak boleh be dibuka.
Membuka tetamu libvirt jauh tidak disokong pada masa ini. Sebagai contoh ini tidak akan berfungsi:

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

Untuk membuka cakera jauh anda perlu mengeksportnya entah bagaimana, kemudian sambungkan ke eksport. Untuk
contoh jika anda memutuskan untuk menggunakan NBD:

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

Kemungkinan lain termasuk ssh (jika qemu cukup terkini), NFS atau iSCSI. Lihat "JAUH
PENYIMPANAN" dalam guestfs(3).

Cara boleh I membuka ini pelik cakera sumber?
Anda mempunyai imej cakera yang terletak di dalam sistem lain yang memerlukan akses melalui perpustakaan /
HTTP / REST / API proprietari, atau dimampatkan atau diarkibkan dalam beberapa cara. (Satu contoh
akan menjadi akses jauh kepada imej pandang OpenStack tanpa benar-benar memuat turunnya.)

Kami mempunyai projek saudara yang dipanggil nbdkit (https://github.com/libguestfs/nbdkit). ini
projek membolehkan anda menukar mana-mana sumber cakera menjadi pelayan NBD. Libguestfs boleh mengakses NBD
pelayan secara langsung, cth:

guestfish -a nbd://remote

nbdkit dilesenkan secara bebas, jadi anda boleh memautkannya atau memasukkannya ke dalam perpustakaan proprietari
dan kod. Ia juga mempunyai API pemalam yang ringkas dan stabil supaya anda boleh menulis pemalam dengan mudah
API yang akan terus berfungsi pada masa hadapan.

ralat membuka VMDK cakera: "kegunaan a vmdk ciri yang is tidak disokong by ini qemu versi:
VMDK versi 3"
Qemu (dan oleh itu libguestfs) hanya menyokong imej cakera VMDK tertentu. Yang lain tidak akan berfungsi,
memberikan ini atau kesilapan yang serupa.

Sebaik-baiknya seseorang akan membetulkan qemu untuk menyokong ciri VMDK terkini, tetapi sementara itu
anda mempunyai tiga pilihan:

1. Jika tetamu dihoskan pada pelayan ESX secara langsung, boleh dihubungi, kemudian cari dan muat turun
imej cakera dipanggil somename-flat.vmdk. Walaupun namanya, ini adalah imej cakera mentah, dan
boleh dibuka oleh apa sahaja.

Jika anda mempunyai versi qemu dan libguestfs yang cukup terkini, maka anda mungkin boleh melakukannya
akses imej cakera ini dari jauh menggunakan sama ada HTTPS atau ssh. Lihat "STORAN JAUH" dalam
guestfs(3).

2. Gunakan alat vdiskmanager proprietari VMware untuk menukar imej kepada format mentah.

3. Gunakan nbdkit dengan pemalam VDDK proprietari untuk mengeksport langsung imej cakera sebagai NBD
sumber. Ini sepatutnya membolehkan anda membaca dan menulis fail VMDK.

UFS cakera (seperti yang digunakan by BSD) tidak boleh be dibuka.
Format sistem fail UFS mempunyai banyak varian, dan ini tidak mengenal pasti diri. The
Kernel Linux perlu diberitahu varian UFS yang perlu digunakan, yang libguestfs tidak boleh
tahu.

Anda perlu melepasi pilihan pelekap "ufstype" yang betul apabila memasang sistem fail ini.

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

Windows Rujukan
Windows ReFS ialah salinan ZFS/Btrfs Microsoft. Sistem fail ini belum lagi terbalik
direka bentuk dan dilaksanakan dalam kernel Linux, dan oleh itu libguestfs tidak menyokong
ia. Pada masa ini nampaknya sangat jarang "di alam liar".

Bukan ASCII aksara tidak muncul on VFAT sistem fail.
Gejala biasa masalah ini:

· Anda mendapat ralat apabila anda mencipta fail yang nama fail mengandungi bukan ASCII
aksara, terutamanya aksara bukan 8-bit daripada bahasa Asia (Cina, Jepun,
dan lain-lain). Sistem fail ialah VFAT.

· Apabila anda menyenaraikan direktori daripada sistem fail VFAT, nama fail muncul sebagai tanda soal.

Ini adalah kecacatan reka bentuk sistem GNU/Linux.

VFAT menyimpan nama fail panjang sebagai aksara UTF-16. Apabila membuka atau mengembalikan nama fail, fail
Kernel Linux perlu menterjemahkannya kepada beberapa bentuk rentetan 8 bit. UTF-8 akan menjadi
pilihan yang jelas, kecuali untuk pengguna Linux yang berterusan menggunakan tempat bukan UTF-8 (pengguna
locale tidak diketahui oleh kernel kerana ia adalah fungsi libc).

Oleh itu anda perlu memberitahu kernel apa terjemahan yang anda mahu lakukan apabila anda melekapkan
sistem fail. Kedua-dua kaedah ialah parameter "iocharset" (yang tidak berkaitan dengan
libguestfs) dan bendera "utf8".

Jadi untuk menggunakan sistem fail VFAT anda mesti menambah bendera "utf8" semasa memasang. Daripada guestfish,
menggunakan:

> mount-options utf8 /dev/sda1 /

atau pada baris arahan guestfish:

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

atau daripada API:

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

Kernel kemudian akan menterjemahkan nama fail ke dan dari rentetan UTF-8.

Kami mempertimbangkan untuk menambah pilihan pelekap ini secara telus, tetapi malangnya terdapat beberapa
masalah dengan melakukan itu:

· Pada sesetengah sistem Linux, pilihan pelekap "utf8" tidak berfungsi. Kami tidak tepat
memahami sistem apa atau mengapa, tetapi ini dilaporkan dengan pasti oleh seorang pengguna.

· Ia akan menghalang anda daripada menggunakan parameter "iocharset" kerana ia tidak serasi
dengan "utf8". Mungkin bukan idea yang baik untuk menggunakan parameter ini, tetapi kami tidak mahu
untuk mengelakkannya.

Bukan ASCII aksara muncul as menekankan (_) on ISO9660 sistem fail.
Sistem fail tidak disediakan dengan betul dengan mkisofs atau genisoimage. Pastikan
sistem fail dicipta menggunakan sambungan Joliet dan/atau Rock Ridge. libguestfs tidak
memerlukan sebarang pilihan pelekap khas untuk mengendalikan sistem fail.

Tidak boleh membuka Windows tetamu yang penggunaan NTFS.
Anda melihat ralat seperti:

mount: jenis sistem fail yang tidak diketahui 'ntfs'

Pada Red Hat Enterprise Linux atau CentOS, anda perlu memasang libguestfs-winsupport
pakej.

Tidak boleh membuka or memeriksa RHEL 7 tetamu.
Tidak boleh membuka Linux tetamu yang penggunaan XFS.
Tetamu RHEL 7, dan mana-mana tetamu lain yang menggunakan XFS, boleh dibuka oleh libguestfs, tetapi anda
perlu memasang pakej "libguestfs-xfs".

MENGGUNAKAN LIBGUESTFS IN ANDA SENDIRI PROGRAM


. API mempunyai beratus-ratus of kaedah, di mana do I mulakan?
Kami mengesyorkan anda mulakan dengan membaca gambaran keseluruhan API: "IKHTISAR API" dalam guestfs(3).

Walaupun gambaran keseluruhan API merangkumi API C, ia masih berbaloi untuk dibaca walaupun anda
akan menggunakan bahasa pengaturcaraan lain, kerana API adalah sama, hanya dengan mudah
perubahan logik kepada nama panggilan:

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

Sebaik sahaja anda sudah biasa dengan gambaran keseluruhan API, anda harus melihat senarai permulaan ini
mata untuk pengikatan bahasa lain: "USING LIBGUESTFS WITH OTHER PROGRAMMING LANGUAGES" dalam
guestfs(3).

Can I penggunaan libguestfs in my proprietari / sementara sumber / komersial program?
Secara umum, ya. Walau bagaimanapun ini bukan nasihat undang-undang - baca lesen yang disertakan
libguestfs, dan jika anda mempunyai soalan khusus hubungi peguam.

Dalam pepohon sumber lesen berada dalam fail "COPYING.LIB" (LGPLv2+ untuk perpustakaan dan
pengikatan) dan "MENYALIN" (GPLv2+ untuk program kendiri).

MENGHILANGKAN LIBGUESTFS


Tolong, ia tidak bekerja!
Jika tiada program libguestfs nampaknya berfungsi sama sekali, jalankan program di bawah dan tampal
lengkap, tidak diedit output ke dalam e-mel kepada "libguestfs" @ "redhat.com":

libguestfs-test-tool

Jika operasi tertentu gagal, berikan semua maklumat dalam senarai semak ini, dalam e-mel
kepada "libguestfs" @ "redhat.com":

1. Apa yang anda cuba lakukan?

2. Apakah arahan tepat yang anda jalankan?

3. Apakah ralat atau output yang tepat bagi arahan ini?

4. Dayakan nyahpepijat, jalankan arahan sekali lagi dan tangkap melengkapkan output. Do tidak
mengedit yang output.

eksport LIBGUESTFS_DEBUG=1
eksport LIBGUESTFS_TRACE=1

5. Sertakan versi libguestfs, versi sistem pengendalian dan cara anda memasang
libguestfs (cth. daripada sumber, "yum install", dll.)

Cara do I debug apabila menggunakan mana-mana libguestfs program or alat (contohnya. virt-v2v or virt-df)?
Terdapat dua pembolehubah persekitaran "LIBGUESTFS_*" yang boleh anda tetapkan untuk mendapatkan lebih banyak
maklumat daripada libguestfs.

"LIBGUESTFS_TRACE"
Tetapkan ini kepada 1 dan libguestfs akan mencetak setiap perintah / panggilan API dalam format yang
adalah serupa dengan arahan guestfish.

"LIBGUESTFS_DEBUG"
Tetapkan ini kepada 1 untuk mendayakan sejumlah besar mesej nyahpepijat. Jika anda fikir
terdapat beberapa masalah di dalam perkakas libguestfs, maka anda harus menggunakan ini
pilihan.

Untuk menetapkan ini daripada shell, lakukan ini sebelum menjalankan program:

eksport LIBGUESTFS_TRACE=1
eksport LIBGUESTFS_DEBUG=1

Untuk csh/tcsh arahan yang setara ialah:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Untuk mendapatkan maklumat lanjut, lihat: "PEMBOLEH UBAH PERSEKITARAN" dalam guestfs(3).

Cara do I debug apabila menggunakan guestfish?
Anda boleh menggunakan pembolehubah persekitaran yang sama di atas. Sebagai alternatif, gunakan pilihan guestfish
-x (untuk mengesan arahan) atau -v (untuk mendapatkan output nyahpepijat penuh), atau kedua-duanya.

Untuk maklumat lanjut, lihat: ikan tetamu(1).

Cara do I debug apabila menggunakan yang API?
Panggil "guestfs_set_trace" masuk guestfs(3) untuk membolehkan jejak arahan, dan/atau
"guestfs_set_verbose" dalam guestfs(3) untuk mendayakan mesej nyahpepijat.

Untuk hasil terbaik, hubungi fungsi ini seawal mungkin, sejurus selepas mencipta
guestfs mengendalikan jika anda boleh, dan pastinya sebelum memanggil pelancaran.

Cara do I menangkap debug output and meletakkan it ke dalam my pembalakan sistem?
Gunakan API acara. Untuk contoh, lihat: "MENETAPKAN PANGGILAN BALIK UNTUK MENGENDALIKAN ACARA" dalam guestfs(3)
dan juga contoh/debug-logging.c program dalam sumber libguestfs.

Menggali lebih mendalam ke dalam yang perkakas bot proses.
Dayakan nyahpepijat dan kemudian baca dokumentasi ini pada proses but perkakas:
guestfs-internals(1).

libguestfs menggantung or gagal semasa berlari/melancarkan.
Dayakan penyahpepijatan dan lihat pada output penuh. Jika anda tidak dapat mengetahui apa yang sedang berlaku,
memfailkan laporan pepijat, termasuk melengkapkan keluaran dari libguestfs-test-tool(1).

Debugging kebebasan
Jika anda menggunakan bahagian belakang libvirt, dan libvirt gagal, maka anda boleh mendayakan
penyahpepijatan dengan menyunting /etc/libvirt/libvirtd.conf.

Jika anda berjalan sebagai bukan root, maka anda perlu mengedit fail lain. Buat
~/.config/libvirt/libvirtd.conf mengandungi:

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

Matikan mana-mana sesi (bukan akar) libvirtd yang sedang berjalan dan lain kali anda menjalankan libguestfs
arahan, anda sepatutnya melihat sejumlah besar maklumat penyahpepijatan berguna daripada libvirtd in
/tmp/libvirtd.log

REKA BENTUK/ DALAMAN OF LIBGUESTFS


Lihat juga guestfs-internals(1).

Mengapa tidak anda do semua melalui yang FIUS / sistem fail antara muka?
Kami menawarkan arahan yang dipanggil guestmount(1) yang membolehkan anda memasang sistem fail tetamu pada
tuan rumah. Ini dilaksanakan sebagai modul FUSE. Mengapa tidak kita laksanakan sahaja keseluruhannya
libguestfs menggunakan mekanisme ini, bukannya mempunyai API yang besar dan agak rumit?

Sebabnya ada dua. Pertama, libguestfs menawarkan panggilan API untuk melakukan perkara seperti
mencipta dan memadam partition dan volum logik, yang tidak sesuai dengan sistem fail
model dengan sangat mudah. Atau sebaliknya, anda boleh memuatkannya: contohnya, mencipta partition
boleh dipetakan kepada "mkdir /fs/hda1" tetapi kemudian anda perlu menentukan beberapa kaedah untuk dipilih
saiz partition (mungkin "echo 100M > /fs/hda1/.size"), dan jenis partition,
sektor mula dan tamat dsb., tetapi sebaik sahaja anda melakukannya, API berasaskan sistem fail akan mula
kelihatan lebih rumit daripada API berasaskan panggilan yang kami ada pada masa ini.

Sebab kedua adalah untuk kecekapan. FUSE sendiri agak cekap, tetapi ia berkesan
buat banyak panggilan kecil dan bebas ke dalam modul FUSE. Dalam guestmount ini perlu
diterjemahkan ke dalam mesej kepada perkakas libguestfs yang mempunyai overhed yang besar (dalam masa
dan perjalanan pergi dan balik). Sebagai contoh, membaca fail dalam ketulan 64 KB adalah tidak cekap kerana setiap satu
bongkah akan bertukar menjadi satu perjalanan pergi dan balik. Dalam libguestfs API ia lebih banyak lagi
cekap untuk memuat turun keseluruhan fail atau direktori melalui salah satu panggilan penstriman seperti
"guestfs_download" atau "guestfs_tar_out".

Mengapa tidak anda do semua melalui GVFS?
Masalahnya serupa dengan masalah dengan FUSE.

GVFS ialah abstraksi yang lebih baik daripada POSIX/FUSE. Terdapat bahagian belakang FTP untuk GVFS, iaitu
menggalakkan kerana FTP secara konsepnya serupa dengan API libguestfs. Walau bagaimanapun GVFS
Bahagian belakang FTP membuat berbilang sambungan serentak untuk mengekalkan interaktiviti, yang
kita tidak boleh melakukannya dengan mudah dengan libguestfs.

Mengapa boleh I menulis kepada yang cakera, walaupun walaupun I tambah it baca sahaja?
Mengapa tidak "--ro" muncul kepada mempunyai tidak kesan?
Apabila anda menambah cakera baca sahaja, libguestfs meletakkan tindanan boleh tulis di atas
cakera asas. Tulisan masuk ke tindanan ini, dan dibuang apabila pemegang ditutup
(atau "guestfish" dsb. keluar).

Terdapat dua sebab untuk melakukannya dengan cara ini: Pertama, cakera baca sahaja tidak boleh masuk
banyak kes (cth. IDE tidak menyokongnya, jadi anda tidak boleh mempunyai IDE yang dicontohi
cakera baca sahaja, walaupun ini tidak biasa dalam pemasangan libguestfs sebenar).

Kedua dan yang lebih penting, walaupun cakera baca sahaja mungkin, anda tidak mahu
mereka. Melekapkan mana-mana sistem fail yang mempunyai jurnal, walaupun "mount -o ro", menyebabkan tulis ke
sistem fail kerana jurnal perlu dimainkan semula dan metadata dikemas kini. Jika cakera
adalah benar-benar baca sahaja, anda tidak akan dapat melekapkan sistem fail yang kotor.

Untuk menjadikannya boleh digunakan, kami mencipta tindanan sebagai tempat untuk menyimpan sementara tulisan ini, dan
kemudian kita buang selepas itu. Ini memastikan bahawa cakera asas sentiasa tidak disentuh.

Perhatikan juga bahawa terdapat ujian regresi untuk ini apabila membina libguestfs (dalam
"ujian/qemu"). Ini adalah salah satu sebab mengapa penting bagi pembungkus untuk menjalankan suite ujian.

Adakah "--ro" membuat semua cakera baca sahaja?
Tidak! Pilihan "--ro" hanya mempengaruhi cakera yang ditambahkan pada baris arahan, iaitu. menggunakan "-a" dan
pilihan "-d".

Dalam guestfish, jika anda menggunakan arahan "tambah", maka cakera ditambah baca-tulis (melainkan anda
nyatakan bendera "readonly:true" secara eksplisit dengan arahan).

Can I penggunaan "ikan tamu --ro" as a cara kepada sandaran my maya mesin?
Biasanya ini tidak idea yang bagus. Soalan dijawab dengan lebih terperinci dalam surat ini
siaran senarai: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Lihat juga soalan seterusnya.

Mengapa tidak boleh I menjalankan fsck on a tinggal sistem fail menggunakan "ikan tamu --ro"?
Perintah ini biasanya akan tidak kerja:

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

Sebab untuk ini ialah qemu mencipta syot kilat ke atas sistem fail asal, tetapi ia
tidak membuat syot kilat titik dalam masa yang ketat. Blok data pada asas
sistem fail dibaca oleh qemu pada masa yang berbeza semasa operasi fsck berlangsung, dengan hos
menulis di antara. Hasilnya ialah fsck melihat rasuah besar-besaran (khayalan, bukan nyata!)
dan gagal.

Apa yang anda perlu lakukan ialah mencipta syot kilat titik dalam masa. Jika ia adalah kelantangan logik, gunakan
petikan LVM2. Jika sistem fail terletak di dalam sesuatu seperti fail btrfs/ZFS,
gunakan syot kilat btrfs/ZFS, dan kemudian jalankan fsck pada syot kilat. Dalam amalan anda tidak
perlu menggunakan libguestfs untuk ini -- jalankan sahaja /sbin/fsck secara langsung.

Mencipta syot kilat titik dalam masa peranti dan fail hos adalah di luar skop
libguestfs, walaupun libguestfs boleh beroperasi padanya sebaik sahaja ia dibuat.

Apa itu yang perbezaan antara ikan tetamu and virt-rescue?
Ramai orang keliru dengan dua alatan serupa yang kami sediakan:

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

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

Dan persoalan berkaitan yang timbul ialah mengapa anda tidak boleh menaip arahan shell penuh
dengan semua --options dalam guestfish (tetapi anda boleh masuk virt-rescue(1)).

ikan tetamu(1) ialah program yang menyediakan akses berstruktur kepada guestfs(3) API. Ia berlaku
untuk menjadi shell interaktif yang bagus juga, tetapi tujuan utamanya ialah akses berstruktur daripada
skrip shell. Fikirkannya lebih seperti pengikatan bahasa, seperti Python dan pengikatan lain,
tetapi untuk shell. Faktor pembezaan utama guestfish (dan libguestfs API dalam
umum) ialah keupayaan untuk mengautomasikan perubahan.

virt-rescue(1) ialah cara bentuk bebas percuma untuk semua untuk but perkakas libguestfs dan membuat
perubahan sewenang-wenangnya pada VM anda. Ia tidak berstruktur, anda tidak boleh mengautomasikannya, tetapi untuk membuat
pembetulan ad-hoc pantas kepada tetamu anda, ia boleh menjadi agak berguna.

Tetapi, libguestfs juga mempunyai "pintu belakang" ke dalam perkakas yang membolehkan anda menghantar sewenang-wenangnya
arahan shell. Ia tidak sefleksibel seperti virt-rescue, kerana anda tidak boleh berinteraksi dengan
perintah shell, tetapi ini pula:

> nyahpepijat sh "cmd arg1 arg2 ..."

Perhatikan bahawa anda sepatutnya tidak bergantung pada ini. Ia boleh dialih keluar atau ditukar pada masa hadapan. Jika anda
program memerlukan beberapa operasi, sila tambahkannya pada libguestfs API sebaliknya.

Apa itu yang perjanjian bersama "ikan tamu -saya"?
Mengapa tidak kucing dara hanyalah bekerja on a sebenar VM gambar, tetapi virt-df kerja-kerja on mana-mana cakera gambar?
Servis tidak "tidak akar peranti ditemui in ini beroperasi sistem gambar" maksudnya?
Soalan-soalan ini semuanya berkaitan pada tahap asas yang mungkin tidak serta-merta
jelas.

Pada guestfs(3) Tahap API, "imej cakera" hanyalah timbunan partition dan sistem fail.

Sebaliknya, apabila mesin maya but, ia memasang sistem fail tersebut ke dalam konsisten
hierarki seperti:

/ (/dev/sda2)

├── / boot (/dev/sda1)

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

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

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

(atau huruf pemacu pada Windows).

API pertama sekali melihat imej cakera pada tahap "timbunan sistem fail". Tetapi ia juga
mempunyai cara untuk memeriksa imej cakera untuk melihat sama ada ia mengandungi sistem pengendalian, dan bagaimana
cakera dipasang apabila sistem pengendalian but: "INSPECTION" masuk guestfs(3).

Pengguna mengharapkan beberapa alat (seperti kucing dara(1)) untuk bekerja dengan laluan VM:

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

Bagaimana kucing dara tahu itu / var adalah partition yang berasingan? Caranya ialah kucing dara itu
melakukan pemeriksaan pada imej cakera, dan menggunakannya untuk menterjemah laluan dengan betul.

Beberapa alatan (termasuk kucing dara(1), virt-edit(1), virt-ls(1)) gunakan pemeriksaan untuk memetakan VM
laluan. Alat lain, seperti virt-df(1) dan sistem fail virt(1) beroperasi sepenuhnya di
tahap mentah "timbunan besar sistem fail" API libguestfs, dan jangan gunakan pemeriksaan.

ikan tetamu(1) berada di jalan tengah yang menarik. Jika anda menggunakan -a and -m baris arahan
pilihan, maka anda perlu memberitahu guestfish dengan tepat cara menambah imej cakera dan di mana hendak dipasang
sekatan. Ini ialah tahap API mentah.

Sekiranya anda menggunakannya -i pilihan, libguestfs melakukan pemeriksaan dan memasang sistem fail untuk
anda.

Ralat "tiada peranti akar ditemui dalam imej sistem pengendalian ini" berkaitan dengan ini. Ia
bermakna pemeriksaan tidak dapat mengesan sistem pengendalian dalam imej cakera yang anda berikan
ia. Anda mungkin melihat ini daripada program seperti virt-cat jika anda cuba menjalankannya pada sesuatu
yang hanya imej cakera, bukan imej cakera mesin maya.

Servis do ini "nyahpepijat*" and "dalaman-*" fungsi buat?
Terdapat beberapa fungsi yang digunakan untuk penyahpepijatan dan tujuan dalaman iaitu tidak
sebahagian daripada API yang stabil.

Fungsi "debug*" (atau "guestfs_debug*"), terutamanya "guestfs_debug" dalam guestfs(3) dan
segelintir yang lain, digunakan untuk menyahpepijat libguestfs. Walaupun mereka bukan sebahagian daripada
API yang stabil dan dengan itu boleh berubah atau dialih keluar pada bila-bila masa, sesetengah program mungkin mahu memanggil
ini sementara menunggu ciri ditambahkan pada libguestfs.

Fungsi "internal-*" (atau "guestfs_internal_*") semata-mata untuk digunakan oleh libguestfs
sendiri. Tidak ada sebab untuk program memanggilnya, dan program tidak boleh cuba menggunakannya
mereka. Menggunakannya selalunya akan menyebabkan perkara buruk berlaku, serta tidak menjadi sebahagian daripada
API stabil yang didokumenkan.

PEMBANGKANG


Lokasi do I menghantar tompok?
Sila hantar patch ke senarai mel libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
akan ada kelewatan sehingga pengeposan anda diluluskan secara manual.

Sila tidak penggunaan github tarik permintaan - mereka akan be diabaikan. Sebabnya ialah (a) kita mahu
untuk membincangkan dan membedah tampalan pada senarai mel, dan (b) permintaan tarik github bertukar menjadi
merge commit tetapi kami lebih suka mempunyai sejarah linear.

Cara do I mencadangkan a ciri?
Ciri baharu yang besar yang anda ingin sumbangkan harus dibincangkan dalam senarai mel
pertama (https://www.redhat.com/mailman/listinfo/libguestfs). Ini mengelakkan kekecewaan
dan kerja yang sia-sia jika kami tidak fikir ciri itu sesuai dengan projek libguestfs.

Jika anda ingin mencadangkan ciri yang berguna tetapi tidak mahu menulis kod, anda boleh memfailkan a
pepijat (lihat "MENDAPATKAN BANTUAN DAN MELAPORKAN PEPIJAT") dengan "RFE: " pada permulaan Ringkasan
line.

yang boleh melakukan kepada libguestfs git?
Kira-kira 5 orang mempunyai akses komit kepada github. Tampalan hendaklah disiarkan pada senarai dahulu
dan ACKed. Dasar untuk ACKing dan menolak patch digariskan di sini:

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

Can I garpu libguestfs?
Sudah tentu boleh. Git memudahkan untuk membuat libguestfs. Github menjadikannya lebih mudah.
Senang jika anda memberitahu kami di senarai mel tentang garpu dan sebab-sebabnya.

PELBAGAI SOALAN


Can I memantau yang tinggal cakera aktiviti of a maya mesin menggunakan libguestfs?
Permintaan biasa ialah dapat menggunakan libguestfs untuk memantau aktiviti cakera langsung a
tetamu, sebagai contoh, untuk mendapatkan pemberitahuan setiap kali tetamu mencipta fail baharu. Libguestfs
tidak tidak bekerja mengikut cara yang dibayangkan oleh sesetengah orang, seperti yang anda boleh lihat dari rajah ini:

┌────────────────────────────────────
│ program pemantauan menggunakan libguestfs │
└──────────────────────────────‘─────────

┌───────────┐ ┌──────────────────────
│ VM langsung │ │ perkakas libguestfs │
├───────────┤ ├──────────────────────
│ kernel (1)│ │ kernel perkakas (2) │
└───────────┘ └──────────────────────
↓ ↓ (sambungan r/o)
┌──────────────────────┐
| imej cakera |
└──────────────────────┘

Senario ini selamat (selagi anda menetapkan bendera "baca sahaja" semasa menambah pemacu).
Walau bagaimanapun kernel perkakas libguestfs (2) tidak melihat semua perubahan yang dibuat pada cakera
imej, kerana dua sebab:

i. Kernel VM (1) boleh cache data dalam memori, jadi ia tidak muncul dalam imej cakera.

ii. Kernel perkakas libguestfs (2) tidak menjangkakan bahawa imej cakera berubah
di bawahnya, jadi cachenya sendiri tidak dikemas kini secara ajaib walaupun kernel VM (1)
mengemas kini imej cakera.

Satu-satunya penyelesaian yang disokong adalah untuk memulakan semula keseluruhan perkakas libguestfs pada bila-bila masa anda
ingin melihat perubahan pada imej cakera. Pada peringkat API yang sepadan dengan panggilan
"guestfs_shutdown" diikuti dengan "guestfs_launch", yang merupakan operasi heavyweight (lihat
Juga guestfs-persembahan(3)).

Terdapat beberapa godam yang tidak disokong yang boleh anda cuba jika melancarkan semula perkakas itu benar-benar juga
mahal:

· Panggil "guestfs_drop_caches (g, 3)". Ini menyebabkan semua data cache bantuan oleh libguestfs
kernel perkakas (2) untuk dibuang, jadi ia kembali ke imej cakera.

Walau bagaimanapun, ini sendiri tidak mencukupi, kerana qemu juga menyimpan beberapa data. awak
juga perlu menampal libguestfs untuk (semula) mendayakan mod "cache=unsafe". Lihat:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Gunakan alat seperti virt-bmap sebaliknya.

· Jalankan ejen di dalam tetamu.

Tiada apa-apa yang membantu jika tetamu membuat perubahan yang lebih asas (cth. memadamkan sistem fail).
Untuk perkara seperti itu, anda mesti melancarkan semula perkakas.

(Perhatikan terdapat masalah ketiga yang anda perlukan untuk menggunakan syot kilat yang konsisten untuk benar-benar memeriksa
imej cakera langsung, tetapi itu adalah masalah umum dengan menggunakan libguestfs terhadap mana-mana cakera langsung
gambar.)

Gunakan guestfs-faq dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

Arahan Linux

Ad