אנגליתצרפתיתספרדי

Ad


סמל OnWorks

guestfs-faq - מקוון בענן

הפעל את guestfs-faq בספק האירוח החינמי של OnWorks על אובונטו אונליין, פדורה אונליין, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

זוהי הפקודה guestfs-faq שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו בחינם כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

תָכְנִית:

שֵׁם


guestfs-faq - libguestfs שאלות נפוצות (שאלות נפוצות)

על אודות LIBGUESTFS


מה 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 / Red כובע / פדורה }?
לא!

libvirt אינה דרישה עבור libguestfs.

libguestfs עובד עם כל תמונת דיסק, כולל כאלה שנוצרו ב-VMware, KVM, qemu,
VirtualBox, Xen ועוד רבים אחרים, וכאלה שיצרת מאפס.

Red Hat נותן חסות (כלומר משלם עבור) פיתוח של libguestfs ומספר עצום של פתוחים אחרים
פרויקטי מקור. אבל אתה יכול להריץ libguestfs וכלי virt על הרבה לינוקס שונות
הפצות ו-Mac OS X. אנו מנסים כמיטב יכולתנו לתמוך בכל ההפצות של לינוקס כמדרגה ראשונה
אזרחים. כמה כלי virt הועברו ל-Windows.

איך עושה libguestfs לְהַשְׁווֹת ל אַחֵר כלים?
לעומת kpartx
Libguestfs נוקט בגישה שונה מ-kpartx. kpartx צריך root, ו-mounts
מערכות קבצים בליבת המארח (שיכולה להיות לא מאובטחת - ראה guestfs-security(1)).
Libguestfs מבודד את גרעין המארח שלך מאורחים, הוא גמיש יותר, ניתן לתסריט,
תומך ב-LVM, אינו דורש שורש, מבודד מתהליכים אחרים ומנקה
אחרי עצמו. Libguestfs הוא יותר מסתם גישה לקבצים כי אתה יכול להשתמש בו
ליצור תמונות מאפס.

לעומת vdfuse
vdfuse הוא כמו kpartx אבל עבור תמונות VirtualBox. ראה השוואת kpartx למעלה.
אתה יכול להשתמש ב-libguestfs על קבצי המחיצות שנחשפו על ידי vdfuse, למרות שזה לא
הכרחי מכיוון ש-libguestfs יכול לגשת ישירות לתמונות VirtualBox.

לעומת qemu-nbd
NBD (Network Block Device) הוא פרוטוקול לייצוא התקני בלוק דרך הרשת.
qemu-nbd הוא שרת NBD שיכול להתמודד עם כל פורמט דיסק הנתמך על ידי qemu (למשל raw,
qcow2). אתה יכול להשתמש ב-libguestfs וב-qemu-nbd או nbdkit יחד כדי לגשת לחסימה
התקנים דרך הרשת, לדוגמה: "guestfish -a nbd://remote"

לעומת הַרכָּבָה מערכות קבצים in מה היא המארח
הרכבה של מערכות קבצים אורח במארח אינה מאובטחת ויש להימנע ממנה לחלוטין
לאורחים לא מהימנים. השתמש ב-libguestfs כדי לספק שכבת הגנה מפני
מנצל את מערכת הקבצים. ראה גם mountainmount(1).

לעומת נפרד
Libguestfs תומך ב-LVM. Libguestfs משתמש ב-parted ומספק את רוב תכונות הפרדה
דרך ה-API של libguestfs.

מקבל עזרה ו דיווח באגים


איך do I לדעת מה גרסה אני משתמש?
השיטה הפשוטה ביותר היא:

guestfish --גרסה

הפיתוח של Libguestfs מתרחש לאורך ענף לא יציב ואנו יוצרים מעת לעת א
ענף יציב שאליו אנו מעבירים תיקונים יציבים. למידע נוסף, קרא את "LIBGUESTFS
מספרי גרסה" ב guestfs(3).

איך יכול I לקבל לעזור?
מה דיוור רשימות or צ'אט חדרים יש לו זמין?
אם אתה לקוח Red Hat המשתמש ב-Red Hat Enterprise Linux, אנא צור קשר
תמיכה ב-Red Hat: http://redhat.com/support

יש רשימת תפוצה, בעיקר לפיתוח, אבל גם משתמשים מוזמנים לשאול
שאלות על libguestfs וכלי virt:
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-test-tool(1).

משותף בעיות


ראה גם "LIBGUESTFS GOTCHAS" ב 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 נכשל או שגרעין המארח לא יכול לאתחל. כדי להגיע רחוק יותר
מידע על הכישלון, עליך להריץ:

libguestfs-test-tool

אם לאחר השימוש בזה, עדיין לא הבנת את הכשל, צור איתנו קשר (ראה קודם
סָעִיף).

libguestfs: שְׁגִיאָה: לא יכול למצוא כל מַתְאִים libguestfs סופרמין, קבוע or סגנון ישן מכשיר
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: הורה בספרייה לֹא מצא
supermin-helper: ext2: הורה בספרייה לֹא מצא
[בעיה זו תוקנה לצמיתות ב-libguestfs ≥ 1.26.]

אם אתה רואה אחת מהשגיאות הללו בדביאן/אובונטו, עליך להפעיל את הפקודה הבאה:

sudo update-guestfs-appliance

"רְשׁוּת הוכחש" מתי ריצה libguestfs as שורש
אתה מקבל שגיאת הרשאה נדחתה בעת פתיחת תמונת דיסק, למרות שאתה פועל
libguestfs כשורש.

זה נגרם על ידי libvirt, ולכן קורה רק כאשר משתמשים ב-backend של libvirt. כאשר רצים
בתור root, libvirt מחליט להפעיל את מכשיר ה-qemu כמשתמש "qemu.qemu". לצערי
זה בדרך כלל אומר ש-qemu לא יכול לפתוח תמונות דיסק, במיוחד אם תמונות דיסק אלו
בבעלות שורש, או נמצאים בספריות הדורשות גישת שורש.

יש באג פתוח נגד libvirt כדי לתקן את זה:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

אתה יכול לעקוף זאת באחת מהשיטות הבאות:

· עבור לחלק האחורי הישיר:

ייצוא LIBGUESTFS_BACKEND=ישיר

· אל תפעיל את libguestfs כשורש.

· שנו את תמונת הדיסק וכל ספריות אב כך שמשתמש ה-qemu יוכל לגשת אליהם.

· (מגעיל) עריכה /etc/libvirt/qemu.conf ושנה את ההגדרה "משתמש".

excl: /init: רשות נדחתה
הערה: אם שגיאה זו מתרחשת כאשר אתה משתמש בחבילת הפצה של libguestfs (למשל מ
פדורה, דביאן וכו') ואז הגישו באג נגד ההפצה. זו לא שגיאה אשר
משתמשים רגילים צריכים אי פעם לראות אם חבילת ההפצה הוכנה כהלכה.

שגיאה זו מתרחשת במהלך שלב האתחול של supermin של הפעלת המכשיר:

supermin: הרכבה על שורש חדש / שורש
supermin: chroot
execl: /init: ההרשאה נדחתה
supermin: debug: ספריית רישום /
[... ואחריו הרבה פלט ניפוי באגים...]

זהו באג מסובך הקשור אליו supermin(1) מכשירי חשמל. המכשיר בנוי
על ידי העתקת קבצים כמו / bin / bash וספריות רבות מהמארח. הקובץ "hostfiles"
מפרט את הקבצים שיש להעתיק מהמארח למכשיר. אם כמה קבצים
לא קיימים במארח אז הם מוחמצים, אבל אם יש צורך בקבצים האלה לפי הסדר
לרוץ (למשל). / bin / bash אז תראה את השגיאה שלמעלה.

אבחון הבעיה כרוך בלימוד הספריות הנדרשות על ידי / bin / bash, כלומר:

Ldd / bin / bash

השוואה בין זה ל-"hostfiles", עם הקבצים הזמינים בפועל במערכת הקבצים המארחת,
ועם פלט ניפוי הבאגים מודפס בהודעת השגיאה. לאחר שהבנת איזה קובץ
חסר, התקן את הקובץ באמצעות מנהל החבילות שלך ונסה שוב.

אתה צריך גם לבדוק שקבצים כמו /init ו / bin / bash (במכשיר) הם
בר הפעלה. פלט ניפוי הבאגים מציג מצבי קובץ.

מוריד, מתקין, קומפילציה LIBGUESTFS


איפה יכול I לקבל מה היא האחרון בינאריות ל ...
פדורה ≥ 11
שימוש:

יאמ התקן את '*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" כדי לקבל תמיכת אורחים של Windows.

דביאן ואובונטו
עבור libguestfs < 1.26, לאחר התקנת libguestfs עליך לבצע:

sudo update-guestfs-appliance

(הסקריפט הזה הוסר ב-Debian/Ubuntu עם libguestfs ≥ 1.26 ובמקום זאת
המכשיר נבנה לפי דרישה.)

באובונטו בלבד:

sudo chmod 0644 /boot/vmlinuz*

ייתכן שתצטרך להוסיף את עצמך לקבוצת "kvm":

sudo usermod -a -G kvm yourlogin

לחץ על דביאן (6)
Hilko Bengen בנה libguestfs ב-squeeze backports:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports

דביאן וויזי ואילך (7+)
Hilko Bengen תומך ב-libguestfs בדביאן. חבילות דביאן הרשמיות הן
זמין: http://packages.debian.org/search?keywords=libguestfs

אובונטו
אין לנו מנהל אובונטו במשרה מלאה, והחבילות שמסופקות על ידי
קנוניקל (שהם מחוץ לשליטתנו) נשברים לפעמים.

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 על ידי אנדריס וינוגרדובס (libguestfs) ו
מקסים קולצוב (בעיקר כוורת). לַעֲשׂוֹת:

emerge libguestfs

שוויץ
Libguestfs נוספה ל-SuSE ב-2012 על ידי אולף הרינג.

ArchLinux
Libguestfs נוספה ל-AUR ב-2010.

הפצת לינוקס אחרת
קומפילציה ממקור (סעיף הבא).

הפצה אחרת שאינה בלינוקס
תצטרך לקמפל ממקור, ולהעביר אותו.

איך יכול I לעבד ו להתקין libguestfs החל מ- מקור?
אתה יכול לקמפל libguestfs מ-git או מ-tarball מקור. קרא את קובץ README לפני
מתחיל.

Git: https://github.com/libguestfs/libguestfs Tarballs מקור:
http://libguestfs.org/download

אל תפעיל את "עשה התקנה"! להשתמש ב "./ לרוץ" במקום זאת (ראה README).

איך יכול I לעבד ו להתקין libguestfs if my הפצה לא יש חדש מספיק
qemu/supermin/kernel?
Libguestfs צריך את supermin 5. אם supermin 5 לא הועבר להפצה שלך, ראה
השאלה למטה.

תחילה הידור qemu, supermin ו/או הקרנל מהמקור. אתה כן לֹא צריך לעשות
להתקין" אותם.

בספריית המקור libguestfs, צור שני קבצים. "localconfigure" צריך להכיל:

מקור localenv
#export PATH=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --prefix / 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 בתור
רָגִיל.

אל תפעיל את "עשה התקנה"! להשתמש ב "./ לרוץ" במקום זאת (ראה README).

איך יכול I לעבד ו להתקין libguestfs לְלֹא סופרמין?
אם סופרמין 5 תומך בדיסטרו שלך, אבל במקרה אין לך סופרמין חדש מספיק
מותקן, ואז עיין בשאלה הקודמת.

אם Supermin 5 לא תומך בכלל בהפצה שלך, תצטרך להשתמש ב-"fixed
שיטת מכשיר" שבה אתה משתמש במכשיר בינארי שהורכב מראש. כדי לבנות libguestfs
ללא supermin, אתה צריך להעביר את "--disable-appliance --disable-daemon" לכל אחד מהם
./autogen.sh or . / קביעת תצורה של (תלוי אם אתה בונה בהתאמה מ-git או
מ-tarballs). לאחר מכן, כאשר אתה משתמש ב-libguestfs, אתה צריך הגדר את "LIBGUESTFS_PATH"
משתנה סביבה לספרייה של מכשיר שהורכב מראש, כפי שמתואר גם ב
"מכשיר קבוע" ב guestfs(3).

למכשירים מורכבים מראש, ראה גם: http://libguestfs.org/download/binaries/appliance/.

תיקונים להעברת supermin להפצות לינוקס נוספות יתקבלו בברכה.

איך יכול I להוסיף תמיכה ל sVirt?
הערות ל פדורה/RHEL משתמשים: תצורה זו היא ברירת המחדל החל מ-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 למצב Enforcing, ויש להשתמש ב-sVirt באופן אוטומטי.

כל, או כמעט כל, התכונות של libguestfs צריכות לעבוד תחת sVirt. יש אחד ידוע
חִסָרוֹן: וירט-הצלה(1) לא ישתמש ב-libvirt (ולכן sVirt), אבל יחזור ל-direct
השקת qemu. אז לא תקבל כרגע את היתרון של הגנת 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, רהל 7
ב-Fedora ≥ 18 ו- RHEL ≥ 7, libguestfs משתמש ב-libvirt כדי לנהל את המכשיר. קוֹדֶם
(ומעלה הזרם) libguestfs מריץ את qemu ישירות:

┌──────────────────────────────────
│ libguestfs │
├────────────────┬──────────────────
│ קצה אחורי ישיר │ קצה אחורי libvirt │
└────────────────┴──────────────────
↓ ↓
┌───────┐ ┌──────────┐
│ qemu │ │ libvirtd │
└───────┘ └──────────┘

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

במעלה הזרם פדורה 18+
שאינו פדורה RHEL 7+
לא RHEL

הקצה האחורי של libvirt מתוחכם יותר, תומך ב-SELinux/sVirt (ראה למעלה),
חיבור חם ועוד. עם זאת, זה מורכב יותר ולכן פחות חזק.

אם יש לך בעיות הרשאות באמצעות ה-backend של 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)
דף ידני.

מְהִירוּת, דִיסק SPACE מְשׁוּמָשׁ BY LIBGUESTFS


הערה: רוב המידע בסעיף זה עבר: ביצוע guestfs(1).

העלה or לכתוב נראה מאוד לְהַאֵט.
אם הדיסק הבסיסי אינו מוקצה במלואו (למשל, sparse raw או qcow2), הכתיבה יכולה להיות
איטי מכיוון שמערכת ההפעלה המארחת צריכה לבצע הקצאות דיסק יקרות בזמן שאתה נמצא
כְּתִיבָה. הפתרון הוא להשתמש בפורמט שהוקצה במלואו במקום זאת, כלומר. גלם לא דליל, או
qcow2 עם האפשרות "preallocation=metadata".

Libguestfs שימושים גַם הרבה דיסק מֶרחָב!
libguestfs מאחסן מכשיר גדול בקובץ:

/var/tmp/.guestfs-

אם משתנה הסביבה "TMPDIR" מוגדר, אז $TMPDIR/.guestfs- משמש
במקום.

זה בטוח למחוק ספרייה זו כאשר אינך משתמש ב-libguestfs.

וירט-ספייס נראה ל לעשות מה היא תמונה לגדול ל מה היא מלא גודל of מה היא וירטואלי דיסק
אם הקלט ל וירט-ספייס(1) הוא גולמי, ואז התפוקה תהיה דלילה גולמית. לוודא
אתה מודד את הפלט עם כלי שמבין דלילות כגון "דו -ש".
זה יכול לעשות הבדל עצום:

$ ls -lh test1.img
-רוו-רוו-ר--. 1 rjones rjones 100M 8 באוגוסט 08:08 test1.img
$ du -sh test1.img
3.6M test1.img

(השווה את הגודל הנראה 100 מ"ר לעומת הגודל האמיתי 3.6 מ"ר)

אם כל זה מבלבל אותך, השתמש בפורמט פלט לא דליל על ידי ציון ה- --להמיר
אפשרות, למשל:

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

למה לא וירט-שינוי גודל לעבוד on מה היא דיסק תמונה במקום?
שינוי גודל תמונת דיסק הוא מאוד מסובך -- במיוחד לוודא שלא תאבד נתונים או
לשבור את טוען האתחול. השיטה הנוכחית יוצרת למעשה תמונת דיסק חדשה ומעתיקה
טוען את הנתונים פלוס מהישן. אם משהו משתבש, אתה תמיד יכול ללכת
חזרה למקור.

אם היינו עושים עבודה בגודל וירט במקום, אז יצטרכו להיות מגבלות: עבור
לדוגמה, לא תורשה להעביר מחיצות קיימות (מכיוון שהעברת נתונים על פני
אותו דיסק צפוי להשחית נתונים במקרה של הפסקת חשמל או התרסקות),
ו-LVM יהיה קשה מאוד לתמוך (בגלל המיפוי הכמעט שרירותי
בין תוכן LV לבין בלוקים של דיסקים בסיסיים).

שיטה נוספת ששקלנו היא למקם תמונת מצב מעל תמונת הדיסק המקורית, אז
שהנתונים המקוריים אינם נגועים ורק הבדלים נרשמים בתמונת המצב.
אתה יכול לעשות זאת היום באמצעות "qemu-img create" + "virt-resize", אבל qemu כרגע לא
חכם מספיק כדי לזהות מתי אותו בלוק נכתב בחזרה לתמונת המצב כמו כבר
קיים בדיסק הגיבוי, כך שתגלה שזה לא חוסך לך מקום או זמן.

לסיכום, זו בעיה קשה, ומה שיש לנו עכשיו בעיקר עובד אז אנחנו נרתעים
לשנות את זה.

למה לא וירט-ספייס לעבוד on מה היא דיסק תמונה במקום?
ב-libguestfs ≥ 1.26, virt-sparsify יכול כעת לעבוד על תמונות דיסק במקום. להשתמש:

virt-sparsify --in-place disk.img

אבל תחילה עליך לקרוא את "SPARSIFICATION IN-PLACE" ב וירט-ספייס(1).

בעיות פתוח דִיסק IMAGES


מרוחק libvirt אורחים לא יכול 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. ראה "מרחוק
אחסון" ב guestfs(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 זֶה qemu גִרְסָה:
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 BSD) לא יכול be נפתח.
לפורמט של מערכת הקבצים UFS יש גרסאות רבות, והן אינן מזהות את עצמן. ה
יש לומר לגרעין הלינוקס באיזו גרסה של UFS עליה להשתמש, מה ש-libguestfs לא יכול
יודע.

עליך להעביר את אפשרות ההרכבה הנכונה "ufstype" בעת הרכבה של מערכות קבצים אלה.

ראה https://www.kernel.org/doc/Documentation/filesystems/ufs.txt

Windows השופטים
Windows ReFS הוא עותק ZFS/Btrfs של מיקרוסופט. מערכת הקבצים הזו עדיין לא הייתה הפוכה
מהונדס ומיושם בליבת לינוקס, ולכן libguestfs אינו תומך
זה. כרגע נראה שזה נדיר מאוד "בטבע".

ללא ASCII תווים לא לְהוֹפִיעַ on VFAT מערכות קבצים.
תסמינים אופייניים לבעיה זו:

· אתה מקבל שגיאה כאשר אתה יוצר קובץ שבו שם הקובץ מכיל לא-ASCII
תווים, במיוחד תווים שאינם 8 סיביות משפות אסיה (סינית, יפנית,
וכו). מערכת הקבצים היא VFAT.

· כאשר אתה מפרט ספרייה ממערכת קבצים VFAT, שמות הקבצים מופיעים כסימני שאלה.

זהו ליקוי עיצובי של מערכת GNU/Linux.

VFAT מאחסן שמות קבצים ארוכים כתווי UTF-16. בעת פתיחה או החזרה של שמות קבצים, ה
ליבת לינוקס צריכה לתרגם אותם לצורה כלשהי של מחרוזת 8 סיביות. UTF-8 יהיה
בחירה ברורה, למעט משתמשי לינוקס שמתמידים בשימוש במקומות שאינם UTF-8 (של המשתמש
ה-loce אינו ידוע לקרנל מכיוון שהוא פונקציה של libc).

לכן אתה צריך להגיד לקרנל איזה תרגום אתה רוצה לעשות כשאתה מעלה את
מערכת קבצים. שתי השיטות הן פרמטר "iocharset" (שאינו רלוונטי ל
libguestfs) והדגל "utf8".

אז כדי להשתמש במערכת קבצים VFAT עליך להוסיף את הדגל "utf8" בעת ההרכבה. מדג אורח,
לְהִשְׁתַמֵשׁ:

> אפשרויות mount utf8 /dev/sda1 /

או בשורת הפקודה guestfish:

דג אורח [...] -m /dev/sda1:/:utf8

או מה-API:

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

לאחר מכן, הקרנל יתרגם שמות קבצים אל וממחרוזות UTF-8.

שקלנו להוסיף את אפשרות הרכבה זו בשקיפות, אך למרבה הצער יש כמה
בעיות לעשות את זה:

