عربيالفرنسيةالإسبانية

Ad


OnWorks فافيكون

Guestfs-faq - عبر الإنترنت في السحابة

قم بتشغيل Guestfs-faq في موفر الاستضافة المجاني OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر Guestfs-faq الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


Guestfs-faq - libguestfs الأسئلة المتداولة (الأسئلة الشائعة)

معلومات عنا(ABOUT) ليبغويستفس


ابحث عن is libguestfs؟
libguestfs هي طريقة لإنشاء صور القرص والوصول إليها وتعديلها. يمكنك أن تبحث داخل القرص
الصور، وتعديل الملفات التي تحتوي عليها، وإنشائها من الصفر، وتغيير حجمها، وغير ذلك الكثير
أكثر. إنها مفيدة بشكل خاص من البرامج النصية والبرامج ومن سطر الأوامر.

libguestfs هي مكتبة C (ومن هنا "lib-")، ومجموعة من الأدوات المبنية على هذه المكتبة، و
روابط للعديد من لغات البرمجة الشائعة.

لمزيد من المعلومات حول ما يمكن أن يفعله libguestfs، اقرأ المقدمة على الصفحة الرئيسية
(http://libguestfs.org).

ابحث عن . ال virt أدوات؟
أدوات فيرت (الموقع: http://virt-tools.org) هي مجموعة كاملة من إدارة المحاكاة الافتراضية
الأدوات التي تستهدف مسؤولي النظام. بعضهم يأتي من libguestfs، وبعضهم من
libvirt والعديد من المشاريع الأخرى مفتوحة المصدر. لذا فإن الأدوات الفاضلة هي مجموعة شاملة من
libguestfs. لكن libguestfs يأتي مع العديد من الأدوات المهمة. يرى
http://libguestfs.org للحصول على قائمة كاملة.

لا libguestfs حاجة { libvirt / KVM / أحمر قبعة / فيدورا }?
لا!

libvirt ليس شرطًا لـ libguestfs.

يعمل libguestfs مع أي صورة قرص، بما في ذلك تلك التي تم إنشاؤها في VMware، KVM، qemu،
VirtualBox وXen والعديد من برامج Hypervisor الأخرى، وتلك التي قمت بإنشائها من الصفر.

ترعى Red Hat (أي تدفع ثمن) تطوير libguestfs وعدد كبير من البرامج المفتوحة الأخرى
مشاريع المصدر. لكن يمكنك تشغيل libguestfs والأدوات الفعّالة على العديد من أنظمة Linux المختلفة
التوزيعات ونظام التشغيل Mac OS X. نحن نبذل قصارى جهدنا لدعم جميع توزيعات Linux باعتبارها من الدرجة الأولى
المواطنين. تم نقل بعض الأدوات الفاضلة إلى نظام التشغيل Windows.

كيفية هل libguestfs قارن إلى آخر أدوات؟
مقابل com.kpartx
يتبع Libguestfs نهجًا مختلفًا عن kpartx. يحتاج kpartx إلى الجذر، ويتصاعد
أنظمة الملفات الموجودة على النواة المضيفة (والتي يمكن أن تكون غير آمنة - راجع Guestfs- الأمن(1)).
يقوم Libguestfs بعزل نواة المضيف عن الضيوف، وهو أكثر مرونة وقابلية للبرمجة النصية،
يدعم LVM، ولا يتطلب الجذر، وهو معزول عن العمليات الأخرى، ويتم تنظيفه
بعد نفسه. Libguestfs هو أكثر من مجرد الوصول إلى الملفات لأنه يمكنك استخدامه
إنشاء الصور من الصفر.

مقابل com.vdfuse
vdfuse يشبه kpartx ولكن لصور VirtualBox. انظر مقارنة kpartx أعلاه.
يمكنك استخدام libguestfs على ملفات الأقسام التي كشف عنها vdfuse، على الرغم من أنها ليست كذلك
ضروري لأن libguestfs يمكنه الوصول إلى صور VirtualBox مباشرة.

مقابل qemu-nbd
NBD (جهاز كتلة الشبكة) هو بروتوكول لتصدير أجهزة الكتلة عبر الشبكة.
qemu-nbd هو خادم NBD يمكنه التعامل مع أي تنسيق قرص يدعمه qemu (على سبيل المثال، Raw،
qcow2). يمكنك استخدام libguestfs وqemu-nbd أو nbdkit معًا للوصول إلى الكتلة
الأجهزة عبر الشبكة، على سبيل المثال: "guestfish -a nbd://remote"

مقابل متزايد أنظمة الملفات in ال مضيف
يعد تثبيت أنظمة ملفات الضيف في المضيف أمرًا غير آمن ويجب تجنبه تمامًا
للضيوف غير الموثوق بهم. استخدم libguestfs لتوفير طبقة من الحماية ضد
يستغل نظام الملفات. أنظر أيضا Guestmount(1).

مقابل افترقنا
Libguestfs يدعم LVM. يستخدم Libguestfs Parted ويوفر معظم الميزات المقسمة
من خلال واجهة برمجة تطبيقات libguestfs.

الحصول على مساعدة لأي لبس التبليغ بق


كيفية do I علم ماذا الإصدار أنا باستخدام؟
أبسط طريقة هي:

Guestfish --version

يحدث تطوير Libguestfs على طول فرع غير مستقر ونقوم بشكل دوري بإنشاء ملف
فرع مستقر ندعم فيه التصحيحات المستقرة. لمعرفة المزيد، اقرأ "LIBGUESTFS
أرقام الإصدار "في Guestfs(3).

كيفية يمكن I دولار فقط واحصل على خصم XNUMX% على جميع HELP؟
ابحث عن البريدية القوائم or الدردشة غرف . متاح؟
إذا كنت أحد عملاء Red Hat وتستخدم Red Hat Enterprise Linux، فيرجى الاتصال
دعم القبعة الحمراء: http://redhat.com/support

توجد قائمة بريدية مخصصة للتطوير بشكل أساسي، ولكن نرحب أيضًا بطرح الأسئلة على المستخدمين
أسئلة حول libguestfs والأدوات الفعّالة:
https://www.redhat.com/mailman/listinfo/libguestfs

يمكنك أيضًا التحدث إلينا على قناة IRC "#libguestfs" على FreeNode. نحن لسنا دائما
لذا يرجى البقاء في القناة بعد طرح سؤالك وسيقوم أحد بالرد عليك
لك.

بالنسبة للأدوات الفعّالة الأخرى (غير تلك المتوفرة مع libguestfs) هناك أدوات فعّالة عامة
القائمة البريدية: https://www.redhat.com/mailman/listinfo/virt-tools-list

كيفية do I تقرير البق؟
الرجاء استخدام الرابط التالي لإدخال خطأ في Bugzilla:

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

قم بتضمين أكبر قدر ممكن من التفاصيل وطريقة لإعادة إنتاج المشكلة.

تضمين الإخراج الكامل ل أداة اختبار libguestfs(1).

COMMON مشاكل


انظر أيضًا "LIBGUESTFS GOCHAS" في Guestfs(3) بالنسبة لبعض "المشاكل" باستخدام libguestfs
API.

"استطاع ليس تخصيص ديناميكي مترجم متعادل"
هذا الخطأ الغامض هو في الواقع فشل SELinux. يجب عليك تمكين ما يلي
SELinux منطقي:

setsebool -P virt_use_execmem=on

لمزيد من المعلومات، راجع https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"طفل عملية المعالجة توفي بشكل غير متوقع"
[تم تغيير رسالة الخطأ هذه في libguestfs 1.21.18 إلى شيء أكثر توضيحًا.]

يشير هذا الخطأ إلى فشل qemu أو تعذر تشغيل kernel المضيف. للحصول على أبعد من ذلك
معلومات حول الفشل، عليك تشغيل:

أداة اختبار libguestfs

إذا، بعد استخدام هذا، لا تزال لا تفهم الفشل، اتصل بنا (انظر السابق
الجزء).

ليبغويستفس: خطأ: لا تستطيع جد أي وقت مناسب libguestfs سوبرمين, ثابت or موضة قديمة جهاز
on LIBGUESTFS_PATH
febootstrap-supermin-مساعد: تحويلة 2: أصل دليل ليس وجدت
مساعد المشرف: تحويلة 2: أصل دليل ليس وجدت
[تم إصلاح هذه المشكلة بشكل دائم في libguestfs ≥ 1.26.]

إذا رأيت أيًا من هذه الأخطاء على Debian/Ubuntu، فأنت بحاجة إلى تشغيل الأمر التالي:

sudo update-guestfs-appliance

"إذن رفض" متى تشغيل libguestfs as جذر
تحصل على خطأ رفض الإذن عند فتح صورة قرص، حتى أثناء تشغيلك
libguestfs كجذر.

يحدث هذا بسبب libvirt، ويحدث هذا فقط عند استخدام الواجهة الخلفية لـ libvirt. عند التشغيل
كجذر، يقرر libvirt تشغيل جهاز qemu كمستخدم "qemu.qemu". للأسف
وهذا يعني عادة أن qemu لا يمكنه فتح صور القرص، خاصة إذا كانت صور القرص تلك موجودة
مملوكة للجذر، أو موجودة في الدلائل التي تتطلب الوصول إلى الجذر.

يوجد خطأ مفتوح ضد libvirt لإصلاح هذا:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

يمكنك التغلب على ذلك بإحدى الطرق التالية:

· التبديل إلى الواجهة الخلفية المباشرة:

تصدير LIBGUESTFS_BACKEND = مباشر

· لا تقم بتشغيل libguestfs كجذر.

· قم بتعديل صورة القرص وأي أدلة أصلية بحيث يتمكن مستخدم qemu من الوصول إليها.

· (سيئة) تحرير /etc/libvirt/qemu.conf وقم بتغيير إعداد "المستخدم".

تنفيذ: /فيه: إذن رفض
ملحوظة: إذا حدث هذا الخطأ عند استخدام حزمة توزيعة من libguestfs (على سبيل المثال، from
Fedora وDebian وما إلى ذلك) ثم قم بتقديم خطأ ضد التوزيعة. وهذا ليس خطأ الذي
يجب على المستخدمين العاديين معرفة ما إذا كانت حزمة التوزيعة قد تم إعدادها بشكل صحيح.

يحدث هذا الخطأ أثناء مرحلة تمهيد supermin لبدء تشغيل الجهاز:

سوبيرمين: تصاعد الجذر الجديد على / الجذر
سوبرمين: chroot
excl: /init: تم رفض الإذن
المشرف: التصحيح: قائمة الدليل /
[... متبوعًا بالكثير من مخرجات التصحيح...]

هذا خطأ معقد يتعلق بـ سوبرمين(1) الأجهزة. تم بناء الجهاز
عن طريق نسخ ملفات مثل / بن / باش والعديد من المكتبات من المضيف. الملف "hostfiles"
يسرد الملفات التي يجب نسخها من المضيف إلى الجهاز. إذا كانت بعض الملفات
غير موجودة على المضيف، فسيتم تفويتها، ولكن إذا كانت هذه الملفات مطلوبة بالترتيب
إلى (على سبيل المثال) تشغيل / بن / باش ثم سترى الخطأ أعلاه.

يتضمن تشخيص المشكلة دراسة المكتبات التي يحتاجها / بن / باش، أي:

LDD / بن / باش

بمقارنة ذلك بـ "hostfiles"، بالملفات المتوفرة فعليًا في نظام الملفات المضيف،
ومع إخراج التصحيح المطبوع في رسالة الخطأ. بمجرد الانتهاء من تحديد الملف
مفقود، قم بتثبيت هذا الملف باستخدام مدير الحزم وحاول مرة أخرى.

يجب عليك أيضًا التحقق من أن الملفات مثل /فيه و / بن / باش (في الجهاز) هي
تنفيذ. يُظهر إخراج التصحيح أوضاع الملف.

جارى التحميل، التثبيت، تجميع ليبغويستفس


في يمكن I دولار فقط واحصل على خصم XNUMX% على جميع ال آخر ثنائيات For ؟ ...
فيدورا ≥ 11
الاستخدام:

يم تثبيت '*guestf*'

للاطلاع على أحدث الإصدارات، راجع:
http://koji.fedoraproject.org/koji/packageinfo؟packageID=8391

ريد هات إنتيربريس لينوكس
RHEL 5
الإصدار الذي تم شحنه في RHEL 5 الرسمي قديم جدًا ويجب عدم استخدامه إلا
بالتزامن مع Virt-v2v. استخدم الحزمة libguestfs 1.20 المحدثة في EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
إنه جزء من التثبيت الافتراضي. في RHEL 6 و 7 (فقط) يجب عليك التثبيت
"libguestfs-winsupport" للحصول على دعم ضيف Windows.

دبيان وأوبونتو
بالنسبة إلى libguestfs < 1.26، بعد تثبيت libguestfs عليك القيام بما يلي:

sudo update-guestfs-appliance

(تمت إزالة هذا البرنامج النصي على Debian/Ubuntu باستخدام libguestfs ≥ 1.26 وبدلاً من ذلك
تم تصميم الجهاز حسب الطلب.)

على أوبونتو فقط:

سودو شمود 0644 /التمهيد/vmlinuz*

قد تحتاج إلى إضافة نفسك إلى مجموعة "kvm":

Sudo usermod -a -G kvm yourlogin

ديبيان سكويز (6)
قام Hilko Bengen ببناء libguestfs في منافذ خلفية مضغوطة:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports

دبيان ويزي والإصدارات الأحدث (7+)
يدعم Hilko Bengen libguestfs على دبيان. حزم دبيان الرسمية هي
المتاحة: http://packages.debian.org/search؟ الكلمات الرئيسية = libguestfs

أوبونتو
ليس لدينا مشرف Ubuntu بدوام كامل، والحزم التي يوفرها
أحيانًا ما يتم كسر ملفات Canonical (التي تكون خارجة عن سيطرتنا).

قررت Canonical تغيير الأذونات على النواة بحيث لا تكون كذلك
قابلة للقراءة إلا عن طريق الجذر. وهذا غبي تمامًا، لكنهم لن يغيروه
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). لذلك كل مستخدم
يجب أن تفعل هذا:

سودو شمود 0644 /التمهيد/vmlinuz*

أوبونتو 12.04
يعمل libguestfs في هذا الإصدار من Ubuntu، لكنك تحتاج إلى تحديث febootstrap
وseabios إلى أحدث الإصدارات.

أنت بحاجة إلى febootstrap ≥ 3.14-2 من:
http://packages.ubuntu.com/precise/febootstrap

بعد تثبيت febootstrap أو تحديثه، قم بإعادة بناء الجهاز:

sudo update-guestfs-appliance

أنت بحاجة إلى seabios ≥ 0.6.2-0ubuntu2.1 أو ≥ 0.6.2-0ubuntu3 من:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

كما عليك القيام به (انظر أعلاه):

سودو شمود 0644 /التمهيد/vmlinuz*

جنتو
تمت إضافة Libguestfs إلى Gentoo في 2012-07 بواسطة Andreis Vinogradovs (libguestfs) و
مكسيم كولتسوف (أساسا خلية النحل). يفعل:

تظهر libguestfs

سوزي
تمت إضافة Libguestfs إلى SuSE في عام 2012 بواسطة Olaf Hering.

آرش لينكس
تمت إضافة Libguestfs إلى AUR في عام 2010.

توزيعة لينكس أخرى
ترجمة من المصدر (القسم التالي).

توزيعات أخرى غير Linux
سيتعين عليك التجميع من المصدر ونقله.

كيفية يمكن I جمع و تثبيت libguestfs تبدأ من مصدر؟
يمكنك تجميع libguestfs من git أو مصدر tarball. اقرأ ملف README من قبل
بدء.

بوابة: https://github.com/libguestfs/libguestfs مصدر كرات القطران:
http://libguestfs.org/download

لا تقم بتشغيل "إجراء التثبيت"! استخدم ال "./ يركض"البرنامج النصي بدلاً من ذلك (انظر التمهيدي).

كيفية يمكن I جمع و تثبيت libguestfs if my توزيعة لا لديك جديد كاف
كيمو/سوبرمين/النواة؟
يحتاج Libguestfs إلى supermin 5. إذا لم يتم نقل supermin 5 إلى التوزيعة الخاصة بك، فراجع
السؤال أدناه.

قم أولاً بتجميع qemu و/أو supermin و/أو النواة من المصدر. أنت تفعل ليس تحتاج إلى إجراء
تثبيت" لهم.

في الدليل المصدر libguestfs، قم بإنشاء ملفين. يجب أن يحتوي "التكوين المحلي" على:

المصدر المحلي
#export PATH=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --prefix / البيرة "$ @"

جعل "التكوين المحلي" قابلاً للتنفيذ.

يجب أن يحتوي "localenv" على:

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

قم بإلغاء التعليق وضبط هذه السطور كما هو مطلوب لاستخدام البرامج البديلة المتوفرة لديك
تجميع وانتاج.

استخدم "./localconfigure" بدلاً من "./configure"، ولكن بخلاف ذلك يمكنك تجميع libguestfs كـ
معتاد.

لا تقم بتشغيل "إجراء التثبيت"! استخدم ال "./ يركض"البرنامج النصي بدلاً من ذلك (انظر التمهيدي).

كيفية يمكن I جمع و تثبيت libguestfs بدون سوبرمين؟
إذا كان Supermin 5 يدعم التوزيعة الخاصة بك، ولكن لا يوجد لديك Supermin جديد بما فيه الكفاية
تثبيت، ثم راجع السؤال السابق.

إذا كان Supermin 5 لا يدعم التوزيعة الخاصة بك على الإطلاق، فسوف تحتاج إلى استخدام الملف "fixed
طريقة الأجهزة" حيث تستخدم جهازًا ثنائيًا تم تجميعه مسبقًا. لإنشاء libguestfs
بدون supermin، تحتاج إلى تمرير "-disable-appliance --disable-daemon" إلى أي منهما
./autogen.sh or . / تكوين (اعتمادًا على ما إذا كنت تقوم بالإنشاء على التوالي من git أو
من القطران). ثم، عند استخدام libguestfs، يمكنك يجب قم بتعيين "LIBGUESTFS_PATH"
متغير البيئة إلى دليل الجهاز المترجم مسبقًا، كما هو موضح أيضًا في
"الأجهزة الثابتة" في Guestfs(3).

بالنسبة للأجهزة المترجمة مسبقًا، انظر أيضًا: http://libguestfs.org/download/binaries/appliance/.

نرحب بالتصحيحات التي ستنقل المشرف إلى المزيد من توزيعات Linux.

كيفية يمكن I تضيف الدعم For sVirt؟
ملاحظات For فيدورا/رهيل المستخدمين: هذا التكوين هو الإعداد الافتراضي بدءًا من Fedora 18 و
RHEL 7. إذا وجدت أي مشاكل، يرجى إعلامنا بذلك أو الإبلاغ عن خطأ.

توفر SVirt جهازًا مقوى باستخدام SELinux، مما يجعل الأمر صعبًا للغاية بالنسبة للقرص المارق
صورة "للهروب" من حبس libguestfs وإلحاق الضرر بالمضيف (من العدل أن نقول
أنه حتى في libguestfs القياسية، سيكون هذا أمرًا صعبًا، لكن sVirt يوفر طبقة إضافية من
حماية للمضيف والأهم من ذلك حماية الأجهزة الافتراضية الموجودة على نفس المضيف
من بعضهما البعض).

حاليًا لتمكين sVirt، ستحتاج إلى libvirt ≥ 0.10.2 (يفضل 1.0 أو إصدار أحدث)،
libguestfs ≥ 1.20، وسياسات SELinux من Fedora الحديثة. إذا كنت لا تعمل
Fedora 18+، ستحتاج إلى إجراء تغييرات على سياسة SELinux الخاصة بك - اتصل بنا على
القائمة البريدية.

بمجرد حصولك على المتطلبات، قم بما يلي:

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

اضبط SELinux على وضع الفرض، ويجب استخدام sVirt تلقائيًا.

يجب أن تعمل جميع ميزات libguestfs أو جميعها تقريبًا ضمن sVirt. هناك واحد معروف
عيب: فضيلة الإنقاذ(1) لن يستخدم libvirt (وبالتالي sVirt)، لكنه يعود إلى Direct
إطلاق كيمو. لذلك، لن تحصل حاليًا على ميزة حماية sVirt عند الاستخدام
الإنقاذ الفاضل.

يمكنك التحقق من استخدام sVirt عن طريق تمكين تسجيل libvirtd (انظر
/etc/libvirt/libvirtd.log)، وإيقاف libvirtd وإعادة تشغيله، والتحقق من ملفات السجل
لرسائل "ضبط سياق SELinux على ...".

من الناحية النظرية، يجب أن يدعم sVirt AppArmor، لكننا لم نقم بتجربته. سوف تقريبا
تتطلب بالتأكيد تصحيح libvirt وكتابة سياسة AppArmor.

Libguestfs لديها a في الحقيقة التداول الطويل قائمة of التبعيات!
لا تعتمد المكتبة الأساسية كثيرًا، ولكن هناك ثلاثة أسباب للقائمة الطويلة
من التبعيات الأخرى:

1. يجب أن يكون Libguestfs قادرًا على قراءة وتحرير العديد من تنسيقات الأقراص المختلفة. على سبيل المثال،
يتطلب دعم XFS أدوات XFS.

2. هناك روابط لغوية للعديد من اللغات المختلفة، وكلها تتطلب لغاتها الخاصة
ادوات التطوير. جميع روابط اللغة (ما عدا لغة C) اختيارية.

3. هناك بعض ميزات المكتبة الاختيارية التي يمكن تعطيلها.

نظرًا لأن libguestfs ≥ 1.26 فمن الممكن تقسيم تبعيات الجهاز (العنصر 1 في
القائمة أعلاه) وبالتالي يكون (على سبيل المثال) "libguestfs-xfs" كحزمة فرعية منفصلة لـ
معالجة صور قرص XFS. نحن نشجع شركات التعبئة النهائية على البدء في تقسيم القاعدة
حزمة libguestfs إلى حزم فرعية أصغر.

أخطاء أثناء إطلاق on فيدورا 18 RHEL 7
في Fedora ≥ 18 وRHEL ≥ 7، يستخدم libguestfs libvirt لإدارة الجهاز. سابقًا
(والمنبع) يقوم libguestfs بتشغيل qemu مباشرة:

┌─────────────────────────────┐
│ libguestfs │
├──────────────┬──────────────┤
│ الواجهة الخلفية المباشرة │ الواجهة الخلفية libvirt │
└──────────────┴──────────────┘
↓ ↓
┌───────┐ ┌──────────┐
│ كيمو │ │ libvirtd │
└───────┘ └──────────┘

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

المنبع فيدورا 18+
غير فيدورا RHEL 7+
غير RHEL

تعد الواجهة الخلفية لـ libvirt أكثر تعقيدًا، حيث تدعم SELinux/sVirt (انظر أعلاه).
التوصيل السريع والمزيد. ومع ذلك، فهي أكثر تعقيدًا وأقل قوة.

إذا كانت لديك مشاكل في الأذونات باستخدام الواجهة الخلفية libvirt، فيمكنك التبديل إلى الواجهة المباشرة
الواجهة الخلفية عن طريق تعيين متغير البيئة هذا:

تصدير LIBGUESTFS_BACKEND = مباشر

قبل تشغيل أي برنامج libguestfs أو أداة Virt.

كيفية يمكن I تحول إلى a ثابت / قبل البناء جهاز؟
قد يؤدي هذا إلى تحسين استقرار وأداء libguestfs على Fedora وRHEL.

في أي وقت بعد تثبيت libguestfs، قم بتشغيل الأوامر التالية كجذر:

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

الآن قم بتعيين متغير البيئة التالي قبل استخدام libguestfs أو أي أداة فعالة:

تصدير LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance

بالطبع يمكنك تغيير المسار إلى أي دليل تريده. يمكنك مشاركة الجهاز
عبر الأجهزة التي لها نفس البنية (على سبيل المثال، الكل x86-64)، لكن لاحظ أن libvirt
سيمنعك من مشاركة الجهاز عبر NFS بسبب مشاكل في الأذونات (لذلك
إما التبديل إلى الواجهة الخلفية المباشرة أو عدم استخدام NFS).

كيفية يمكن I سرعة up libguestfs يبني؟
إلى حد بعيد أهم شيء يمكنك القيام به هو تثبيت Squid وتكوينه بشكل صحيح.
لاحظ أن التكوين الافتراضي الذي يأتي مع Squid هراء، لذا فإن تكوينه هراء
ليس اختياري.

يوجد مكان جيد جدًا للبدء بتكوين Squid هنا:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

تأكد من تشغيل Squid، وأن متغيرات البيئة $http_proxy و$ftp_proxy
يشيرون إليه.

مع تشغيل Squid وتكوينه بشكل صحيح، يجب تقليل إصدارات الأجهزة إلى عدد قليل
دقائق.

كيفية يمكن I سرعة up libguestfs يبني (ديبيان)؟

يقترح Hilko Bengen استخدام "approx" وهو وكيل أرشيف دبيان
(http://packages.debian.org/approx). تم توثيق هذه الأداة على دبيان في ملف تقريبا(8)
صفحة دليل.

سرعة، DISK SPACE USED BY ليبغويستفس


ملحوظة: تم نقل معظم المعلومات في هذا القسم: Guestfs- الأداء(1).

تحميل or اكتب بدا جدا بطيء.
إذا لم يتم تخصيص القرص الأساسي بالكامل (على سبيل المثال، متفرق خام أو qcow2)، فيمكن إجراء عمليات الكتابة
بطيء لأن نظام التشغيل المضيف يجب أن يقوم بعمليات تخصيص مكلفة للقرص أثناء قيامك بذلك
كتابة. الحل هو استخدام تنسيق مخصص بالكامل بدلاً من ذلك، أي. خام غير متفرق، أو
qcow2 مع خيار "التخصيص المسبق = بيانات التعريف".

Libguestfs يستخدم جدا كثيرا أسطوانة الفراغ!
يقوم libguestfs بتخزين جهاز كبير في:

/var/tmp/.guestfs-

إذا تم تعريف متغير البيئة "TMPDIR"، إذن $TMPDIR/.guestfs- ويستخدم
بدلا من ذلك.

من الآمن حذف هذا الدليل عندما لا تستخدم libguestfs.

فضيلة متناثرة يبدو إلى جعل ال صورة باقة النمو إلى ال بالإضافة إلى المقاسات of ال واقعي أسطوانة
إذا كان الإدخال ل فضيلة متناثرة(1) خامًا، فيكون الناتج خامًا متفرقًا. تأكد
أنت تقيس المخرجات باستخدام أداة تتفهم التناثر مثل "du -sh".
ويمكن أن تحدث فرقا كبيرا:

ls -lh test1.img
-rw-rw-r--. 1 rjones rjones 100M 8 أغسطس 08:08 test1.img
$ du -sh test1.img
3.6M اختبار 1.img

(قارن الحجم الظاهر 100M مقابل الحجم الفعلي 3.6M)

إذا كان كل هذا يربكك، فاستخدم تنسيق إخراج غير متفرق عن طريق تحديد ملف --يتحول
خيار، على سبيل المثال:

virt-sparsify --تحويل qcow2 disk.raw disk.qcow2

لماذا لا Virt-resize العمل on ال أسطوانة صورة في المكان؟
يعد تغيير حجم صورة القرص أمرًا صعبًا للغاية - خاصة التأكد من عدم فقدان البيانات أو
كسر محمل الإقلاع. تعمل الطريقة الحالية بشكل فعال على إنشاء صورة ونسخ جديدة للقرص
البيانات بالإضافة إلى محمل الإقلاع من القديم. إذا حدث خطأ ما، يمكنك دائمًا الذهاب
العودة إلى الأصل.

إذا أردنا أن نجعل عملية تغيير الحجم فعالة في مكانها، فيجب أن تكون هناك قيود: for
على سبيل المثال، لن يُسمح لك بنقل الأقسام الموجودة (لأن نقل البيانات عبر
من المرجح أن يتلف القرص نفسه البيانات في حالة انقطاع التيار الكهربائي أو تعطله).
وسيكون من الصعب جدًا دعم LVM (بسبب التعيين العشوائي تقريبًا
بين محتوى LV وكتل القرص الأساسية).

هناك طريقة أخرى درسناها وهي وضع لقطة فوق صورة القرص الأصلية
أن البيانات الأصلية لم تمس ولم يتم تسجيل سوى الاختلافات في اللقطة.
يمكنك القيام بذلك اليوم باستخدام "qemu-img create" + "virt-resize"، لكن qemu ليس كذلك حاليًا
ذكي بما يكفي للتعرف على وقت إعادة كتابة نفس الكتلة إلى اللقطة كما هو الحال بالفعل
موجود في القرص الخلفي، لذلك ستجد أن هذا لا يوفر لك أي مساحة أو وقت.

باختصار، هذه مشكلة صعبة، وما لدينا الآن يعمل في الغالب لذا نحن مترددون
لتغييره.

لماذا لا فضيلة متناثرة العمل on ال أسطوانة صورة في المكان؟
في libguestfs ≥ 1.26، يمكن لـvirt-sparsify الآن العمل على صور القرص الموجودة في مكانها. يستخدم:

Virt-sparsify - القرص الموضعي

ولكن يجب عليك أولاً قراءة "IN-PLACE SPARSIFICATION" في فضيلة متناثرة(1).

مشاكل افتتاح DISK الصور


عن بعد libvirt زوار لا تستطيع be افتتح.
فتح ضيوف libvirt عن بعد غير مدعوم في الوقت الحالي. على سبيل المثال هذا لن ينجح:

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

لفتح الأقراص البعيدة، يجب عليك تصديرها بطريقة ما، ثم الاتصال بالتصدير. ل
مثال إذا قررت استخدام بنك دبي الوطني:

Remote$ qemu-nbd -t -p 10809 Guest.img
local$ Guestfish -a nbd://remote:10809 -i

تشمل الاحتمالات الأخرى ssh (إذا كان qemu حديثًا بدرجة كافية)، أو NFS أو iSCSI. انظر "عن بعد
التخزين "في Guestfs(3).

كيفية يمكن I جاكيت غريب أسطوانة مصدر؟
لديك صورة قرص موجودة داخل نظام آخر ويتطلب الوصول إليها عبر مكتبة /
HTTP / REST / واجهة برمجة التطبيقات الخاصة، أو يتم ضغطها أو أرشفتها بطريقة ما. (مثال واحد
سيكون الوصول عن بعد إلى الصور الخاطفة لـ OpenStack دون تنزيلها فعليًا.)

لدينا مشروع شقيق يسمى nbdkit (https://github.com/libguestfs/nbdkit). هذا
يتيح لك المشروع تحويل أي مصدر قرص إلى خادم NBD. يمكن لـ Libguestfs الوصول إلى NBD
الخوادم مباشرة، على سبيل المثال:

Guestfish -a nbd://remote

nbdkit مرخص بشكل حر، لذا يمكنك ربطه أو تضمينه في المكتبات الخاصة
والرمز. كما أن لديها واجهة برمجة تطبيقات بسيطة ومستقرة للمكونات الإضافية حتى تتمكن من كتابة المكونات الإضافية بسهولة
واجهة برمجة التطبيقات (API) التي ستستمر في العمل في المستقبل.

خطأ افتتاح VMDK الأقراص: "الاستخدامات a vmdk ميزة التي is ليس أيد by كيمو النسخة:
VMDK الإصدار 3"
Qemu (وبالتالي libguestfs) يدعم فقط بعض صور قرص VMDK. والبعض الآخر لن يعمل،
إعطاء هذا أو أخطاء مماثلة.

من الناحية المثالية، سيقوم شخص ما بإصلاح qemu لدعم أحدث ميزات VMDK، ولكن في هذه الأثناء
لديك ثلاثة خيارات:

1. إذا تمت استضافة الضيف على خادم ESX مباشر ويمكن الوصول إليه، فحدد موقع الملف وقم بتنزيله
صورة القرص تسمى somename-flat.vmdk. على الرغم من الاسم، فهذه صورة قرص خام، و
يمكن فتحه بأي شيء.

إذا كان لديك إصدار حديث بما فيه الكفاية من qemu و libguestfs، فقد تتمكن من ذلك
الوصول إلى صورة القرص هذه عن بعد باستخدام HTTPS أو ssh. راجع "التخزين البعيد" في
Guestfs(3).

2. استخدم أداة vdiskmanager الخاصة بشركة VMware لتحويل الصورة إلى تنسيق أولي.

3. استخدم nbdkit مع المكوّن الإضافي VDDK للتصدير المباشر لصورة القرص باعتبارها NBD
مصدر. من المفترض أن يسمح لك هذا بقراءة وكتابة ملف VMDK.

UFS أقراص (مثل مستعمل by بي إس دي) لا تستطيع be افتتح.
يحتوي تنسيق نظام ملفات UFS على العديد من المتغيرات، وهي لا تحدد نفسها بنفسها. ال
يجب إخبار نواة Linux بنوع UFS الذي يجب أن تستخدمه، ولا يمكن لـ libguestfs معرفة ذلك
أعرف.

يجب عليك تمرير خيار التثبيت "ufstype" الصحيح عند تركيب أنظمة الملفات هذه.

راجع https://www.kernel.org/doc/Documentation/filesystems/ufs.txt

Windows الحكام
Windows ReFS هو نسخة ZFS/Btrfs من Microsoft. نظام الملفات هذا لم يتم عكسه بعد
تم تصميمه وتنفيذه في Linux kernel، وبالتالي لا يدعم libguestfs
هو - هي. في الوقت الحالي يبدو أنه نادر جدًا "في البرية".

غير ASCII الأحرف لا تظهر on ففات أنظمة الملفات.
الأعراض النموذجية لهذه المشكلة:

· تحصل على خطأ عندما تقوم بإنشاء ملف حيث يحتوي اسم الملف على غير ASCII
الأحرف، وخاصة الأحرف غير 8 بت من اللغات الآسيوية (الصينية واليابانية
إلخ). نظام الملفات هو VFAT.

· عندما تقوم بإدراج دليل من نظام ملفات VFAT، تظهر أسماء الملفات كعلامات استفهام.

وهذا عيب في تصميم نظام جنو/لينكس.

يقوم VFAT بتخزين أسماء الملفات الطويلة كأحرف UTF-16. عند فتح أو إرجاع أسماء الملفات، سيتم حذف
يجب على Linux kernel ترجمة هذه إلى شكل من أشكال سلسلة 8 بت. UTF-8 سيكون
خيار واضح، باستثناء مستخدمي Linux الذين يصرون على استخدام لغات غير UTF-8 (ملف المستخدم
الإعدادات المحلية غير معروفة للنواة لأنها وظيفة libc).

لذلك عليك أن تخبر النواة بالترجمة التي تريد القيام بها عند تحميل الملف
نظام الملفات. الطريقتان هما المعلمة "iocharset" (التي لا تتعلق بـ
libguestfs) والعلم "utf8".

لذا، لاستخدام نظام ملفات VFAT، يجب عليك إضافة علامة "utf8" عند التثبيت. من سمكة الضيف،
استعمال:

> خيارات التحميل utf8 /dev/sda1 /

أو في سطر أوامر Guestfish:

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

أو من واجهة برمجة التطبيقات:

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

ستقوم النواة بعد ذلك بترجمة أسماء الملفات من وإلى سلاسل UTF-8.

لقد فكرنا في إضافة خيار التثبيت هذا بشفافية، ولكن للأسف هناك العديد منه
مشاكل في القيام بذلك:

· في بعض أنظمة Linux، لا يعمل خيار التحميل "utf8". نحن لا بالضبط
فهم ما هي الأنظمة أو لماذا، ولكن تم الإبلاغ عن ذلك بشكل موثوق من قبل مستخدم واحد.

· سيمنعك من استخدام المعلمة "iocharset" لأنها غير متوافقة
مع "utf8". ربما لا يكون استخدام هذه المعلمة فكرة جيدة، لكننا لا نريد ذلك
لمنعها.

غير ASCII الأحرف تظهر as أكد (_) on ISO9660 أنظمة الملفات.
لم يتم إعداد نظام الملفات بشكل صحيح باستخدام mkisofs أو genisoimage. تأكد من أن
تم إنشاء نظام الملفات باستخدام امتدادات Joliet و/أو Rock Ridge. libguestfs لا يفعل ذلك
تتطلب أي خيارات تحميل خاصة للتعامل مع نظام الملفات.

لا يمكن جاكيت Windows زوار التي تستخدم NTFS.
ترى أخطاء مثل:

التثبيت: نوع نظام ملفات غير معروف "ntfs"

على Red Hat Enterprise Linux أو CentOS، يجب عليك تثبيت libguestfs-winsupport
الحزمة.

لا يمكن جاكيت or فحص RHEL 7 الضيوف.
لا يمكن جاكيت لينكس زوار التي تستخدم XFS.
يمكن فتح ضيوف RHEL 7 وأي ضيوف آخرين يستخدمون XFS بواسطة libguestfs، لكنك
يجب عليك تثبيت الحزمة "libguestfs-xfs".

باستخدام ليبغويستفس IN بتحديث يمتلك برامج


API لديها المئات of أساليب، أين do I بداية؟
ننصحك بالبدء بقراءة النظرة العامة على واجهة برمجة التطبيقات: "نظرة عامة على واجهة برمجة التطبيقات" في Guestfs(3).

على الرغم من أن نظرة عامة على واجهة برمجة التطبيقات (API) تغطي واجهة برمجة تطبيقات C (API)، إلا أنها لا تزال تستحق القراءة حتى لو كنت كذلك
سأستخدم لغة برمجة أخرى، لأن واجهة برمجة التطبيقات هي نفسها، فقط مع البساطة
التغييرات المنطقية على أسماء المكالمات:

C Guestfs_ln_sf (ز، الهدف، اسم الرابط)؛
بايثون g.ln_sf (الهدف، اسم الرابط)؛
OCaml g#ln_sf اسم الرابط المستهدف؛
بيرل $g->ln_sf (الهدف، اسم الرابط)؛
اسم الرابط المستهدف لـ Shell (guestfish) ln-sf
PHP Guestfs_ln_sf ($g، $target، $linkname)؛

بمجرد أن تتعرف على نظرة عامة على واجهة برمجة التطبيقات (API)، يجب أن تنظر إلى قائمة البداية هذه
نقاط لربط اللغات الأخرى: "استخدام LIBGUESTFS مع لغات البرمجة الأخرى" في
Guestfs(3).

يستطيع I تستخدم libguestfs in my الملكية / صندوق توظيف برأس مال محدود مصدر / تجاري البرنامج؟
بشكل عام، نعم. ومع ذلك، فهذه ليست نصيحة قانونية - اقرأ الترخيص المرفق
libguestfs، وإذا كانت لديك أسئلة محددة اتصل بمحامي.

في شجرة المصدر الترخيص موجود في الملف "COPYING.LIB" (LGPLv2+ للمكتبة و
الارتباطات) و"النسخ" (GPLv2+ للبرامج المستقلة).

تفكيك ليبغويستفس


مساعدة، انها ليس عمل!
إذا بدا أن أي برنامج libguestfs لا يعمل على الإطلاق، فقم بتشغيل البرنامج أدناه والصق ملف
اكتمال، غير محرر الإخراج إلى رسالة بريد إلكتروني إلى "libguestfs" @ "redhat.com":

أداة اختبار libguestfs

في حالة فشل عملية معينة، قم بتقديم جميع المعلومات الموجودة في قائمة التحقق هذه في رسالة بريد إلكتروني
إلى "libguestfs" @ "redhat.com":

1. ماذا تحاول أن تفعل؟

2. ما هو الأمر (الأوامر) الذي قمت بتشغيله بالضبط؟

3. ما هو الخطأ الدقيق أو نتيجة هذه الأوامر؟

4. قم بتمكين تصحيح الأخطاء، وقم بتشغيل الأوامر مرة أخرى، ثم التقط الملف إكمال الناتج. Do ليس
تحرير ال الناتج.

تصدير LIBGUESTFS_DEBUG=1
تصدير LIBGUESTFS_TRACE=1

5. قم بتضمين إصدار libguestfs وإصدار نظام التشغيل وكيفية تثبيته
libguestfs (على سبيل المثال، من المصدر، "yum install"، وما إلى ذلك)

كيفية do I تصحيح متى استخدام أي وقت libguestfs برنامج or أداة (على سبيل المثال. الفضيلة v2v or فيرت-دف)؟
هناك نوعان من متغيرات البيئة "LIBGUESTFS_*" يمكنك تعيينهما للحصول على المزيد
المعلومات من libguestfs.

"LIBGUESTFS_TRACE"
اضبط هذا على 1 وسيقوم libguestfs بطباعة كل استدعاء أمر/واجهة برمجة التطبيقات (API) بتنسيق
يشبه أوامر Guestfish.

"LIBGUESTFS_DEBUG"
اضبط هذا على 1 لتمكين كميات هائلة من رسائل تصحيح الأخطاء. إذا كنت تعتقد
هناك بعض المشاكل داخل جهاز libguestfs، فيجب عليك استخدام هذا
الخيار.

لتعيين هذه العناصر من الصدفة، قم بذلك قبل تشغيل البرنامج:

تصدير LIBGUESTFS_TRACE=1
تصدير LIBGUESTFS_DEBUG=1

بالنسبة لـ csh/tcsh، ستكون الأوامر المكافئة هي:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

لمزيد من المعلومات، راجع: "متغيرات البيئة" في Guestfs(3).

كيفية do I تصحيح متى استخدام سمكة الضيف؟
يمكنك استخدام نفس متغيرات البيئة المذكورة أعلاه. بدلاً من ذلك، استخدم خيارات Guestfish
-x (لتتبع الأوامر) أو -v (للحصول على مخرجات التصحيح الكاملة)، أو كليهما.

لمزيد من المعلومات، انظر: Guestfish(1).

كيفية do I تصحيح متى استخدام ال API؟
اتصل بـ "guestfs_set_trace" في Guestfs(3) لتمكين تتبع الأوامر و/أو
"guestfs_set_verbose" في Guestfs(3) لتمكين رسائل التصحيح.

للحصول على أفضل النتائج، قم باستدعاء هذه الوظائف في أقرب وقت ممكن، مباشرة بعد إنشاء الملف
يتعامل Guestfs إذا أمكن، وبالتأكيد قبل الاتصال بـ Launch.

كيفية do I أسر تصحيح الناتج و وضع it إلى my تسجيل النظام؟
استخدم واجهة برمجة تطبيقات الحدث. للحصول على أمثلة، راجع: "إعداد عمليات الاسترجاعات للتعامل مع الأحداث" في Guestfs(3)
و الأمثلة/debug-logging.c البرنامج في مصادر libguestfs.

حفر أعمق إلى ال جهاز حذاء .
قم بتمكين تصحيح الأخطاء ثم اقرأ هذه الوثائق حول عملية تمهيد الجهاز:
Guestfs-internals(1).

libguestfs توقف or فشل أثناء تشغيل/إطلاق.
تمكين التصحيح وإلقاء نظرة على الإخراج الكامل. إذا لم تتمكن من فهم ما يحدث،
تقديم تقرير بالأخطاء، بما في ذلك إكمال مخرج ل أداة اختبار libguestfs(1).

التصحيح libvirt
إذا كنت تستخدم الواجهة الخلفية libvirt، وفشل libvirt، فيمكنك تمكينه
التصحيح عن طريق التحرير /etc/libvirt/libvirtd.conf.

إذا كنت تعمل بصلاحية غير الجذر، فيجب عليك تحرير ملف مختلف. يخلق
~/.config/libvirt/libvirtd.conf تحتوي:

log_level=1
log_outputs = "1: الملف:/tmp/libvirtd.log"

اقتل أي جلسة libvirtd (غير جذرية) قيد التشغيل، وفي المرة التالية التي تقوم فيها بتشغيل libguestfs
الأمر، يجب أن ترى كمية كبيرة من معلومات التصحيح المفيدة من libvirtd
/tmp/libvirtd.log

التصميم/الداخلية OF ليبغويستفس


انظر أيضا Guestfs-internals(1).

لماذا لا لصحتك! do كل شىء من خلال ال FUSE / نظام الملفات واجهه المستخدم؟
نحن نقدم أمر يسمى Guestmount(1) والذي يتيح لك تحميل أنظمة ملفات الضيف على ملف
يستضيف. يتم تنفيذ هذا كوحدة FUSE. لماذا لا نقوم فقط بتنفيذ كامل
libguestfs باستخدام هذه الآلية، بدلاً من الحصول على واجهة برمجة التطبيقات الكبيرة والمعقدة إلى حد ما؟

الأسباب ذات شقين. أولاً، يقدم libguestfs مكالمات API للقيام بأشياء مثل
إنشاء وحذف الأقسام ووحدات التخزين المنطقية، التي لا تتناسب مع نظام الملفات
النموذج بسهولة شديدة. أو بالأحرى، يمكنك ملاءمتها: على سبيل المثال، إنشاء قسم
يمكن تعيينه إلى "mkdir /fs/hda1" ولكن بعد ذلك سيتعين عليك تحديد طريقة ما للاختيار
حجم القسم (ربما "echo 100M > /fs/hda1/.size")، ونوع القسم،
قطاعات البداية والنهاية وما إلى ذلك، ولكن بمجرد الانتهاء من ذلك، تبدأ واجهة برمجة التطبيقات المستندة إلى نظام الملفات في العمل
تبدو أكثر تعقيدًا من واجهة برمجة التطبيقات القائمة على الاتصال الموجودة لدينا حاليًا.

السبب الثاني هو الكفاءة. يعتبر FUSE بحد ذاته فعالاً بشكل معقول، لكنه كذلك
قم بإجراء الكثير من المكالمات الصغيرة والمستقلة في وحدة FUSE. في Guestmount هذه يجب أن
يمكن ترجمتها إلى رسائل إلى جهاز libguestfs الذي يحتوي على حمل كبير (في الوقت المناسب
ورحلات ذهابا وإيابا). على سبيل المثال، قراءة ملف في أجزاء بحجم 64 كيلو بايت غير فعالة لأن كل منها
ستتحول القطعة إلى رحلة واحدة ذهابًا وإيابًا. في libguestfs API هناك أكثر من ذلك بكثير
فعال في تنزيل ملف أو دليل كامل من خلال إحدى مكالمات البث مثل
"guestfs_download" أو "guestfs_tar_out".

لماذا لا لصحتك! do كل شىء من خلال GVFS؟
المشاكل مشابهة لمشاكل FUSE.

يعد GVFS تجريدًا أفضل من POSIX/FUSE. هناك واجهة FTP خلفية لـ GVFS، وهي
مشجع لأن FTP يشبه من الناحية المفاهيمية واجهة برمجة تطبيقات libguestfs. لكن GVFS
تقوم الواجهة الخلفية لـ FTP بإجراء اتصالات متزامنة متعددة من أجل الحفاظ على التفاعل
لا يمكننا التعامل بسهولة مع libguestfs.

لماذا يمكن I اكتب إلى ال القرص، حتى رغم أن I وأضاف it يقرأ فقط؟
لماذا هل "--رو" تظهر إلى لديك لا تأثير؟
عند إضافة قرص للقراءة فقط، يضع libguestfs تراكبًا قابلاً للكتابة أعلى القرص
القرص الأساسي. تدخل عمليات الكتابة في هذا التراكب، ويتم التخلص منها عند إغلاق المقبض
(أو مخارج "السمكة الضيف" وما إلى ذلك).

هناك سببان للقيام بذلك بهذه الطريقة: أولاً، لا يمكن استخدام الأقراص المخصصة للقراءة فقط
العديد من الحالات (على سبيل المثال، لا يدعمها IDE ببساطة، لذلك لا يمكن أن يكون لديك ملف IDE مقلدًا
قرص للقراءة فقط، على الرغم من أن هذا ليس شائعًا في عمليات تثبيت libguestfs الحقيقية).

ثانيًا والأهم من ذلك، حتى لو كانت الأقراص المخصصة للقراءة فقط ممكنة، فلن ترغب في ذلك
هم. يؤدي تركيب أي نظام ملفات يحتوي على مجلة، حتى "mount -o ro"، إلى الكتابة إلى
نظام الملفات لأنه يجب إعادة تشغيل المجلة وتحديث البيانات الوصفية. إذا كان القرص
كان حقًا للقراءة فقط، فلن تتمكن من تحميل نظام ملفات قذر.

ولجعله قابلاً للاستخدام، نقوم بإنشاء التراكب كمكان لتخزين هذه الكتابات مؤقتًا، و
ثم نتخلص منه بعد ذلك. وهذا يضمن أن القرص الأساسي لم يمس دائمًا.

لاحظ أيضًا أن هناك اختبار انحدار لهذا عند إنشاء libguestfs (in
"الاختبارات/ كيمو"). وهذا هو أحد الأسباب التي تجعل من المهم أن يقوم القائمون على الحزم بتشغيل مجموعة الاختبار.

لا "--رو" جعل من جميع أقراص يقرأ فقط؟
لا! يؤثر خيار "--ro" فقط على الأقراص المضافة في سطر الأوامر، على سبيل المثال. باستخدام "-أ" و
خيارات "-د".

في Guestfish، إذا كنت تستخدم الأمر "add"، فسيتم إضافة القرص للقراءة والكتابة (ما لم تقم بذلك
حدد العلامة "readonly:true" بشكل صريح مع الأمر).

يستطيع I تستخدم "سمكة الضيف --رو" as a طريق إلى دعم my واقعي الآلات؟
عادة هذا هو ليس فكرة جيدة. تمت الإجابة على السؤال بمزيد من التفصيل في هذه الرسالة
نشر القائمة: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

أنظر أيضاً السؤال التالي.

لماذا لا يمكن I يجري fsck on a حي نظام الملفات استخدام "سمكة الضيف --رو"؟
هذا الأمر سوف عادة ليس عمل:

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

والسبب في ذلك هو أن qemu ينشئ لقطة على نظام الملفات الأصلي، ولكنه
لا ينشئ لقطة صارمة في الوقت المناسب. كتل من البيانات على الكامنة
تتم قراءة نظام الملفات بواسطة qemu في أوقات مختلفة مع تقدم عملية fsck، مع المضيف
يكتب بينهما. والنتيجة هي أن fsck ترى فسادًا هائلاً (خياليًا وليس حقيقيًا!)
ويفشل.

ما عليك فعله هو إنشاء لقطة في الوقت المناسب. إذا كان حجمًا منطقيًا، فاستخدمه
لقطة LVM2. إذا كان نظام الملفات موجودًا داخل ملف مثل ملف btrfs/ZFS،
استخدم لقطة btrfs/ZFS، ثم قم بتشغيل fsck على اللقطة. في الممارسة العملية لا تفعل ذلك
تحتاج إلى استخدام libguestfs لهذا - فقط قم بتشغيل /sbin/fsck مباشرة.

يعد إنشاء لقطات لحظية للأجهزة والملفات المضيفة خارج نطاق
libguestfs، على الرغم من أن libguestfs يمكن أن تعمل عليها بمجرد إنشائها.

ما هو ال فرق ما بين Guestfish و الإنقاذ الفاضل؟
يشعر الكثير من الأشخاص بالحيرة من الأداتين المتشابهتين ظاهريًا اللذين نقدمهما:

$ Guestfish --ro -a Guest.img
> يجري
> fsck /dev/sda1

$ عملية الإنقاذ --ro Guest.img
> /sbin/fsck / ديف / sda1

والسؤال ذو الصلة الذي يطرح نفسه بعد ذلك هو لماذا لا يمكنك كتابة أوامر Shell الكاملة
مع جميع --options في Guestfish (ولكن يمكنك ذلك فضيلة الإنقاذ(1)).

Guestfish(1) هو برنامج يوفر الوصول المنظم إلى Guestfs(3) API. يحدث ذلك
لتكون قذيفة تفاعلية لطيفة أيضًا، ولكن غرضها الأساسي هو الوصول المنظم من
مخطوطات شل. فكر في الأمر على أنه رابط لغة، مثل Python والارتباطات الأخرى،
ولكن للقذيفة. عامل التمييز الرئيسي لـ Guestfish (وواجهة برمجة تطبيقات libguestfs في
عام) هي القدرة على أتمتة التغييرات.

فضيلة الإنقاذ(1) هي طريقة مجانية للجميع لتشغيل جهاز libguestfs وتصنيعه
تغييرات تعسفية على جهاز VM الخاص بك. إنها ليست منظمة، ولا يمكنك أتمتتها، ولكن من أجل التصنيع
إصلاحات مخصصة سريعة لضيوفك، يمكن أن تكون مفيدة جدًا.

ولكن، يحتوي libguestfs أيضًا على "باب خلفي" في الجهاز مما يسمح لك بإرسال ملفات عشوائية
أوامر القشرة. إنها ليست مرنة مثل عملية الإنقاذ الفاضلة، لأنك لا تستطيع التفاعل معها
أوامر shell، ولكن هنا على أي حال:

> تصحيح sh "cmd arg1 arg2 ..."

لاحظ أنه يجب عليك ليس الاعتماد على هذا. ويمكن إزالته أو تغييره في المستقبل. إذا كان لديك
يحتاج البرنامج إلى بعض العمليات، يرجى إضافته إلى واجهة برمجة تطبيقات libguestfs بدلاً من ذلك.

ما هو ال صفقة مع "سمكة الضيف -أنا"؟
لماذا هل فضيلة القط فقط العمل on a حقيقي VM صورة، لكن الفضيلة df أعمال on أي وقت أسطوانة صورة؟
ابحث عن هل "لا جذر جهاز وجدت in تعمل نظام صورة" تعني؟
ترتبط جميع هذه الأسئلة على المستوى الأساسي الذي قد لا يكون على الفور
واضح.

في Guestfs(3) على مستوى واجهة برمجة التطبيقات، "صورة القرص" هي مجرد كومة من الأقسام وأنظمة الملفات.

في المقابل، عندما يقوم الجهاز الظاهري بالتمهيد، فإنه يقوم بتثبيت أنظمة الملفات هذه في ملف ثابت
التسلسل الهرمي مثل:

/ (/ديف/sda2)

├── / التمهيد (/ديف/sda1)

├── / الرئيسية (/dev/vg_external/المنازل)

├── / البيرة (/dev/vg_os/lv_usr)

└── / فار (/dev/vg_os/lv_var)

(أو أحرف محركات الأقراص على نظام التشغيل Windows).

ترى واجهة برمجة التطبيقات (API) أولاً صورة القرص على مستوى "كومة أنظمة الملفات". ولكنه أيضا
لديه طريقة لفحص صورة القرص لمعرفة ما إذا كان يحتوي على نظام تشغيل، وكيف يتم ذلك
يتم تثبيت الأقراص عند تشغيل نظام التشغيل: "INSPECTION" في Guestfs(3).

يتوقع المستخدمون بعض الأدوات (مثل فضيلة القط(1)) للعمل مع مسارات VM:

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

كيف يعرف القط الفاضل ذلك / فار هو قسم منفصل؟ الحيلة هي تلك القطة الفاضلة
يقوم بإجراء فحص على صورة القرص، ويستخدم ذلك لترجمة المسار بشكل صحيح.

بعض الأدوات (بما في ذلك فضيلة القط(1) فضيلة تحرير(1) الفضيلة ل(1)) استخدم الفحص لتعيين VM
مسارات. أدوات أخرى مثل الفضيلة df(1) و نظم ملفات Virt-files(1) تعمل بالكامل في
مستوى "الكومة الكبيرة من أنظمة الملفات" الخام لواجهة برمجة تطبيقات libguestfs، ولا تستخدم الفحص.

Guestfish(١) في وسط مثير للاهتمام. إذا كنت تستخدم -a و -m سطر الأوامر
الخيارات، فيجب عليك إخبار Guestfish بالضبط بكيفية إضافة صور القرص ومكان التثبيت
أقسام. هذا هو مستوى API الخام.

إذا كنت تستخدم -i الخيار، يقوم libguestfs بإجراء الفحص وتثبيت أنظمة الملفات لـ
أنت.

يرتبط الخطأ "لم يتم العثور على جهاز جذر في صورة نظام التشغيل هذه" بهذا. هو - هي
يعني أن الفحص لم يتمكن من تحديد موقع نظام التشغيل داخل صورة القرص التي قدمتها
هو - هي. قد ترى هذا من خلال برامج مثل Virt-Cat إذا حاولت تشغيلها على شيء ما
وهي مجرد صورة قرص، وليست صورة قرص جهاز افتراضي.

ابحث عن do هؤلاء "تصحيح الأخطاء*" و "داخلي-*" وظائف فعل؟
هناك بعض الوظائف التي تستخدم لتصحيح الأخطاء والأغراض الداخلية وهي ليس
جزء من واجهة برمجة التطبيقات المستقرة.

وظائف "debug*" (أو "guestfs_debug*")، وبشكل أساسي "guestfs_debug" في Guestfs(3) و
يتم استخدام حفنة من الآخرين لتصحيح أخطاء libguestfs. على الرغم من أنهم ليسوا جزءا من
API مستقرة وبالتالي قد تتغير أو تتم إزالتها في أي وقت، قد ترغب بعض البرامج في الاتصال بها
هذه أثناء انتظار إضافة الميزات إلى libguestfs.

وظائف "internal-*" (أو "guestfs_internal_*") مخصصة للاستخدام بواسطة libguestfs فقط
بحد ذاتها. لا يوجد سبب يدعو البرامج إلى الاتصال بها، ويجب ألا تحاول البرامج استخدامها
هم. غالبًا ما يؤدي استخدامها إلى حدوث أشياء سيئة، فضلاً عن عدم كونها جزءًا من
واجهة برمجة التطبيقات المستقرة الموثقة.

مطورون


في do I إرسال بقع؟
الرجاء إرسال التصحيحات إلى القائمة البريدية لـ libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
سيكون هناك تأخير حتى تتم الموافقة على منشورك يدويًا.

من فضلك قم لا تستخدم جيثب سحب طلبات - هم سوف be تجاهل. الأسباب هي (أ) نريد
لمناقشة وتحليل التصحيحات في القائمة البريدية، و(ب) تصبح طلبات سحب github
عمليات الدمج ولكننا نفضل أن يكون لدينا سجل خطي.

كيفية do I اقترح a ميزة؟
يجب مناقشة الميزات الجديدة الكبيرة التي تنوي المساهمة بها في القائمة البريدية
أولاً (https://www.redhat.com/mailman/listinfo/libguestfs). وهذا يتجنب خيبة الأمل
والعمل الضائع إذا كنا لا نعتقد أن الميزة ستناسب مشروع libguestfs.

إذا كنت تريد اقتراح ميزة مفيدة ولكنك لا ترغب في كتابة التعليمات البرمجية، فيمكنك تقديم طلب
خطأ (راجع "الحصول على المساعدة والإبلاغ عن الأخطاء") مع "RFE: " في بداية الملخص
الخط.

لمحة عن يمكن ارتكاب إلى libguestfs شخص سخيف؟
حوالي 5 أشخاص لديهم حق الوصول إلى جيثب. يجب نشر التصحيحات في القائمة أولاً
وأكيد. تم توضيح سياسة ACKing ودفع التصحيحات هنا:

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

يستطيع I شوكة libguestfs؟
بالتأكيد تستطيع. Git يجعل من السهل تفرع libguestfs. جيثب يجعل الأمر أسهل.
ومن الجميل أن تخبرنا في القائمة البريدية عن الشوكات وأسبابها.

متفرقات أسئلة


يستطيع I مراقب ال حي أسطوانة نشاط of a واقعي آلة استخدام libguestfs؟
الطلب الشائع هو أن تكون قادرًا على استخدام libguestfs لمراقبة نشاط القرص المباشر لملف
الضيف، على سبيل المثال، ليتم إعلامه في كل مرة يقوم فيها الضيف بإنشاء ملف جديد. Libguestfs
هل ليس اعمل بالطريقة التي يتخيلها البعض، كما ترون من هذا الرسم البياني:

┌────────────────────────────────┐
│ برنامج المراقبة باستخدام libguestfs │
└────────────────────────────────┘

┌───────────┐ ┌───────────────────┐
│ جهاز VM مباشر │ │ جهاز libguestfs │
├───────────┤ ├───────────────────┤
│ نواة (1) │ │ نواة الجهاز (2) │
└───────────┘ └───────────────────┘
↓ ↓ (اتصال r/o)
┌────────────────────┐
| صورة القرص |
└────────────────────┘

يعد هذا السيناريو آمنًا (طالما قمت بتعيين علامة "للقراءة فقط" عند إضافة محرك الأقراص).
ومع ذلك، لا يرى نواة جهاز libguestfs (2) جميع التغييرات التي تم إجراؤها على القرص
الصورة لسببين:

أنا. يمكن لنواة VM (1) تخزين البيانات مؤقتًا في الذاكرة، بحيث لا تظهر في صورة القرص.

ثانيا. لا يتوقع نواة جهاز libguestfs (2) أن تتغير صورة القرص
أسفله، لذلك لا يتم تحديث ذاكرة التخزين المؤقت الخاصة به بطريقة سحرية حتى عندما يكون VM kernel (1)
يقوم بتحديث صورة القرص.

الحل الوحيد المدعوم هو إعادة تشغيل جهاز libguestfs بالكامل متى شئت
نريد أن ننظر إلى التغييرات في صورة القرص. على مستوى API الذي يتوافق مع الاتصال
"guestfs_shutdown" متبوعة بـ "guestfs_launch"، وهي عملية ثقيلة الوزن (انظر
أيضا Guestfs- الأداء(3)).

هناك بعض الاختراقات غير المدعومة التي يمكنك تجربتها إذا كانت إعادة تشغيل الجهاز أمرًا ضروريًا أيضًا
مكلفة:

· اتصل بـ "guestfs_drop_caches (g, 3)". يؤدي هذا إلى مساعدة جميع البيانات المخزنة مؤقتًا بواسطة libguestfs
سيتم التخلص من نواة الجهاز (2)، بحيث تعود إلى صورة القرص.

لكن هذا وحده لا يكفي، لأن qemu يقوم أيضًا بتخزين بعض البيانات مؤقتًا. أنت
سيحتاج أيضًا إلى تصحيح libguestfs من أجل (إعادة) تمكين وضع "ذاكرة التخزين المؤقت = غير آمن". يرى:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· استخدم أداة مثل Virt-bmap بدلاً من ذلك.

· تشغيل وكيل داخل الضيف.

لا شيء يساعد إذا كان الضيف يجري تغييرات جوهرية أكثر (على سبيل المثال، حذف أنظمة الملفات).
بالنسبة لهذه الأنواع من الأشياء، يجب عليك إعادة تشغيل الجهاز.

(لاحظ أن هناك مشكلة ثالثة وهي أنك تحتاج إلى استخدام لقطات متسقة لفحصها فعليًا
صور القرص الحية، ولكن هذه مشكلة عامة عند استخدام libguestfs على أي قرص حي
صورة.

استخدم Guestfs-faq عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

أوامر لينكس

Ad