यह वह कमांड है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि Ubuntu Online, Fedora Online, Windows online emulator या MAC OS online emulator में से किसी एक का उपयोग करके OnWorks मुफ्त होस्टिंग प्रदाता में चलाया जा सकता है।
कार्यक्रम:
नाम
guestfs-faq - libguestfs अक्सर पूछे जाने वाले प्रश्न (FAQ)
हमारे बारे में(ABOUT) Libguestfs
क्या is libguestfs?
libguestfs डिस्क इमेज बनाने, उन तक पहुंचने और उन्हें संशोधित करने का एक तरीका है। आप डिस्क के अंदर देख सकते हैं
छवियों को संपादित करें, उनमें मौजूद फ़ाइलों को संशोधित करें, उन्हें नए सिरे से बनाएँ, उनका आकार बदलें, और बहुत कुछ
यह स्क्रिप्ट और प्रोग्राम तथा कमांड लाइन से विशेष रूप से उपयोगी है।
libguestfs एक C लाइब्रेरी है (इसलिए "lib-"), और इस लाइब्रेरी पर निर्मित उपकरणों का एक सेट है, और
कई सामान्य प्रोग्रामिंग भाषाओं के लिए बाइंडिंग.
Libguestfs क्या कर सकता है, इसके बारे में अधिक जानकारी के लिए होम पेज पर परिचय पढ़ें
(http://libguestfs.org).
क्या रहे la पुण्य उपकरण?
वर्ट टूल्स (वेबसाइट: http://virt-tools.org) वर्चुअलाइजेशन प्रबंधन का एक संपूर्ण सेट है
सिस्टम प्रशासकों के लिए बनाए गए उपकरण। उनमें से कुछ libguestfs से आते हैं, कुछ
libvirt और कई अन्य ओपन सोर्स प्रोजेक्ट्स से। तो virt टूल्स का एक सुपरसेट है
libguestfs. हालाँकि libguestfs कई महत्वपूर्ण उपकरणों के साथ आता है। देखें
http://libguestfs.org एक पूरी सूची के लिए.
क्या कामेच्छा आवश्यकता { libvirt / केवीएम / लाल टोपी / फेडोरा }?
नहीं!
libguestfs के लिए libvirt आवश्यक नहीं है।
libguestfs किसी भी डिस्क छवि के साथ काम करता है, जिसमें VMware, KVM, qemu में बनाई गई छवियां भी शामिल हैं।
वर्चुअलबॉक्स, जेन, और कई अन्य हाइपरवाइजर, और वे जिन्हें आपने शुरू से ही बनाया है।
रेड हैट libguestfs और अन्य अनेक ओपन सोर्स सॉफ्टवेयर के विकास को प्रायोजित करता है (अर्थात् इसके लिए भुगतान करता है)।
स्रोत परियोजनाएँ। लेकिन आप libguestfs और virt टूल को कई अलग-अलग Linux पर चला सकते हैं
डिस्ट्रोस और मैक ओएस एक्स। हम सभी लिनक्स डिस्ट्रोस को प्रथम श्रेणी के रूप में समर्थन देने की पूरी कोशिश करते हैं
नागरिकों। कुछ virt उपकरण विंडोज के लिए पोर्ट किया गया है।
कैसे कर देता है कामेच्छा तुलना सेवा मेरे अन्य उपकरण?
बनाम केपार्टक्स
Libguestfs kpartx से अलग दृष्टिकोण अपनाता है। kpartx को रूट और माउंट की आवश्यकता होती है
होस्ट कर्नेल पर फ़ाइल सिस्टम (जो असुरक्षित हो सकता है - देखें Guestfs-सुरक्षा(1))।
Libguestfs आपके होस्ट कर्नेल को अतिथियों से अलग करता है, अधिक लचीला, स्क्रिप्ट योग्य है,
LVM का समर्थन करता है, रूट की आवश्यकता नहीं है, अन्य प्रक्रियाओं से अलग है, और साफ करता है
अपने आप के बाद। Libguestfs सिर्फ फ़ाइल एक्सेस से अधिक है क्योंकि आप इसका उपयोग कर सकते हैं
खरोंच से छवियाँ बनाएँ.
बनाम vdfuse
vdfuse kpartx जैसा ही है, लेकिन VirtualBox इमेज के लिए। ऊपर kpartx की तुलना देखें।
आप vdfuse द्वारा प्रदर्शित विभाजन फ़ाइलों पर libguestfs का उपयोग कर सकते हैं, हालाँकि यह नहीं है
यह आवश्यक है क्योंकि libguestfs सीधे वर्चुअलबॉक्स छवियों तक पहुंच सकता है।
बनाम qemu-nbd
एनबीडी (नेटवर्क ब्लॉक डिवाइस) नेटवर्क पर ब्लॉक डिवाइसों को निर्यात करने के लिए एक प्रोटोकॉल है।
qemu-nbd एक NBD सर्वर है जो qemu द्वारा समर्थित किसी भी डिस्क प्रारूप को संभाल सकता है (जैसे रॉ,
qcow2). आप ब्लॉक तक पहुँचने के लिए libguestfs और qemu-nbd या nbdkit का एक साथ उपयोग कर सकते हैं
नेटवर्क पर डिवाइस, उदाहरण के लिए: "guestfish -a nbd://remote"
बनाम बढ़ते फ़ाइल सिस्टम in la मेजबान
होस्ट में अतिथि फ़ाइल सिस्टम को माउंट करना असुरक्षित है और इसे पूरी तरह से टाला जाना चाहिए
अविश्वसनीय मेहमानों के लिए। सुरक्षा की एक परत प्रदान करने के लिए libguestfs का उपयोग करें
फ़ाइल सिस्टम शोषण। यह भी देखें गेस्टमाउंट(1).
बनाम जुदा
Libguestfs LVM का समर्थन करता है। Libguestfs पार्टेड का उपयोग करता है और अधिकांश पार्टेड सुविधाएँ प्रदान करता है
libguestfs एपीआई के माध्यम से.
मिल रहा मदद और रिपोर्टिंग बग
कैसे do I जानना क्या संस्करण मैं हूँ उपयोग कर रहे हैं?
सबसे सरल तरीका यह है:
गेस्टफिश --संस्करण
Libguestfs का विकास एक अस्थिर शाखा के साथ होता है और हम समय-समय पर एक बनाते हैं
स्थिर शाखा जिस पर हम स्थिर पैच बैकपोर्ट करते हैं। अधिक जानकारी के लिए, "LIBGUESTFS" पढ़ें
संस्करण संख्या" में Guestfs(3).
कैसे कर सकते हैं I मिल मदद?
क्या मेलिंग सूचियों or बातचीत कमरा रहे उपलब्ध?
यदि आप Red Hat Enterprise Linux का उपयोग करने वाले Red Hat ग्राहक हैं, तो कृपया संपर्क करें
रेड हैट समर्थन: http://redhat.com/support
एक मेलिंग सूची है, मुख्य रूप से विकास के लिए, लेकिन उपयोगकर्ताओं को भी पूछने का स्वागत है
libguestfs और virt उपकरणों के बारे में प्रश्न:
https://www.redhat.com/mailman/listinfo/libguestfs
आप हमसे FreeNode पर IRC चैनल "#libguestfs" पर भी बात कर सकते हैं। हम हमेशा नहीं
इसलिए कृपया अपना प्रश्न पूछने के बाद चैनल में बने रहें और कोई आपको उत्तर देगा
आप को.
अन्य virt उपकरणों के लिए (libguestfs के साथ प्रदान नहीं किए गए) एक सामान्य virt उपकरण है
मेलिंग सूची: https://www.redhat.com/mailman/listinfo/virt-tools-list
कैसे do I रिपोर्ट बग?
कृपया बगजिला में बग दर्ज करने के लिए निम्नलिखित लिंक का उपयोग करें:
https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
इसमें यथासंभव अधिक से अधिक विवरण तथा समस्या को पुनः उत्पन्न करने का तरीका शामिल करें।
का पूरा आउटपुट शामिल करें libguestfs-परीक्षण-उपकरण(1).
आम समस्याओं
"LIBGUESTFS GOTCHAS" भी देखें Guestfs(3) libguestfs का उपयोग करने के साथ कुछ "गॉटचास" के लिए
एपीआई।
"सकना नहीं आवंटित गतिशील अनुवादक बफर"
यह अस्पष्ट त्रुटि वास्तव में एक SELinux विफलता है। आपको निम्न को सक्षम करना होगा
SELinux बूलियन:
setsebool -P virt_use_execmem=चालू
अधिक जानकारी के लिए https://bugzilla.redhat.com/show_bug.cgi?id=806106 देखें.
"बच्चा प्रक्रिया मृत्यु हो गई अप्रत्याशित रूप से"
[यह त्रुटि संदेश libguestfs 1.21.18 में कुछ अधिक स्पष्टीकरणात्मक रूप में बदल दिया गया था।]
यह त्रुटि बताती है कि qemu विफल हो गया या होस्ट कर्नेल बूट नहीं हो सका। आगे जानने के लिए
विफलता के बारे में जानकारी प्राप्त करने के लिए, आपको यह करना होगा:
libguestfs-परीक्षण-उपकरण
यदि इसका उपयोग करने के बाद भी आपको विफलता समझ में नहीं आती है, तो हमसे संपर्क करें (पिछला देखें)
अनुभाग)।
libguestfs: त्रुटि: नही सकता खोज कोई उपयुक्त कामेच्छा सुपरमिन, तय or पुरानी शैली उपकरण
on LIBGUESTFS_PATH
febootstrap-सुपरमिन-हेल्पर: एक्सट2: माता - पिता डायरेक्टरी नहीं पाया
सुपरमिन-हेल्पर: एक्सट2: माता - पिता डायरेक्टरी नहीं पाया
[यह समस्या libguestfs ≥ 1.26 में स्थायी रूप से ठीक कर दी गई है.]
यदि आपको Debian/Ubuntu पर इनमें से कोई भी त्रुटि दिखाई दे, तो आपको निम्नलिखित कमांड चलाने की आवश्यकता है:
सुडो अपडेट-गेस्टएफएस-एप्लायंस
"अनुमति अस्वीकृत" कब दौड़ना कामेच्छा as जड़
डिस्क छवि खोलते समय आपको अनुमति अस्वीकृत त्रुटि मिलती है, भले ही आप चला रहे हों
libguestfs को रूट के रूप में उपयोग करें।
यह libvirt के कारण होता है, और ऐसा केवल libvirt बैकएंड का उपयोग करते समय होता है।
रूट के रूप में, libvirt qemu उपकरण को उपयोगकर्ता "qemu.qemu" के रूप में चलाने का निर्णय लेता है। दुर्भाग्य से
इसका आम तौर पर मतलब यह है कि qemu डिस्क छवियों को नहीं खोल सकता है, खासकर अगर वे डिस्क छवियां हैं
रूट के स्वामित्व में हैं, या उन निर्देशिकाओं में मौजूद हैं जिनके लिए रूट एक्सेस की आवश्यकता होती है।
इसे ठीक करने के लिए libvirt के विरुद्ध एक बग खुला है:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069
आप निम्न में से किसी एक तरीके से इस समस्या से निपट सकते हैं:
· सीधे बैकएंड पर स्विच करें:
निर्यात LIBGUESTFS_BACKEND=प्रत्यक्ष
· libguestfs को रूट के रूप में न चलाएं।
· डिस्क छवि और किसी भी मूल निर्देशिका को chmod करें ताकि qemu उपयोगकर्ता उन तक पहुंच सके।
· (बुरा) संपादित करें /etc/libvirt/qemu.conf और "उपयोगकर्ता" सेटिंग बदलें.
निष्पादन: /इस में: अनुमति से इनकार किया
नोट: यदि यह त्रुटि तब होती है जब आप libguestfs का डिस्ट्रो पैकेज उपयोग कर रहे हैं (उदाहरण के लिए
फेडोरा, डेबियन, आदि) तो डिस्ट्रो के खिलाफ बग फाइल करें। यह कोई त्रुटि नहीं है जो
सामान्य उपयोगकर्ताओं को कभी भी यह नहीं देखना चाहिए कि डिस्ट्रो पैकेज सही ढंग से तैयार किया गया है या नहीं।
यह त्रुटि उपकरण प्रारंभ करने के सुपरमिन बूट चरण के दौरान होती है:
सुपरमिन: नया रूट माउंट करना / जड़
सुपरमिन: chroot
execl: /init: अनुमति अस्वीकृत
सुपरमिन: डिबग: लिस्टिंग निर्देशिका /
[...इसके बाद बहुत सारे डिबग आउटपुट...]
यह एक जटिल बग है जो निम्न से संबंधित है सुपरमिन(1) उपकरण। उपकरण का निर्माण किया जाता है
जैसे फ़ाइलों की प्रतिलिपि बनाकर / बिन / बैश और होस्ट से कई लाइब्रेरीज़। फ़ाइल "hostfiles"
उन फ़ाइलों को सूचीबद्ध करता है जिन्हें होस्ट से उपकरण में कॉपी किया जाना चाहिए। यदि कुछ फ़ाइलें
होस्ट पर मौजूद नहीं हैं तो वे छूट जाती हैं, लेकिन अगर इन फ़ाइलों की ज़रूरत है तो
(जैसे) दौड़ना / बिन / बैश तो आपको उपरोक्त त्रुटि दिखाई देगी.
समस्या के निदान में आवश्यक पुस्तकालयों का अध्ययन करना शामिल है। / बिन / बैश, अर्थात:
ldd / बिन / बैश
इसकी तुलना "होस्टफाइल्स" से करें, जिसमें वास्तव में होस्ट फाइल सिस्टम में उपलब्ध फाइलें हों,
और त्रुटि संदेश में डिबग आउटपुट मुद्रित किया गया है। एक बार जब आप यह पता लगा लेते हैं कि कौन सी फ़ाइल
यदि फ़ाइल गायब है, तो अपने पैकेज मैनेजर का उपयोग करके उस फ़ाइल को स्थापित करें और पुनः प्रयास करें।
आपको यह भी जांचना चाहिए कि फ़ाइलें जैसे /इस में और / बिन / बैश (उपकरण में) हैं
डीबग आउटपुट फ़ाइल मोड दिखाता है।
डाउनलोडिंग, स्थापित करना, संकलन Libguestfs
कहा पे कर सकते हैं I मिल la ताज़ा बाइनरी एसटी ...?
फेडोरा ≥ 11
का प्रयोग करें:
yum इंस्टॉल '*guestf*'
नवीनतम बिल्ड के लिए देखें:
http://koji.fedoraproject.org/koji/packageinfo?पैकेजआईडी=8391
Red Hat Enterprise Linux
RHEL 5
आधिकारिक RHEL 5 में भेजा गया संस्करण बहुत पुराना है और इसका उपयोग नहीं किया जाना चाहिए
virt-v2v के साथ संयोजन में। EPEL में अद्यतित libguestfs 1.20 पैकेज का उपयोग करें
5: https://fedoraproject.org/wiki/EPEL
RHEL 6
RHEL 7
यह डिफ़ॉल्ट इंस्टॉल का हिस्सा है। RHEL 6 और 7 (केवल) पर आपको इंस्टॉल करना होगा
विंडोज अतिथि समर्थन प्राप्त करने के लिए "libguestfs-winsupport" पर क्लिक करें।
डेबियन और उबंटू
libguestfs < 1.26 के लिए, libguestfs स्थापित करने के बाद आपको यह करना होगा:
सुडो अपडेट-गेस्टएफएस-एप्लायंस
(यह स्क्रिप्ट Debian/Ubuntu पर libguestfs ≥ 1.26 के साथ हटा दी गई है और इसके स्थान पर
(उपकरण मांग पर बनाया गया है।)
केवल उबंटू पर:
सुडो चामोद 0644 /बूट/vmlinuz*
आपको स्वयं को "kvm" समूह में जोड़ने की आवश्यकता हो सकती है:
सुडो यूजरमोड -a -G kvm yourlogin
डेबियन निचोड़ (6)
हिल्को बेन्गेन ने स्क्वीज़ बैकपोर्ट्स में libguestfs का निर्माण किया है:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports
डेबियन व्हीज़ी और बाद के संस्करण (7+)
हिल्को बेनगेन डेबियन पर libguestfs का समर्थन करता है। आधिकारिक डेबियन पैकेज हैं
बिकाऊ: http://packages.debian.org/search?कीवर्ड्स=libguestfs
Ubuntu
हमारे पास पूर्णकालिक उबंटू अनुरक्षक नहीं है, और हमारे द्वारा आपूर्ति किए गए पैकेज
विहित (जो हमारे नियंत्रण से बाहर हैं) कभी-कभी टूट जाते हैं।
कैनोनिकल ने कर्नेल पर अनुमतियों को बदलने का फैसला किया ताकि यह न हो
रूट को छोड़कर अन्य किसी भी माध्यम से पठनीय नहीं। यह पूरी तरह से बेवकूफी है, लेकिन वे इसे नहीं बदलेंगे
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). इसलिए प्रत्येक उपयोगकर्ता
ऐसा करना चाहिए:
सुडो चामोद 0644 /बूट/vmlinuz*
Ubuntu के 12.04
उबंटू के इस संस्करण में libguestfs काम करता है, लेकिन आपको febootstrap को अपडेट करना होगा
और सीबायोस को नवीनतम संस्करण में शामिल करें।
आपको febootstrap ≥ 3.14-2 की आवश्यकता है:
http://packages.ubuntu.com/precise/febootstrap
febootstrap को स्थापित या अद्यतन करने के बाद, उपकरण का पुनर्निर्माण करें:
सुडो अपडेट-गेस्टएफएस-एप्लायंस
आपको 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*
Gentoo
Libguestfs को 2012-07 में आंद्रेईस विनोग्राडोव्स (libguestfs) द्वारा Gentoo में जोड़ा गया था और
मैक्सिम कोल्टसोव (मुख्यतः हाइवेक्स)। करें:
उभरना libguestfs
स्विट्ज़रलैंड
Libguestfs को 2012 में ओलाफ हेरिंग द्वारा SuSE में जोड़ा गया था।
Archlinux
Libguestfs को 2010 में AUR में जोड़ा गया था।
अन्य लिनक्स डिस्ट्रो
स्रोत से संकलित करें (अगला अनुभाग).
अन्य गैर-लिनक्स डिस्ट्रो
आपको इसे स्रोत से संकलित करना होगा, और पोर्ट करना होगा।
कैसे कर सकते हैं I संकलन और स्थापित कामेच्छा से स्रोत?
आप git या स्रोत टारबॉल से libguestfs संकलित कर सकते हैं। पहले README फ़ाइल पढ़ें
शुरुआत।
Git: https://github.com/libguestfs/libguestfs स्रोत टारबॉल:
http://libguestfs.org/download
"make install" न चलाएँ! " का प्रयोग करें।/ Daud" स्क्रिप्ट का उपयोग करें (देखें README)।
कैसे कर सकते हैं I संकलन और स्थापित कामेच्छा if my distro नहीं करता है नई पर्याप्त
क्यूमू/सुपरमिन/कर्नेल?
Libguestfs को सुपरमिन 5 की आवश्यकता है। यदि सुपरमिन 5 आपके डिस्ट्रो में पोर्ट नहीं किया गया है, तो देखें
नीचे दिए गए प्रश्न का उत्तर दीजिये।
सबसे पहले qemu, supermin और/या कर्नेल को स्रोत से संकलित करें। नहीं बनाने की ज़रुरत है
उन्हें स्थापित करें.
libguestfs स्रोत निर्देशिका में, दो फ़ाइलें बनाएँ। "localconfigure" में निम्नलिखित होना चाहिए:
स्रोत localenv
#निर्यात पथ=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --प्रीफिक्स / usr "$@"
"localconfigure" को निष्पादन योग्य बनाएं.
"localenv" में निम्नलिखित शामिल होना चाहिए:
#निर्यात सुपरमिन=/tmp/supermin/src/supermin
#निर्यात LIBGUESTFS_HV=/tmp/qemu/x86_64-softmmu/qemu-system-x86_64
#निर्यात SUPERMIN_KERNEL=/tmp/linux/arch/x86/boot/bzImage
#निर्यात SUPERMIN_KERNEL_VERSION=4.XX.0
#निर्यात SUPERMIN_MODULES=/tmp/lib/modules/4.XX.0
आपके पास उपलब्ध वैकल्पिक कार्यक्रमों का उपयोग करने के लिए आवश्यकतानुसार इन पंक्तियों को अनकमेंट करें और समायोजित करें
संकलित।
"./configure" के स्थान पर "./localconfigure" का प्रयोग करें, लेकिन अन्यथा आप libguestfs को इस प्रकार संकलित करेंगे
हमेशा की तरह।
"make install" न चलाएँ! " का प्रयोग करें।/ Daud" स्क्रिप्ट का उपयोग करें (देखें README)।
कैसे कर सकते हैं I संकलन और स्थापित कामेच्छा बिना सुपरमिन?
यदि सुपरमिन 5 आपके डिस्ट्रो का समर्थन करता है, लेकिन आपके पास नया सुपरमिन नहीं है
स्थापित है, तो पिछले प्रश्न देखें.
यदि सुपरमिन 5 आपके डिस्ट्रो का बिल्कुल भी समर्थन नहीं करता है, तो आपको "फिक्स्ड" का उपयोग करना होगा
उपकरण विधि" जहाँ आप एक पूर्व संकलित बाइनरी उपकरण का उपयोग करते हैं। libguestfs बनाने के लिए
सुपरमिन के बिना, आपको "--disable-appliance --disable-daemon" को पास करना होगा
./autogen.sh or . / कॉन्फ़िगर (यह इस बात पर निर्भर करता है कि आप क्रमशः git से निर्माण कर रहे हैं या
टारबॉल से)। फिर, libguestfs का उपयोग करते समय, आप चाहिए "LIBGUESTFS_PATH" सेट करें
पर्यावरण चर को पूर्व संकलित उपकरण की निर्देशिका में ले जाना, जैसा कि इसमें भी वर्णित है
"फिक्स्ड एप्लायंस" Guestfs(3).
पूर्व संकलित उपकरणों के लिए, यह भी देखें: http://libguestfs.org/download/binaries/appliance/.
सुपरमिन को अधिक लिनक्स डिस्ट्रोज़ में पोर्ट करने के लिए पैच का स्वागत है।
कैसे कर सकते हैं I जोड़ना समर्थन एसटी एसविर्ट?
नोट एसटी फेडोरा/आरएचईएल उपयोगकर्ताओं: यह कॉन्फ़िगरेशन Fedora 18 से शुरू होकर डिफ़ॉल्ट है
आरएचईएल 7. यदि आपको कोई समस्या मिले तो कृपया हमें बताएं या बग दर्ज करें।
SVirt SELinux का उपयोग करके एक कठोर उपकरण प्रदान करता है, जो एक दुष्ट डिस्क के लिए बहुत कठिन बना देता है
libguestfs की सीमा से "बचने" और होस्ट को नुकसान पहुंचाने के लिए छवि (यह कहना उचित है
यहां तक कि मानक libguestfs में भी यह कठिन होगा, लेकिन sVirt एक अतिरिक्त परत प्रदान करता है
होस्ट के लिए सुरक्षा और अधिक महत्वपूर्ण रूप से उसी होस्ट पर वर्चुअल मशीनों की सुरक्षा
(एक दूसरे से)
वर्तमान में sVirt को सक्षम करने के लिए आपको libvirt ≥ 0.10.2 (1.0 या बाद का संस्करण बेहतर होगा) की आवश्यकता होगी,
libguestfs ≥ 1.20, और हाल ही के Fedora से 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) का उपयोग नहीं करेगा, लेकिन सीधे वापस आ जाएगा
क्यूमू का लॉन्च। इसलिए आपको वर्तमान में sVirt सुरक्षा का लाभ नहीं मिलेगा जब आप इसका उपयोग करेंगे
virt-बचाव.
आप libvirtd लॉगिंग सक्षम करके जाँच सकते हैं कि sVirt का उपयोग किया जा रहा है या नहीं (देखें
/etc/libvirt/libvirtd.log), libvirtd को मारना और पुनः आरंभ करना, और लॉग फ़ाइलों की जाँच करना
"SELinux संदर्भ को चालू करना..." संदेशों के लिए.
सिद्धांत रूप में sVirt को AppArmor का समर्थन करना चाहिए, लेकिन हमने इसे आज़माया नहीं है। यह लगभग
निश्चित रूप से libvirt पैचिंग और AppArmor नीति लिखने की आवश्यकता है।
लिबगेस्टफ्स है a वास्तव में लंबा सूची of निर्भरता!
आधार लाइब्रेरी बहुत अधिक निर्भर नहीं करती है, लेकिन लंबी सूची के तीन कारण हैं
अन्य निर्भरताओं की:
1. Libguestfs को कई अलग-अलग डिस्क प्रारूपों को पढ़ने और संपादित करने में सक्षम होना चाहिए। उदाहरण के लिए,
XFS समर्थन के लिए XFS उपकरण की आवश्यकता होती है।
2. कई अलग-अलग भाषाओं के लिए भाषा बंधन हैं, जिनमें से प्रत्येक के लिए अपने स्वयं के बंधन की आवश्यकता होती है।
विकास उपकरण। सभी भाषा बाइंडिंग (सी को छोड़कर) वैकल्पिक हैं।
3. कुछ वैकल्पिक लाइब्रेरी सुविधाएँ हैं जिन्हें अक्षम किया जा सकता है।
चूंकि libguestfs ≥ 1.26 है, इसलिए उपकरण निर्भरताओं को विभाजित करना संभव है (आइटम 1 में
उपरोक्त सूची) और इस प्रकार (उदाहरण के लिए) "libguestfs-xfs" को एक अलग उप-पैकेज के रूप में रखें
XFS डिस्क छवियों को संसाधित करना। हम डाउनस्ट्रीम पैकेजर्स को आधार को विभाजित करना शुरू करने के लिए प्रोत्साहित करते हैं
libguestfs पैकेज को छोटे उप-पैकेजों में विभाजित करें।
त्रुटियाँ दौरान लांच on फेडोरा ≥ 18, RHEL ≥ 7
Fedora ≥ 18 और RHEL ≥ 7 में, libguestfs उपकरण को प्रबंधित करने के लिए libvirt का उपयोग करता है।
(और अपस्ट्रीम) libguestfs सीधे qemu चलाता है:
┌────────────────────────────────┐
│ libguestfs │
├────────────────┬───────────────┤
│ डायरेक्ट बैकएंड │ libvirt बैकएंड │
└────────────────┴───────────────┘
मैं
┌───────┐ ┌──────────┐
│ क्यूमू │ │ libvirtd │
└───────┘ └──────────┘
↓
┌───────┐
│ क्यूमू │
└───────┘
अपस्ट्रीम फेडोरा 18+
नॉन-फेडोरा आरएचईएल 7+
गैर-आरएचईएल
libvirt बैकएंड अधिक परिष्कृत है, जो SELinux/sVirt का समर्थन करता है (ऊपर देखें),
हॉटप्लगिंग और बहुत कुछ। हालाँकि, यह अधिक जटिल है और इसलिए कम मजबूत है।
यदि आपको libvirt बैकएंड का उपयोग करते समय अनुमति संबंधी समस्या आ रही है, तो आप सीधे स्विच कर सकते हैं
इस पर्यावरण चर को सेट करके बैकएंड:
निर्यात LIBGUESTFS_BACKEND=प्रत्यक्ष
किसी भी libguestfs प्रोग्राम या virt उपकरण को चलाने से पहले.
कैसे कर सकते हैं I स्विच सेवा मेरे a तय / पहले से बनाए गए उपकरण?
इससे Fedora और RHEL पर libguestfs की स्थिरता और प्रदर्शन में सुधार हो सकता है।
libguestfs को स्थापित करने के बाद किसी भी समय रूट के रूप में निम्नलिखित कमांड चलाएँ:
mkdir -p /usr/local/lib/guestfs/appliance
libguestfs-मेक-फिक्स्ड-उपकरण /usr/स्थानीय/lib/guestfs/उपकरण
ls -l /usr/local/lib/guestfs/appliance
अब libguestfs या किसी भी virt टूल का उपयोग करने से पहले निम्नलिखित पर्यावरण चर सेट करें:
निर्यात LIBGUESTFS_PATH=/usr/स्थानीय/lib/guestfs/उपकरण
बेशक आप अपनी इच्छानुसार किसी भी डायरेक्टरी का पथ बदल सकते हैं। आप उपकरण को साझा कर सकते हैं
समान आर्किटेक्चर वाली सभी मशीनों में (जैसे सभी x86-64), लेकिन ध्यान दें कि libvirt
अनुमति समस्याओं के कारण आपको NFS में उपकरण साझा करने से रोका जाएगा (इसलिए
या तो सीधे बैकएंड पर स्विच करें या NFS का उपयोग न करें)।
कैसे कर सकते हैं I गति up कामेच्छा बनाता है?
अब तक सबसे महत्वपूर्ण काम जो आप कर सकते हैं वह है स्क्विड को स्थापित करना और उचित तरीके से कॉन्फ़िगर करना।
ध्यान दें कि स्क्विड के साथ आने वाला डिफ़ॉल्ट कॉन्फ़िगरेशन बेकार है, इसलिए इसे कॉन्फ़िगर करना मुश्किल है।
वैकल्पिक नहीं।
स्क्विड कॉन्फ़िगरेशन के साथ शुरुआत करने के लिए एक बहुत अच्छी जगह यहाँ है:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads
सुनिश्चित करें कि स्क्विड चल रहा है, और पर्यावरण चर $http_proxy और $ftp_proxy
इस ओर इशारा कर रहे हैं.
स्क्विड के चलने और सही तरीके से कॉन्फ़िगर होने पर, उपकरण निर्माण को कुछ तक कम किया जाना चाहिए
मिनट.
कैसे कर सकते हैं I गति up कामेच्छा बनाता है (डेबियन)?
हिल्को बेनगेन "approx" का उपयोग करने का सुझाव देते हैं जो एक डेबियन आर्काइव प्रॉक्सी है
(http://packages.debian.org/approx) यह उपकरण डेबियन में प्रलेखित है लगभग(8)
मैनुअल पेज।
रफ़्तार, डिस्क अंतरिक्ष उपयोग किया गया BY Libguestfs
नोट: इस अनुभाग की अधिकांश जानकारी स्थानांतरित हो गई है: Guestfs-प्रदर्शन(1).
अपलोड or लिखना लगता है बहुत धीमी गति से।
यदि अंतर्निहित डिस्क पूरी तरह से आवंटित नहीं है (उदाहरण के लिए स्पार्स रॉ या qcow2) तो लिखना मुश्किल हो सकता है
धीमा इसलिए क्योंकि जब आप काम कर रहे होते हैं तो होस्ट ऑपरेटिंग सिस्टम को महंगा डिस्क आबंटन करना पड़ता है।
लेखन। समाधान इसके बजाय पूरी तरह से आवंटित प्रारूप का उपयोग करना है, यानी गैर-विरल कच्चा, या
qcow2 "preallocation=metadata" विकल्प के साथ।
लिबगेस्टफ्स का उपयोग करता है भी बहुत डिस्क अंतरिक्ष!
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
$ डु -श टेस्ट1.आईएमजी
3.6M टेस्ट1.img
(स्पष्ट आकार की तुलना करें 100M बनाम वास्तविक आकार 3.6M)
यदि यह सब आपको भ्रमित करता है, तो निर्दिष्ट करके एक गैर-विरल आउटपुट प्रारूप का उपयोग करें --कन्वर्ट
विकल्प, उदाहरण:
virt-sparsify --convert qcow2 डिस्क.raw डिस्क.qcow2
क्यों नहीं करता पुण्य-आकार बदलना काम on la डिस्क की छवि जगह में?
डिस्क छवि का आकार बदलना बहुत मुश्किल है - विशेष रूप से यह सुनिश्चित करना कि आप डेटा या अन्य जानकारी न खोएं।
बूटलोडर को तोड़ें। वर्तमान विधि प्रभावी रूप से एक नई डिस्क छवि बनाती है और कॉपी करती है
पुराने वाले से डेटा प्लस बूटलोडर। अगर कुछ गलत हो जाता है, तो आप हमेशा जा सकते हैं
मूल स्थिति पर वापस लौटें।
यदि हम virt-resize को इन-प्लेस कार्य करने योग्य बनाते हैं तो इसमें सीमाएँ होंगी:
उदाहरण के लिए, आपको मौजूदा विभाजनों को स्थानांतरित करने की अनुमति नहीं होगी (क्योंकि डेटा को स्थानांतरित करना
बिजली की विफलता या क्रैश की स्थिति में डेटा दूषित होने की संभावना सबसे अधिक उसी डिस्क में होती है),
और LVM को सपोर्ट करना बहुत मुश्किल होगा (लगभग मनमाने मैपिंग के कारण)
एल.वी. सामग्री और अंतर्निहित डिस्क ब्लॉकों के बीच)।
एक अन्य विधि जिस पर हमने विचार किया है, वह है मूल डिस्क छवि पर एक स्नैपशॉट रखना, ताकि
मूल डेटा अछूता रहता है और स्नैपशॉट में केवल अंतर ही दर्ज किया जाता है।
आप आज "qemu-img create" + "virt-resize" का उपयोग करके ऐसा कर सकते हैं, लेकिन qemu वर्तमान में ऐसा नहीं कर रहा है
यह पहचानने के लिए पर्याप्त स्मार्ट है कि जब वही ब्लॉक पहले से ही स्नैपशॉट में वापस लिखा गया है
बैकिंग डिस्क में मौजूद है, इसलिए आप पाएंगे कि इससे आपका कोई स्थान या समय नहीं बचता।
संक्षेप में, यह एक कठिन समस्या है, और हमारे पास जो कुछ है वह अधिकांशतः काम करता है, इसलिए हम अनिच्छुक हैं
इसे बदलने के लिए।
क्यों नहीं करता पुण्य-विरलता काम on la डिस्क की छवि जगह में?
libguestfs ≥ 1.26 में, virt-sparsify अब डिस्क छवियों पर काम कर सकता है। उपयोग करें:
virt-sparsify --इन-प्लेस डिस्क.आईएमजी
लेकिन पहले आपको "इन-प्लेस स्पार्सिफिकेशन" पढ़ना चाहिए पुण्य-विरलता(1).
समस्याओं उद्घाटन डिस्क इमेजेज
सुदूर libvirt मेहमानों नही सकता be खुल गया।
इस समय रिमोट libvirt गेस्ट खोलना समर्थित नहीं है। उदाहरण के लिए यह काम नहीं करेगा:
गेस्टफिश -c qemu://remote/system -d अतिथि
दूरस्थ डिस्क खोलने के लिए आपको उन्हें किसी तरह निर्यात करना होगा, फिर निर्यात से कनेक्ट करना होगा।
उदाहरण के लिए यदि आपने NBD का उपयोग करने का निर्णय लिया है:
रिमोट$ qemu-nbd -t -p 10809 guest.img
स्थानीय$ गेस्टफिश -a nbd://remote:10809 -i
अन्य संभावनाओं में ssh (यदि qemu काफी नया है), NFS या iSCSI शामिल हैं। "रिमोट" देखें
भंडारण" में Guestfs(3).
कैसे कर सकते हैं I खुला इसका अजीब डिस्क स्रोत?
आपके पास किसी अन्य सिस्टम के अंदर एक डिस्क छवि स्थित है, जिसे लाइब्रेरी के माध्यम से एक्सेस की आवश्यकता है /
HTTP / REST / मालिकाना API, या किसी तरह से संपीड़ित या संग्रहीत है। (एक उदाहरण
(इसका मतलब है कि ओपनस्टैक नज़र चित्रों तक वास्तविक डाउनलोड के बिना ही दूरस्थ पहुंच प्राप्त करना।)
हमारे पास nbdkit (https://github.com/libguestfs/nbdkit) नामक एक सहयोगी परियोजना है।
प्रोजेक्ट आपको किसी भी डिस्क स्रोत को NBD सर्वर में बदलने की सुविधा देता है। Libguestfs NBD तक पहुँच सकता है
सर्वर से सीधे जुड़ें, जैसे:
गेस्टफिश -a nbd://रिमोट
nbdkit को उदारतापूर्वक लाइसेंस दिया गया है, इसलिए आप इसे स्वामित्व वाली लाइब्रेरी में लिंक कर सकते हैं या शामिल कर सकते हैं
और कोड। इसमें एक सरल, स्थिर प्लगइन एपीआई भी है ताकि आप आसानी से प्लगइन्स लिख सकें
एपीआई जो भविष्य में भी काम करना जारी रखेगा।
त्रुटि उद्घाटन वीएमडीके डिस्क: "उपयोग a वीएमडीके सुविधा कौन कौन से is नहीं समर्थित by इसका qemu संस्करण:
वीएमडीके संस्करण 3"
क्यूमू (और इसलिए libguestfs) केवल कुछ VMDK डिस्क छवियों का समर्थन करता है। अन्य काम नहीं करेंगे,
यह या इसी प्रकार की त्रुटियाँ देना।
आदर्श रूप से कोई व्यक्ति qemu को नवीनतम VMDK सुविधाओं का समर्थन करने के लिए ठीक कर देगा, लेकिन इस बीच
आपके पास तीन विकल्प हैं:
1. यदि अतिथि को लाइव, पहुंच योग्य ESX सर्वर पर होस्ट किया गया है, तो उसका पता लगाएं और उसे डाउनलोड करें
डिस्क छवि कहा जाता है somename-flat.vmdkनाम के बावजूद, यह एक कच्ची डिस्क छवि है, और
किसी भी चीज से खोला जा सकता है.
यदि आपके पास qemu और libguestfs का नवीनतम संस्करण है, तो आप ऐसा कर सकते हैं
HTTPS या ssh का उपयोग करके इस डिस्क छवि को दूरस्थ रूप से एक्सेस करें। "रिमोट स्टोरेज" देखें
Guestfs(3).
2. छवि को रॉ प्रारूप में परिवर्तित करने के लिए VMware के स्वामित्व वाले vdiskmanager टूल का उपयोग करें।
3. डिस्क छवि को NBD के रूप में लाइव निर्यात करने के लिए मालिकाना VDDK प्लगइन के साथ nbdkit का उपयोग करें
स्रोत. इससे आपको VMDK फ़ाइल पढ़ने और लिखने की अनुमति मिलनी चाहिए.
UFS डिस्क (के रूप में प्रयुक्त by बीएसडी) नही सकता be खुल गया।
यूएफएस फाइल सिस्टम प्रारूप के कई प्रकार हैं, और ये स्वयं-पहचान योग्य नहीं हैं।
लिनक्स कर्नेल को यह बताना होगा कि उसे UFS का कौन सा संस्करण उपयोग करना है, कौन सा libguestfs नहीं कर सकता
पता.
इन फाइल सिस्टम को माउंट करते समय आपको सही "ufstype" माउंट विकल्प पास करना होगा।
https://www.kernel.org/doc/Documentation/filesystems/ufs.txt देखें
विंडोज Refs
Windows ReFS माइक्रोसॉफ्ट की ZFS/Btrfs कॉपी है। इस फाइलसिस्टम को अभी तक रिवर्स नहीं किया गया है
लिनक्स कर्नेल में इंजीनियर और कार्यान्वित किया गया है, और इसलिए libguestfs समर्थन नहीं करता है
फिलहाल यह "जंगल में" बहुत दुर्लभ प्रतीत होता है।
गैर-ASCII अक्षर नहीं है दिखाई देते हैं on वीएफएटी फ़ाइल सिस्टम।
इस समस्या के विशिष्ट लक्षण:
· जब आप कोई ऐसी फ़ाइल बनाते हैं जिसके फ़ाइल नाम में गैर-ASCII शामिल है तो आपको एक त्रुटि मिलती है
वर्ण, विशेष रूप से एशियाई भाषाओं (चीनी, जापानी,
आदि). फाइल सिस्टम VFAT है.
· जब आप VFAT फाइल सिस्टम से किसी निर्देशिका को सूचीबद्ध करते हैं, तो फ़ाइल नाम प्रश्न चिह्न के रूप में दिखाई देते हैं।
यह GNU/Linux प्रणाली का डिज़ाइन दोष है।
VFAT लंबे फ़ाइलनामों को UTF-16 वर्णों के रूप में संग्रहीत करता है। फ़ाइलनाम खोलते या वापस करते समय,
लिनक्स कर्नेल को इन्हें 8 बिट स्ट्रिंग के किसी रूप में अनुवाद करना होगा। UTF-8 होगा
स्पष्ट विकल्प, लिनक्स उपयोगकर्ताओं को छोड़कर जो गैर-यूटीएफ-8 लोकेल का उपयोग करना जारी रखते हैं (उपयोगकर्ता का
लोकेल कर्नेल को ज्ञात नहीं है क्योंकि यह libc का एक फ़ंक्शन है)।
इसलिए आपको कर्नेल को यह बताना होगा कि आप क्या अनुवाद चाहते हैं जब आप इसे माउंट करते हैं।
फाइलसिस्टम। दो विधियाँ "iocharset" पैरामीटर हैं (जो प्रासंगिक नहीं है
libguestfs) और "utf8" ध्वज.
इसलिए VFAT फ़ाइल सिस्टम का उपयोग करने के लिए आपको माउंट करते समय "utf8" फ़्लैग जोड़ना होगा। गेस्टफ़िश से,
उपयोग:
> माउंट-विकल्प utf8 /dev/sda1 /
या गेस्टफिश कमांड लाइन पर:
गेस्टफिश [...] -m /dev/sda1:/:utf8
या एपीआई से:
guestfs_mount_options (g, "utf8", "/dev/sda1", "/");
इसके बाद कर्नेल फ़ाइल नामों को UTF-8 स्ट्रिंग्स में और उनसे अनुवाद करेगा।
हमने इस माउंट विकल्प को पारदर्शी रूप से जोड़ने पर विचार किया, लेकिन दुर्भाग्य से इसमें कई समस्याएं हैं
ऐसा करने में समस्याएँ:
· कुछ लिनक्स सिस्टम पर, "utf8" माउंट विकल्प काम नहीं करता है। हम ठीक से नहीं जानते
समझ में नहीं आता कि सिस्टम क्या है या क्यों, लेकिन एक उपयोगकर्ता द्वारा इसकी विश्वसनीय रूप से रिपोर्ट की गई थी।
· यह आपको "iocharset" पैरामीटर का उपयोग करने से रोकेगा क्योंकि यह असंगत है
"utf8" के साथ। इस पैरामीटर का उपयोग करना शायद अच्छा विचार नहीं है, लेकिन हम नहीं चाहते
इसे रोकने के लिए।
गैर-ASCII अक्षर दिखाई देते हैं as जांचना (_) on ISO9660 फ़ाइल सिस्टम।
फ़ाइल सिस्टम mkisofs या genisoimage के साथ सही तरीके से तैयार नहीं किया गया था। सुनिश्चित करें कि
फाइलसिस्टम जोलिएट और/या रॉक रिज एक्सटेंशन का उपयोग करके बनाया गया था। libguestfs नहीं करता है
फ़ाइल सिस्टम को संभालने के लिए किसी विशेष माउंट विकल्प की आवश्यकता नहीं होती है।
नहीं कर सकते खुला विंडोज मेहमानों कौन कौन से उपयोग NTFS।
आपको निम्न प्रकार की त्रुटियाँ दिखाई देती हैं:
माउंट: अज्ञात फ़ाइल सिस्टम प्रकार 'ntfs'
Red Hat Enterprise Linux या CentOS पर, आपको libguestfs-winsupport स्थापित करना होगा
पैकेज.
नहीं कर सकते खुला or निरीक्षण करना RHEL 7 मेहमान।
नहीं कर सकते खुला Linux मेहमानों कौन कौन से उपयोग एक्सएफएस.
RHEL 7 अतिथि, और कोई भी अन्य अतिथि जो XFS का उपयोग करते हैं, libguestfs द्वारा खोले जा सकते हैं, लेकिन आप
"libguestfs-xfs" पैकेज स्थापित करना होगा।
का उपयोग करते हुए Libguestfs IN तुंहारे खुद कार्यक्रम
RSI API है सैकड़ों of विधियों, जहां do I शुरू?
हम आपको API अवलोकन पढ़कर शुरुआत करने की सलाह देते हैं: "API अवलोकन" Guestfs(3).
यद्यपि API अवलोकन में C API को शामिल किया गया है, फिर भी यह पढ़ने लायक है, भले ही आप
मैं किसी अन्य प्रोग्रामिंग भाषा का उपयोग करने जा रहा हूँ, क्योंकि API वही है, केवल सरल है
कॉल के नामों में तार्किक परिवर्तन:
सी guestfs_ln_sf (जी, लक्ष्य, लिंकनाम);
पायथन g.ln_sf (लक्ष्य, लिंकनाम);
OCaml g#ln_sf लक्ष्य लिंकनाम;
पर्ल $g->ln_sf (लक्ष्य, लिंकनाम);
शैल (गेस्टफिश) ln-sf लक्ष्य लिंकनाम
PHP guestfs_ln_sf ($g, $target, $linkname);
एक बार जब आप API अवलोकन से परिचित हो जाते हैं, तो आपको शुरुआती लोगों की इस सूची को देखना चाहिए
अन्य भाषा बाइंडिंग के लिए अंक: "अन्य प्रोग्रामिंग भाषाओं के साथ LIBGUESTFS का उपयोग करना"
Guestfs(3).
कर सकते हैं I उपयोग कामेच्छा in my मालिकाना / बंद स्रोत / वाणिज्यिक कार्यक्रम?
सामान्य तौर पर, हाँ। हालाँकि यह कानूनी सलाह नहीं है - इसके साथ आने वाले लाइसेंस को पढ़ें
libguestfs, और यदि आपके पास विशिष्ट प्रश्न हैं तो किसी वकील से संपर्क करें।
स्रोत वृक्ष में लाइसेंस "COPYING.LIB" फ़ाइल में है (लाइब्रेरी के लिए LGPLv2+ और
बाइंडिंग) और "कॉपीइंग" (स्टैंडअलोन प्रोग्रामों के लिए GPLv2+)।
डिबगिंग Libguestfs
मदद करो, यह है नहीं कार्यरत!
यदि कोई भी libguestfs प्रोग्राम काम नहीं करता है, तो नीचे दिए गए प्रोग्राम को चलाएं और पेस्ट करें
पूर्ण, अप्रकाशित आउटपुट को "libguestfs" @ "redhat.com" को ईमेल में बदलें:
libguestfs-परीक्षण-उपकरण
यदि कोई विशेष ऑपरेशन विफल हो जाता है, तो इस चेकलिस्ट में दी गई सभी जानकारी ईमेल में भेजें
"libguestfs" @ "redhat.com" पर:
1. आप क्या करने की कोशिश कर रहे हैं?
2. आपने वास्तव में कौन सा आदेश चलाया?
3. इन आदेशों की सटीक त्रुटि या आउटपुट क्या था?
4. डिबगिंग सक्षम करें, कमांड को फिर से चलाएं, और कैप्चर करें पूरा उत्पादन. Do नहीं
संपादित la उत्पादन.
निर्यात LIBGUESTFS_DEBUG=1
निर्यात LIBGUESTFS_TRACE=1
5. libguestfs का संस्करण, ऑपरेटिंग सिस्टम संस्करण और आपने इसे कैसे स्थापित किया, यह शामिल करें
libguestfs (उदाहरण के लिए स्रोत से, "yum install", आदि)
कैसे do I डिबग कब का उपयोग कोई कामेच्छा कार्यक्रम or साधन (जैसे। पुण्य-v2v or वर्ट-डीएफ)?
अधिक जानकारी प्राप्त करने के लिए आप दो "LIBGUESTFS_*" पर्यावरण चर सेट कर सकते हैं
libguestfs से जानकारी.
"LIBGUESTFS_ट्रेस"
इसे 1 पर सेट करें और libguestfs प्रत्येक कमांड / API कॉल को एक प्रारूप में प्रिंट करेगा
गेस्टफिश कमांड के समान है।
"LIBGUESTFS_डीबग"
बड़ी मात्रा में डीबग संदेशों को सक्षम करने के लिए इसे 1 पर सेट करें। अगर आपको लगता है
libguestfs उपकरण के अंदर कुछ समस्या है, तो आपको इसका उपयोग करना चाहिए
विकल्प.
इन्हें शेल से सेट करने के लिए, प्रोग्राम चलाने से पहले यह करें:
निर्यात LIBGUESTFS_TRACE=1
निर्यात LIBGUESTFS_DEBUG=1
csh/tcsh के लिए समतुल्य आदेश होंगे:
सेटेनव LIBGUESTFS_TRACE 1
सेटेनव LIBGUESTFS_DEBUG 1
अधिक जानकारी के लिए देखें: "पर्यावरण चर" Guestfs(3).
कैसे do I डिबग कब का उपयोग अतिथिमछली?
आप ऊपर दिए गए समान पर्यावरण चर का उपयोग कर सकते हैं। वैकल्पिक रूप से गेस्टफ़िश विकल्पों का उपयोग करें
-x (कमांड का पता लगाने के लिए) या -v (पूर्ण डिबग आउटपुट प्राप्त करने के लिए), या दोनों।
अधिक जानकारी के लिए, देखें: अतिथि मछली(1).
कैसे do I डिबग कब का उपयोग la एपीआई?
"guestfs_set_trace" को कॉल करें Guestfs(3) कमांड ट्रेस सक्षम करने के लिए, और/या
"guestfs_set_verbose" में Guestfs(3) डिबग संदेशों को सक्षम करने के लिए.
सर्वोत्तम परिणामों के लिए, इन फ़ंक्शनों को यथासंभव शीघ्र कॉल करें, जैसे ही आप चाहें,
यदि आप कर सकते हैं तो guestfs को संभालें, और निश्चित रूप से लॉन्च को कॉल करने से पहले।
कैसे do I कब्जा डिबग उत्पादन और रखना it में my लॉगिंग प्रणाली?
इवेंट API का उपयोग करें। उदाहरण के लिए, देखें: "ईवेंट को संभालने के लिए कॉलबैक सेट करना" Guestfs(3)
और उदाहरण/डीबग-लॉगिंग.c libguestfs स्रोतों में कार्यक्रम.
खुदाई और गहरा में la उपकरण बूट प्रक्रिया.
डिबगिंग सक्षम करें और फिर उपकरण बूट प्रक्रिया पर इस दस्तावेज़ को पढ़ें:
Guestfs-internals(1).
कामेच्छा रुक जाता है or विफल रहता है दौरान चलाएँ/प्रक्षेपित करें।
डीबगिंग सक्षम करें और पूरा आउटपुट देखें। यदि आप यह पता नहीं लगा पा रहे हैं कि क्या हो रहा है,
बग रिपोर्ट दर्ज करें, जिसमें शामिल है पूरा का उत्पादन libguestfs-परीक्षण-उपकरण(1).
डीबगिंग libvirt
यदि आप libvirt बैकएंड का उपयोग कर रहे हैं, और libvirt विफल हो रहा है, तो आप सक्षम कर सकते हैं
संपादन द्वारा डिबगिंग /etc/libvirt/libvirtd.conf.
यदि आप नॉन-रूट के रूप में चल रहे हैं, तो आपको एक अलग फ़ाइल संपादित करनी होगी।
~/.config/libvirt/libvirtd.conf युक्त
लॉग_लेवल=1
log_outputs="1:फ़ाइल:/tmp/libvirtd.log"
किसी भी सत्र (गैर-रूट) libvirtd को बंद करें जो चल रहा है, और अगली बार जब आप libguestfs चलाएं
कमांड का उपयोग करते हुए, आपको libvirtd से बड़ी मात्रा में उपयोगी डिबगिंग जानकारी दिखाई देगी
/tmp/libvirtd.log
डिज़ाइन/आंतरिक OF Libguestfs
यह भी देखें Guestfs-internals(1).
क्यों नहीं है इसलिए आप do सब कुछ पूज्य गुरुदेव के मार्गदर्शन से संपन्न कर सकते हैं - la फ्यूज / फाइल सिस्टम इंटरफेस?
हम एक कमांड देते हैं जिसे कहा जाता है गेस्टमाउंट(1) जो आपको अतिथि फ़ाइल सिस्टम को माउंट करने देता है
होस्ट। इसे FUSE मॉड्यूल के रूप में कार्यान्वित किया जाता है। क्यों न हम पूरे को ही कार्यान्वित करें
libguestfs को बड़े और जटिल API के बजाय इस तंत्र का उपयोग करना चाहिए?
इसके दो कारण हैं। सबसे पहले, libguestfs निम्नलिखित कार्य करने के लिए API कॉल प्रदान करता है
उन विभाजनों और तार्किक वॉल्यूमों को बनाना और हटाना, जो फ़ाइल सिस्टम में फिट नहीं होते
मॉडल को बहुत आसानी से बनाया जा सकता है। या फिर, आप उन्हें इसमें फिट कर सकते हैं: उदाहरण के लिए, एक विभाजन बनाना
"mkdir /fs/hda1" पर मैप किया जा सकता है, लेकिन फिर आपको चुनने के लिए कुछ विधि निर्दिष्ट करनी होगी
विभाजन का आकार (शायद "echo 100M > /fs/hda1/.size"), और विभाजन का प्रकार,
आरंभ और अंत सेक्टर आदि, लेकिन एक बार जब आप ऐसा कर लेते हैं तो फाइलसिस्टम-आधारित एपीआई शुरू हो जाता है
वर्तमान में हमारे पास जो कॉल-आधारित API है, उससे यह अधिक जटिल प्रतीत होता है।
दूसरा कारण दक्षता है। FUSE अपने आप में काफी कुशल है, लेकिन यह
FUSE मॉड्यूल में बहुत सारे छोटे, स्वतंत्र कॉल करें। गेस्टमाउंट में इन्हें करना पड़ता है
libguestfs उपकरण के लिए संदेशों में अनुवादित किया जा सकता है जिसमें एक बड़ा ओवरहेड है (समय में)
और राउंड ट्रिप)। उदाहरण के लिए, 64 KB के टुकड़ों में फ़ाइल पढ़ना अक्षम है क्योंकि प्रत्येक
चंक एक एकल राउंड ट्रिप में बदल जाएगा। libguestfs API में यह बहुत अधिक है
स्ट्रीमिंग कॉल के माध्यम से संपूर्ण फ़ाइल या निर्देशिका को डाउनलोड करने के लिए कुशल
"guestfs_download" या "guestfs_tar_out".
क्यों नहीं है इसलिए आप do सब कुछ पूज्य गुरुदेव के मार्गदर्शन से संपन्न कर सकते हैं - जीवीएफएस?
ये समस्याएं FUSE की समस्याओं के समान हैं।
GVFS, POSIX/FUSE से बेहतर अमूर्तता है। GVFS के लिए एक FTP बैकएंड है, जो
यह उत्साहवर्धक है क्योंकि FTP वैचारिक रूप से libguestfs API के समान है। हालाँकि GVFS
एफ़टीपी बैकएंड अन्तरक्रियाशीलता बनाए रखने के लिए एक साथ कई कनेक्शन बनाता है, जिससे
हम libguestfs के साथ आसानी से ऐसा नहीं कर सकते।
क्यों कर सकते हैं I लिखना सेवा मेरे la डिस्क, भी यद्यपि I जोड़ा it केवल पढ़ने के लिए?
क्यों कर देता है "--रो" दिखाई देते हैं सेवा मेरे है नहीं प्रभाव?
जब आप कोई डिस्क केवल पढ़ने के लिए जोड़ते हैं, तो libguestfs उसके ऊपर एक लिखने योग्य ओवरले रखता है
अंतर्निहित डिस्क। लेखन इस ओवरले में चला जाता है, और हैंडल बंद होने पर त्याग दिया जाता है
(या "गेस्टफिश" आदि निकास)।
ऐसा करने के दो कारण हैं: सबसे पहले, केवल पढ़ने के लिए डिस्क संभव नहीं है
कई मामलों में (जैसे IDE उनका समर्थन नहीं करता है, इसलिए आपके पास IDE-अनुकरणीय नहीं हो सकता है)
केवल पढ़ने योग्य डिस्क, हालांकि यह वास्तविक libguestfs इंस्टॉलेशन में आम नहीं है)।
दूसरी और सबसे महत्वपूर्ण बात यह है कि यदि केवल पढ़ने के लिए डिस्क उपलब्ध भी हो, तो भी आप नहीं चाहेंगे कि
किसी भी फाइल सिस्टम को माउंट करना जिसमें जर्नल हो, यहां तक कि "mount -o ro", लिखने का कारण बनता है
फाइल सिस्टम क्योंकि जर्नल को फिर से चलाया जाना है और मेटाडेटा को अपडेट करना है। अगर डिस्क
यदि यह वास्तव में केवल पढ़ने के लिए था, तो आप गंदे फाइल सिस्टम को माउंट नहीं कर पाएंगे।
इसे उपयोगी बनाने के लिए, हम इन लेखनों को अस्थायी रूप से संग्रहीत करने के लिए एक स्थान के रूप में ओवरले बनाते हैं, और
फिर हम इसे बाद में त्याग देते हैं। यह सुनिश्चित करता है कि अंतर्निहित डिस्क हमेशा अछूती रहे।
यह भी ध्यान रखें कि libguestfs (इन) का निर्माण करते समय इसके लिए एक प्रतिगमन परीक्षण होता है
"tests/qemu")। यही कारण है कि पैकेजर्स के लिए टेस्ट सूट चलाना महत्वपूर्ण है।
क्या "--रो" बनाना सब डिस्क केवल पढ़ने के लिए?
नहीं! "--ro" विकल्प केवल कमांड लाइन पर जोड़े गए डिस्क को प्रभावित करता है, अर्थात "-a" और
"-d" विकल्प.
गेस्टफिश में, यदि आप "add" कमांड का उपयोग करते हैं, तो डिस्क को रीड-राइट में जोड़ा जाता है (जब तक कि आप
कमांड के साथ "readonly:true" ध्वज को स्पष्ट रूप से निर्दिष्ट करें)।
कर सकते हैं I उपयोग "गेस्टफिश --रो" as a रास्ता सेवा मेरे बैकअप my आभासी मशीनें?
आमतौर पर यह नहीं एक अच्छा विचार है। इस मेलिंग में इस प्रश्न का अधिक विस्तार से उत्तर दिया गया है
सूची पोस्टिंग: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html
अगला प्रश्न भी देखें.
क्यों नहीं कर सकते हैं I रन ऍफ़एससीके on a जीना फाइल सिस्टम का उपयोग "गेस्टफिश --रो"?
यह आदेश आमतौर पर नहीं काम:
गेस्टफिश --ro -a /dev/vg/my_root_fs run : fsck /dev/sda
इसका कारण यह है कि qemu मूल फाइल सिस्टम पर एक स्नैपशॉट बनाता है, लेकिन यह
सख्त बिंदु-समय स्नैपशॉट नहीं बनाता है। अंतर्निहित पर डेटा के ब्लॉक
फ़ाइल सिस्टम को qemu द्वारा अलग-अलग समय पर पढ़ा जाता है क्योंकि fsck ऑपरेशन आगे बढ़ता है, होस्ट के साथ
बीच में लिखता है। नतीजा यह है कि fsck में भारी भ्रष्टाचार (काल्पनिक, वास्तविक नहीं!) दिखता है।
और असफल हो जाता है.
आपको बस एक पॉइंट-इन-टाइम स्नैपशॉट बनाना है। अगर यह लॉजिकल वॉल्यूम है, तो इसका इस्तेमाल करें
एक LVM2 स्नैपशॉट। यदि फ़ाइल सिस्टम btrfs/ZFS फ़ाइल जैसी किसी चीज़ के अंदर स्थित है,
btrfs/ZFS स्नेपशॉट का उपयोग करें, और फिर स्नेपशॉट पर fsck चलाएँ। व्यवहार में आप ऐसा नहीं करते
इसके लिए libguestfs का उपयोग करने की आवश्यकता है - बस चलाएँ /एसबीएन/एफएससीके सीधे.
होस्ट डिवाइस और फ़ाइलों का पॉइंट-इन-टाइम स्नैपशॉट बनाना इसके दायरे से बाहर है
libguestfs, हालांकि libguestfs एक बार बन जाने के बाद उन पर काम कर सकता है।
क्या है la अंतर के बीच अतिथि मछली और virt-बचाव?
बहुत से लोग हमारे द्वारा उपलब्ध कराए गए दो सतही रूप से समान उपकरणों से भ्रमित हो जाते हैं:
$ गेस्टफिश --ro -a गेस्ट.img
> Daud
> fsck /dev/sda1
$ virt-rescue --ro अतिथि.img
> /एसबीएन/एफएससीके / / देव sda1
और फिर इससे संबंधित प्रश्न यह उठता है कि आप पूर्ण शेल कमांड क्यों नहीं टाइप कर सकते?
गेस्टफिश में सभी --विकल्पों के साथ (लेकिन आप कर सकते हैं पुण्य-बचाव(1))।
अतिथि मछली(1) एक ऐसा कार्यक्रम है जो संरचित पहुंच प्रदान करता है Guestfs(3) एपीआई. ऐसा होता है
एक अच्छा इंटरैक्टिव शेल भी है, लेकिन इसका प्राथमिक उद्देश्य संरचित पहुंच है
शेल स्क्रिप्ट। इसे भाषा बाइंडिंग की तरह समझें, जैसे पायथन और अन्य बाइंडिंग,
लेकिन शेल के लिए। गेस्टफिश (और libguestfs API) का मुख्य विभेदक कारक
सामान्य) परिवर्तनों को स्वचालित करने की क्षमता है।
पुण्य-बचाव(1) libguestfs उपकरण को बूट करने और बनाने के लिए एक मुफ्त-सभी फ्रीफॉर्म तरीका है
आपके VM में मनमाने बदलाव। यह संरचित नहीं है, आप इसे स्वचालित नहीं कर सकते, लेकिन बनाने के लिए
अपने मेहमानों के लिए त्वरित तदर्थ समाधान प्रदान करना, काफी उपयोगी हो सकता है।
लेकिन, libguestfs में उपकरण में एक "बैकडोर" भी है जो आपको मनमाना संदेश भेजने की अनुमति देता है
शेल कमांड। यह virt-rescue जितना लचीला नहीं है, क्योंकि आप इसके साथ इंटरैक्ट नहीं कर सकते
शेल कमांड, लेकिन फिर भी यह यहां है:
> डीबग sh "cmd arg1 arg2 ..."
ध्यान रखें कि आपको नहीं इस पर भरोसा करें। इसे भविष्य में हटाया या बदला जा सकता है। अगर आपका
प्रोग्राम को कुछ ऑपरेशन की आवश्यकता है, कृपया इसे libguestfs API में जोड़ें।
क्या है la सौदा साथ में "गेस्टफिश -मैं"?
क्यों कर देता है पुण्य-बिल्ली केवल काम on a वास्तविक VM छवि, लेकिन पुण्य-डीएफ कार्य on कोई डिस्क छवि?
क्या कर देता है "नहीं जड़ युक्ति पाया in इसका परिचालन प्रणाली छवि" क्या मतलब है?
ये सभी प्रश्न मूलभूत स्तर पर संबंधित हैं, जिनका तत्काल उत्तर नहीं दिया जा सकता।
स्पष्ट।
पर Guestfs(3) एपीआई स्तर पर, एक "डिस्क छवि" केवल विभाजन और फाइल सिस्टम का ढेर है।
इसके विपरीत, जब वर्चुअल मशीन बूट होती है, तो यह उन फाइल सिस्टम को एक सुसंगत में माउंट करती है
पदानुक्रम जैसे:
/ (/dev/sda2)
│
├── / बूट (/देव/एसडीए1)
│
├── / होम (/dev/vg_external/होम्स)
│
├── / usr (/dev/vg_os/lv_usr)
│
└── / var (/dev/vg_os/lv_var)
(या विंडोज़ पर ड्राइव अक्षर)।
एपीआई सबसे पहले डिस्क इमेज को "फाइल सिस्टम के ढेर" स्तर पर देखता है। लेकिन यह भी
डिस्क छवि का निरीक्षण करने का एक तरीका है यह देखने के लिए कि क्या इसमें कोई ऑपरेटिंग सिस्टम है, और यह कैसे काम करता है।
ऑपरेटिंग सिस्टम बूट होने पर डिस्क माउंट की जाती हैं: "INSPECTION" Guestfs(3).
उपयोगकर्ता कुछ उपकरणों की अपेक्षा करते हैं (जैसे पुण्य-बिल्ली(1)) वीएम पथों के साथ काम करने के लिए:
virt-cat fedora.img /var/log/messages
वर्ट-कैट को यह कैसे पता? / var क्या यह एक अलग विभाजन है? चाल यह है कि virt-cat
डिस्क छवि पर निरीक्षण करता है, और पथ को सही ढंग से अनुवाद करने के लिए इसका उपयोग करता है।
कुछ उपकरण (जिनमें पुण्य-बिल्ली(1) गुण-संपादन(1) पुण्य-ls(1)) VM को मैप करने के लिए निरीक्षण का उपयोग करें
अन्य उपकरण, जैसे पुण्य-डीएफ(1) और गुण-फ़ाइल सिस्टम(1) पूरी तरह से संचालित
libguestfs API के स्तर पर "फाइल सिस्टम का बड़ा ढेर" का उपयोग न करें, और निरीक्षण का उपयोग न करें।
अतिथि मछली(1) एक दिलचस्प मध्य स्थान है। यदि आप इसका उपयोग करते हैं -a और -m कमांड लाइन
विकल्प, फिर आपको गेस्टफिश को यह बताना होगा कि डिस्क इमेज कैसे जोड़ें और कहां माउंट करें
विभाजन। यह कच्चा API स्तर है।
यदि आप उपयोग करते हैं -i विकल्प, libguestfs निरीक्षण करता है और फ़ाइल सिस्टम को माउंट करता है
आप
"इस ऑपरेटिंग सिस्टम छवि में कोई रूट डिवाइस नहीं मिला" त्रुटि इसी से संबंधित है।
इसका मतलब है कि निरीक्षण आपके द्वारा दी गई डिस्क छवि के भीतर ऑपरेटिंग सिस्टम का पता लगाने में असमर्थ था
यह आपको virt-cat जैसे प्रोग्राम में दिख सकता है अगर आप उन्हें किसी चीज़ पर चलाने की कोशिश करते हैं
जो कि केवल एक डिस्क छवि है, वर्चुअल मशीन डिस्क छवि नहीं है।
क्या do इन "डीबग*" और "आंतरिक-*" कार्यों कर?
कुछ फ़ंक्शन हैं जो डिबगिंग और आंतरिक उद्देश्यों के लिए उपयोग किए जाते हैं नहीं
स्थिर एपीआई का हिस्सा.
"debug*" (या "guestfs_debug*") फ़ंक्शन, मुख्य रूप से "guestfs_debug" Guestfs(3) और
कुछ अन्य, libguestfs को डीबग करने के लिए उपयोग किए जाते हैं। हालाँकि वे इसका हिस्सा नहीं हैं
स्थिर एपीआई और इस प्रकार किसी भी समय बदला या हटाया जा सकता है, कुछ प्रोग्राम कॉल करना चाह सकते हैं
ये libguestfs में जोड़े जाने वाले फीचर्स की प्रतीक्षा करते समय हैं।
"internal-*" (या "guestfs_internal_*") फ़ंक्शन का उपयोग विशुद्ध रूप से libguestfs द्वारा किया जाना है
प्रोग्राम के लिए उन्हें कॉल करने का कोई कारण नहीं है, और प्रोग्राम को उनका उपयोग करने का प्रयास नहीं करना चाहिए
उनका उपयोग करने से अक्सर बुरी चीजें घटित होती हैं, साथ ही वे उस प्रक्रिया का हिस्सा भी नहीं होते हैं।
प्रलेखित स्थिर एपीआई.
डेवलपर्स
कहा पे do I भेजें पैच?
कृपया पैच को libguestfs मेलिंग सूची पर भेजें
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
आपकी पोस्टिंग को मैन्युअल रूप से स्वीकृत होने तक विलंब होगा।
कृपया नहीं है उपयोग GitHub खींच अनुरोधों - वे मर्जी be उपेक्षितकारण हैं (क) हम चाहते हैं
मेलिंग सूची पर पैच पर चर्चा और विच्छेदन करने के लिए, और (बी) गिटहब पुल अनुरोध बदल जाते हैं
मर्ज कमिट्स लेकिन हम एक रैखिक इतिहास रखना पसंद करते हैं।
कैसे do I प्रस्ताव a सुविधा?
जिन बड़ी नई सुविधाओं में आप योगदान देना चाहते हैं, उन पर मेलिंग सूची में चर्चा की जानी चाहिए
सबसे पहले (https://www.redhat.com/mailman/listinfo/libguestfs)। इससे निराशा से बचा जा सकता है
और यदि हमें लगता है कि यह सुविधा libguestfs परियोजना में फिट नहीं होगी तो यह व्यर्थ काम होगा।
यदि आप कोई उपयोगी सुविधा सुझाना चाहते हैं, लेकिन कोड नहीं लिखना चाहते, तो आप एक शिकायत दर्ज कर सकते हैं।
बग (देखें "सहायता प्राप्त करना और बग की रिपोर्ट करना") सारांश के आरंभ में "RFE: " के साथ
लाइन.
कौन कर सकते हैं करना सेवा मेरे कामेच्छा गिट?
लगभग 5 लोगों के पास गिटहब तक पहुँच है। पैच को पहले सूची में पोस्ट किया जाना चाहिए
और ACKed. पैच को ACK करने और पुश करने की नीति यहाँ बताई गई है:
https://www.redhat.com/archives/libguestfs/2012-January/msg00023.html
कर सकते हैं I कांटा libguestfs?
बेशक आप कर सकते हैं। Git libguestfs को फोर्क करना आसान बनाता है। Github इसे और भी आसान बनाता है।
यह अच्छा होगा यदि आप हमें मेलिंग सूची पर कांटे और उनके कारणों के बारे में बताएं।
कई तरह का प्रशन
कर सकते हैं I मॉनिटर la जीना डिस्क गतिविधि of a आभासी मशीन का उपयोग libguestfs?
एक सामान्य अनुरोध यह है कि किसी डिस्क की लाइव डिस्क गतिविधि पर नज़र रखने के लिए libguestfs का उपयोग किया जा सके.
उदाहरण के लिए, जब भी कोई अतिथि कोई नई फ़ाइल बनाएगा, तो उसे सूचित किया जाएगा। Libguestfs
कर देता है नहीं जैसा कि आप इस चित्र में देख सकते हैं, कुछ लोग कल्पना करते हैं कि यह उसी तरह काम करेगा:
┌─────────────────────────────────┐
│ libguestfs का उपयोग कर निगरानी कार्यक्रम │
└─────────────────────────────────┘
↓
┌───────────┐
│ लाइव VM │ │ libguestfs उपकरण │
├───────────┤
│ कर्नेल (1)│ │ उपकरण कर्नेल (2) │
└───────────┘
↓ ↓ (आर/ओ कनेक्शन)
┌──────────────────────┐
| डिस्क छवि |
└──────────────────────┘
यह परिदृश्य सुरक्षित है (जब तक आप ड्राइव जोड़ते समय "readonly" फ़्लैग सेट करते हैं)।
हालाँकि libguestfs एप्लायंस कर्नेल (2) डिस्क में किए गए सभी परिवर्तनों को नहीं देखता है
छवि, दो कारणों से:
i. VM कर्नेल (1) मेमोरी में डेटा कैश कर सकता है, इसलिए यह डिस्क छवि में दिखाई नहीं देता है।
ii. libguestfs एप्लायंस कर्नेल (2) यह अपेक्षा नहीं करता है कि डिस्क छवि बदल रही है
इसके नीचे, इसलिए इसका अपना कैश जादुई रूप से अपडेट नहीं होता है, भले ही VM कर्नेल (1)
डिस्क छवि को अद्यतन करता है.
एकमात्र समर्थित समाधान यह है कि जब भी आप संपूर्ण libguestfs उपकरण को पुनः आरंभ करें
डिस्क छवि में परिवर्तन देखना चाहते हैं। API स्तर पर जो कॉलिंग से मेल खाता है
"guestfs_shutdown" के बाद "guestfs_launch" आता है, जो एक भारी ऑपरेशन है (देखें
भी Guestfs-प्रदर्शन(3))।
यदि उपकरण को पुनः लॉन्च करना वास्तव में बहुत अधिक है, तो आप कुछ असमर्थित हैक आज़मा सकते हैं
महंगा:
· "guestfs_drop_caches (g, 3)" को कॉल करें। इससे सभी कैश किए गए डेटा को libguestfs द्वारा सहायता मिलती है
एप्लायंस कर्नेल (2) को त्याग दिया जाना चाहिए, इसलिए यह डिस्क छवि पर वापस चला जाता है।
हालाँकि यह अपने आप में पर्याप्त नहीं है, क्योंकि qemu कुछ डेटा कैश भी करता है।
"cache=unsafe" मोड को (पुनः) सक्षम करने के लिए libguestfs को पैच करने की भी आवश्यकता होगी। देखें:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/
· इसके बजाय virt-bmap जैसे उपकरण का उपयोग करें।
· अतिथि के अंदर एक एजेंट चलाएं.
यदि अतिथि अधिक मौलिक परिवर्तन कर रहा है (जैसे फाइल सिस्टम हटाना) तो इससे कोई मदद नहीं मिलती।
इस प्रकार की चीजों के लिए आपको उपकरण को पुनः चालू करना होगा।
(ध्यान दें कि एक तीसरी समस्या है जिसकी वास्तविक जांच के लिए आपको लगातार स्नैपशॉट का उपयोग करना होगा)
लाइव डिस्क छवियाँ, लेकिन किसी भी लाइव डिस्क के विरुद्ध libguestfs का उपयोग करने में यह एक सामान्य समस्या है
छवि।)
onworks.net सेवाओं का उपयोग करके ऑनलाइन guestfs-faq का उपयोग करें