· במערכות לינוקס מסוימות, אפשרות ההרכבה "utf8" לא עובדת. אנחנו לא בדיוק
להבין אילו מערכות או למה, אבל זה דווח בצורה מהימנה על ידי משתמש אחד.

· זה ימנע ממך להשתמש בפרמטר "iocharset" מכיוון שהוא אינו תואם
עם "utf8". כנראה שזה לא רעיון טוב להשתמש בפרמטר הזה, אבל אנחנו לא רוצים
כדי למנוע את זה.

ללא ASCII תווים לְהוֹפִיעַ as מדגיש (_) on ISO9660 מערכות קבצים.
מערכת הקבצים לא הוכנה כהלכה עם mkisofs או genisoimage. ודא ש
מערכת הקבצים נוצרה באמצעות הרחבות Joliet ו/או Rock Ridge. libguestfs לא
דורשים אפשרויות הרכבה מיוחדות כדי לטפל במערכת הקבצים.

לא יכול לפתוח Windows אורחים אשר להשתמש NTFS.
אתה רואה שגיאות כמו:

mount: סוג מערכת קבצים לא ידוע 'ntfs'

ב-Red Hat Enterprise Linux או CentOS, עליך להתקין את libguestfs-winsupport
חֲבִילָה.

לא יכול לפתוח or לבדוק רהל 7 אורחים.
לא יכול לפתוח לינוקס אורחים אשר להשתמש XFS.
אורחים RHEL 7, וכל אורח אחר שמשתמש ב-XFS, יכול להיפתח על ידי libguestfs, אבל אתה
יש להתקין את החבילה "libguestfs-xfs".

משתמש LIBGUESTFS IN שֶׁלְךָ שֶׁלוֹ תוכניות


אל האני API יש ל מאות of שיטות, איפה do I להתחיל?
אנו ממליצים לך להתחיל בקריאה של סקירת ה-API: "סקירת API" ב guestfs(3).

למרות שסקירת ה-API מכסה את C API, עדיין כדאי לקרוא אותה גם אם כן
הולך להשתמש בשפת תכנות אחרת, כי ה-API זהה, רק עם פשוט
שינויים לוגיים בשמות השיחות:

C guestfs_ln_sf (g, יעד, שם קישור);
Python g.ln_sf (יעד, שם קישור);
Ocaml g#ln_sf שם קישור יעד;
Perl $g->ln_sf (יעד, שם קישור);
Shell (Guestfish) שם קישור היעד ln-sf
PHP guestfs_ln_sf ($g, $target, $linkname);

לאחר שתכיר את סקירת ה-API, עליך להסתכל על רשימת התחלות זו
נקודות עבור כריכות שפות אחרות: "USING LIBGUESTFS WITH OTHER PROGRAMMING LANGUAGES" ב
guestfs(3).

פחית I להשתמש libguestfs in my קניינית / סגור מָקוֹר / מסחרי תכנית?
באופן כללי, כן. אולם לא מדובר בייעוץ משפטי - קרא את הרישיון המצורף
libguestfs, ואם יש לך שאלות ספציפיות פנה לעורך דין.

בעץ המקור הרישיון נמצא בקובץ "COPYING.LIB" (LGPLv2+ עבור הספרייה ו-
כריכות) ו-"COPYING" (GPLv2+ עבור התוכניות העצמאיות).

פיתרון LIBGUESTFS


עזרה, זה לֹא עובד!
אם לא נראה שתוכנית libguestfs עובדת בכלל, הפעל את התוכנית למטה והדבק את ה
לְהַשְׁלִים, לא ערוך פלט למייל אל "libguestfs" @ "redhat.com":

libguestfs-test-tool

אם פעולה מסוימת נכשלת, ספק את כל המידע ברשימת הבדיקה הזו באימייל
אל "libguestfs" @ "redhat.com":

1. מה אתה מנסה לעשות?

2. איזה פקודות בדיוק הרצת?

3. מה הייתה השגיאה או הפלט המדויק של הפקודות הללו?

4. אפשר איתור באגים, הפעל שוב את הפקודות ולכד את להשלים פלט. Do לֹא
עריכה מה היא פלט.

ייצא 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 בפורמט שבו
דומה לפקודות דג אורח.

"LIBGUESTFS_DEBUG"
הגדר את זה ל-1 כדי לאפשר כמויות אדירות של הודעות ניפוי באגים. אם אתה חושב
יש בעיה כלשהי במכשיר libguestfs, אז אתה צריך להשתמש בזה
אוֹפְּצִיָה.

כדי להגדיר אותם מהמעטפת, עשה זאת לפני הפעלת התוכנית:

ייצא LIBGUESTFS_TRACE=1
ייצא LIBGUESTFS_DEBUG=1

עבור csh/tcsh הפקודות המקבילות יהיו:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

למידע נוסף, ראה: "משתני סביבה" ב guestfs(3).

איך do I באגים מתי באמצעות דג אורח?
אתה יכול להשתמש באותם משתני סביבה לעיל. לחלופין השתמש באפשרויות דג האורח
-x (למעקב אחר פקודות) או -v (כדי לקבל את פלט ניפוי הבאגים המלא), או שניהם.

למידע נוסף ראו: דג אורח(1).

איך do I באגים מתי באמצעות מה היא ממשק API?
התקשר ל-"guestfs_set_trace" ב guestfs(3) כדי לאפשר עקבות פקודה, ו/או
"guestfs_set_verbose" ב guestfs(3) כדי לאפשר הודעות ניפוי באגים.

לקבלת התוצאות הטובות ביותר, התקשר לפונקציות הללו מוקדם ככל האפשר, מיד לאחר יצירת ה-
guestfs מטפלים אם אתה יכול, ובהחלט לפני קורא להשיק.

איך do I ללכוד באגים תפוקה ו גם it אל תוך my רישום מערכת?
השתמש ב-API לאירועים. לדוגמאות, ראה: "הגדרת התקשרות חוזרת לטיפול באירועים" ב guestfs(3)
ו examples/debug-logging.c תוכנית במקורות libguestfs.

חפירה עמוק יותר אל תוך מה היא מכשיר אתחול התהליך.
אפשר איתור באגים ולאחר מכן קרא את התיעוד הזה על תהליך האתחול של המכשיר:
guestfs-פנימיים(1).

libguestfs נתקע or נכשל בְּמַהֲלָך הפעלה/השקה.
אפשר איתור באגים והסתכל על הפלט המלא. אם אתה לא מצליח להבין מה קורה,
להגיש דוח באג, כולל ה להשלים תפוקה של libguestfs-test-tool(1).

Debugging libvirt
אם אתה משתמש בקצה האחורי של libvirt, ו-libvirt נכשל, אז אתה יכול להפעיל
איתור באגים על ידי עריכה /etc/libvirt/libvirtd.conf.

אם אתה פועל ללא שורש, עליך לערוך קובץ אחר. לִיצוֹר
~/.config/libvirt/libvirtd.conf המכיל:

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

הרוג כל libvirtd של סשן (שאיננו שורש) שפועל, ובפעם הבאה שתפעיל את ה-libguestfs
הפקודה, אתה אמור לראות כמות גדולה של מידע שימושי באגים מ-libvirtd in
/tmp/libvirtd.log

עיצוב/פנימיות OF LIBGUESTFS


ראה גם guestfs-פנימיים(1).

למה לא אתה do הכל דרך מה היא FUSE / מערכת קבצים מִמְשָׁק?
אנו מציעים פקודה בשם mountainmount(1) המאפשר לך להעלות מערכות קבצים אורחות על
מנחה. זה מיושם כמודול FUSE. למה שלא ניישם את כולו
libguestfs באמצעות מנגנון זה, במקום לקבל את ה-API הגדול והמסובך למדי?

הסיבות הן כפולות. ראשית, libguestfs מציע קריאות API לביצוע דברים כמו
יצירה ומחיקה של מחיצות ואמצעי אחסון לוגיים, שאינם מתאימים למערכת קבצים
דגם בקלות רבה. או ליתר דיוק, אתה יכול להתאים אותם: למשל, יצירת מחיצה
ניתן למפות ל"mkdir /fs/hda1" אבל אז תצטרך לציין שיטה כלשהי לבחור
גודל המחיצה (אולי "echo 100M > /fs/hda1/.size"), וסוג המחיצה,
מגזרי התחלה וסיום וכו', אבל ברגע שעשית זאת ה-API מבוסס מערכת הקבצים מתחיל
נראה מסובך יותר מה-API מבוסס-השיחות שיש לנו כרגע.

הסיבה השנייה היא ליעילות. FUSE עצמו יעיל למדי, אבל כן
לבצע הרבה שיחות קטנות ועצמאיות למודול FUSE. ב-guestmount אלה חייבים
יתורגמו להודעות למכשיר libguestfs שיש לו תקורה גדולה (בזמן
וטיולים הלוך ושוב). לדוגמה, קריאת קובץ בנתחים של 64 KB אינה יעילה מכיוון שכל אחד מהם
נתח יהפוך לסיבוב בודד. ב-libguestfs API זה הרבה יותר
יעיל להוריד קובץ או ספרייה שלמים דרך אחת משיחות הסטרימינג כמו
"guestfs_download" או "guestfs_tar_out".

למה לא אתה do הכל דרך GVFS?
הבעיות דומות לבעיות ב-FUSE.

GVFS היא הפשטה טובה יותר מ-POSIX/FUSE. יש FTP backend עבור GVFS, כלומר
מעודד מכיוון ש-FTP דומה מבחינה רעיונית ל-Libguestfs API. עם זאת ה-GVFS
FTP backend יוצר מספר חיבורים בו זמנית על מנת לשמור על אינטראקטיביות, אשר
אנחנו לא יכולים לעשות בקלות עם libguestfs.

למה יכול I לכתוב ל מה היא דִיסק, גם למרות ש I הוסיף it לקריאה בלבד?
למה עושה "--רו" לְהוֹפִיעַ ל יש לא השפעה?
כאשר אתה מוסיף דיסק לקריאה בלבד, libguestfs מציב שכבת-על הניתנת לכתיבה על גבי ה-
הדיסק הבסיסי. כתובות נכנסות לשכבת-העל הזו, ונזרקות כשהידית סגורה
(או יציאות "דג אורח" וכו').

ישנן שתי סיבות לעשות זאת בדרך זו: ראשית, דיסקים לקריאה בלבד אינם אפשריים
מקרים רבים (למשל, IDE פשוט לא תומך בהם, כך שלא יכול להיות שיש לך חיקוי IDE
דיסק לקריאה בלבד, למרות שזה לא נפוץ בהתקנות אמיתיות של libguestfs).

שנית וחשוב יותר, גם אם דיסקים לקריאה בלבד היו אפשריים, לא הייתם רוצים
אוֹתָם. הרכבה של כל מערכת קבצים שיש לה יומן, אפילו "mount -o ro", גורמת לכתיבה ל
מערכת הקבצים כי יש להפעיל מחדש את היומן ולעדכן מטא נתונים. אם הדיסק
היה באמת לקריאה בלבד, לא תוכל להעלות מערכת קבצים מלוכלכת.

כדי להפוך אותו לשימוש, אנו יוצרים את שכבת-העל כמקום לאחסון זמני של כתובות אלה, ו
ואז אנחנו פוסלים את זה אחר כך. זה מבטיח שהדיסק הבסיסי תמיד לא נגוע.

שימו לב גם שיש מבחן רגרסיה עבור זה בעת בניית libguestfs (ב
"בדיקות/קמו"). זו אחת הסיבות לכך שחשוב לאריזות להפעיל את חבילת הבדיקה.

האם "--רו" לעשות את כל דיסקים לקריאה בלבד?
לא! האפשרות "--ro" משפיעה רק על דיסקים שנוספו בשורת הפקודה, כלומר. באמצעות "-a" ו
אפשרויות "-d".

ב-guestfish, אם אתה משתמש בפקודה "הוסף", הדיסק נוסף קריאה-כתיבה (אלא אם כן אתה
ציין את הדגל "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 --ro -a guest.img
> לָרוּץ
> fsck /dev/sda1

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

והשאלה הקשורה שעולה אז היא מדוע אינך יכול להקליד פקודות מעטפת מלאה
עם כל האפשרויות -- ב- guestfish (אבל אתה יכול להיכנס וירט-הצלה(1)).

דג אורח(1) היא תוכנית המספקת גישה מובנית ל- guestfs(3) API. זה קורה
להיות גם מעטפת אינטראקטיבית נחמדה, אבל המטרה העיקרית שלה היא גישה מובנית מ
סקריפטים של מעטפת. תחשוב על זה יותר כמו כריכת שפה, כמו פייתון וכריכות אחרות,
אלא למעטפת. הגורם המבדיל העיקרי של guestfish (וה-API של libguestfs ב
כללי) היא היכולת להפוך שינויים לאוטומטיים.

וירט-הצלה(1) היא דרך חופשית לכול לאתחל את התקן libguestfs וליצור
שינויים שרירותיים ב-VM שלך. זה לא מובנה, אתה לא יכול להפוך את זה לאוטומטי, אלא ליצירה
תיקונים אד-הוק מהירים לאורחים שלך, זה יכול להיות שימושי למדי.

אבל, ל-libguestfs יש גם "דלת אחורית" למכשיר המאפשרת לך לשלוח שרירות
פקודות מעטפת. זה לא גמיש כמו וירט-הצלה, כי אתה לא יכול ליצור אינטראקציה עם
פקודות מעטפת, אבל הנה זה בכל זאת:

> באגים sh "cmd arg1 arg2 ..."

שימו לב שכדאי לכם לֹא להסתמך על זה. זה יכול להיות מוסר או לשנות בעתיד. אם שלך
התוכנית צריכה פעולה כלשהי, בבקשה הוסף אותה לממשק ה-API של libguestfs במקום זאת.

מה זה מה היא עסקה עם "דג אורח -אני"?
למה עושה וירט-חתול רק לעבוד on a ממשי VM תמונה, אבל virt-df עובד on כל דיסק תמונה?
מה עושה "לא שורש מכשיר מצא in זֶה פועל מערכת תמונה" אומר?
שאלות אלו קשורות כולן ברמה בסיסית שאולי אינה מיידית
ברור.

ב guestfs(3) רמת API, "תמונת דיסק" היא רק ערימה של מחיצות ומערכות קבצים.

לעומת זאת, כשהמכונה הוירטואלית מאתחלת, היא מעלה את מערכות הקבצים הללו למערכת עקבית
היררכיה כגון:

/ (/dev/sda2)

├── / אתחול (/dev/sda1)

├── / בית (/dev/vg_external/Homes)

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

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

(או אותיות כונן ב-Windows).

ה-API קודם כל רואה את תמונת הדיסק ברמת "ערימת מערכות הקבצים". אבל זה גם
יש דרך לבדוק את תמונת הדיסק כדי לראות אם היא מכילה מערכת הפעלה, וכיצד
דיסקים מותקנים כאשר מערכת ההפעלה מאתחלת: "INSPECTION" ב guestfs(3).

משתמשים מצפים לכמה כלים (כמו וירט-חתול(1)) כדי לעבוד עם נתיבי VM:

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

איך וירט-חתול יודע את זה / var האם מחיצה נפרדת? החוכמה היא החתול הווירטי הזה
מבצע בדיקה בתמונת הדיסק, ומשתמש בה כדי לתרגם את הנתיב בצורה נכונה.

כמה כלים (כולל וירט-חתול(1), virt-edit(1), virt-ls(1)) השתמש בבדיקה למיפוי VM
שבילים. כלים אחרים, כגון virt-df(1) ו virt-filesystems(1) פועל כולו ב-
רמת "ערימה גדולה של מערכות קבצים" של ה-API של libguestfs, ואל תשתמש בבדיקה.

דג אורח(1) נמצא בנקודת ביניים מעניינת. אם אתה משתמש ב -a ו -m שורת הפקודה
אפשרויות, אז אתה צריך להגיד ל-guestfish בדיוק איך להוסיף תמונות דיסק ואיפה לעלות
מחיצות. זוהי רמת ה-API הגולמית.

אם אתה משתמש -i אפשרות, libguestfs מבצע בדיקה ומעלה את מערכות הקבצים עבור
לך.

השגיאה "לא נמצא התקן שורש בתמונת מערכת ההפעלה הזו" קשורה לכך. זה
פירוש הדבר שהבדיקה לא הצליחה לאתר מערכת הפעלה בתוך תמונת הדיסק שנתת
זה. ייתכן שתראה את זה מתוכנות כמו virt-cat אם תנסה להפעיל אותן על משהו
שהיא רק תמונת דיסק, לא תמונת דיסק של מכונה וירטואלית.

מה do אלה "לנפות*" ו "פְּנִימִי-*" פונקציות לַעֲשׂוֹת?
ישנן כמה פונקציות המשמשות לניפוי באגים ולמטרות פנימיות שהן לֹא
חלק מה-API היציב.

הפונקציות "debug*" (או "guestfs_debug*") מתפקדות, בעיקר "guestfs_debug" ב guestfs(3) ו
קומץ אחרים, משמשים לאיתור באגים של libguestfs. למרות שהם לא חלק מה
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
יחול עיכוב עד שהפרסום שלך יאושר באופן ידני.

אנא לא להשתמש GitHub למשוך בקשות - הֵם יצטרך be התעלם. הסיבות הן (א) שאנחנו רוצים
לדון ולנתח תיקונים ברשימת התפוצה, ו-(ב) בקשות משיכה של github הופכות ל
מיזוג commits אבל אנחנו מעדיפים שתהיה לנו היסטוריה ליניארית.

איך do I להציע a תכונה?
יש לדון ברשימת התפוצה של תכונות חדשות וגדולות שאתה מתכוון לתרום
תחילה (https://www.redhat.com/mailman/listinfo/libguestfs). זה מונע אכזבה
ובזבוז עבודה אם אנחנו לא חושבים שהתכונה תתאים לפרויקט libguestfs.

אם אתה רוצה להציע תכונה שימושית אבל לא רוצה לכתוב את הקוד, אתה יכול להגיש א
באג (ראה "קבלת עזרה ודיווח על באגים") עם "RFE: " בתחילת הסיכום
קו.

מי יכול לבצע ל libguestfs git?
לכ-5 אנשים יש גישה ל-github. תחילה יש לפרסם תיקונים ברשימה
ו-ACKed. המדיניות עבור ACKing ודחיפה של תיקונים מתוארת כאן:

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

פחית I מזלג libguestfs?
כמובן שאתה יכול. Git מקל על חלוקת libguestfs. Github עושה את זה אפילו יותר קל.
נחמד אם תספרו לנו ברשימת התפוצה על מזלגות והסיבות לכך.

שונות שאלות


פחית I צג מה היא לחיות דיסק פעילות of a וירטואלי מכונה באמצעות libguestfs?
בקשה נפוצה היא להיות מסוגל להשתמש ב-libguestfs כדי לנטר את פעילות הדיסק החי של א
אורח, למשל, כדי לקבל התראה בכל פעם שאורח יוצר קובץ חדש. Libguestfs
עושה לֹא עבדו בצורה שחלק מהאנשים מדמיינים, כפי שניתן לראות מהתרשים הזה:

┌───────────────────────────────────
│ תוכנית ניטור באמצעות libguestfs │
└────────────────────────────────────

┌───────────┐ ┌──────────────────────
│ VM חי │ │ מכשיר libguestfs │
├───────────┤ ├──────────────────────
│ גרעין (1)│ │ ליבת מכשיר (2) │
└───────────┘ └──────────────────────
↓ ↓ (חיבור r/o)
┌──────────────────────┐
| תמונת דיסק |
└──────────────────────┘

תרחיש זה בטוח (כל עוד אתה מגדיר את הדגל "לקריאה בלבד" בעת הוספת הכונן).
עם זאת, ליבת ה-libguestfs appliance (2) אינה רואה את כל השינויים שבוצעו בדיסק
תמונה, משתי סיבות:

אני. ליבת ה-VM (1) יכולה לשמור נתונים בזיכרון, כך שהם לא מופיעים בתמונת הדיסק.

ii. ליבת ההתקן של libguestfs (2) לא מצפה שתמונת הדיסק משתנה
מתחתיו, כך שהמטמון שלו לא מתעדכן בצורה קסומה אפילו כאשר ליבת ה-VM (1)
אכן מעדכן את תמונת הדיסק.

הפתרון היחיד הנתמך הוא להפעיל מחדש את כל התקן libguestfs בכל פעם שאתה
רוצה להסתכל על שינויים בתמונת הדיסק. ברמת ה-API המתאימה להתקשרות
"guestfs_shutdown" ואחריו "guestfs_launch", שהיא פעולה בעלת משקל כבד (ראה
גם ביצוע guestfs(3)).

ישנן כמה פריצות שאינן נתמכות שתוכל לנסות אם הפעלה מחדש של המכשיר היא באמת מדי
יקר:

· התקשר ל-"guestfs_drop_caches (g, 3)". זה גורם לכל הנתונים המאוחסנים במטמון לעזור על ידי libguestfs
ליבת ה-Appliance (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