انگلیسیفرانسویاسپانیایی

Ad


فاویکون OnWorks

guestfs-faq - آنلاین در ابر

guestfs-faq را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور guestfs-faq است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


guestfs-faq - libguestfs سوالات متداول (سؤالات متداول)

درباره ما LIBGUESTFS


چی is libguestfs؟
libguestfs راهی برای ایجاد، دسترسی و اصلاح تصاویر دیسک است. می توانید داخل دیسک را نگاه کنید
تصاویر، فایل‌های موجود را اصلاح کنید، آن‌ها را از ابتدا ایجاد کنید، اندازه آن‌ها را تغییر دهید و موارد دیگر
بیشتر. این به ویژه از طریق اسکریپت ها و برنامه ها و از خط فرمان مفید است.

libguestfs یک کتابخانه C (از این رو "lib-") و مجموعه ای از ابزارهای ساخته شده بر روی این کتابخانه است، و
اتصالات برای بسیاری از زبان های برنامه نویسی رایج

برای اطلاعات بیشتر در مورد کارهایی که libguestfs می توانند انجام دهند، مقدمه در صفحه اصلی را بخوانید
(http://libguestfs.org).

چی هستند la فضیلت ابزار؟
ابزار Virt (وب سایت: http://virt-tools.org) مجموعه کاملی از مدیریت مجازی سازی هستند
ابزارهایی که مدیران سیستم را هدف قرار می دهند. برخی از آنها از libguestfs می آیند، برخی از
libvirt و بسیاری دیگر از پروژه های منبع باز دیگر. بنابراین virt tools یک ابر مجموعه است
libguestfs. با این حال libguestfs با بسیاری از ابزارهای مهم همراه است. دیدن
http://libguestfs.org برای فهرست کامل.

میکند libguestfs نیاز { کتابخانه / KVM / قرمز کلاه / کلاه نمدی مردانه }?
نه!

libvirt یک الزام برای libguestfs نیست.

libguestfs با هر تصویر دیسکی کار می کند، از جمله تصاویر ایجاد شده در VMware، KVM، qemu،
VirtualBox، Xen، و بسیاری از هایپروایزرهای دیگر، و آنهایی که شما از ابتدا ایجاد کرده اید.

Red Hat حامی توسعه libguestfs و تعداد زیادی باز دیگر (یعنی هزینه پرداخت می کند).
پروژه های منبع اما شما می توانید libguestfs و ابزار virt را در لینوکس های مختلف اجرا کنید
توزیع‌ها و Mac OS X. ما تمام تلاش خود را می‌کنیم تا از همه توزیع‌های لینوکس به عنوان درجه یک پشتیبانی کنیم
شهروندان برخی از ابزارهای virt به ویندوز منتقل شده اند.

چگونه میکند libguestfs مقايسه كردن به دیگر ابزار؟
در مقابل kpartx
Libguestfs رویکردی متفاوت از kpartx دارد. kpartx نیاز به روت و مانت دارد
سیستم های فایل روی هسته میزبان (که می تواند ناامن باشد - ببینید guestfs-security(1).
Libguestfs هسته میزبان شما را از مهمانان جدا می کند، انعطاف پذیرتر، قابل اسکریپت است،
از LVM پشتیبانی می کند، نیازی به روت ندارد، از فرآیندهای دیگر جدا شده است و پاکسازی می کند
بعد از خودش Libguestfs چیزی بیش از دسترسی به فایل است زیرا می توانید از آن استفاده کنید
ایجاد تصاویر از ابتدا

در مقابل vdfuse
vdfuse مانند kpartx است اما برای تصاویر VirtualBox. مقایسه kpartx در بالا را ببینید.
می‌توانید از libguestfs در فایل‌های پارتیشنی که توسط vdfuse در معرض دید قرار می‌گیرند استفاده کنید، اگرچه اینطور نیست
ضروری است زیرا libguestfs می تواند مستقیماً به تصاویر VirtualBox دسترسی داشته باشد.

در مقابل qemu-nbd
NBD (دستگاه بلوک شبکه) پروتکلی برای صادر کردن دستگاه های بلوک از طریق شبکه است.
qemu-nbd یک سرور NBD است که می تواند هر فرمت دیسکی که توسط qemu پشتیبانی می شود (به عنوان مثال خام،
qcow2). برای دسترسی به بلوک می توانید از libguestfs و qemu-nbd یا nbdkit با هم استفاده کنید
دستگاه های روی شبکه، به عنوان مثال: "guestfish -a nbd://remote"

در مقابل نصب و استقرار سیستمهای پرونده in la میزبان
نصب سیستم فایل مهمان در هاست ناامن است و باید به طور کامل از آن اجتناب شود
برای مهمانان غیر قابل اعتماد از libguestfs برای ایجاد یک لایه محافظت در برابر استفاده کنید
اکسپلویت های سیستم فایل همچنین ببینید میهمان میهمان(1).

در مقابل جدا
Libguestfs از LVM پشتیبانی می کند. Libguestfs از parted استفاده می کند و بیشتر ویژگی های parted را ارائه می دهد
از طریق API libguestfs.

دست آوردن کمک و گزارش نویسی اشکالات


چگونه do I دانستن چی نسخه من هستم استفاده كردن؟
ساده ترین روش این است:

guestfish -- نسخه

توسعه Libguestfs در امتداد یک شاخه ناپایدار اتفاق می افتد و ما به صورت دوره ای یک را ایجاد می کنیم
شاخه پایدار که وصله های پایدار را به آن بکپورت می کنیم. برای کسب اطلاعات بیشتر، «LIBGUESTFS» را بخوانید
VERSION NUMBERS" در مهمانان(3).

چگونه می توان I دریافت کنید کمک؟
چی پستی liste or گپ اتاق هستند در دسترس؟
اگر مشتری Red Hat هستید که از لینوکس Red Hat Enterprise استفاده می کنید، لطفاً تماس بگیرید
پشتیبانی کلاه قرمزی: http://redhat.com/support

یک لیست پستی، عمدتاً برای توسعه وجود دارد، اما کاربران نیز می توانند درخواست کنند
سوالاتی در مورد libguestfs و ابزار virt:
https://www.redhat.com/mailman/listinfo/libguestfs

همچنین می توانید در کانال IRC "#libguestfs" در FreeNode با ما صحبت کنید. ما همیشه نیستیم
در اطراف، پس لطفا پس از پرسیدن سوال خود در کانال بمانید تا کسی پاسخ دهد
به شما.

برای سایر ابزارهای virt (نه آنهایی که با libguestfs ارائه شده اند) یک ابزار کلی برای virt وجود دارد.
لیست پستی: 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-test-tool(1).

مشترک مشکلات


همچنین به "LIBGUESTFS GOTCHAS" در مهمانان(3) برای برخی از "gotchas" با استفاده از libguestfs
API

"میتوانست نه اختصاص دادن پویا مترجم بافر"
این خطای مبهم در واقع یک شکست SELinux است. شما باید موارد زیر را فعال کنید
SELinux boolean:

setsebool -P virt_use_execmem=on

برای اطلاعات بیشتر به https://bugzilla.redhat.com/show_bug.cgi?id=806106 مراجعه کنید.

"کودک روند درگذشت بر خلاف انتظار"
[این پیام خطا در libguestfs 1.21.18 به چیزی توضیحی تر تغییر کرده است.]

این خطا نشان می دهد که qemu ناموفق بوده یا هسته میزبان نمی تواند بوت شود. برای رسیدن به بیشتر
اطلاعات مربوط به شکست را باید اجرا کنید:

libguestfs-test-tool

اگر پس از استفاده از این، هنوز متوجه شکست نشدید، با ما تماس بگیرید (به قبلی مراجعه کنید
بخش).

libguestfs: خطا: نمی توان پیدا کردن هر مناسب libguestfs سوپرمین، ثابت or سبک قدیمی وسیله
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: پدر یا مادر فهرست راهنما نه یافت
supermin-helper: ext2: پدر یا مادر فهرست راهنما نه یافت
[این مشکل به طور دائم در libguestfs ≥ 1.26 برطرف شده است.]

اگر هر یک از این خطاها را در Debian/Ubuntu مشاهده کردید، باید دستور زیر را اجرا کنید:

sudo update-guestfs-appliance

"اجازه تکذیب کرد" چه زمانی در حال اجرا libguestfs as ریشه
هنگام باز کردن یک تصویر دیسک، حتی اگر در حال اجرا هستید، یک خطای رد مجوز دریافت می کنید
libguestfs به عنوان ریشه.

این امر توسط libvirt ایجاد می شود، و بنابراین فقط در هنگام استفاده از باطن libvirt اتفاق می افتد. هنگام اجرا
به عنوان root، libvirt تصمیم می گیرد که دستگاه qemu را به عنوان کاربر "qemu.qemu" اجرا کند. متاسفانه
این معمولاً به این معنی است که qemu نمی تواند تصاویر دیسک را باز کند، به خصوص اگر آن تصاویر دیسک باشند
متعلق به root هستند یا در دایرکتوری هایی که نیاز به دسترسی ریشه دارند وجود دارند.

یک اشکال در libvirt برای رفع این مشکل وجود دارد:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

می توانید با یکی از روش های زیر این مشکل را حل کنید:

سوئیچ به باطن مستقیم:

صادرات LIBGUESTFS_BACKEND=مستقیم

· libguestfs را به عنوان روت اجرا نکنید.

· تصویر دیسک و هر دایرکتوری والد را Chmod کنید تا کاربر qemu بتواند به آنها دسترسی داشته باشد.

· (تند و زننده) ویرایش /etc/libvirt/qemu.conf و تنظیمات "user" را تغییر دهید.

به استثنای: /init: اجازه تکذیب کرد
توجه داشته باشید: اگر زمانی که از بسته توزیعی libguestfs استفاده می کنید، این خطا رخ می دهد (به عنوان مثال از
فدورا، دبیان، و غیره) سپس یک باگ را علیه توزیع ثبت کنید. این یک خطا نیست که
کاربران عادی باید ببینند که آیا بسته توزیع به درستی آماده شده است یا خیر.

این خطا در مرحله راه‌اندازی دستگاه سوپرمین اتفاق می‌افتد:

supermin: نصب روت جدید روی / ریشه
سوپرمین: chroot
excl: /init: مجوز رد شد
supermin: اشکال زدایی: فهرست فهرست /
[...به دنبال تعداد زیادی خروجی اشکال زدایی...]

این یک اشکال پیچیده مربوط به است سوپرمین(1) لوازم خانگی دستگاه ساخته شده است
با کپی کردن فایل هایی مانند / bin / bash و بسیاری از کتابخانه ها از میزبان. فایل "hostfiles"
فایل هایی را که باید از هاست در دستگاه کپی شوند فهرست می کند. اگر چند فایل
در هاست وجود ندارند، آنها از دست می روند، اما اگر این فایل ها به ترتیب مورد نیاز باشند
به (مثلا) اجرا کردن / bin / bash سپس خطای بالا را خواهید دید.

تشخیص مشکل شامل مطالعه کتابخانه های مورد نیاز است / bin / bash، یعنی:

ldd / bin / bash

مقایسه آن با "hostfiles"، با فایل های موجود در سیستم فایل میزبان،
و با خروجی اشکال زدایی که در پیام خطا چاپ شده است. بعد از اینکه مشخص کردید کدام فایل
وجود ندارد، آن فایل را با استفاده از مدیریت بسته خود نصب کنید و دوباره امتحان کنید.

شما همچنین باید بررسی کنید که فایل ها مانند /init و / bin / bash (در دستگاه) هستند
قابل اجرا خروجی اشکال زدایی حالت های فایل را نشان می دهد.

در حال دانلود، در حال نصب، تدوین LIBGUESTFS


جایی که می توان I دریافت کنید la آخرین دوتایی برای ...؟
فدورا ≥ 11
استفاده کنید:

yum install '*guestf*'

برای آخرین ساخت ها، نگاه کنید به:
http://koji.fedoraproject.org/koji/packageinfo?packageID=8391

Red Hat Enterprise لینوکس
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" برای دریافت پشتیبانی مهمان ویندوز.

دبیان و اوبونتو
برای libguestfs < 1.26، پس از نصب libguestfs باید انجام دهید:

sudo update-guestfs-appliance

(این اسکریپت در Debian/Ubuntu با libguestfs ≥ 1.26 حذف شده است و در عوض
دستگاه بر اساس تقاضا ساخته می شود.)

فقط در اوبونتو:

sudo chmod 0644 /boot/vmlinuz*

ممکن است لازم باشد خود را به گروه "kvm" اضافه کنید:

sudo usermod -a -G kvm لاگین شما

فشار دبیان (6)
Hilko Bengen libguestfs را در backports فشرده ساخته است:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports

Debian Wheezy و نسخه های بعدی (7+)
Hilko Bengen از libguestfs در دبیان پشتیبانی می کند. بسته های رسمی دبیان هستند
در دسترس: http://packages.debian.org/search?keywords=libguestfs

اوبونتو
ما یک نگهدارنده تمام وقت اوبونتو نداریم، و بسته های ارائه شده توسط
Canonical (که خارج از کنترل ما هستند) گاهی اوقات خراب می شوند.

Canonical تصمیم گرفت مجوزهای هسته را تغییر دهد تا اینطور نباشد
قابل خواندن به جز ریشه این کاملا احمقانه است، اما آنها آن را تغییر نمی دهند
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). بنابراین هر کاربر
باید این کار را انجام دهد:

sudo chmod 0644 /boot/vmlinuz*

اوبونتو 12.04
libguestfs در این نسخه از اوبونتو کار می کند، اما شما باید 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

همچنین باید انجام دهید (به بالا مراجعه کنید):

sudo chmod 0644 /boot/vmlinuz*

جنتو
Libguestfs در سال 2012-07 توسط Andreis Vinogradovs (libguestfs) به جنتو اضافه شد.
ماکسیم کولتسف (عمدتاً کندو). انجام دادن:

ظهور libguestfs

سوسه
Libguestfs در سال 2012 توسط اولاف هرینگ به SuSE اضافه شد.

آرچ لینوکس
Libguestfs در سال 2010 به AUR اضافه شد.

سایر توزیع های لینوکس
کامپایل از منبع (بخش بعدی).

سایر توزیع های غیر لینوکس
شما باید از منبع کامپایل کنید و آن را پورت کنید.

چگونه می توان I گردآوری و نصب libguestfs از جانب منبع؟
شما می توانید libguestfs را از git یا یک منبع tarball کامپایل کنید. فایل README را قبلا بخوانید
راه افتادن.

Git: https://github.com/libguestfs/libguestfs منبع tarballs:
http://libguestfs.org/download

"make install" را اجرا نکنید! از " استفاده کنید./ اجرا کناسکریپت " در عوض (به README مراجعه کنید).

چگونه می توان I گردآوری و نصب libguestfs if my توزیع نمی کند داشته باشد جدید کافی
qemu/supermin/kernel؟
Libguestfs به supermin 5 نیاز دارد. اگر supermin 5 به توزیع شما منتقل نشده است، ببینید
سوال زیر

ابتدا qemu، supermin و/یا هسته را از منبع کامپایل کنید. شما انجام می دهید نه نیاز به "ساختن
آنها را نصب کنید.

در دایرکتوری منبع libguestfs، دو فایل ایجاد کنید. "محل پیکربندی" باید شامل موارد زیر باشد:

منبع localenv
#export PATH=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --پیشوند / usr "$@"

"localconfigure" را قابل اجرا کنید.

"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
#export SUPERMIN_KERNEL_VERSION=4.XX.0
#export SUPERMIN_MODULES=/tmp/lib/modules/4.XX.0

برای استفاده از برنامه های جایگزینی که دارید، این خطوط را برداشته و تنظیم کنید
تدوین شده است.

از "./localconfigure" به جای "./configure" استفاده کنید، اما در غیر این صورت libguestfs را به صورت کامپایل می کنید.
معمولی

"make install" را اجرا نکنید! از " استفاده کنید./ اجرا کناسکریپت " در عوض (به README مراجعه کنید).

چگونه می توان I گردآوری و نصب libguestfs بدون سوپرمین؟
اگر سوپرمین 5 از توزیع شما پشتیبانی می کند، اما به اندازه کافی سوپرمین جدید ندارید
نصب شد، سپس سوال قبلی را ببینید.

اگر supermin 5 به هیچ وجه از توزیع شما پشتیبانی نمی کند، باید از "fixed
روش appliance" که در آن از یک ابزار باینری از پیش کامپایل شده استفاده می کنید. برای ساخت libguestfs
بدون supermin، باید "--disable-appliance -disable-daemon" را به هر یک از آنها ارسال کنید
./autogen.sh or / پیکربندی (بسته به اینکه به ترتیب از git می سازید یا
از تربال ها). سپس، هنگام استفاده از libguestfs، شما باید تنظیم "LIBGUESTFS_PATH"
متغیر محیطی به دایرکتوری یک ابزار از پیش کامپایل شده، همانطور که در توضیح داده شده است
"دستگاه ثابت" در مهمانان(3).

برای لوازم از پیش کامپایل شده، همچنین ببینید: http://libguestfs.org/download/binaries/appliance/.

وصله‌هایی برای انتقال سوپرمین به توزیع‌های لینوکس بیشتر مورد استقبال قرار می‌گیرند.

چگونه می توان I اضافه کردن پشتیبانی برای sVirt؟
توجه داشته باشید برای فدورا / RHEL کاربران: این پیکربندی پیش فرض است که با فدورا 18 و شروع می شود
RHEL 7. اگر مشکلی پیدا کردید، لطفاً به ما اطلاع دهید یا اشکالی را ثبت کنید.

SVirt یک دستگاه سخت شده با استفاده از SELinux ارائه می دهد که کار را برای یک دیسک سرکش بسیار سخت می کند
تصویر برای "فرار" از حبس libguestfs و آسیب رساندن به میزبان (منصفانه است که بگوییم
که حتی در libguestf های استاندارد این کار سخت است، اما sVirt یک لایه اضافی از آن را فراهم می کند
حفاظت از هاست و مهمتر از آن از ماشین های مجازی روی همان هاست محافظت می کند
از یکدیگر).

در حال حاضر برای فعال کردن sVirt به libvirt ≥ 0.10.2 (ترجیحاً 1.0 یا بالاتر) نیاز دارید.
libguestfs ≥ 1.20 و خط مشی های SELinux از فدورا اخیر. اگر در حال دویدن نیستید
Fedora 18+، باید تغییراتی را در خط مشی SELinux خود ایجاد کنید - با ما تماس بگیرید
لیست پستی

هنگامی که شرایط لازم را دارید، انجام دهید:

./configure --with-default-backend=libvirt # libguestfs >= 1.22
./configure --with-default-attach-method=libvirt # libguestfs <= 1.20
ساخت

SELinux را روی حالت Enforcing تنظیم کنید و sVirt باید به طور خودکار استفاده شود.

همه یا تقریباً همه ویژگی‌های libguestfs باید تحت sVirt کار کنند. یکی شناخته شده است
کاستی: فضیلت نجات(1) از libvirt (بنابراین sVirt) استفاده نمی کند، اما به direct برمی گردد
راه اندازی qemu. بنابراین در حال حاضر از مزایای محافظت از sVirt در هنگام استفاده بهره مند نخواهید شد
فضیلت نجات

با فعال کردن گزارش libvirtd می توانید بررسی کنید که آیا sVirt استفاده می شود (نگاه کنید به
/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 کلاه نمدی مردانه شماره ۱۰۲۹، ریل 7
در فدورا ≥ 18 و RHEL ≥ 7، libguestfs از libvirt برای مدیریت دستگاه استفاده می کند. قبلا
(و بالادست) libguestfs به طور مستقیم qemu را اجرا می کند:

┌───────────────────
│ libguestfs │
├────────────────┬─────
│ باطن مستقیم │ باطن libvirt │
└────────────────┴

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

┌───────┐
│ قمو │
└───────┘

بالادست Fedora 18+
غیر فدورا RHEL 7+
غیر RHEL

باطن libvirt پیچیده تر است و از SELinux/sVirt پشتیبانی می کند (به بالا مراجعه کنید).
هات پلاگ و موارد دیگر با این حال، پیچیده تر است و بنابراین کمتر استحکام دارد.

اگر با استفاده از باطن libvirt مشکل مجوز دارید، می توانید به Direct تغییر دهید
Backend با تنظیم این متغیر محیطی:

صادرات LIBGUESTFS_BACKEND=مستقیم

قبل از اجرای هر برنامه libguestfs یا ابزار virt.

چگونه می توان I گزینه به a ثابت / از پیش ساخته دستگاه؟
این ممکن است ثبات و عملکرد libguestfs در Fedora و RHEL را بهبود بخشد.

هر زمان پس از نصب libguestfs، دستورات زیر را به عنوان root اجرا کنید:

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

حالا قبل از استفاده از libguestfs یا هر ابزار virt، متغیر محیطی زیر را تنظیم کنید:

صادرات 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)
صفحه دستی

سرعت، خطر فضا استفاده شده BY LIBGUESTFS


توجه داشته باشید: بیشتر اطلاعات این بخش منتقل شده است: guestfs-performance(1).

بارگذاری or نوشتن به نظر می رسد بسیار آهسته. تدریجی.
اگر دیسک زیربنایی به طور کامل تخصیص داده نشده باشد (مثلاً پراکنده خام یا qcow2) می‌توان نوشت
کند، زیرا سیستم عامل میزبان باید تخصیص های گران دیسک را در حالی که شما هستید انجام دهد
نوشتن راه حل این است که به جای آن از یک قالب کاملاً اختصاص داده شده استفاده کنید. خام غیر پراکنده، یا
qcow2 با گزینه "preallocation=metadata".

Libguestfs استفاده هم بسیار دیسک فضا!
libguestfs یک دستگاه بزرگ را در حافظه پنهان می کند:

/var/tmp/.guestfs-

اگر متغیر محیطی "TMPDIR" تعریف شده باشد، پس $TMPDIR/.guestfs- استفاده شده است
به جای آن.

هنگامی که از libguestfs استفاده نمی کنید، می توانید این فهرست را حذف کنید.

پراکنده کردن به نظر می رسد به ساخت la تصویر رشد به la کامل اندازه of la مجازی دیسک
اگر ورودی به پراکنده کردن(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 test1.img

(اندازه ظاهری را مقایسه کنید 100M در مقایسه با اندازه واقعی 3.6M)

اگر همه اینها شما را گیج می کند، با مشخص کردن مقدار از یک فرمت خروجی غیر پراکنده استفاده کنید --تبدیل
گزینه، به عنوان مثال:

virt-sparsify --تبدیل qcow2 disk.raw disk.qcow2

چرا نمی کند virt-Resize کار on la دیسک تصویر درجا؟
تغییر اندازه تصویر دیسک بسیار مشکل است -- به خصوص اطمینان از اینکه داده ها را از دست ندهید یا
بوت لودر را بشکنید روش فعلی به طور موثر یک تصویر دیسک جدید ایجاد می کند و کپی می کند
دیتا به علاوه بوت لودر قدیمی. اگر مشکلی پیش بیاید، همیشه می توانید بروید
بازگشت به اصل

اگر بخواهیم تغییر اندازه مجازی را در جای خود انجام دهیم، باید محدودیت هایی وجود داشته باشد: برای
به عنوان مثال، شما اجازه ندارید پارتیشن‌های موجود را جابه‌جا کنید (زیرا انتقال داده‌ها به یکدیگر
همان دیسک به احتمال زیاد در صورت قطع برق یا خرابی داده ها را خراب می کند)
و LVM برای پشتیبانی بسیار دشوار خواهد بود (به دلیل نگاشت تقریباً دلخواه
بین محتوای LV و بلوک های دیسک زیرین).

روش دیگری که در نظر گرفته‌ایم، قرار دادن یک عکس فوری روی تصویر دیسک اصلی است، بنابراین
که داده های اصلی دست نخورده است و فقط تفاوت ها در عکس فوری ثبت می شود.
امروز می توانید این کار را با استفاده از "qemu-img create" + "virt-resize" انجام دهید، اما qemu در حال حاضر اینطور نیست.
به اندازه کافی هوشمند است که تشخیص دهد چه زمانی همان بلوک به عکس فوری نوشته شده است
در دیسک پشتیبان وجود دارد، بنابراین متوجه خواهید شد که این کار باعث صرفه جویی در فضا یا زمان شما نمی شود.

به طور خلاصه، این یک مشکل سخت است، و آنچه در حال حاضر داریم بیشتر کار می کند، بنابراین ما تمایلی نداریم
برای تغییر آن

چرا نمی کند پراکنده کردن کار on la دیسک تصویر درجا؟
در libguestfs ≥ 1.26، virt-sparsify اکنون می‌تواند روی تصاویر دیسک در جای خود کار کند. استفاده کنید:

virt-sparsify --in-place disk.img

اما ابتدا باید «تقوض در محل» را در آن بخوانید پراکنده کردن(1).

مشکلات باز کردن خطر تصاویر


دور کتابخانه مهمان نمی توان be باز شد
باز کردن مهمانان libvirt راه دور در حال حاضر پشتیبانی نمی شود. به عنوان مثال این کار نمی کند:

guestfish -c qemu://remote/system -d مهمان

برای باز کردن دیسک های راه دور، باید آنها را به نحوی صادر کنید، سپس به صادرات متصل شوید. برای
به عنوان مثال اگر تصمیم به استفاده از NBD دارید:

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

سایر امکانات عبارتند از ssh (اگر qemu به اندازه کافی جدید باشد)، NFS یا iSCSI. به "Remote" مراجعه کنید
STORAGE" در مهمانان(3).

چگونه می توان I باز کن این عجیب دیسک منبع؟
شما یک تصویر دیسک دارید که در داخل سیستم دیگری قرار دارد که نیاز به دسترسی از طریق کتابخانه دارد /
HTTP / REST / API اختصاصی، یا به نوعی فشرده یا بایگانی شده است. (یک مثال
دسترسی از راه دور به تصاویر OpenStack بدون بارگیری واقعی آنها خواهد بود.)

ما یک پروژه خواهر به نام nbdkit (https://github.com/libguestfs/nbdkit) داریم. این
پروژه به شما امکان می دهد هر منبع دیسک را به یک سرور NBD تبدیل کنید. Libguestfs می تواند به NBD دسترسی داشته باشد
سرورها به طور مستقیم، به عنوان مثال:

guestfish -a nbd://remote

nbdkit دارای مجوز آزاد است، بنابراین می توانید آن را به کتابخانه های اختصاصی پیوند دهید یا در آن قرار دهید.
و کد. همچنین دارای یک API پلاگین ساده و پایدار است تا بتوانید به راحتی افزونه هایی را بر روی آن بنویسید
API که در آینده به کار خود ادامه خواهد داد.

خطا افتتاح VMDK دیسک ها: "استفاده می کند a vmdk از ویژگی های که is نه پشتیبانی by این ایست نسخه:
VMDK نسخه 3"
Qemu (و از این رو libguestfs) فقط از برخی تصاویر دیسک VMDK پشتیبانی می کند. دیگران کار نخواهند کرد،
دادن این یا خطاهای مشابه

در حالت ایده‌آل، کسی دستور qemu را برای پشتیبانی از آخرین ویژگی‌های VMDK انجام می‌دهد، اما در این بین
شما سه گزینه دارید:

1. اگر مهمان بر روی یک سرور زنده و قابل دسترس ESX میزبانی می شود، سپس آن را پیدا کرده و دانلود کنید
تصویر دیسک نامیده می شود somename-flat.vmdk. با وجود نام، این یک تصویر دیسک خام است و
با هر چیزی قابل باز شدن است

اگر یک نسخه جدید از qemu و libguestfs دارید، ممکن است بتوانید
با استفاده از HTTPS یا ssh از راه دور به این تصویر دیسک دسترسی داشته باشید. به «ذخیره‌سازی از راه دور» مراجعه کنید
مهمانان(3).

2. از ابزار اختصاصی vdiskmanager VMware برای تبدیل تصویر به فرمت خام استفاده کنید.

3. از nbdkit با افزونه اختصاصی VDDK برای صادرات زنده تصویر دیسک به عنوان NBD استفاده کنید.
منبع این باید به شما امکان خواندن و نوشتن فایل VMDK را بدهد.

UFS دیسک ها (مانند استفاده by BSD) نمی توان be باز شد
فرمت فایل سیستم UFS انواع مختلفی دارد و اینها خودشناس نیستند. در
باید به هسته لینوکس گفته شود که از کدام نوع UFS باید استفاده کند، کدام libguestfs نمی تواند
می دانم.

هنگام نصب این فایل‌سیستم‌ها، باید گزینه صحیح mount "ufstype" را پاس کنید.

به https://www.kernel.org/doc/Documentation/filesystems/ufs.txt مراجعه کنید

ویندوز rEFS
Windows ReFS کپی ZFS/Btrfs مایکروسافت است. این فایل سیستم هنوز معکوس نشده است
مهندسی شده و در هسته لینوکس پیاده سازی شده است، و بنابراین libguestfs پشتیبانی نمی کند
آی تی. در حال حاضر به نظر می رسد "در طبیعت" بسیار نادر است.

غیر ASCII کاراکتر نکن ظاهر شدن on VFAT فایل سیستم ها
علائم معمول این مشکل:

· هنگام ایجاد فایلی که در آن نام فایل حاوی غیرASCII است، با خطا مواجه می شوید
کاراکترها، به ویژه کاراکترهای غیر 8 بیتی از زبان های آسیایی (چینی، ژاپنی،
و غیره). فایل سیستم VFAT است.

· وقتی فهرستی را از یک فایل سیستم VFAT فهرست می کنید، نام فایل ها به صورت علامت سوال ظاهر می شوند.

این یک نقص طراحی سیستم گنو/لینوکس است.

VFAT نام فایل های طولانی را به صورت کاراکتر UTF-16 ذخیره می کند. هنگام باز کردن یا برگرداندن نام فایل ها،
هسته لینوکس باید اینها را به نوعی رشته 8 بیتی ترجمه کند. UTF-8 خواهد بود
انتخاب واضحی است، به جز برای کاربران لینوکس که در استفاده از زبان های غیر UTF-8 اصرار دارند (کاربر
محلی برای هسته شناخته شده نیست زیرا تابعی از libc است).

بنابراین باید به کرنل بگویید که می خواهید چه ترجمه ای را هنگام نصب کردن انجام دهید
فایل سیستم این دو روش پارامتر "iocharset" هستند (که مربوط به
libguestfs) و پرچم "utf8".

بنابراین برای استفاده از فایل سیستم VFAT باید هنگام نصب پرچم "utf8" را اضافه کنید. از ماهی مهمان،
استفاده کنید:

> mount-options utf8 /dev/sda1 /

یا در خط فرمان guestfish:

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

یا از API:

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

سپس هسته نام فایل ها را به رشته های UTF-8 و از آن ترجمه می کند.

ما در نظر گرفتیم که این گزینه mount را به صورت شفاف اضافه کنیم، اما متاسفانه چندین مورد وجود دارد
مشکلات انجام آن:

· در برخی از سیستم های لینوکس، گزینه mount "utf8" کار نمی کند. ما دقیقا نداریم
متوجه شوید که چه سیستمی یا چرا، اما این به طور قابل اعتماد توسط یک کاربر گزارش شده است.

این شما را از استفاده از پارامتر "iocharset" جلوگیری می کند زیرا ناسازگار است
با "utf8". احتمالاً استفاده از این پارامتر ایده خوبی نیست، اما ما نمی خواهیم
برای جلوگیری از آن

غیر ASCII کاراکتر ظاهر شدن as تاکید 🇧🇷 on ISO9660 فایل سیستم ها
فایل سیستم به درستی با mkisofs یا genisoimage آماده نشده است. مطمئن شوید که
سیستم فایل با استفاده از پسوندهای Joliet و/یا Rock Ridge ایجاد شد. libguestfs اینطور نیست
برای مدیریت فایل سیستم نیاز به هر گونه mount خاصی دارد.

نمی توان باز کن ویندوز مهمان که استفاده کنید NTFS
شما خطاهایی مانند:

mount: نوع فایل سیستم ناشناخته 'ntfs'

در لینوکس Red Hat Enterprise یا CentOS، باید libguestfs-winsupport را نصب کنید
بسته.

نمی توان باز کن or بازرسی ریل 7 مهمانان
نمی توان باز کن لینـوکــس مهمان که استفاده کنید XFS.
مهمانان RHEL 7 و هر مهمان دیگری که از XFS استفاده می کند، می تواند توسط libguestfs باز شود، اما شما
باید بسته "libguestfs-xfs" را نصب کنید.

استفاده كردن LIBGUESTFS IN شما خودت برنامه ها


La API است صدها of مواد و روش ها، جایی که do I شروع کنید؟
توصیه می کنیم با خواندن نمای کلی API شروع کنید: "API OVERVIEW" در مهمانان(3).

اگرچه نمای کلی API C API را پوشش می‌دهد، حتی اگر شما هم هستید ارزش خواندن را دارد
قرار است از زبان برنامه نویسی دیگری استفاده کنید، زیرا API یکسان است، فقط با ساده
تغییرات منطقی در نام تماس ها:

C guestfs_ln_sf (g، هدف، نام پیوند)؛
پایتون g.ln_sf (هدف، نام پیوند)؛
نام پیوند هدف OCaml g#ln_sf.
Perl $g->ln_sf (هدف، نام پیوند)؛
نام پیوند هدف Shell (guestfish) ln-sf
PHP guestfs_ln_sf ($g، $target، $linkname)؛

هنگامی که با نمای کلی API آشنا شدید، باید به این لیست شروع نگاه کنید
امتیاز برای پیوندهای زبانی دیگر: "استفاده از LIBGUESTFS با سایر زبان های برنامه نویسی" در
مهمانان(3).

قوطی I استفاده کنید libguestfs in my اختصاصی / بسته منبع / تجاری برنامه
به طور کلی، بله. اما این توصیه حقوقی نیست - مجوز ارائه شده را بخوانید
libguestfs، و اگر سؤال خاصی دارید با یک وکیل تماس بگیرید.

در درخت منبع مجوز در فایل "COPYING.LIB" (LGPLv2+ برای کتابخانه و
bindings) و "COPYING" (GPLv2+ برای برنامه های مستقل).

اشکال زدایی LIBGUESTFS


کمک، آن نه کار کردن!
اگر به نظر می رسد هیچ برنامه libguestfs اصلا کار نمی کند، برنامه زیر را اجرا کنید و آن را Paste کنید
کامل، ویرایش نشده خروجی را در یک ایمیل به "libguestfs" @ "redhat.com" ارسال کنید:

libguestfs-test-tool

اگر عملیات خاصی با شکست مواجه شد، تمام اطلاعات این چک لیست را در یک ایمیل ارائه کنید
به "libguestfs" @ "redhat.com":

1. سعی می کنید چه کار کنید؟

2. دقیقا چه دستور(هایی) را اجرا کردید؟

3. خطا یا خروجی دقیق این دستورات چه بوده است؟

4. اشکال زدایی را فعال کنید، دوباره دستورات را اجرا کنید و آن را ضبط کنید کامل خروجی. Do نه
ویرایش کنید la خروجی.

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

5. نسخه libguestfs، نسخه سیستم عامل و نحوه نصب را درج کنید
libguestfs (به عنوان مثال از منبع، "yum install"، و غیره)

چگونه do I اشکال زدایی کردن چه زمانی با استفاده از هر libguestfs برنامه or ابزار (به عنوان مثال. virt-v2v or virt-df)؟
دو متغیر محیطی "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

برای اطلاعات بیشتر، نگاه کنید به: "متغیرهای محیطی" در مهمانان(3).

چگونه do I اشکال زدایی کردن چه زمانی با استفاده از ماهی مهمان؟
می توانید از همان متغیرهای محیطی بالا استفاده کنید. از گزینه های ماهی مهمان استفاده کنید
-x (برای ردیابی دستورات) یا -v (برای دریافت خروجی کامل اشکال زدایی)، یا هر دو.

برای اطلاعات بیشتر، به: ماهی مهمان(1).

چگونه do I اشکال زدایی کردن چه زمانی با استفاده از la API
با "guestfs_set_trace" تماس بگیرید مهمانان(3) برای فعال کردن ردیابی فرمان و/یا
"guestfs_set_verbose" در مهمانان(3) برای فعال کردن پیام های اشکال زدایی.

برای بهترین نتایج، این توابع را در اسرع وقت، درست پس از ایجاد، فراخوانی کنید
guestfs در صورت امکان، و قطعاً قبل از فراخوانی راه اندازی، رسیدگی کنید.

چگونه do I گرفتن اشکال زدایی کردن تولید و قرار دادن it به my ورود به سیستم سیستم؟
از رویداد API استفاده کنید. برای مثال، نگاه کنید به: "تنظیم تماس برای رسیدگی به رویدادها" در مهمانان(3)
و examples/debug-logging.c برنامه در منابع libguestfs.

نبش عمیق تر به la وسیله پوتین روند.
اشکال زدایی را فعال کنید و سپس این مستندات را در فرآیند بوت دستگاه بخوانید:
guestfs-internals(1).

libguestfs آویزان است or نتواند در طی اجرا/راه اندازی
اشکال زدایی را فعال کنید و به خروجی کامل نگاه کنید. اگر نمی توانید بفهمید چه اتفاقی دارد می افتد،
یک گزارش اشکال، از جمله کامل خروجی از libguestfs-test-tool(1).

اشکال زدایی کتابخانه
اگر از باطن libvirt استفاده می کنید و libvirt ناموفق است، می توانید آن را فعال کنید
اشکال زدایی با ویرایش /etc/libvirt/libvirtd.conf.

اگر به صورت غیر روت در حال اجرا هستید، باید فایل دیگری را ویرایش کنید. ايجاد كردن
~/.config/libvirt/libvirtd.conf حاوی:

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

هر جلسه (غیر روت) libvirtd در حال اجرا را بکشید و دفعه بعد libguestfs را اجرا کنید
دستور، شما باید مقدار زیادی از اطلاعات اشکال زدایی مفید را از libvirtd در مشاهده کنید
/tmp/libvirtd.log

طراحی / داخلی OF LIBGUESTFS


همچنین مشاهده کنید guestfs-internals(1).

چرا نکن شما do همه چیز از طریق la FUSE / سیستم فایل رابط؟
ما دستوری به نام پیشنهاد می کنیم میهمان میهمان(1) که به شما امکان می دهد فایل سیستم های مهمان را روی آن نصب کنید
میزبان. این به عنوان یک ماژول FUSE پیاده سازی شده است. چرا ما فقط کل را اجرا نکنیم
libguestfs به جای داشتن API بزرگ و نسبتاً پیچیده از این مکانیسم استفاده می کند؟

دلایل دوگانه است. اولاً، libguestfs فراخوان‌های API را برای انجام کارهایی از این قبیل ارائه می‌کند
ایجاد و حذف پارتیشن ها و حجم های منطقی که در یک فایل سیستم قرار نمی گیرند
خیلی راحت مدل کنید یا بهتر است بگوییم، می‌توانید آنها را در آن قرار دهید: برای مثال، ایجاد یک پارتیشن
می تواند به "mkdir /fs/hda1" نگاشت شود، اما پس از آن باید روشی را برای انتخاب مشخص کنید.
اندازه پارتیشن (شاید "echo 100M > /fs/hda1/.size")، و نوع پارتیشن،
بخش های شروع و پایان و غیره، اما پس از انجام این کار، API مبتنی بر سیستم فایل شروع به کار می کند
پیچیده تر از API مبتنی بر تماس ما در حال حاضر به نظر می رسد.

دلیل دوم کارایی است. فیوز به خودی خود کارآمدی معقولی دارد، اما این کار را می کند
تماس های کوچک و مستقل زیادی را با ماژول FUSE برقرار کنید. در guestmount اینها باید
به پیام هایی برای دستگاه libguestfs ترجمه شود که سربار زیادی دارد (در زمان
و رفت و برگشت). به عنوان مثال، خواندن یک فایل در تکه های 64 کیلوبایتی ناکارآمد است زیرا هر کدام
تکه به یک سفر رفت و برگشت تبدیل می شود. در libguestfs API بسیار بیشتر است
برای دانلود کل فایل یا دایرکتوری از طریق یکی از تماس های جریانی مانند
"guestfs_download" یا "guestfs_tar_out".

چرا نکن شما do همه چیز از طریق GVFS؟
مشکلات مشابه مشکلات فیوز است.

GVFS انتزاعی بهتر از POSIX/FUSE است. یک باطن FTP برای GVFS وجود دارد که این است
دلگرم کننده است زیرا FTP از نظر مفهومی شبیه به API libguestfs است. با این حال GVFS
باطن FTP چندین اتصال همزمان ایجاد می کند تا تعامل را حفظ کند
ما نمی توانیم به راحتی با libguestfs کار کنیم.

چرا می توان I نوشتن به la دیسک حتی گرچه I اضافه it فقط خواندنی؟
چرا میکند "--رو" ظاهر شدن به داشته باشد نه اثر؟
وقتی یک دیسک فقط خواندنی اضافه می کنید، libguestfs یک پوشش قابل نوشتن در بالای صفحه قرار می دهد.
دیسک زیرین نوشته‌ها در این همپوشانی قرار می‌گیرند و وقتی دسته بسته می‌شود کنار گذاشته می‌شوند
(یا "مهمان ماهی" و غیره خارج می شود).

دو دلیل برای انجام این کار وجود دارد: اول اینکه دیسک‌های فقط خواندنی در آن امکان‌پذیر نیستند
بسیاری از موارد (به عنوان مثال، IDE به سادگی از آنها پشتیبانی نمی کند، بنابراین نمی توانید یک IDE شبیه سازی شده داشته باشید.
دیسک فقط خواندنی، اگرچه در نصب های واقعی libguestfs معمول نیست).

ثانیا و مهمتر، حتی اگر دیسک های فقط خواندنی امکان پذیر بود، شما نمی خواهید
آنها نصب هر فایل سیستمی که دارای ژورنال است، حتی "mount -o ro"، باعث نوشتن در آن می شود
سیستم فایل زیرا مجله باید دوباره پخش شود و ابرداده به روز شود. اگر دیسک
واقعا فقط خواندنی بود، شما نمی توانید یک فایل سیستم کثیف را نصب کنید.

برای اینکه آن را قابل استفاده کنیم، همپوشانی را به عنوان مکانی برای ذخیره موقت این نوشته‌ها و
سپس آن را دور می اندازیم. این تضمین می کند که دیسک زیرین همیشه دست نخورده باشد.

همچنین توجه داشته باشید که هنگام ساخت libguestfs (in
"تست ها/قمو"). این یکی از دلایلی است که چرا بسته‌بندان باید مجموعه آزمایشی را اجرا کنند.

میکند "--رو" ساخت تمام دیسک ها فقط خواندنی؟
نه! گزینه "--ro" فقط بر روی دیسک های اضافه شده در خط فرمان تاثیر می گذارد. با استفاده از "-a" و
گزینه های "-d".

در guestfish، اگر از دستور "add" استفاده می کنید، دیسک خواندن و نوشتن اضافه می شود (مگر اینکه شما
پرچم "readonly:true" را به صراحت با دستور مشخص کنید).

قوطی I استفاده کنید "ماهی مهمان --ro" as a راه به پشتیبان my مجازی ماشین آلات؟
معمولاً اینگونه است نه یک ایده خوب. این سوال با جزئیات بیشتر در این پست پاسخ داده شده است
ارسال لیست: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

سوال بعدی رو هم ببینید

چرا نمیتونم I اجرا البته معمولا on a زنده سیستم فایل با استفاده از "ماهی مهمان --ro"؟
این دستور معمولا نه کار:

guestfish --ro -a /dev/vg/my_root_fs اجرا: fsck /dev/sda

دلیل این امر این است که qemu یک عکس فوری بر روی سیستم فایل اصلی ایجاد می کند، اما آن را
یک عکس لحظه به لحظه دقیق ایجاد نمی کند. بلوک های داده در زمینه
فایل سیستم توسط qemu در زمان های مختلف با پیشرفت عملیات fsck با میزبان خوانده می شود
در بین می نویسد نتیجه این است که fsck فساد عظیمی را می بیند (تخیلی، نه واقعی!)
و شکست می خورد.

کاری که باید انجام دهید این است که یک عکس لحظه به لحظه ایجاد کنید. اگر حجم منطقی است، استفاده کنید
یک عکس فوری LVM2 اگر سیستم فایل در داخل فایلی مانند btrfs/ZFS قرار دارد،
از یک عکس فوری btrfs/ZFS استفاده کنید و سپس fsck را روی عکس فوری اجرا کنید. در عمل شما این کار را نمی کنید
برای این کار باید از libguestfs استفاده کنید -- فقط اجرا کنید /sbin/fsck به طور مستقیم.

ایجاد عکس های لحظه به لحظه از دستگاه ها و فایل های میزبان خارج از محدوده است
libguestfs، اگرچه libguestfs می تواند پس از ایجاد روی آنها عمل کند.

چه خبر la تفاوت میان ماهی مهمان و فضیلت نجات؟
بسیاری از مردم با دو ابزار ظاهرا مشابه که ما ارائه می دهیم گیج می شوند:

$ guestfish --ro -a guest.img
> اجرا کن
> fsck /dev/sda1

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

و سوال مرتبطی که بعدا مطرح می شود این است که چرا نمی توانید دستورات پوسته کامل را تایپ کنید
با تمام گزینه های -- در guestfish (اما شما می توانید در فضیلت نجات(1).

ماهی مهمان(1) برنامه ای است که دسترسی ساختاریافته به مهمانان(3) API. اتفاق می افتد
یک پوسته تعاملی خوب نیز باشد، اما هدف اصلی آن دسترسی ساختار یافته از آن است
اسکریپت های پوسته به آن بیشتر شبیه یک اتصال زبان، مانند پایتون و سایر اتصالات فکر کنید،
اما برای پوسته عامل اصلی تمایز guestfish (و API libguestfs در
عمومی) توانایی خودکارسازی تغییرات است.

فضیلت نجات(1) یک روش رایگان برای همه برای راه‌اندازی دستگاه libguestfs و ساخت آن است.
تغییرات دلخواه در VM شما این ساختار نیست، شما نمی توانید آن را خودکار کنید، اما برای ساخت
رفع سریع موقت برای مهمانان شما، می تواند بسیار مفید باشد.

اما، libguestfs همچنین دارای یک "درپشتی" به دستگاه است که به شما امکان ارسال دلخواه را می دهد.
دستورات پوسته به اندازه نجات فضیلت انعطاف پذیر نیست، زیرا شما نمی توانید با آن تعامل داشته باشید
شل دستور می دهد، اما به هر حال اینجاست:

> اشکال زدایی sh "cmd arg1 arg2 ..."

توجه داشته باشید که باید نه روی این تکیه کن ممکن است در آینده حذف یا تغییر یابد. اگر شما
برنامه نیاز به عملیات دارد، لطفاً در عوض آن را به API libguestfs اضافه کنید.

چه خبر la مقدار با "ماهی مهمان -من"؟
چرا میکند virt-cat فقط کار on a واقعی VM تصویر ، اما virt-df با این نسخهها کار on هر دیسک تصویر؟
چی میکند "نه ریشه دستگاه یافت in این عملیاتی سیستم تصویر" معنی است؟
این سؤالات همه در یک سطح اساسی مرتبط هستند که ممکن است بلافاصله مطرح نشود
واضح.

در مهمانان(3) سطح API، "تصویر دیسک" فقط انبوهی از پارتیشن ها و سیستم های فایل است.

در مقابل، وقتی ماشین مجازی بوت می‌شود، آن فایل‌سیستم‌ها را در یک سیستم ثابت نصب می‌کند
سلسله مراتبی مانند:

/ (/dev/sda2)

├─── / boot (/dev/sda1)

├─── / صفحه اصلی (/dev/vg_external/Homes)

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

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

(یا حروف درایو در ویندوز).

API اول از همه تصویر دیسک را در سطح "شمع فایل سیستم" می بیند. اما آن را نیز
راهی برای بررسی تصویر دیسک برای بررسی اینکه آیا شامل یک سیستم عامل است یا خیر و چگونه است
هنگامی که سیستم عامل بوت می شود دیسک ها نصب می شوند: "INSPECTION" در مهمانان(3).

کاربران انتظار برخی از ابزارها را دارند (مانند virt-cat(1)) برای کار با مسیرهای VM:

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

ورت گربه از کجا این را می داند / var پارتیشن جدا هست؟ ترفند این است که گربه با ارزش
بازرسی تصویر دیسک را انجام می دهد و از آن برای ترجمه صحیح مسیر استفاده می کند.

برخی از ابزارها (از جمله virt-cat(1) virt-edit(1) virt-ls(1)) از بازرسی برای نقشه برداری VM استفاده کنید
راه ها. ابزارهای دیگر مانند virt-df(1) و سیستم های فایل virt(1) به طور کامل در
سطح خام "تپه بزرگی از فایل سیستم ها" از API libguestfs، و از بازرسی استفاده نکنید.

ماهی مهمان(1) در حد وسط جالبی قرار دارد. اگر از -a و -m خط فرمان
گزینه ها، سپس شما باید به guestfish بگویید دقیقا چگونه تصاویر دیسک را اضافه کند و کجا نصب شود
پارتیشن ها این سطح خام API است.

اگر از شما استفاده می کنید -i گزینه، libguestfs بازرسی را انجام می دهد و سیستم های فایل را برای آن مانت می کند
شما خواهد شد.

خطای «هیچ دستگاه ریشه ای در این تصویر سیستم عامل یافت نشد» به این موضوع مربوط می شود. آی تی
به این معنی است که بازرسی نتوانست یک سیستم عامل را در تصویر دیسکی که شما داده اید پیدا کند
آی تی. اگر بخواهید آنها را روی چیزی اجرا کنید، ممکن است این را از برنامه هایی مانند virt-cat ببینید
که فقط یک تصویر دیسک است، نه یک تصویر دیسک ماشین مجازی.

چی do اینها "اشکال زدایی*" و "درونی؛ داخلی-*" توابع انجام دادن؟
برخی از توابع وجود دارند که برای اشکال زدایی و اهداف داخلی استفاده می شوند نه
بخشی از API پایدار

عملکرد "debug*" (یا "guestfs_debug*")، در درجه اول "guestfs_debug" در مهمانان(3) و
تعداد انگشت شماری دیگر برای اشکال زدایی libguestf ها استفاده می شوند. اگرچه آنها بخشی از آن نیستند
API پایدار است و بنابراین ممکن است در هر زمان تغییر کند یا حذف شود، برخی از برنامه ها ممکن است بخواهند تماس بگیرند
اینها در حالی که منتظر ویژگی هایی هستند که به libguestfs اضافه شوند.

توابع "internal-*" (یا "guestfs_internal_*") صرفاً باید توسط libguestfs استفاده شود
خود هیچ دلیلی برای فراخوانی برنامه ها وجود ندارد و برنامه ها نباید سعی کنند از آنها استفاده کنند
آنها استفاده از آنها اغلب باعث اتفاقات بد و همچنین عدم حضور در آن می شود
API پایدار مستند شده

توسعه دهندگان املاک


جایی که do I ارسال تکه ها؟
لطفاً وصله ها را به لیست پستی libguestfs ارسال کنید
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
تا زمانی که پست شما به صورت دستی تایید شود تاخیر وجود خواهد داشت.

لطفا نکن استفاده کنید گیتهاب کشیدن درخواست - آنها اراده be نادیده گرفته. دلایل (الف) ما می خواهیم
برای بحث و تشریح وصله های موجود در لیست پستی، و (ب) درخواست های کشش github به
commit های merge اما ترجیح می دهیم تاریخچه خطی داشته باشیم.

چگونه do I پیشنهادات a ویژگی؟
ویژگی‌های جدید بزرگی که قصد دارید به آنها کمک کنید باید در لیست پستی مورد بحث قرار گیرند
ابتدا (https://www.redhat.com/mailman/listinfo/libguestfs). این از ناامیدی جلوگیری می کند
و اگر فکر نکنیم این ویژگی در پروژه libguestfs قرار بگیرد، کار را تلف می کنیم.

اگر می‌خواهید ویژگی مفیدی را پیشنهاد دهید اما نمی‌خواهید کد را بنویسید، می‌توانید a را فایل کنید
اشکال (به «دریافت کمک و گزارش اشکالات» مراجعه کنید) با «RFE:» در ابتدای خلاصه
خط.

که می توان مرتکب شدن به libguestfs git
حدود 5 نفر به github دسترسی دارند. وصله ها ابتدا باید در لیست پست شوند
و تایید کرد. خط مشی ACKing و هل دادن وصله ها در اینجا مشخص شده است:

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

قوطی I چنگال libguestfs؟
البته که می توانی. Git فورک کردن libguestf ها را آسان می کند. Github این کار را حتی ساده تر می کند.
خوب است اگر در لیست پستی در مورد چنگال ها و دلایل آنها به ما بگویید.

متفرقه سوالات


قوطی I مانیتور la زنده دیسک فعالیت of a مجازی دستگاه با استفاده از libguestfs؟
یک درخواست رایج این است که بتوان از libguestfs برای نظارت بر فعالیت دیسک زنده a استفاده کرد
مهمان، به عنوان مثال، هر بار که یک مهمان یک فایل جدید ایجاد می کند، مطلع شوید. Libguestfs
میکند نه همانطور که از این نمودار می بینید، به روشی کار کنید که برخی افراد تصور می کنند:

┌─────────────────
│ برنامه نظارت با استفاده از libguestfs │
└─────────────────

┌───────────┐ ┌──────
│ VM زنده │ │ دستگاه libguestfs │
├───────────┤ ├─────────
│ هسته (1) │ │ هسته لوازم خانگی (2) │
└───────────┘ └────
↓ ↓ (اتصال r/o)
┌────────────────────
| تصویر دیسک |
└───────────────────

این سناریو ایمن است (تا زمانی که هنگام اضافه کردن درایو، پرچم "readonly" را تنظیم کنید).
با این حال هسته دستگاه libguestfs (2) همه تغییرات ایجاد شده در دیسک را نمی بیند.
تصویر، به دو دلیل:

من. هسته VM (1) می تواند داده ها را در حافظه پنهان کند، بنابراین در تصویر دیسک ظاهر نمی شود.

ii هسته دستگاه libguestfs (2) انتظار ندارد که تصویر دیسک در حال تغییر باشد
در زیر آن، بنابراین حافظه پنهان خود به طور جادویی به روز نمی شود، حتی زمانی که هسته VM (1)
تصویر دیسک را به روز می کند.

تنها راه حل پشتیبانی شده این است که هر زمان که می خواهید کل دستگاه libguestfs را راه اندازی مجدد کنید
می خواهید به تغییرات در تصویر دیسک نگاه کنید. در سطح API که مربوط به تماس است
"guestfs_shutdown" به دنبال "guestfs_launch" که یک عملیات سنگین وزن است (نگاه کنید به
همچنین guestfs-performance(3).

برخی از هک‌های پشتیبانی‌نشده وجود دارد که اگر راه‌اندازی مجدد دستگاه واقعاً هم باشد، می‌توانید آنها را امتحان کنید
گران:

· "guestfs_drop_caches (g, 3)" را فراخوانی کنید. این باعث می شود که تمام داده های کش شده توسط libguestfs کمک کند
هسته دستگاه (2) باید دور ریخته شود، بنابراین به تصویر دیسک باز می گردد.

با این حال این به خودی خود کافی نیست، زیرا qemu برخی از داده ها را نیز ذخیره می کند. شما
همچنین باید libguestfs را وصله کند تا حالت "cache=unsafe" (دوباره) فعال شود. دیدن:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· به جای آن از ابزاری مانند virt-bmap استفاده کنید.

· یک عامل را در داخل مهمان اجرا کنید.

اگر مهمان تغییرات اساسی تری ایجاد کند (مثلاً حذف سیستم های فایل) هیچ کمکی نمی کند.
برای چنین مواردی باید دستگاه را دوباره راه اندازی کنید.

(توجه داشته باشید مشکل سومی وجود دارد که برای بررسی واقعی باید از عکس های فوری ثابت استفاده کنید
تصاویر زنده دیسک، اما این یک مشکل کلی با استفاده از libguestfs در برابر هر دیسک زنده است
تصویر.)

با استفاده از خدمات onworks.net از guestfs-faq آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

دستورات لینوکس

Ad