İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

guestfs-faq - Bulutta Çevrimiçi

Guestfs-faq'i Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen guestfs-sss komutudur.

Program:

ADI


guestfs-faq - libguestfs Sıkça Sorulan Sorular (SSS)

HAKKINDA LİBGUESTFS


Ne is libguestfs?
libguestfs, disk görüntüleri oluşturmanın, bunlara erişmenin ve bunları değiştirmenin bir yoludur. diskin içine bakabilirsin
görüntüler, içerdikleri dosyaları değiştirin, sıfırdan oluşturun, yeniden boyutlandırın ve çok daha fazlasını yapın.
daha fazla. Özellikle betiklerden ve programlardan ve komut satırından yararlıdır.

libguestfs bir C kitaplığıdır (dolayısıyla "lib-") ve bu kitaplık üzerine kurulmuş bir dizi araç ve
birçok yaygın programlama dili için bağlamalar.

libguestfs'in neler yapabileceği hakkında daha fazla bilgi için ana sayfadaki girişi okuyun
(http://libguestfs.org).

Ne vardır the erdem araçlar?
Virt araçları (web sitesi: http://virt-tools.org) bir dizi sanallaştırma yönetimidir
sistem yöneticilerine yönelik araçlar. Bazıları libguestfs'den, bazıları
libvirt ve diğer açık kaynak projelerinden diğerleri. Yani sanal araçlar bir üst kümedir
libguestfs. Ancak libguestfs birçok önemli araçla birlikte gelir. Görmek
http://libguestfs.org tam bir listesi için.

libguestfs gerek { libvirt / KVM / Kırmızı Şapka / Fötr şapka }?
Hayır!

libvirt, libguestfs için bir gereklilik değildir.

libguestfs, VMware, KVM, qemu,
VirtualBox, Xen ve diğer birçok hipervizör ve sıfırdan oluşturduklarınız.

Red Hat, libguestfs ve çok sayıda diğer açık alanların geliştirilmesine sponsorluk yapıyor (yani parasını ödüyor).
kaynak projeler. Ancak libguestfs ve sanal araçları birçok farklı Linux'ta çalıştırabilirsiniz.
dağıtımlar ve Mac OS X. Tüm Linux dağıtımlarını birinci sınıf olarak desteklemek için elimizden gelenin en iyisini yapıyoruz
vatandaşlar. Bazı sanal araçlar Windows'a taşındı.

Ne kadar yok libguestfs karşılaştırmak için diğer araçlar?
vs kpartx
Libguestfs, kpartx'ten farklı bir yaklaşım benimsiyor. kpartx'in köke ve bağlamaya ihtiyacı var
ana bilgisayar çekirdeğindeki dosya sistemleri (güvensiz olabilir - bkz. misafir güvenlik(1)).
Libguestfs, ana bilgisayar çekirdeğinizi misafirlerden yalıtır, daha esnek, komut dosyası yazılabilir,
LVM'yi destekler, kök gerektirmez, diğer işlemlerden yalıtılmıştır ve temizler
kendinden sonra. Libguestfs, dosya erişiminden daha fazlasıdır çünkü onu
sıfırdan görüntüler oluşturun.

vs vdfuse
vdfuse, kpartx gibidir, ancak VirtualBox görüntüleri içindir. Yukarıdaki kpartx karşılaştırmasına bakın.
Vdfuse tarafından açığa çıkarılan bölüm dosyalarında libguestfs kullanabilirsiniz.
libguestfs VirtualBox görüntülerine doğrudan erişebildiğinden gereklidir.

vs qemu-nbd
NBD (Ağ Blok Cihazı), blok cihazlarını ağ üzerinden dışa aktarmak için bir protokoldür.
qemu-nbd, qemu tarafından desteklenen herhangi bir disk biçimini işleyebilen bir NBD sunucusudur (örn. raw,
qcow2). Bloklara erişmek için libguestfs ve qemu-nbd veya nbdkit'i birlikte kullanabilirsiniz.
ağ üzerinden cihazlar, örneğin: "misafir balığı -a nbd://remote"

vs montaj dosya sistemleri in the ev sahibi
Konuk dosya sistemlerini ana bilgisayara monte etmek güvenli değildir ve bundan tamamen kaçınılmalıdır.
güvenilmeyen misafirler için karşı bir koruma katmanı sağlamak için libguestfs kullanın.
dosya sistemi istismarları. Ayrıca bakınız misafir bineği(1).

vs aralandı
Libguestfs, LVM'yi destekler. Libguestfs, parted kullanır ve çoğu ayrılmış özellikleri sağlar
libguestfs API aracılığıyla.

BAŞLARKEN YARDIM ET VE RAPORLAMA BÖCEK


Ne kadar do I bilmek ne versiyon Ben kullanarak?
En basit yöntem şudur:

konuk balığı --versiyon

Libguestfs geliştirmesi, kararsız bir dal boyunca gerçekleşir ve periyodik olarak bir
kararlı yamaları desteklediğimiz kararlı dal. Daha fazlasını öğrenmek için "LIBGUESTFS
SÜRÜM NUMARALARI" misafir(3).

Ne kadar yapabilmek I almak yardımcı olabilir mi?
Ne postalama listeler or sohbet Odalar vardır kullanılabilir?
Red Hat Enterprise Linux kullanan bir Red Hat müşterisiyseniz, lütfen iletişime geçin.
Kırmızı Şapka Desteği: http://redhat.com/support

Esas olarak geliştirme için bir posta listesi var, ancak kullanıcılar da sorabilir
libguestfs ve sanal araçlar hakkında sorular:
https://www.redhat.com/mailman/listinfo/libguestfs

Bizimle FreeNode'daki "#libguestfs" IRC kanalında da konuşabilirsiniz. biz her zaman değiliz
civarında, bu yüzden lütfen sorunuzu sorduktan sonra kanalda kalın, biri geri dönecektir.
size.

Diğer sanal araçlar için (libguestfs ile sağlananlar değil) genel bir sanal araçlar vardır.
posta listesi: https://www.redhat.com/mailman/listinfo/virt-tools-list

Ne kadar do I rapor böcekler?
Bugzilla'da bir hata girmek için lütfen aşağıdaki bağlantıyı kullanın:

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

Olabildiğince fazla ayrıntı ve sorunu yeniden oluşturmanın bir yolunu ekleyin.

Tam çıktısını dahil et libguestfs-test aracı(1).

ORTAK SORUNLAR


Ayrıca bkz. "LIBGUESTFS GOTCHAS" misafir(3) libguestfs kullanarak bazı "getchas" için
API.

"Abilir değil ayırmak dinamik çevirmen tampon"
Bu belirsiz hata aslında bir SELinux hatasıdır. Aşağıdakileri etkinleştirmelisiniz
SELinux boole değeri:

setsebool -P virt_use_execmem=açık

Daha fazla bilgi için bkz. https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"çocuk süreç öldü beklenmedik bir şekilde"
[Bu hata mesajı libguestfs 1.21.18'de daha açıklayıcı bir şekilde değiştirildi.]

Bu hata, qemu'nun başarısız olduğunu veya ana bilgisayar çekirdeğinin önyükleme yapamadığını gösterir. daha ileri gitmek için
başarısızlık hakkında bilgi, çalıştırmanız gerekir:

libguestfs-test aracı

Bunu kullandıktan sonra hala arızayı anlamadıysanız, bizimle iletişime geçin (bkz.
Bölüm).

libguestf'ler: hata: yapamam bulmak herhangi uygun libguestfs süpermin, sabit or eski tarz cihaz
on LIBGUESTFS_PATH
febootstrap-süpermin-yardımcısı: dahili2: ebeveyn rehber değil bulundu
süpermin yardımcısı: dahili2: ebeveyn rehber değil bulundu
[Bu sorun libguestfs ≥ 1.26'da kalıcı olarak düzeltildi.]

Debian/Ubuntu'da bu hatalardan herhangi birini görürseniz, aşağıdaki komutu çalıştırmanız gerekir:

sudo update-guestfs-cihazı

"İzin reddedildi" ne zaman koşu libguestfs as kök
Çalışıyor olsanız bile bir disk görüntüsünü açarken izin reddedildi hatası alıyorsunuz
kök olarak libguestfs.

Buna libvirt neden olur ve bu nedenle yalnızca libvirt arka ucunu kullanırken olur. çalıştırıldığında
kök olarak libvirt, qemu aracını "qemu.qemu" kullanıcısı olarak çalıştırmaya karar verir. Ne yazık ki
bu genellikle qemu'nun disk görüntülerini açamayacağı anlamına gelir, özellikle de bu disk görüntüleri
root'a aittir veya root erişimi gerektiren dizinlerde bulunur.

Bunu düzeltmek için libvirt'e karşı açık bir hata var:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Aşağıdaki yöntemlerden biriyle bu sorunu çözebilirsiniz:

· Doğrudan arka uca geç:

LIBGUESTFS_BACKEND=doğrudan dışa aktar

· libguestfs'i root olarak çalıştırmayın.

· qemu kullanıcısının bunlara erişebilmesi için disk görüntüsünü ve herhangi bir üst dizini chmod yapın.

· (Kötü) Düzenle /etc/libvirt/qemu.conf ve "kullanıcı" ayarını değiştirin.

yürütme: /içinde: Izin inkar
Not: Bu hata, bir libguestfs dağıtım paketini (örn.
Fedora, Debian, vb) daha sonra dağıtıma karşı bir hata gönderin. Bu bir hata değil ki
normal kullanıcılar, dağıtım paketinin doğru şekilde hazırlanıp hazırlanmadığını görmelidir.

Bu hata, cihazın başlatılmasının süpermin önyükleme aşaması sırasında meydana gelir:

supermin: üzerine yeni kök takma /kök
süpermin: chroot
execl: /init: İzin reddedildi
supermin: hata ayıklama: listeleme dizini /
[...ardından çok sayıda hata ayıklama çıktısı...]

Bu, aşağıdakilerle ilgili karmaşık bir hatadır: süpermin(1) aletler. Cihaz inşa edilmiştir
gibi dosyaları kopyalayarak / bin / bash ve ana bilgisayardan birçok kitaplık. "hostfiles" dosyası
ana bilgisayardan cihaza kopyalanması gereken dosyaları listeler. eğer bazı dosyalar
ana bilgisayarda yoksa, kaçırılırlar, ancak bu dosyalara ihtiyaç duyulursa
(örneğin) çalıştırmak / bin / bash o zaman yukarıdaki hatayı göreceksiniz.

Sorunu teşhis etmek, kullanıcıların ihtiyaç duyduğu kütüphaneleri incelemeyi içerir. / bin / bash, yani:

dd / bin / bash

bunu "hostfiles" ile ana bilgisayar dosya sisteminde gerçekten mevcut olan dosyalarla karşılaştırmak,
ve hata mesajında ​​yazdırılan hata ayıklama çıktısı ile. Hangi dosyanın üzerinde çalıştıktan sonra
eksikse, o dosyayı paket yöneticinizi kullanarak kurun ve tekrar deneyin.

Ayrıca aşağıdaki gibi dosyaları da kontrol etmelisiniz. /içinde ve / bin / bash (cihazda) vardır
yürütülebilir. Hata ayıklama çıktısı dosya modlarını gösterir.

İNDİRİLİYOR, KURULUM, DERLEME LİBGUESTFS


Nerede yapabilmek I almak the son ikili için ...?
fötr ≥ 11
kullanın:

yum install '*guestf*'

En son yapılar için bkz.
http://koji.fedoraproject.org/koji/packageinfo?packageID=8391

Red Hat Enterprise Linux
RHEL 5
Resmi RHEL 5'te gönderilen sürüm çok eskidir ve şu durumlar dışında kullanılmamalıdır:
virt-v2v ile birlikte. EPEL'de güncel libguestfs 1.20 paketini kullanın
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Varsayılan kurulumun bir parçasıdır. RHEL 6 ve 7'de (yalnızca) yüklemeniz gerekir
Windows konuk desteği almak için "libguestfs-winsupport".

Debian ve Ubuntu
libguestfs < 1.26 için, libguestfs'i kurduktan sonra yapmanız gerekenler:

sudo update-guestfs-cihazı

(Bu komut dosyası Debian/Ubuntu'da libguestfs ≥ 1.26 ile kaldırıldı ve bunun yerine
cihaz talep üzerine inşa edilmiştir.)

Yalnızca Ubuntu'da:

sudo chmod 0644 /boot/vmlinuz*

Kendinizi "kvm" grubuna eklemeniz gerekebilir:

sudo usermod -a -G kvm girişiniz

Debian Sıkıştırması (6)
Hilko Bengen, sıkıştırılmış backport'larda libguestfs oluşturdu:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=sıkıştır-backports

Debian Wheezy ve sonrası (7+)
Hilko Bengen, Debian'da libguestfs'i destekler. Resmi Debian paketleri
Mevcut: http://packages.debian.org/search?anahtar kelimeler=libguestfs

Ubuntu
Tam zamanlı bir Ubuntu bakıcımız yok ve tarafından sağlanan paketler
Kanonik (kontrolümüz dışında olan) bazen bozulur.

Canonical, çekirdek üzerindeki izinleri değiştirmeye karar verdi.
root dışında okunabilir. Bu tamamen aptalca, ama değiştirmeyecekler
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Yani her kullanıcı
bunu yapmalı:

sudo chmod 0644 /boot/vmlinuz*

Ubuntu 12.04
Ubuntu'nun bu sürümünde libguestfs çalışıyor, ancak febootstrap'ı güncellemeniz gerekiyor
ve en son sürümlere seabios.

Aşağıdakilerden febootstrap ≥ 3.14-2'ye ihtiyacınız var:
http://packages.ubuntu.com/precise/febootstrap

Febootstrap'i yükledikten veya güncelledikten sonra cihazı yeniden oluşturun:

sudo update-guestfs-cihazı

Şunlardan seabios ≥ 0.6.2-0ubuntu2.1 veya ≥ 0.6.2-0ubuntu3'e ihtiyacınız var:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

Ayrıca yapmanız gerekenler (yukarıya bakın):

sudo chmod 0644 /boot/vmlinuz*

Gentoo
Libguestfs, 2012-07'de Andreis Vinogradovs (libguestfs) tarafından Gentoo'ya eklendi ve
Maxim Koltsov (esas olarak kurdeşen). Yapmak:

libguestfs ortaya çıkmak

SUSE
Libguestfs, 2012 yılında Olaf Hering tarafından SuSE'ye eklendi.

Arch Linux
Libguestfs, 2010 yılında AUR'ye eklendi.

Diğer Linux dağıtımı
Kaynaktan derleyin (sonraki bölüm).

Diğer Linux dışı dağıtım
Kaynaktan derlemeniz ve taşımanız gerekecek.

Ne kadar yapabilmek I derlemek ve kurmak libguestfs itibaren Kaynak?
libguestfs'i git'ten veya bir kaynak tarball'dan derleyebilirsiniz. önce README dosyasını okuyun
Başlangıç.

Git: https://github.com/libguestfs/libguestfs Kaynak tarball'ları:
http://libguestfs.org/download

"Make install" komutunu çalıştırmayın! Kullan "./ Çalıştırmak" komut dosyası yerine (bkz. BENİOKU)

Ne kadar yapabilmek I derlemek ve kurmak libguestfs if my dağıtıma etmez var yeni yeterli
qemu/süpermin/çekirdek?
Libguestfs'in supermin 5'e ihtiyacı var. Supermin 5 dağıtımınıza taşınmadıysa, bkz.
aşağıdaki soru.

Önce kaynaktan qemu, supermin ve/veya çekirdeği derleyin. Yapmalısın değil yapmak zorundayız
onları kurun.

libguestfs kaynak dizininde iki dosya oluşturun. "localconfigure" şunları içermelidir:

kaynak yerelenv
#export YOL=/tmp/qemu/x86_64-softmmu:$YOL
./autogen.sh --önek / usr "$@"

"localconfigure" dosyasını yürütülebilir yapın.

"localenv" şunları içermelidir:

#export SUPERMIN=/tmp/süpermin/src/süpermin
#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

Sahip olduğunuz alternatif programları kullanmak için bu satırları kaldırın ve gerektiği gibi ayarlayın.
derlenmiş.

"./configure" yerine "./localconfigure" kullanın, ancak aksi takdirde libguestfs'i şu şekilde derlersiniz:
olağan.

"Make install" komutunu çalıştırmayın! Kullan "./ Çalıştırmak" komut dosyası yerine (bkz. BENİOKU)

Ne kadar yapabilmek I derlemek ve kurmak libguestfs olmadan süpermin?
Supermin 5 dağıtımınızı destekliyorsa, ancak yeterince yeni bir supermin'iniz yoksa
yükledikten sonra önceki soruya bakın.

Supermin 5 dağıtımınızı hiç desteklemiyorsa, "sabit" kullanmanız gerekir.
gereç yöntemi", önceden derlenmiş bir ikili gereç kullandığınız yerde. libguestfs oluşturmak için
supermin olmadan, "--disable-appliance --disable-daemon" ifadesini ikisinden birine iletmeniz gerekir
./autogen.sh or . / Yapılandırma (sırasıyla git veya
tarball'lardan). Ardından, libguestfs kullanırken şart "LIBGUESTFS_PATH" öğesini ayarlayın
içinde de açıklandığı gibi, önceden derlenmiş bir cihazın dizinine ortam değişkeni
"SABİT CİHAZ" misafir(3).

Önceden derlenmiş cihazlar için ayrıca bakınız: http://libguestfs.org/download/binaries/appliance/.

Supermin'i daha fazla Linux dağıtımına taşıyan yamalar kabul edilir.

Ne kadar yapabilmek I eklemek destek için sVirt?
not için fötr/RHEL kullanıcılar: Bu yapılandırma, Fedora 18 ile başlayan varsayılandır ve
RHEL 7. Herhangi bir sorun bulursanız, lütfen bize bildirin veya bir hata bildirin.

SVirt, SELinux kullanan sertleştirilmiş bir cihaz sağlar ve bu da onu sahte bir disk için çok zor hale getirir
libguestfs hapsinden "kaçmak" ve ana bilgisayara zarar vermek için resim (söylemek adil
standart libguestfs'de bile bu zor olurdu, ancak sVirt fazladan bir katman sağlar.
ana bilgisayar için koruma ve daha da önemlisi aynı ana bilgisayardaki sanal makineleri korur
birbirinden).

Şu anda sVirt'i etkinleştirmek için libvirt ≥ 0.10.2'ye ihtiyacınız olacak (1.0 veya üstü tercih edilir),
libguestfs ≥ 1.20 ve son Fedora'dan SELinux politikaları. eğer koşmuyorsan
Fedora 18+, SELinux politikanızda değişiklik yapmanız gerekecek - şu adresten bize ulaşın:
posta listesi

Gereksinimlere sahip olduğunuzda şunları yapın:

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

SELinux'u Zorlama moduna ayarlayın ve sVirt otomatik olarak kullanılmalıdır.

libguestfs'in tüm veya hemen hemen tüm özellikleri sVirt altında çalışmalıdır. bilinen biri var
eksiklik: sanal kurtarma(1) libvirt (dolayısıyla sVirt) kullanmaz, ancak yönlendirmeye geri döner
qemu'nun lansmanı. Bu nedenle, kullanırken şu anda sVirt korumasından yararlanamayacaksınız.
sanal kurtarma.

libvirtd günlüğünü etkinleştirerek sVirt'in kullanılıp kullanılmadığını kontrol edebilirsiniz (bkz.
/etc/libvirt/libvirtd.log), libvirtd'yi öldürme ve yeniden başlatma ve günlük dosyalarını kontrol etme
"SELinux bağlamını ..." mesajlarına ayarlamak için.

Teoride sVirt, AppArmor'u desteklemelidir, ancak bunu denemedik. Neredeyse olacak
kesinlikle libvirt'e yama eklemeyi ve bir AppArmor politikası yazmayı gerektirir.

libguestfs vardır a Gerçekten mi ve kazandırdı liste of bağımlılıklar!
Temel kitaplık çok fazla bağımlı değildir, ancak uzun listenin üç nedeni vardır.
diğer bağımlılıklar:

1. Libguestfs birçok farklı disk formatını okuyabilmeli ve düzenleyebilmelidir. Örneğin,
XFS desteği, XFS araçları gerektirir.

2. Birçok farklı dil için, hepsi kendi dillerini gerektiren dil bağlamaları vardır.
Geliştirme araçları. Tüm dil bağlamaları (C hariç) isteğe bağlıdır.

3. Devre dışı bırakılabilen bazı isteğe bağlı kitaplık özellikleri vardır.

libguestfs ≥ 1.26 olduğundan, cihaz bağımlılıklarını bölmek mümkündür (madde 1
yukarıdaki liste) ve bu nedenle (örneğin) "libguestfs-xfs" için ayrı bir alt paket olarak
XFS disk görüntülerini işleme. Alt paketleyicileri tabanı bölmeye başlamaya teşvik ediyoruz
libguestfs paketini daha küçük alt paketlere dönüştürün.

Hatalar sırasında başlatmak on Fötr şapka 18, RHEL 7
Fedora ≥ 18 ve RHEL ≥ 7'de libguestfs, cihazı yönetmek için libvirt'i kullanır. Önceden
(ve yukarı akış) libguestfs, qemu'yu doğrudan çalıştırır:

┌───────────────────────────────┐
│ libguestfs │
├───────────────────────────────┤
│ doğrudan arka uç │ libvirt arka ucu │
└───────────────────────────────┘
↓ ↓
┌───────┐ ──────────┐
│ qemu │ │ libvirtd │
└───────┘ ──────────┘

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

yukarı akış Fedora 18+
Fedora olmayan RHEL 7+
RHEL olmayan

libvirt arka ucu daha karmaşıktır, SELinux/sVirt'i destekler (yukarıya bakın),
çalışırken takma ve daha fazlası. Bununla birlikte, daha karmaşıktır ve bu nedenle daha az sağlamdır.

Libvirt arka ucunu kullanırken izin sorunlarınız varsa, doğrudan
bu ortam değişkenini ayarlayarak arka uç:

LIBGUESTFS_BACKEND=doğrudan dışa aktar

herhangi bir libguestfs programını veya sanal aracı çalıştırmadan önce.

Ne kadar yapabilmek I anahtar için a sabit / önceden oluşturulmuş cihaz?
Bu, libguestfs'in Fedora ve RHEL'deki kararlılığını ve performansını iyileştirebilir.

libguestfs'i kurduktan sonra herhangi bir zamanda, aşağıdaki komutları root olarak çalıştırın:

mkdir -p /usr/yerel/lib/guestfs/cihaz
libguestfs-make-sabit-cihaz /usr/yerel/lib/guestfs/cihaz
ls -l /usr/yerel/lib/guestfs/cihaz

Şimdi libguestfs veya herhangi bir sanal aracı kullanmadan önce aşağıdaki ortam değişkenini ayarlayın:

dışa aktar LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance

Elbette istediğiniz herhangi bir dizinin yolunu değiştirebilirsiniz. cihazı paylaşabilirsiniz
aynı mimariye sahip makineler arasında (örn. tümü x86-64), ancak libvirt
izin sorunları nedeniyle cihazı NFS üzerinden paylaşmanızı engeller (bu nedenle
ya doğrudan arka uca geçin ya da NFS kullanmayın).

Ne kadar yapabilmek I hız up libguestfs inşa eder?
Şimdiye kadar yapabileceğiniz en önemli şey, Squid'i kurmak ve uygun şekilde yapılandırmaktır.
Squid ile birlikte gelen varsayılan yapılandırmanın saçma olduğunu unutmayın, bu nedenle yapılandırmak
isteğe bağlı değil.

Squid konfigürasyonuyla başlamak için çok iyi bir yer burası:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Squid'in çalıştığından ve $http_proxy ve $ftp_proxy ortam değişkenlerinin
ona işaret ediyorlar.

Squid çalışırken ve doğru şekilde yapılandırıldığında, cihaz derlemeleri birkaç taneye indirilmelidir.
dakika.

Ne kadar yapabilmek I hız up libguestfs inşa (Debian)?

Hilko Bengen, bir Debian arşiv proxy'si olan "yaklaşık" kullanılmasını önerir
(http://packages.debian.org/approx). Bu araç, Debian'da belgelenmiştir. yaklaşık(8)
manuel sayfa.

HIZ, DİSK UZAY KULLANILMIŞ BY LİBGUESTFS


Not: Bu bölümdeki bilgilerin çoğu taşındı: misafir performansı(1).

Foto Yükle or yazmak görünmek çok yavaş.
Temeldeki disk tam olarak tahsis edilmemişse (örn. seyrek ham veya qcow2), yazma işlemleri yapılabilir.
yavaş çünkü ana bilgisayar işletim sistemi, siz çalışırken yüksek maliyetli disk ayırmaları yapmak zorundadır.
yazı. Çözüm, bunun yerine tam olarak tahsis edilmiş bir format kullanmaktır, yani. seyrek olmayan ham veya
qcow2 "preallocation=metadata" seçeneğiyle.

libguestfs kullanım çok çok disk Uzay!
libguestfs, büyük boyutlu bir cihazı şurada önbelleğe alır:

/var/tmp/.guestfs-

"TMPDIR" ortam değişkeni tanımlanmışsa, $TMPDIR/.guestfs- kullanılır
yerine.

libguestfs kullanmadığınızda bu dizini silmek güvenlidir.

virt-sertleştirmek görünüyor için yapmak the görüntü Grow için the tam boyut of the sanal disk
giriş yapılırsa virt-sertleştirmek(1) ham ise, çıktı ham seyrek olacaktır. Emin olmak
çıktıyı "du -sh" gibi seyrekliği anlayan bir araçla ölçüyorsunuz.
Büyük bir fark yaratabilir:

$ ls -lh test1.img
-rw-rw-r--. 1 rjones rjones 100M 8 Ağustos 08:08 test1.img
$ du -sh test1.img
3.6 milyon test1.img

(Görünür boyutu karşılaştırın 100M gerçek boyuta karşı 3.6M)

Tüm bunlar sizi şaşırtıyorsa, aşağıdakileri belirterek seyrek olmayan bir çıktı biçimi kullanın. --dönüştürmek
seçenek, örneğin:

virt-sparsify --qcow2 disk.raw disk.qcow2'yi dönüştür

Niye ya etmez sanal yeniden boyutlandırma on the disk görüntü yerinde mi?
Bir disk görüntüsünü yeniden boyutlandırmak çok zordur - özellikle veri kaybetmediğinizden veya
bootloader'ı kırın. Geçerli yöntem, etkin bir şekilde yeni bir disk görüntüsü oluşturur ve kopyalar
eskisinden veri artı önyükleyici. Bir şeyler ters giderse, her zaman gidebilirsin
orijinaline geri dön.

Virt-resize çalışmasını yerinde yapacak olsaydık, o zaman sınırlamalar olması gerekirdi: için
örneğin, mevcut bölümleri taşımanıza izin verilmez (çünkü verileri
aynı diskin bir elektrik kesintisi veya çökme durumunda verileri bozma olasılığı daha yüksektir),
ve LVM'yi desteklemek çok zor olurdu (neredeyse keyfi haritalama nedeniyle
LV içeriği ve temel alınan disk blokları arasında).

Düşündüğümüz başka bir yöntem, orijinal disk görüntüsünün üzerine bir anlık görüntü yerleştirmektir.
orijinal verilere dokunulmaz ve anlık görüntüde yalnızca farklılıklar kaydedilir.
Bunu bugün "qemu-img create" + "virt-resize" kullanarak yapabilirsiniz, ancak qemu şu anda değil
aynı bloğun halihazırda olduğu gibi anlık görüntüye geri yazıldığını anlayacak kadar akıllı
yedekleme diskinde bulunur, bu nedenle bunun size yer veya zaman kazandırmadığını göreceksiniz.

Özetle, bu zor bir problem ve şu anda sahip olduğumuz şey çoğunlukla işe yarıyor, bu yüzden isteksiziz.
onu değiştirmek için.

Niye ya etmez virt-sertleştirmek on the disk görüntü yerinde mi?
libguestfs ≥ 1.26'da virt-sparsify artık yerinde disk görüntüleri üzerinde çalışabilir. Kullanmak:

virt-sparsify --yerinde disk.img

Ama önce "YERİNDE SPARSİFİKASYON" bölümünü okumalısınız. virt-sertleştirmek(1).

SORUNLAR AÇILIŞ DİSK GÖRÜNTÜLER


uzak libvirt misafir yapamam be açıldı.
Uzak libvirt konuklarının açılması şu anda desteklenmiyor. Örneğin bu işe yaramaz:

misafir balığı -c qemu://uzak/sistem -d Misafir

Uzak diskleri açmak için onları bir şekilde dışa aktarmanız ve ardından dışa aktarmaya bağlanmanız gerekir. İçin
örneğin NBD kullanmaya karar verdiyseniz:

uzak$ qemu-nbd -t -p 10809 guest.img
local$ misafir balığı -a nbd://uzaktan:10809 -i

Diğer olasılıklar arasında ssh (qemu yeterince yeniyse), NFS veya iSCSI bulunur. UZAKTAN
DEPOLAMA" misafir(3).

Ne kadar yapabilmek I açık Re-Tweet garip disk Kaynak?
Bir kitaplık aracılığıyla erişim gerektiren başka bir sistemin içinde bulunan bir disk görüntünüz var /
HTTP / REST / tescilli API veya bir şekilde sıkıştırılmış veya arşivlenmiştir. (Bir örnek
aslında indirmeden OpenStack bakış görüntülerine uzaktan erişim olacaktır.)

nbdkit (https://github.com/libguestfs/nbdkit) adında bir kardeş projemiz var. Bu
Project, herhangi bir disk kaynağını bir NBD sunucusuna dönüştürmenize olanak tanır. Libguestfs NBD'ye erişebilir
doğrudan sunucular, örneğin:

misafir balığı -a nbd://remote

nbdkit serbest lisanslıdır, böylece onu özel kitaplıklara bağlayabilir veya bunlara dahil edebilirsiniz
ve kod. Ayrıca basit, kararlı bir eklenti API'sine sahiptir, böylece kolayca eklentiler yazabilirsiniz.
gelecekte çalışmaya devam edecek olan API.

Hata açma VMDK diskler: "kullanır a vmdk özellik hangi is değil destekli by Re-Tweet Qemu versiyon:
VMDK versiyon 3"
Qemu (ve dolayısıyla libguestfs) yalnızca belirli VMDK disk görüntülerini destekler. Diğerleri çalışmayacak,
bu veya benzeri hatalar veriyor.

İdeal olarak, birisi en son VMDK özelliklerini desteklemek için qemu'yu düzeltirdi, ancak bu arada
üç seçeneğiniz var:

1. Konuk canlı, erişilebilir bir ESX sunucusunda barındırılıyorsa, dosyayı bulun ve indirin.
denilen disk görüntüsü isim-düz.vmdk. Adına rağmen, bu bir ham disk görüntüsüdür ve
herhangi bir şey tarafından açılabilir.

Yeterince yeni bir qemu ve libguestfs sürümünüz varsa, şunları yapabilirsiniz:
HTTPS veya ssh kullanarak bu disk görüntüsüne uzaktan erişin. "UZAKTAN DEPOLAMA" bölümüne bakın.
misafir(3).

2. Görüntüyü ham formata dönüştürmek için VMware'in tescilli vdiskmanager aracını kullanın.

3. Disk görüntüsünü bir NBD olarak dışa aktarmak için nbdkit'i tescilli VDDK eklentisiyle birlikte kullanın
kaynak. Bu, VMDK dosyasını okumanıza ve yazmanıza izin vermelidir.

UFS diskler (gibi Kullanılmış by BSD) yapamam be açıldı.
UFS dosya sistemi biçiminin birçok çeşidi vardır ve bunlar kendi kendini tanımlamaz. NS
Linux çekirdeğine hangi UFS varyantını kullanması gerektiği, hangi libguestfs'in yapamayacağı söylenmelidir.
biliyorum.

Bu dosya sistemlerini kurarken doğru "ufstype" mount seçeneğini geçmelisiniz.

https://www.kernel.org/doc/Documentation/filesystems/ufs.txt adresine bakın.

Windows Refs
Windows ReFS, Microsoft'un ZFS/Btrfs kopyasıdır. Bu dosya sistemi henüz tersine çevrilmedi
Linux çekirdeğinde tasarlandı ve uygulandı ve bu nedenle libguestfs desteklemiyor
o. Şu anda "vahşi doğada" çok nadir görünüyor.

ASCII olmayan karakterler değil mi görünmek on VFAT dosya sistemleri.
Bu sorunun tipik belirtileri:

· Dosya adında ASCII olmayan bir dosya oluşturduğunuzda hata alıyorsunuz
karakterler, özellikle Asya dillerinden (Çince, Japonca,
vesaire). Dosya sistemi VFAT'dir.

· Bir VFAT dosya sisteminden bir dizini listelediğinizde, dosya adları soru işaretleri olarak görünür.

Bu, GNU/Linux sisteminin bir tasarım kusurudur.

VFAT, uzun dosya adlarını UTF-16 karakterleri olarak saklar. Dosya adlarını açarken veya döndürürken,
Linux çekirdeğinin bunları 8 bitlik bir dizge biçimine çevirmesi gerekir. UTF-8 olurdu
UTF-8 olmayan yerel ayarları kullanmaya devam eden Linux kullanıcıları (kullanıcının
yerel ayar, libc'nin bir işlevi olduğu için çekirdek tarafından bilinmiyor).

Bu nedenle, çekirdeği bağladığınızda hangi çevirinin yapılmasını istediğinizi çekirdeğe söylemelisiniz.
dosya sistemi. İki yöntem "iocharset" parametresidir (bu,
libguestfs) ve "utf8" bayrağı.

Bu nedenle, bir VFAT dosya sistemi kullanmak için, montaj sırasında "utf8" bayrağını eklemelisiniz. Konuk balıklarından,
kullanımı:

> bağlama seçenekleri utf8 /dev/sda1 /

veya misafir balığı komut satırında:

misafir balığı [...] -m /dev/sda1:/:utf8

veya API'den:

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

Çekirdek daha sonra dosya adlarını UTF-8 dizelerine çevirir.

Bu montaj seçeneğini şeffaf bir şekilde eklemeyi düşündük, ancak ne yazık ki birkaç tane var.
bunu yaparken sorunlar:

· Bazı Linux sistemlerinde "utf8" bağlama seçeneği çalışmaz. tam olarak yapmıyoruz
hangi sistemlerin veya neden olduğunu anlayın, ancak bu bir kullanıcı tarafından güvenilir bir şekilde bildirildi.

· Uyumsuz olduğu için "iocharset" parametresini kullanmanızı engeller.
"utf8" ile. Bu parametreyi kullanmak muhtemelen iyi bir fikir değildir, ancak biz bunu istemiyoruz.
önlemek için.

ASCII olmayan karakterler görünmek as vurgulamak (_) on ISO9660 dosya sistemleri.
Dosya sistemi mkisofs veya genisoimage ile doğru şekilde hazırlanmamıştır. Emin ol
dosya sistemi Joliet ve/veya Rock Ridge uzantıları kullanılarak oluşturuldu. libguestfs değil
dosya sistemini işlemek için herhangi bir özel bağlama seçeneği gerektirir.

Can not açık Windows misafir hangi kullanım NTFS.
Şuna benzer hatalar görürsünüz:

mount: bilinmeyen dosya sistemi türü 'ntfs'

Red Hat Enterprise Linux veya CentOS'ta libguestfs-winsupport'u yüklemeniz gerekir.
paketi.

Can not açık or denetlemek RHEL 7 Misafirler.
Can not açık Linux misafir hangi kullanım XFS.
RHEL 7 misafirleri ve XFS kullanan diğer tüm misafirler libguestfs tarafından açılabilir, ancak siz
"libguestfs-xfs" paketini kurmanız gerekiyor.

KULLANMA LİBGUESTFS IN SİZİN KENDİ PROGRAMLAR


The API vardır yüzlerce of yöntemleri, nerede do I başla?
API'ye genel bakışı okuyarak başlamanızı öneririz: "API'YE GENEL BAKIŞ" misafir(3).

API'ye genel bakış, C API'yi kapsamasına rağmen, siz de olsanız okumaya değer.
API aynı olduğu için başka bir programlama dili kullanacağız, sadece basit
aramaların adlarında mantıksal değişiklikler:

C guestfs_ln_sf (g, hedef, bağlantı adı);
Python g.ln_sf (hedef, bağlantı adı);
OCaml g#ln_sf hedef bağlantı adı;
Perl $g->ln_sf (hedef, bağlantı adı);
Kabuk (misafir balığı) ln-sf hedef bağlantı adı
PHP guestfs_ln_sf ($g, $hedef, $bağlantı adı);

API'ye genel bakış hakkında bilgi sahibi olduktan sonra, bu başlangıç ​​listesine bakmalısınız.
diğer dil bağlamaları için puan: "LIBGUESTFS'İ BAŞKA PROGRAMLAMA DİLLERİYLE KULLANMA"
misafir(3).

Yapabilmek I kullanım libguestfs in my özel / kapalı kaynak / ticari program?
Genel olarak, evet. Ancak bu yasal tavsiye değildir - birlikte gelen lisansı okuyun
libguestfs ve özel sorularınız varsa bir avukata başvurun.

Kaynak ağacında lisans "COPYING.LIB" dosyasındadır (kütüphane için LGPLv2+ ve
bağlamalar) ve "KOPYALAMA" (bağımsız programlar için GPLv2+).

HATA AYIKLAMA LİBGUESTFS


Yardım, bu kadar değil Çalışma!
Hiçbir libguestfs programı çalışmıyor gibi görünüyorsa, aşağıdaki programı çalıştırın ve
tamamlayınız, düzenlenmemiş "libguestfs" @ "redhat.com" adresine bir e-posta çıktısı alın:

libguestfs-test aracı

Belirli bir işlem başarısız olursa, bu kontrol listesindeki tüm bilgileri bir e-postayla sağlayın
"libguestfs" @ "redhat.com" adresine:

1. Ne yapmaya çalışıyorsunuz?

2. Tam olarak hangi komutları çalıştırdınız?

3. Bu komutların kesin hatası veya çıktısı neydi?

4. Hata ayıklamayı etkinleştirin, komutları yeniden çalıştırın ve tamamlamak çıktı. Do değil
düzenleme the çıktı.

LIBGUESTFS_DEBUG=1 dışa aktar
LIBGUESTFS_TRACE=1 dışa aktar

5. libguestfs sürümünü, işletim sistemi sürümünü ve nasıl yüklediğinizi ekleyin
libguestfs (örn. kaynaktan, "yum yükleme" vb.)

Ne kadar do I ayıklamak ne zaman kullanma herhangi libguestfs program or araç (Örneğin. sanal-v2v or sanal-df)?
Daha fazlasını elde etmek için ayarlayabileceğiniz iki "LIBGUESTFS_*" ortam değişkeni vardır.
libguestfs'den bilgi.

"LIBGUESTFS_TRACE"
Bunu 1'e ayarlayın ve libguestfs her komutu/API çağrısını şu biçimde yazdıracaktır:
misafir balığı komutlarına benzer.

"LIBGUESTFS_DEBUG"
Büyük miktarda hata ayıklama iletisini etkinleştirmek için bunu 1'e ayarlayın. Eğer düşünürsen
libguestfs aracının içinde bir sorun var, o zaman bunu kullanmalısın
seçeneği.

Bunları kabuktan ayarlamak için programı çalıştırmadan önce şunu yapın:

LIBGUESTFS_TRACE=1 dışa aktar
LIBGUESTFS_DEBUG=1 dışa aktar

csh/tcsh için eşdeğer komutlar şöyle olacaktır:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Daha fazla bilgi için bkz.: "ÇEVRE DEĞİŞKENLERİ" misafir(3).

Ne kadar do I ayıklamak ne zaman kullanma misafir balığı?
Yukarıdaki aynı ortam değişkenlerini kullanabilirsiniz. Alternatif olarak konuk balığı seçeneklerini kullanın
-x (komutları izlemek için) veya -v (tam hata ayıklama çıktısını almak için) veya her ikisi.

Daha fazla bilgi için bkz: konuk balığı(1).

Ne kadar do I ayıklamak ne zaman kullanma the API'mi?
İçinde "guestfs_set_trace" arayın misafir(3) komut izlerini etkinleştirmek ve/veya
"guestfs_set_verbose" içinde misafir(3) hata ayıklama mesajlarını etkinleştirmek için.

En iyi sonuçları elde etmek için, bu işlevleri oluşturduktan hemen sonra, mümkün olduğunca erken çağırın.
guestfs, yapabilirseniz ve kesinlikle başlatmayı aramadan önce halledin.

Ne kadar do I ele geçirmek ayıklamak çıktı ve koymak it içine my günlüğü sistemi?
Etkinlik API'sini kullanın. Örnekler için, bkz. misafir(3)
ve örnekler/debug-logging.c libguestfs kaynaklarında program.

Kazma derin içine the cihaz çizme proses.
Hata ayıklamayı etkinleştirin ve ardından cihaz önyükleme işlemiyle ilgili bu belgeleri okuyun:
misafir-internals(1).

libguestfs takılıyor or başarısız sırasında çalıştır/başlat.
Hata ayıklamayı etkinleştirin ve tam çıktıya bakın. Neler olduğunu çözemezsen,
dahil olmak üzere bir hata raporu dosyalayın. tamamlamak çıktı libguestfs-test aracı(1).

Hata ayıklama libvirt
libvirt arka ucunu kullanıyorsanız ve libvirt başarısız oluyorsa, etkinleştirebilirsiniz
düzenleyerek hata ayıklama /etc/libvirt/libvirtd.conf.

Root dışı olarak çalışıyorsanız, farklı bir dosya düzenlemeniz gerekir. Oluşturmak
~/.config/libvirt/libvirtd.conf kapsamak:

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

Çalışan herhangi bir oturumu (kök olmayan) libvirtd'yi sonlandırın ve libguestfs'i bir sonraki çalıştırışınızda
komut, içinde libvirtd'den büyük miktarda faydalı hata ayıklama bilgisi görmelisiniz.
/tmp/libvirtd.log

TASARIM/DAHİLİ OF LİBGUESTFS


Ayrıca bakınız misafir-internals(1).

Niye ya değil mi sen do her şey içinden the SİGORTA / dosya sistemi arayüz?
adlı bir komut sunuyoruz. misafir bineği(1) konuk dosya sistemlerini
ev sahibi. Bu bir FUSE modülü olarak uygulanmaktadır. neden tamamını uygulamıyoruz?
libguestfs, büyük ve oldukça karmaşık API'ye sahip olmak yerine bu mekanizmayı kullanıyor mu?

Nedenler iki yönlüdür. İlk olarak, libguestfs, aşağıdaki gibi şeyler yapmak için API çağrıları sunar:
bir dosya sistemine uymayan bölümleri ve mantıksal birimleri oluşturma ve silme
modeli çok kolay. Veya daha doğrusu, bunları şuraya sığdırabilirsiniz: örneğin, bir bölüm oluşturma
"mkdir /fs/hda1" ile eşlenebilir, ancak daha sonra seçmek için bir yöntem belirtmeniz gerekir
bölümün boyutu (belki "echo 100M > /fs/hda1/.size") ve bölüm türü,
sektörleri başlatır ve bitirir vb., ancak bunu yaptıktan sonra dosya sistemi tabanlı API başlar
şu anda sahip olduğumuz çağrı tabanlı API'den daha karmaşık görünüyor.

İkinci neden verimlilik içindir. FUSE'nin kendisi oldukça verimlidir, ancak
FUSE modülüne çok sayıda küçük, bağımsız çağrı yapın. Guestmount'ta bunlar gerekir
büyük bir ek yükü olan libguestfs cihazına mesajlara çevrilebilir (zaman içinde
ve gidiş-dönüş). Örneğin, bir dosyayı 64 KB'lik parçalar halinde okumak verimsizdir çünkü her biri
yığın tek bir gidiş dönüş dönüşecekti. libguestfs API'sinde çok daha fazlası
gibi akış çağrılarından biri aracılığıyla tüm bir dosyayı veya dizini indirmek için verimli
"guestfs_download" veya "guestfs_tar_out".

Niye ya değil mi sen do her şey içinden GVFS'mi?
Sorunlar, FUSE ile ilgili sorunlara benzer.

GVFS, POSIX/FUSE'den daha iyi bir soyutlamadır. GVFS için bir FTP arka ucu vardır.
cesaret verici çünkü FTP kavramsal olarak libguestfs API'sine benzer. Bununla birlikte, GVFS
FTP arka ucu, etkileşimi sürdürmek için birden çok eşzamanlı bağlantı kurar.
libguestfs ile kolayca yapamayız.

Niye ya yapabilmek I yazmak için the disk, Üstelik gerçi I katma it Sadece oku?
Niye ya yok "--ro" görünmek için var yok hayır etki, tesir?
Salt okunur bir disk eklediğinizde, libguestfs, diskin üzerine yazılabilir bir yer paylaşımı yerleştirir.
temel disk. Yazmalar bu kaplamaya girer ve tutamaç kapatıldığında atılır
(veya "misafir balık" vb. çıkar).

Bunu bu şekilde yapmanın iki nedeni vardır: Birincisi, salt okunur diskler mümkün değildir.
birçok durumda (örn. IDE bunları desteklemez, bu nedenle IDE öykünmesi
salt okunur disk, ancak bu gerçek libguestfs kurulumlarında yaygın değildir).

İkincisi ve daha da önemlisi, salt okunur diskler mümkün olsa bile,
onlara. "mount -o ro" bile olsa, günlüğü olan herhangi bir dosya sistemini bağlamak, yazma işlemlerinin
dosya sistemi, çünkü günlüğün yeniden oynatılması ve meta verilerin güncellenmesi gerekiyor. eğer disk
gerçekten salt okunur olsaydı, kirli bir dosya sistemi bağlayamazdınız.

Kullanılabilir hale getirmek için, bu yazmaları geçici olarak saklayacak bir yer olarak yer paylaşımı oluşturuyoruz ve
sonra atıyoruz. Bu, alttaki diske her zaman dokunulmamasını sağlar.

Ayrıca libguestfs oluştururken bunun için bir regresyon testi olduğunu unutmayın (içinde
"testler/qemu"). Paketleyicilerin test takımını çalıştırmasının önemli olmasının bir nedeni de budur.

"--ro" yapmak herşey diskler Sadece oku?
Hayır! "--ro" seçeneği yalnızca komut satırına eklenen diskleri etkiler, yani. "-a" kullanarak ve
"-d" seçenekleri.

Konuk balıklarında "add" komutunu kullanırsanız, diske okuma-yazma eklenir (siz
"salt okunur: doğru" bayrağını komutla açıkça belirtin).

Yapabilmek I kullanım "misafir balığı --ro" as a yol için yedek my sanal makineler?
Genellikle bu değil iyi bir fikir. Soru bu e-postada daha ayrıntılı olarak yanıtlanmıştır.
liste ilanı: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Ayrıca bir sonraki soruya bakın.

Niye ya olamaz I koşmak fsck on a yaşamak dosya sistemi kullanma "misafir balığı --ro"?
Bu komut genellikle değil çalışması:

misafir balığı --ro -a /dev/vg/my_root_fs çalıştır : fsck /dev/sda

Bunun nedeni, qemu'nun orijinal dosya sistemi üzerinde bir anlık görüntü oluşturmasıdır, ancak
katı bir anlık anlık görüntü oluşturmaz. Temeldeki veri blokları
fsck işlemi ilerledikçe dosya sistemi qemu tarafından farklı zamanlarda okunur.
arada yazar. Sonuç olarak, fsck büyük bir yolsuzluk görüyor (hayali, gerçek değil!)
ve başarısız olur.

Yapmanız gereken, bir anlık anlık görüntü oluşturmaktır. Mantıksal bir birimse, şunu kullanın:
bir LVM2 anlık görüntüsü. Dosya sistemi btrfs/ZFS dosyası gibi bir dosyanın içindeyse,
bir btrfs/ZFS anlık görüntüsü kullanın ve ardından anlık görüntüde fsck'i çalıştırın. pratikte yapmazsın
bunun için libguestfs kullanmanız gerekiyor - sadece çalıştırın /sbin/fsck direkt olarak.

Ana cihazların ve dosyaların belirli bir zamanda anlık görüntülerini oluşturmak, aşağıdakilerin kapsamı dışındadır:
libguestfs, ancak libguestfs oluşturulduktan sonra bunlar üzerinde çalışabilir.

Neler bulunuyor the fark arasında konuk balığı ve sanal kurtarma?
Sağladığımız yüzeysel olarak benzer iki araç pek çok insanın kafasını karıştırıyor:

$ misafir balığı --ro -bir misafir.img
> Çalıştırmak
> fsck /dev/sda1

$ sanal kurtarma --ro guest.img
> /sbin/fsck / Dev / sda1

Ve sonra ortaya çıkan ilgili soru, neden tam kabuk komutlarını yazamadığınızdır.
misafir balıklarındaki tüm --options ile (ancak şunları yapabilirsiniz: sanal kurtarma(1)).

konuk balığı(1) yapılandırılmış erişim sağlayan bir programdır. misafir(3) API. Olur
güzel bir etkileşimli kabuk olmak için, ancak birincil amacı,
kabuk komut dosyaları. Bunu daha çok Python ve diğer bağlamalar gibi bir dil bağlaması gibi düşünün,
ama kabuk için. Konuk balıklarının (ve libguestfs API'sinin) temel ayırt edici faktörü
genel) değişiklikleri otomatikleştirme yeteneğidir.

sanal kurtarma(1) libguestfs aracını başlatmanın ve
VM'nizde keyfi değişiklikler. Yapılandırılmış değil, otomatikleştiremezsiniz, ancak yapmak için
misafirlerinize hızlı geçici düzeltmeler yapmak oldukça faydalı olabilir.

Ancak, libguestfs ayrıca, isteğe bağlı olarak göndermenize izin veren cihaza bir "arka kapıya" sahiptir.
kabuk komutları. Sanal kurtarma kadar esnek değil, çünkü
kabuk komutları, ama yine de burada:

> hata ayıklama sh "cmd arg1 arg2 ..."

Yapmanız gerektiğini unutmayın değil buna güvenin. Gelecekte kaldırılabilir veya değiştirilebilir. Eğer senin
programın biraz çalışması gerekiyor, lütfen bunun yerine libguestfs API'sine ekleyin.

Neler bulunuyor the anlaşma ile "misafir balığı -ben"?
Niye ya yok virt-kedi bir tek on a gerçek VM görüntü, fakat sanal-df çalışır on herhangi disk görüntü?
Ne yok "numara kök cihaz bulundu in Re-Tweet işletme sistem görüntü" Yani?
Bu soruların tümü, hemen olamayabilecek temel düzeyde ilişkilidir.
açık.

at misafir(3) API seviyesi, bir "disk görüntüsü" sadece bir yığın bölüm ve dosya sistemidir.

Buna karşılık, sanal makine önyüklendiğinde, bu dosya sistemlerini tutarlı bir şekilde bağlar.
hiyerarşi, örneğin:

/ (/dev/sda2)

├── /çizme (/ dev/sda1)

├── / Ana Sayfa (/dev/vg_external/Evler)

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

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

(veya Windows'ta sürücü harfleri).

API her şeyden önce disk görüntüsünü "dosya sistemleri yığını" düzeyinde görür. Ama aynı zamanda
bir işletim sistemi içerip içermediğini ve nasıl olduğunu görmek için disk görüntüsünü incelemenin bir yolu vardır.
diskler, işletim sistemi önyüklendiğinde takılır: "İNCELEME" misafir(3).

Kullanıcılar bazı araçlar bekler (örneğin virt-kedi(1)) VM yollarıyla çalışmak için:

sanal kedi fedora.img /var/log/messages

Virt-cat bunu nereden biliyor? / var ayrı bir bölüm mü? İşin püf noktası şu virt-cat
disk görüntüsü üzerinde inceleme yapar ve bunu yolu doğru çevirmek için kullanır.

Bazı araçlar (dahil virt-kedi(1) sanal düzenleme(1) sanal(1)) VM'yi eşlemek için incelemeyi kullanın
yollar. gibi diğer araçlar sanal-df(1) ve sanal dosya sistemleri(1) tamamen işletmek
libguestfs API'sinin ham "büyük dosya sistemi yığını" düzeyi ve inceleme kullanmayın.

konuk balığı(1) ilginç bir orta yolda. kullanırsanız -a ve -m komut satırı
seçenekler, o zaman misafir balıklarına tam olarak nasıl disk imajları ekleneceğini ve nereye monte edileceğini söylemelisiniz.
bölümler. Bu ham API düzeyidir.

Eğer kullanıyorsanız -i seçeneği, libguestfs inceleme gerçekleştirir ve dosya sistemlerini bağlar.
sen.

"Bu işletim sistemi görüntüsünde kök cihaz bulunamadı" hatası bununla ilgilidir. Bilişim Teknoloji
incelemenin, verdiğiniz disk görüntüsü içinde bir işletim sistemini bulamadığı anlamına gelir
o. Bunları bir şey üzerinde çalıştırmayı denerseniz, virt-cat gibi programlarda bunu görebilirsiniz.
bu sadece bir disk görüntüsüdür, sanal makine disk görüntüsü değildir.

Ne do bunlar "hata ayıklama*" ve "dahili-*" fonksiyonlar yap?
Hata ayıklama ve dahili amaçlar için kullanılan bazı işlevler vardır. değil
kararlı API'nin bir parçası.

"debug*" (veya "guestfs_debug*") işlevleri, öncelikle "guestfs_debug" misafir(3) ve
bir avuç diğerleri, libguestfs hatalarını ayıklamak için kullanılır. parçası olmasalar da
kararlı API ve bu nedenle herhangi bir zamanda değişebilir veya kaldırılabilir, bazı programlar aramak isteyebilir
bunlar libguestfs'e özelliklerin eklenmesini beklerken.

"internal-*" (veya "guestfs_internal_*") işlevleri yalnızca libguestfs tarafından kullanılmalıdır
kendisi. Programların onları çağırması için hiçbir sebep yoktur ve programlar kullanmaya çalışmamalıdır.
onlara. Bunları kullanmak, çoğu zaman kötü şeylerin olmasına ve aynı zamanda bir parçası olmamalarına neden olur.
belgelenmiş kararlı API.

GELİŞTİRİCİLER


Nerede do I göndermek yamalar?
Lütfen yamaları libguestfs posta listesine gönderin
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
Gönderiniz manuel olarak onaylanana kadar bir gecikme olacaktır.

Lütfen değil mi kullanım github Çek isteklerinizi - onlar irade be göz ardı. Sebepler (a) istediğimiz
posta listesindeki yamaları tartışmak ve incelemek ve (b) github çekme istekleri
birleştirme taahhütleri ancak doğrusal bir geçmişe sahip olmayı tercih ediyoruz.

Ne kadar do I önermek a özellik?
Katkıda bulunmayı düşündüğünüz büyük yeni özellikler, posta listesinde tartışılmalıdır.
ilk (https://www.redhat.com/mailman/listinfo/libguestfs). Bu hayal kırıklığını önler
ve özelliğin libguestfs projesine uymayacağını düşünürsek boşa harcanan iş.

Kullanışlı bir özellik önermek istiyor ancak kodu yazmak istemiyorsanız,
Özetin başında "RFE:" ile hata ("YARDIM ALMA VE HATALARI RAPORLAMA")
hattı.

Kim yapabilmek işlemek için libguestfs Git mi?
Yaklaşık 5 kişinin github'a erişimi var. Yamalar önce listede yayınlanmalıdır
ve ACKed. ACKing ve yamaları gönderme politikası burada özetlenmiştir:

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

Yapabilmek I çatal libguestfs?
Tabi ki yapabilirsin. Git, libguestfs'i çatallamayı kolaylaştırır. Github bunu daha da kolaylaştırıyor.
Bize e-posta listesinde çatallar ve nedenlerini anlatırsanız seviniriz.

ÇEŞİTLİ SORULAR


Yapabilmek I izlemek the yaşamak disk etkinlik of a sanal makine kullanma libguestfs?
Yaygın bir istek, bir bilgisayarın canlı disk etkinliğini izlemek için libguestfs kullanabilmektir.
misafir, örneğin bir misafir her yeni dosya oluşturduğunda bilgilendirilmek için. Libguestfs
yok değil Bu şemadan da görebileceğiniz gibi, bazı insanların hayal ettiği şekilde çalışın:

┌─────────────────────────────────┐
│ libguestfs kullanarak izleme programı │
└─────────────────────────────────┘

┌───────────┐ ┌────────────────────┐
│ canlı VM │ │ libguestfs cihazı │
├───────────┤ ├────────────────────┤
│ çekirdek (1)│ │ cihaz çekirdeği (2) │
└───────────┘ └────────────────────┘
↓ ↓ (r/o bağlantısı)
┌────────────────────┐
| disk görüntüsü |
└────────────────────┘

Bu senaryo güvenlidir (sürücüyü eklerken "salt okunur" bayrağını ayarladığınız sürece).
Ancak libguestfs gereç çekirdeği (2) diskte yapılan tüm değişiklikleri görmez.
görüntü, iki nedenden dolayı:

ben. VM çekirdeği (1) bellekteki verileri önbelleğe alabilir, bu nedenle disk görüntüsünde görünmez.

ii. libguestfs gereç çekirdeği (2), disk görüntüsünün değişmesini beklemiyor
altında, bu nedenle, VM çekirdeği (1) olduğunda bile kendi önbelleği sihirli bir şekilde güncellenmez.
disk görüntüsünü günceller.

Desteklenen tek çözüm, istediğiniz zaman libguestfs aracının tamamını yeniden başlatmaktır.
disk görüntüsündeki değişikliklere bakmak istiyorum. Çağrıya karşılık gelen API düzeyinde
"guestfs_shutdown" ve ardından ağır bir operasyon olan "guestfs_launch" (bkz.
Ayrıca misafir performansı(3)).

Cihazı yeniden başlatmak gerçekten çok zorsa deneyebileceğiniz bazı desteklenmeyen hileler var.
pahalı:

· "guestfs_drop_caches (g, 3)" arayın. Bu, libguestfs tarafından tüm önbelleğe alınmış verilerin yardımına neden olur
cihaz çekirdeği (2) atılır, böylece disk görüntüsüne geri döner.

Ancak bu tek başına yeterli değildir, çünkü qemu ayrıca bazı verileri önbelleğe alır. Sen
ayrıca "önbellek=güvensiz" modunu (yeniden) etkinleştirmek için libguestfs yaması gerekir. Görmek:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Bunun yerine virt-bmap gibi bir araç kullanın.

· Konuk içinde bir ajan çalıştırın.

Konuk daha temel değişiklikler yapıyorsa (örneğin dosya sistemlerini silmek) hiçbir şey yardımcı olmaz.
Bu tür şeyler için cihazı yeniden başlatmanız gerekir.

(Gerçekten incelemek için tutarlı anlık görüntüler kullanmanız gereken üçüncü bir sorun olduğunu unutmayın.
canlı disk görüntüleri, ancak bu, herhangi bir canlı diske karşı libguestfs kullanmanın genel bir sorunudur.
görüntü.)

onworks.net hizmetlerini kullanarak guestfs-faq çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad