ນີ້ແມ່ນຄໍາສັ່ງ guestfs-faq ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
guestfs-faq - libguestfs ຄຳຖາມທີ່ຖາມເລື້ອຍໆ (FAQ)
ກ່ຽວກັບ LIBGUESTFS
ແມ່ນຫຍັງ is libguestfs?
libguestfs ເປັນວິທີການສ້າງ, ເຂົ້າເຖິງ ແລະແກ້ໄຂຮູບພາບແຜ່ນ. ທ່ານສາມາດເບິ່ງພາຍໃນແຜ່ນ
ຮູບພາບ, ປັບປຸງແກ້ໄຂໄຟລ໌ທີ່ເຂົາເຈົ້າມີ, ສ້າງໃຫ້ເຂົາເຈົ້າຈາກ scratch, ປັບຂະຫນາດໃຫ້ເຂົາເຈົ້າ, ແລະຫຼາຍ
ເພີ່ມເຕີມ. ມັນເປັນປະໂຫຍດໂດຍສະເພາະຈາກສະຄິບແລະໂປຼແກຼມຕ່າງໆແລະຈາກເສັ້ນຄໍາສັ່ງ.
libguestfs ເປັນຫ້ອງສະຫມຸດ C (ເພາະສະນັ້ນ "lib-"), ແລະຊຸດຂອງເຄື່ອງມືທີ່ສ້າງຂຶ້ນໃນຫ້ອງສະຫມຸດນີ້, ແລະ
ການຜູກມັດສໍາລັບພາສາການຂຽນໂປລແກລມທົ່ວໄປຫຼາຍ.
ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບສິ່ງທີ່ libguestfs ສາມາດອ່ານບົດແນະນໍາໃນຫນ້າທໍາອິດ
(http://libguestfs.org).
ແມ່ນຫຍັງ ມີ ໄດ້ ຄຸນນະ ທຳ ເຄື່ອງມື?
ເຄື່ອງມື Virt (ເວັບໄຊທ໌: http://virt-tools.org) ແມ່ນຊຸດການຈັດການ virtualization ທັງໝົດ
ເຄື່ອງມືທີ່ແນໃສ່ຜູ້ບໍລິຫານລະບົບ. ບາງສ່ວນຂອງພວກເຂົາມາຈາກ libguestfs, ບາງຄົນມາຈາກ
libvirt ແລະອື່ນໆຈໍານວນຫຼາຍຈາກໂຄງການແຫຼ່ງເປີດອື່ນໆ. ດັ່ງນັ້ນເຄື່ອງມື virt ແມ່ນ superset ຂອງ
libguestfs. ຢ່າງໃດກໍຕາມ libguestfs ມາພ້ອມກັບເຄື່ອງມືທີ່ສໍາຄັນຫຼາຍ. ເບິ່ງ
http://libguestfs.org ສໍາລັບບັນຊີລາຍຊື່ເຕັມ.
ບໍ່ libguestfs ຕ້ອງການ { ເສລີພາບ / KVM / ສີແດງ ຫມວກກັນກະທົບ / Fedora }?
ບໍ່ມີ!
libvirt ບໍ່ແມ່ນຄວາມຕ້ອງການສໍາລັບ libguestfs.
libguestfs ເຮັດວຽກຮ່ວມກັບຮູບພາບແຜ່ນໃດຫນຶ່ງ, ລວມທັງການສ້າງຕັ້ງຂື້ນໃນ VMware, KVM, qemu,
VirtualBox, Xen, ແລະ hypervisors ອື່ນໆຈໍານວນຫຼາຍ, ແລະອັນທີ່ທ່ານໄດ້ສ້າງຕັ້ງແຕ່ເລີ່ມຕົ້ນ.
ຜູ້ສະຫນັບສະຫນູນ Red Hat (ie. ຈ່າຍສໍາລັບ) ການພັດທະນາ libguestfs ແລະຈໍານວນຂະຫນາດໃຫຍ່ຂອງການເປີດອື່ນໆ.
ໂຄງການແຫຼ່ງ. ແຕ່ທ່ານສາມາດດໍາເນີນການ libguestfs ແລະເຄື່ອງມື virt ໃນ Linux ທີ່ແຕກຕ່າງກັນຫຼາຍ
distros ແລະ Mac OS X. ພວກເຮົາພະຍາຍາມສຸດຄວາມສາມາດຂອງພວກເຮົາເພື່ອສະຫນັບສະຫນູນ Linux distros ທັງຫມົດເປັນຊັ້ນທໍາອິດ
ພົນລະເມືອງ. ບາງເຄື່ອງມື virt ໄດ້ຖືກ ported ກັບ Windows.
ວິທີການ ບໍ່ libguestfs ປຽບທຽບ to ອື່ນໆ ເຄື່ອງມື?
ທຽບ kpartx
Libguestfs ໃຊ້ວິທີທີ່ແຕກຕ່າງກັນຈາກ kpartx. kpartx ຕ້ອງການຮາກ, ແລະ mounts
ລະບົບໄຟລ໌ຢູ່ໃນໂຮດ kernel (ເຊິ່ງສາມາດບໍ່ປອດໄພ - ເບິ່ງ guestfs-ຄວາມປອດໄພ(1)).
Libguestfs ແຍກ kernel ເຈົ້າພາບຂອງເຈົ້າອອກຈາກແຂກ, ມີຄວາມຍືດຫຍຸ່ນຫຼາຍ, ສາມາດຂຽນໄດ້,
ຮອງຮັບ LVM, ບໍ່ຕ້ອງການຮາກ, ຖືກແຍກອອກຈາກຂະບວນການອື່ນໆ, ແລະເຮັດຄວາມສະອາດ
ຫຼັງຈາກຕົວມັນເອງ. Libguestfs ແມ່ນຫຼາຍກ່ວາພຽງແຕ່ການເຂົ້າເຖິງໄຟລ໌ເພາະວ່າທ່ານສາມາດນໍາໃຊ້ມັນ
ສ້າງຮູບພາບຈາກ scratch.
ທຽບ vdfuse
vdfuse ແມ່ນຄ້າຍຄື kpartx ແຕ່ສໍາລັບຮູບພາບ VirtualBox. ເບິ່ງການປຽບທຽບ kpartx ຂ້າງເທິງ.
ທ່ານສາມາດນໍາໃຊ້ libguestfs ໃນໄຟລ໌ການແບ່ງປັນທີ່ເປີດເຜີຍໂດຍ vdfuse, ເຖິງແມ່ນວ່າມັນບໍ່ແມ່ນ
ມີຄວາມຈໍາເປັນນັບຕັ້ງແຕ່ libguestfs ສາມາດເຂົ້າເຖິງຮູບພາບ VirtualBox ໂດຍກົງ.
ທຽບ qemu-nbd
NBD (Network Block Device) ເປັນໂປຣໂຕຄໍເພື່ອສົ່ງອອກອຸປະກອນບລັອກຜ່ານເຄືອຂ່າຍ.
qemu-nbd ເປັນເຊີບເວີ NBD ທີ່ສາມາດຈັດການຮູບແບບດິສກ໌ໃດນຶ່ງທີ່ຮອງຮັບໂດຍ qemu (ຕົວຢ່າງ: ດິບ,
qcow2). ທ່ານສາມາດນໍາໃຊ້ libguestfs ແລະ qemu-nbd ຫຼື nbdkit ຮ່ວມກັນເພື່ອເຂົ້າເຖິງບລັອກ
ອຸປະກອນຜ່ານເຄືອຂ່າຍ, ຕົວຢ່າງ: "guestfish -a nbd://remote"
ທຽບ ການຕິດຕັ້ງ ລະບົບໄຟລ in ໄດ້ ເຈົ້າພາບ
ການຕິດຕັ້ງລະບົບໄຟລ໌ແຂກຢູ່ໃນເຈົ້າພາບແມ່ນບໍ່ປອດໄພແລະຄວນຈະຫຼີກເວັ້ນການຢ່າງສົມບູນ
ສໍາລັບແຂກທີ່ບໍ່ເຊື່ອຖື. ໃຊ້ libguestfs ເພື່ອສະຫນອງຊັ້ນຂອງການປົກປ້ອງຕໍ່ຕ້ານ
ການຂູດຮີດລະບົບໄຟລ໌. ເບິ່ງນຳ ແຂກ(1).
ທຽບ ພາກສ່ວນ
Libguestfs ຮອງຮັບ LVM. Libguestfs ໃຊ້ການແບ່ງສ່ວນ ແລະໃຫ້ຄຸນສົມບັດທີ່ແຍກກັນຫຼາຍທີ່ສຸດ
ຜ່ານ libguestfs API.
ກຳ ລັງໄດ້ຮັບ ຊ່ວຍເຫຼືອ ແລະ ການລາຍງານ ບັກ
ວິທີການ do I ຮູ້ ແມ່ນຫຍັງ ສະບັບພາສາ ຂ້ອຍ ໃຊ້?
ວິທີທີ່ງ່າຍທີ່ສຸດແມ່ນ:
Guestfish -- ສະບັບ
ການພັດທະນາ Libguestfs ເກີດຂຶ້ນຕາມສາຂາທີ່ບໍ່ຫມັ້ນຄົງແລະພວກເຮົາສ້າງເປັນແຕ່ລະໄລຍະ
ສາຂາທີ່ຫມັ້ນຄົງທີ່ພວກເຮົາ backport patches ຄົງທີ່. ເພື່ອຊອກຫາເພີ່ມເຕີມ, ອ່ານ "LIBGUESTFS
VERSION NUMBERS" ໃນ ແຂກ(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. ພວກເຮົາບໍ່ສະເຫມີໄປ
ອ້ອມຮອບ, ສະນັ້ນກະລຸນາຢູ່ໃນຊ່ອງທາງຫຼັງຈາກຖາມຄໍາຖາມຂອງເຈົ້າແລະຜູ້ໃດຜູ້ຫນຶ່ງຈະກັບຄືນມາ
ກັບທ່ານ
ສໍາລັບເຄື່ອງມື 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).
COMMON ບັນຫາ
ເບິ່ງ "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 ລົ້ມເຫລວຫຼື kernel ໂຮດບໍ່ສາມາດບູດໄດ້. ເພື່ອໃຫ້ໄດ້ຮັບຕື່ມອີກ
ຂໍ້ມູນກ່ຽວກັບຄວາມລົ້ມເຫຼວ, ທ່ານຕ້ອງດໍາເນີນການ:
libguestfs-test-tool
ຖ້າຫາກວ່າ, ຫຼັງຈາກການນໍາໃຊ້ນີ້, ທ່ານຍັງບໍ່ເຂົ້າໃຈຄວາມລົ້ມເຫຼວ, ຕິດຕໍ່ພວກເຮົາ (ເບິ່ງທີ່ຜ່ານມາ
ພາກ).
libguestfs: ຄວາມຜິດພາດ: ບໍ່ສາມາດເຮັດໄດ້ ຊອກຫາ ໃດ ທີ່ເຫມາະສົມ libguestfs ຊຸບເປີມິນ, ຄົງ or ແບບເກົ່າ ເຄື່ອງໃຊ້ໄຟຟ້າ
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: ພໍ່ແມ່ ລະບົບ ບໍ່ ພົບເຫັນ
supermin-ຜູ້ຊ່ວຍ: ext2: ພໍ່ແມ່ ລະບົບ ບໍ່ ພົບເຫັນ
[ບັນຫານີ້ຖືກແກ້ໄຂຢ່າງຖາວອນໃນ libguestfs ≥ 1.26.]
ຖ້າທ່ານເຫັນຂໍ້ຜິດພາດເຫຼົ່ານີ້ຢູ່ໃນ Debian / Ubuntu, ທ່ານຈໍາເປັນຕ້ອງດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້:
sudo update-guestfs-appliance
"ການອະນຸຍາດ ປະຕິເສດ" ໃນເວລາທີ່ ການເຮັດວຽກ libguestfs as ຮາກ
ທ່ານໄດ້ຮັບການອະນຸຍາດປະຕິເສດຄວາມຜິດພາດໃນເວລາທີ່ເປີດຮູບພາບແຜ່ນ, ເຖິງແມ່ນວ່າທ່ານກໍາລັງແລ່ນ
libguestfs ເປັນຮາກ.
ນີ້ແມ່ນເກີດມາຈາກ libvirt, ແລະດັ່ງນັ້ນພຽງແຕ່ເກີດຂຶ້ນໃນເວລາທີ່ການນໍາໃຊ້ backend libvirt. ເມື່ອແລ່ນ
ເປັນຮາກ, libvirt ຕັດສິນໃຈແລ່ນເຄື່ອງໃຊ້ qemu ເປັນຜູ້ໃຊ້ "qemu.qemu". ແຕ່ຫນ້າເສຍດາຍ
ນີ້ປົກກະຕິແລ້ວຫມາຍຄວາມວ່າ qemu ບໍ່ສາມາດເປີດຮູບພາບແຜ່ນ, ໂດຍສະເພາະຖ້າຮູບພາບແຜ່ນເຫຼົ່ານັ້ນ
ເປັນເຈົ້າຂອງໂດຍຮາກ, ຫຼືມີຢູ່ໃນໄດເລກະທໍລີທີ່ຕ້ອງການການເຂົ້າເຖິງຮາກ.
ມີ bug ເປີດຕໍ່ກັບ libvirt ເພື່ອແກ້ໄຂນີ້:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069
ທ່ານສາມາດເຮັດວຽກປະມານນີ້ໂດຍຫນຶ່ງໃນວິທີການດັ່ງຕໍ່ໄປນີ້:
·ສະຫຼັບໄປຫາ backend ໂດຍກົງ:
ສົ່ງອອກ LIBGUESTFS_BACKEND=direct
· ຢ່າແລ່ນ libguestfs ເປັນຮາກ.
· Chmod ຮູບພາບແຜ່ນແລະໄດເລກະທໍລີພໍ່ແມ່ເພື່ອໃຫ້ຜູ້ໃຊ້ qemu ສາມາດເຂົ້າເຖິງພວກມັນໄດ້.
· (ຂີ້ຮ້າຍ) ແກ້ໄຂ /etc/libvirt/qemu.conf ແລະປ່ຽນການຕັ້ງຄ່າ "ຜູ້ໃຊ້".
excl: /ໃນມັນ: ການອະນຸຍາດ ຖືກປະຕິເສດ
ຫມາຍເຫດ: ຖ້າຂໍ້ຜິດພາດນີ້ເກີດຂື້ນໃນເວລາທີ່ທ່ານກໍາລັງໃຊ້ຊຸດ distro ຂອງ libguestfs (ເຊັ່ນ: ຈາກ
Fedora, Debian, ແລະອື່ນໆ) ຈາກນັ້ນຍື່ນຂໍ້ບົກພ່ອງຕໍ່ກັບ distro. ນີ້ບໍ່ແມ່ນຄວາມຜິດພາດທີ່
ຜູ້ໃຊ້ປົກກະຕິຄວນເບິ່ງວ່າຊຸດ distro ໄດ້ຖືກກະກຽມຢ່າງຖືກຕ້ອງ.
ຄວາມຜິດພາດນີ້ເກີດຂຶ້ນໃນລະຫວ່າງໄລຍະບູດ supermin ຂອງການເລີ່ມຕົ້ນອຸປະກອນ:
supermin: ຕິດຕັ້ງຮາກໃໝ່ໃສ່ / root
supermin: chroot
execl: /init: ການອະນຸຍາດຖືກປະຕິເສດ
supermin: debug: listing directory /
[...ຕິດຕາມດ້ວຍຜົນດີບັ໊ກຫຼາຍອັນ...]
ນີ້ແມ່ນ bug ສັບສົນທີ່ກ່ຽວຂ້ອງກັບ ຊຸບເປີມິນ(1) ເຄື່ອງໃຊ້. ເຄື່ອງໃຊ້ແມ່ນກໍ່ສ້າງ
ໂດຍການຄັດລອກໄຟລ໌ເຊັ່ນ / bin / bash ແລະຫ້ອງສະຫມຸດຈໍານວນຫຼາຍຈາກເຈົ້າພາບ. ໄຟລ໌ "hostfiles"
ລາຍຊື່ໄຟລ໌ທີ່ຄວນຈະຖືກຄັດລອກຈາກເຈົ້າພາບເຂົ້າໄປໃນເຄື່ອງໃຊ້. ຖ້າບາງໄຟລ໌
ບໍ່ມີຢູ່ໃນເຈົ້າພາບຫຼັງຈາກນັ້ນພວກເຂົາຖືກພາດໂອກາດອອກ, ແຕ່ຖ້າໄຟລ໌ເຫຼົ່ານີ້ມີຄວາມຈໍາເປັນໃນຄໍາສັ່ງ
to (eg) ແລ່ນ / bin / bash ຫຼັງຈາກນັ້ນ, ທ່ານຈະເຫັນຂໍ້ຜິດພາດຂ້າງເທິງ.
ການວິນິດໄສບັນຫາກ່ຽວຂ້ອງກັບການສຶກສາຫ້ອງສະຫມຸດທີ່ຈໍາເປັນໂດຍ / bin / bash, ເຊັ່ນ:
ldd / bin / bash
ປຽບທຽບກັບ "hostfiles", ກັບໄຟລ໌ທີ່ມີຢູ່ໃນລະບົບໄຟລ໌ເຈົ້າພາບ,
ແລະມີຜົນດີບັກທີ່ພິມອອກມາໃນຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດ. ເມື່ອທ່ານໄດ້ເຮັດວຽກອອກທີ່ໄຟລ໌
ຫາຍໄປ, ໃຫ້ຕິດຕັ້ງໄຟລ໌ນັ້ນໂດຍໃຊ້ຕົວຈັດການແພັກເກັດຂອງເຈົ້າແລ້ວລອງໃໝ່ອີກຄັ້ງ.
ທ່ານກໍ່ຄວນກວດເບິ່ງໄຟລ໌ເຊັ່ນ /ໃນມັນ ແລະ / bin / bash (ໃນເຄື່ອງໃຊ້) ແມ່ນ
ປະຕິບັດໄດ້. ຜົນຜະລິດ debug ສະແດງໃຫ້ເຫັນຮູບແບບໄຟລ໌.
ກຳລັງດາວໂຫຼດ, ກຳລັງຕິດຕັ້ງ, ການລວບລວມ LIBGUESTFS
ບ່ອນທີ່ ສາມາດເຮັດໄດ້ I ໄດ້ຮັບ ໄດ້ ຫຼ້າສຸດ ຄູ່ ສໍາລັບການ ... ?
Fedora ≥ 11
ການນໍາໃຊ້:
yum ຕິດຕັ້ງ '*guestf*'
ສໍາລັບການກໍ່ສ້າງຫລ້າສຸດ, ເບິ່ງ:
http://koji.fedoraproject.org/koji/packageinfo?packageID=8391
Red Hat Enterprise Linux
ຮຮ 5
ສະບັບທີ່ສົ່ງໃນ RHEL 5 ຢ່າງເປັນທາງການແມ່ນເກົ່າຫຼາຍແລະບໍ່ຄວນໃຊ້ຍົກເວັ້ນ
ສົມທົບກັບ virt-v2v. ໃຊ້ຊຸດ libguestfs 1.20 ທີ່ທັນສະໄໝໃນ EPEL
5: https://fedoraproject.org/wiki/EPEL
ຮຮ 6
ຮຮ 7
ມັນເປັນສ່ວນຫນຶ່ງຂອງການຕິດຕັ້ງໃນຕອນຕົ້ນ. ໃນ RHEL 6 ແລະ 7 (ເທົ່ານັ້ນ) ທ່ານຕ້ອງຕິດຕັ້ງ
"libguestfs-winsupport" ເພື່ອໄດ້ຮັບການສະຫນັບສະຫນູນແຂກຂອງ Windows.
Debian ແລະ Ubuntu
ສໍາລັບ libguestfs < 1.26, ຫຼັງຈາກການຕິດຕັ້ງ libguestfs ທ່ານຕ້ອງເຮັດ:
sudo update-guestfs-appliance
(ສະຄຣິບນີ້ຖືກລຶບອອກໃນ Debian/Ubuntu ດ້ວຍ libguestfs ≥ 1.26 ແລະແທນທີ່.
ເຄື່ອງໃຊ້ໄດ້ຖືກສ້າງຂຶ້ນຕາມຄວາມຕ້ອງການ.)
ໃນ Ubuntu ເທົ່ານັ້ນ:
sudo chmod 0644 /boot/vmlinuz*
ທ່ານອາດຈະຈໍາເປັນຕ້ອງໄດ້ເພີ່ມຕົວທ່ານເອງເຂົ້າໄປໃນກຸ່ມ "kvm":
sudo usermod -a -G kvm ເຂົ້າສູ່ລະບົບຂອງທ່ານ
Squeeze Debian (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 ໃນ Debian. ແພັກເກດ Debian ທີ່ເປັນທາງການ
ມີ: http://packages.debian.org/search?keywords=libguestfs
Ubuntu
ພວກເຮົາບໍ່ມີຜູ້ຮັກສາ Ubuntu ເຕັມເວລາ, ແລະຊຸດທີ່ສະຫນອງໂດຍ
Canonical (ທີ່ຢູ່ນອກການຄວບຄຸມຂອງພວກເຮົາ) ບາງຄັ້ງກໍ່ແຕກຫັກ.
Canonical ຕັດສິນໃຈປ່ຽນແປງການອະນຸຍາດໃນແກ່ນເພື່ອວ່າມັນບໍ່ແມ່ນ
ສາມາດອ່ານໄດ້ຍົກເວັ້ນໂດຍຮາກ. ນີ້ແມ່ນໂງ່ຫມົດ, ແຕ່ພວກເຂົາຈະບໍ່ປ່ຽນແປງມັນ
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). ດັ່ງນັ້ນຜູ້ໃຊ້ທຸກຄົນ
ຄວນເຮັດສິ່ງນີ້:
sudo chmod 0644 /boot/vmlinuz*
Ubuntu 12.04
libguestfs ໃນ Ubuntu ຮຸ່ນນີ້ເຮັດວຽກ, ແຕ່ທ່ານຈໍາເປັນຕ້ອງປັບປຸງ febootstrap
ແລະ seabios ກັບສະບັບຫລ້າສຸດ.
ທ່ານຕ້ອງການ febootstrap ≥ 3.14-2 ຈາກ:
http://packages.ubuntu.com/precise/febootstrap
ຫຼັງຈາກຕິດຕັ້ງ ຫຼືອັບເດດ febootstrap, ກໍ່ສ້າງອຸປະກອນຄືນໃໝ່:
sudo update-guestfs-appliance
ທ່ານຕ້ອງການ seabios ≥ 0.6.2-0ubuntu2.1 ຫຼື ≥ 0.6.2-0ubuntu3 ຈາກ:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios
ນອກຈາກນັ້ນ, ທ່ານຈໍາເປັນຕ້ອງເຮັດ (ເບິ່ງຂ້າງເທິງ):
sudo chmod 0644 /boot/vmlinuz*
Gentoo
Libguestfs ຖືກເພີ່ມໃສ່ Gentoo ໃນປີ 2012-07 ໂດຍ Andreis Vinogradovs (libguestfs) ແລະ
Maxim Koltsov (ສ່ວນໃຫຍ່ແມ່ນ hivex). ເຮັດ:
ອອກມາ libguestfs
ຊູດ
Libguestfs ຖືກເພີ່ມໃສ່ SuSE ໃນປີ 2012 ໂດຍ Olaf Hering.
ArchLinux
Libguestfs ໄດ້ຖືກເພີ່ມເຂົ້າໃນ AUR ໃນປີ 2010.
Linux distro ອື່ນໆ
ລວບລວມຈາກແຫຼ່ງ (ພາກຕໍ່ໄປ).
distro ອື່ນທີ່ບໍ່ແມ່ນ Linux
ທ່ານຈະຕ້ອງລວບລວມຈາກແຫຼ່ງ, ແລະພອດມັນ.
ວິທີການ ສາມາດເຮັດໄດ້ I ລວບລວມ ແລະ ການຕິດຕັ້ງ libguestfs ຈາກ ແຫຼ່ງ?
ທ່ານສາມາດລວບລວມ libguestfs ຈາກ git ຫຼືແຫຼ່ງ tarball. ອ່ານໄຟລ໌ README ກ່ອນ
ເລີ່ມຕົ້ນ.
Git: https://github.com/libguestfs/libguestfs ແຫຼ່ງ tarballs:
http://libguestfs.org/download
ຢ່າແລ່ນ "ຕິດຕັ້ງ"! ໃຊ້ "./ ແລ່ນ" script ແທນ (ເບິ່ງ README).
ວິທີການ ສາມາດເຮັດໄດ້ I ລວບລວມ ແລະ ການຕິດຕັ້ງ libguestfs if my distro ບໍ່ ມີ ໃຫມ່ ພຽງພໍ
qemu/supermin/kernel?
Libguestfs ຕ້ອງການ supermin 5. ຖ້າ supermin 5 ບໍ່ໄດ້ຖືກ ported ກັບ distro ຂອງທ່ານ, ຫຼັງຈາກນັ້ນເບິ່ງ
ຄໍາຖາມຂ້າງລຸ່ມນີ້.
ທໍາອິດລວບລວມ qemu, supermin ແລະ/ຫຼື kernel ຈາກແຫຼ່ງ. ເຈົ້າເຮັດ ບໍ່ ຈໍາເປັນຕ້ອງ "ເຮັດ
ຕິດຕັ້ງ" ເຂົາເຈົ້າ.
ໃນໄດເລກະທໍລີແຫຼ່ງ libguestfs, ສ້າງສອງໄຟລ໌. "localconfigure" ຄວນປະກອບມີ:
ແຫຼ່ງ localenv
#ການສົ່ງອອກ PATH =/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --prefix / usr "$@"
ເຮັດໃຫ້ "localconfigure" ສາມາດປະຕິບັດໄດ້.
"localenv" ຄວນປະກອບດ້ວຍ:
#ສົ່ງອອກ SUPERMIN=/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
ບໍ່ສະແດງຄວາມຄິດເຫັນແລະປັບສາຍເຫຼົ່ານີ້ຕາມຄວາມຕ້ອງການເພື່ອນໍາໃຊ້ໂຄງການທາງເລືອກທີ່ທ່ານມີ
ລວບລວມ.
ໃຊ້ "./localconfigure" ແທນ "./configure", ແຕ່ຖ້າບໍ່ດັ່ງນັ້ນທ່ານຈະລວບລວມ libguestfs ເປັນ
ປົກກະຕິ.
ຢ່າແລ່ນ "ຕິດຕັ້ງ"! ໃຊ້ "./ ແລ່ນ" script ແທນ (ເບິ່ງ README).
ວິທີການ ສາມາດເຮັດໄດ້ I ລວບລວມ ແລະ ການຕິດຕັ້ງ libguestfs ໂດຍບໍ່ມີການ ຊຸບເປີມິນ?
ຖ້າ supermin 5 ສະຫນັບສະຫນູນ distro ຂອງທ່ານ, ແຕ່ທ່ານບໍ່ມີ supermin ພຽງພໍໃຫມ່
ຕິດຕັ້ງ, ຫຼັງຈາກນັ້ນເບິ່ງຄໍາຖາມທີ່ຜ່ານມາ.
ຖ້າ supermin 5 ບໍ່ສະຫນັບສະຫນູນ distro ຂອງທ່ານທັງຫມົດ, ທ່ານຈະຕ້ອງໃຊ້ "ແກ້ໄຂ
appliance method" ບ່ອນທີ່ທ່ານນໍາໃຊ້ເຄື່ອງມືຄູ່ສົມບູນລ່ວງຫນ້າ. ເພື່ອສ້າງ libguestfs
ໂດຍບໍ່ມີການ supermin, ທ່ານຈໍາເປັນຕ້ອງໄດ້ຜ່ານ "--disable-appliance --disable-daemon" ທັງສອງ
/ autogensh or / configure (ຂຶ້ນກັບວ່າທ່ານກໍາລັງສ້າງຕາມລໍາດັບຈາກ git ຫຼື
ຈາກ tarballs). ຫຼັງຈາກນັ້ນ, ເມື່ອໃຊ້ libguestfs, ທ່ານ ຕ້ອງ ຕັ້ງ "LIBGUESTFS_PATH"
ສະພາບແວດລ້ອມທີ່ປ່ຽນແປງໄດ້ກັບລາຍການຂອງເຄື່ອງໃຊ້ທີ່ລວບລວມໄວ້ກ່ອນ, ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນ
"ອຸປະກອນແກ້ໄຂ" ໃນ ແຂກ(3).
ສໍາລັບເຄື່ອງໃຊ້ທີ່ລວບລວມໄວ້ກ່ອນ, ເບິ່ງ: http://libguestfs.org/download/binaries/appliance/.
Patches ເພື່ອສົ່ງ supermin ໄປຫາ Linux distros ເພີ່ມເຕີມແມ່ນຍິນດີຕ້ອນຮັບ.
ວິທີການ ສາມາດເຮັດໄດ້ I ເພີ່ມ ສະຫນັບສະຫນູນ ສໍາລັບການ sVirt?
ຫມາຍເຫດ ສໍາລັບການ Fedora/RHEL ຜູ້ໃຊ້: ການຕັ້ງຄ່ານີ້ແມ່ນຄ່າເລີ່ມຕົ້ນໂດຍ Fedora 18 ແລະ
RHEL 7. ຖ້າທ່ານພົບບັນຫາໃດໆ, ກະລຸນາແຈ້ງໃຫ້ພວກເຮົາຮູ້ ຫຼືສົ່ງຂໍ້ບົກພ່ອງ.
SVirt ສະຫນອງອຸປະກອນແຂງໂດຍໃຊ້ SELinux, ເຮັດໃຫ້ມັນຍາກຫຼາຍສໍາລັບແຜ່ນ rogue
ຮູບພາບທີ່ຈະ "ຫນີ" ຈາກການກັກຂັງຂອງ libguestfs ແລະສ້າງຄວາມເສຍຫາຍໃຫ້ກັບເຈົ້າພາບ (ມັນເປັນເລື່ອງຍຸດຕິທໍາທີ່ຈະເວົ້າ.
ວ່າແມ້ແຕ່ຢູ່ໃນ libguestfs ມາດຕະຖານນີ້ຈະຍາກ, ແຕ່ sVirt ສະຫນອງຊັ້ນພິເສດຂອງ
ການປົກປ້ອງເຈົ້າພາບແລະສໍາຄັນກວ່ານັ້ນແມ່ນປົກປ້ອງເຄື່ອງ virtual ຢູ່ໃນໂຮດດຽວກັນ
ຈາກກັນ).
ໃນປັດຈຸບັນເພື່ອເປີດໃຊ້ sVirt ທ່ານຈະຕ້ອງ libvirt ≥ 0.10.2 (1.0 ຫຼືຫຼັງຈາກນັ້ນທີ່ຕ້ອງການ),
libguestfs ≥ 1.20, ແລະນະໂຍບາຍ SELinux ຈາກ Fedora ທີ່ຜ່ານມາ. ຖ້າທ່ານບໍ່ໄດ້ແລ່ນ
Fedora 18+, ທ່ານຈະຕ້ອງປ່ຽນແປງນະໂຍບາຍ SELinux ຂອງທ່ານ - ຕິດຕໍ່ພວກເຮົາທີ່
ບັນຊີລາຍຊື່ທາງໄປສະນີ.
ເມື່ອທ່ານມີຄວາມຕ້ອງການ, ເຮັດ:
./configure --with-default-backend=libvirt # libguestfs >= 1.22
./configure --with-default-attach-method=libvirt # libguestfs <= 1.20
ເຮັດໃຫ້
ຕັ້ງ SELinux ເປັນໂໝດບັງຄັບ, ແລະ sVirt ຄວນຖືກໃຊ້ໂດຍອັດຕະໂນມັດ.
ທັງໝົດ, ຫຼືເກືອບທັງໝົດ, ຄຸນສົມບັດຂອງ libguestfs ຄວນເຮັດວຽກພາຍໃຕ້ sVirt. ມີຄົນຮູ້ຈັກ
ຂໍ້ບົກຜ່ອງ: virt-scue(1) ຈະບໍ່ໃຊ້ libvirt (ເພາະສະນັ້ນ sVirt), ແຕ່ຫຼຸດລົງກັບຄືນໄປບ່ອນໂດຍກົງ
ການເປີດຕົວ qemu. ດັ່ງນັ້ນໃນປັດຈຸບັນທ່ານຈະບໍ່ໄດ້ຮັບຜົນປະໂຫຍດຂອງການປົກປ້ອງ sVirt ໃນເວລາໃຊ້
virt-scue.
ທ່ານສາມາດກວດເບິ່ງວ່າ sVirt ຖືກນໍາໃຊ້ໂດຍການເປີດໃຊ້ການເຂົ້າສູ່ລະບົບ libvirtd (ເບິ່ງ
/etc/libvirt/libvirtd.log), ຂ້າແລະ restarting libvirtd, ແລະການກວດສອບໄຟລ໌ບັນທຶກ
ສໍາລັບ "ການຕັ້ງຄ່າ SELinux context on ... " ຂໍ້ຄວາມ.
ໃນທາງທິດສະດີ sVirt ຄວນສະຫນັບສະຫນູນ AppArmor, ແຕ່ພວກເຮົາບໍ່ໄດ້ພະຍາຍາມມັນ. ມັນຈະເກືອບ
ແນ່ນອນວ່າຕ້ອງການ patching libvirt ແລະຂຽນນະໂຍບາຍ AppArmor.
Libguestfs ມີ a ກໍ່ ຍາວ ບັນຊີລາຍຊື່ of ເພິ່ງພາອາໄສ!
ຫໍສະຫມຸດພື້ນຖານບໍ່ໄດ້ຂຶ້ນກັບຫຼາຍ, ແຕ່ມີສາມສາເຫດຂອງບັນຊີລາຍຊື່ຍາວ
ຂອງການຂຶ້ນກັບອື່ນໆ:
1. Libguestfs ຈະຕ້ອງສາມາດອ່ານ ແລະແກ້ໄຂຮູບແບບດິສກ໌ທີ່ແຕກຕ່າງກັນຫຼາຍຮູບແບບ. ຍົກຕົວຢ່າງ,
ການຊ່ວຍເຫຼືອ XFS ຕ້ອງການເຄື່ອງມື XFS.
2. ມີການຜູກມັດພາສາສໍາລັບຫຼາຍພາສາທີ່ແຕກຕ່າງກັນ, ທັງຫມົດຮຽກຮ້ອງໃຫ້ມີຂອງຕົນເອງ
ເຄື່ອງມືການພັດທະນາ. ການຜູກມັດພາສາທັງໝົດ (ຍົກເວັ້ນ C) ເປັນທາງເລືອກ.
3. ມີບາງຄຸນນະສົມບັດຫ້ອງສະຫມຸດທາງເລືອກທີ່ສາມາດປິດໄດ້.
ນັບຕັ້ງແຕ່ libguestfs ≥ 1.26 ມັນເປັນໄປໄດ້ທີ່ຈະແຍກການຂຶ້ນກັບອຸປະກອນ (ລາຍການ 1 ໃນ
ບັນຊີລາຍຊື່ຂ້າງເທິງ) ແລະດັ່ງນັ້ນຈຶ່ງມີ (eg) "libguestfs-xfs" ເປັນຊຸດຍ່ອຍແຍກຕ່າງຫາກສໍາລັບ
ກຳລັງປະມວນຜົນຮູບພາບແຜ່ນ XFS. ພວກເຮົາຊຸກຍູ້ໃຫ້ຜູ້ຫຸ້ມຫໍ່ລຸ່ມນ້ໍາເພື່ອເລີ່ມຕົ້ນການແຍກພື້ນຖານ
ຊຸດ libguestfs ເປັນແພັກເກັດຍ່ອຍນ້ອຍກວ່າ.
ຂໍ້ຜິດພາດ ໃນລະຫວ່າງການ ເປີດຕົວ on Fedora ≥ 18, RHEL ≥ 7
ໃນ Fedora ≥ 18 ແລະ RHEL ≥ 7, libguestfs ໃຊ້ libvirt ເພື່ອຈັດການເຄື່ອງໃຊ້. ກ່ອນໜ້ານີ້
(ແລະ upstream) libguestfs ແລ່ນ qemu ໂດຍກົງ:
┌───────────────────────────────────┐
│ libguestfs │
├──────────────────┬─────────────────
│ backend ໂດຍກົງ │ libvirt backend │
└───────────────────────────────────┘
↓ ↓
┌───────┐ ┌──────────┐
│ qemu │ │ libvirtd │
└───────┘ └──────────┘
↓
┌───────┐
│ qemu │
└────────┘
ເທິງນ້ໍາ Fedora 18+
ບໍ່ແມ່ນ Fedora RHEL 7+
ບໍ່ແມ່ນ RHEL
backend libvirt ແມ່ນມີຄວາມຊັບຊ້ອນຫຼາຍ, ສະຫນັບສະຫນູນ SELinux/sVirt (ເບິ່ງຂ້າງເທິງ),
hotpluggging ແລະອື່ນໆ. ຢ່າງໃດກໍຕາມ, ມັນແມ່ນສະລັບສັບຊ້ອນຫຼາຍແລະເຂັ້ມແຂງຫນ້ອຍ.
ຖ້າທ່ານມີບັນຫາການອະນຸຍາດໂດຍໃຊ້ libvirt backend, ທ່ານສາມາດປ່ຽນໄປໂດຍກົງ
backend ໂດຍການຕັ້ງຄ່າຕົວແປສະພາບແວດລ້ອມນີ້:
ສົ່ງອອກ LIBGUESTFS_BACKEND=direct
ກ່ອນທີ່ຈະແລ່ນໂຄງການ libguestfs ຫຼືເຄື່ອງມື virt.
ວິທີການ ສາມາດເຮັດໄດ້ I ສະຫຼັບ to a ຄົງ / ສ້າງຂຶ້ນ ໃໝ່ ເຄື່ອງໃຊ້?
ນີ້ອາດຈະປັບປຸງຄວາມຫມັ້ນຄົງແລະການປະຕິບັດຂອງ libguestfs ໃນ Fedora ແລະ RHEL.
ທຸກເວລາຫຼັງຈາກການຕິດຕັ້ງ libguestfs, ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເປັນຮາກ:
mkdir -p /usr/local/lib/guestfs/appliance
libguestfs-make-fixed-appliance /usr/local/lib/guestfs/appliance
ls -l /usr/local/lib/guestfs/appliance
ຕອນນີ້ຕັ້ງຕົວແປສະພາບແວດລ້ອມຕໍ່ໄປນີ້ກ່ອນທີ່ຈະໃຊ້ libguestfs ຫຼືເຄື່ອງມື virt ໃດ:
ສົ່ງອອກ LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance
ແນ່ນອນ, ທ່ານສາມາດປ່ຽນເສັ້ນທາງໄປຫາໄດເລກະທໍລີໃດໆທີ່ທ່ານຕ້ອງການ. ເຈົ້າສາມາດແບ່ງປັນເຄື່ອງໃຊ້ໄດ້
ໃນທົ່ວເຄື່ອງຈັກທີ່ມີສະຖາປັດຕະຍະກໍາດຽວກັນ (ຕົວຢ່າງ x86-64 ທັງຫມົດ), ແຕ່ສັງເກດວ່າ libvirt
ຈະປ້ອງກັນບໍ່ໃຫ້ທ່ານແບ່ງປັນອຸປະກອນໃນທົ່ວ NFS ເນື່ອງຈາກບັນຫາການອະນຸຍາດ (ດັ່ງນັ້ນ
ບໍ່ວ່າຈະປ່ຽນເປັນ backend ໂດຍກົງຫຼືບໍ່ໃຊ້ NFS).
ວິທີການ ສາມາດເຮັດໄດ້ I ຄວາມໄວ up libguestfs ກໍ່ສ້າງ?
ມາຮອດປະຈຸ, ສິ່ງທີ່ສໍາຄັນທີ່ສຸດທີ່ທ່ານສາມາດເຮັດໄດ້ແມ່ນການຕິດຕັ້ງແລະ configure 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 ແນະນຳໃຫ້ໃຊ້ "ປະມານ" ເຊິ່ງເປັນຕົວແທນເກັບຂໍ້ມູນ Debian
(http://packages.debian.org/approx). ເຄື່ອງມືນີ້ແມ່ນບັນທຶກໄວ້ໃນ Debian ໃນ ປະມານ(8)
ຫນ້າຄູ່ມື.
ຄວາມໄວ, ຈານ SPACE ນໍາໃຊ້ BY LIBGUESTFS
ຫມາຍເຫດ: ຂໍ້ມູນສ່ວນໃຫຍ່ໃນພາກນີ້ໄດ້ຖືກຍ້າຍ: guestfs-ການປະຕິບັດ(1).
Upload or ຂຽນ ເບິ່ງຄືວ່າ ຫຼາຍ ຊ້າ.
ຖ້າຫາກວ່າແຜ່ນທີ່ຕິດພັນບໍ່ໄດ້ຖືກຈັດສັນຢ່າງເຕັມທີ່ (ເຊັ່ນ: sparse raw ຫຼື qcow2) ຫຼັງຈາກນັ້ນການຂຽນສາມາດເປັນ.
ຊ້າເພາະວ່າລະບົບປະຕິບັດການໂຮດຕ້ອງເຮັດການຈັດສັນແຜ່ນທີ່ມີຄ່າໃຊ້ຈ່າຍໃນຂະນະທີ່ທ່ານຢູ່
ການຂຽນ. ການແກ້ໄຂແມ່ນການນໍາໃຊ້ຮູບແບບການຈັດສັນຢ່າງເຕັມທີ່ແທນທີ່ຈະ, ie. ວັດຖຸດິບທີ່ບໍ່ກະແຈກກະຈາຍ, ຫຼື
qcow2 ດ້ວຍຕົວເລືອກ "preallocation=metadata".
Libguestfs ການນໍາໃຊ້ ເກີນໄປ ຫຼາຍ ແຜ່ນ ຊ່ອງ!
libguestfs ເກັບຮັກສາເຄື່ອງໃຊ້ຂະຫນາດໃຫຍ່ຢູ່ໃນ:
/var/tmp/.guestfs-
ຖ້າຕົວແປສະພາບແວດລ້ອມ "TMPDIR" ຖືກກໍານົດ, ຫຼັງຈາກນັ້ນ $TMPDIR/.guestfs- ຖືກນໍາໃຊ້
ແທນທີ່ຈະເປັນ.
ມັນປອດໄພທີ່ຈະລຶບໄດເລກະທໍລີນີ້ເມື່ອທ່ານບໍ່ໄດ້ໃຊ້ libguestfs.
virt-sparsify ເບິ່ງຄືວ່າ to ເຮັດໃຫ້ ໄດ້ ຮູບພາບເລັກນ້ອຍ ເຕີບໂຕ to ໄດ້ ຢ່າງເຕັມທີ່ ຂະຫນາດ of ໄດ້ virtual ແຜ່ນ
ຖ້າຫາກວ່າການນໍາເຂົ້າໄປ virt-sparsify(1) ເປັນວັດຖຸດິບ, ຫຼັງຈາກນັ້ນຜົນຜະລິດຈະດິບ sparse. ໃຫ້ແນ່ໃຈວ່າ
ທ່ານກໍາລັງວັດແທກຜົນຜະລິດດ້ວຍເຄື່ອງມືທີ່ເຂົ້າໃຈຄວາມຫນາແຫນ້ນເຊັ່ນ "du -sh".
ມັນສາມາດເຮັດໃຫ້ມີຄວາມແຕກຕ່າງກັນຢ່າງຫຼວງຫຼາຍ:
$ ls -lh test1.img
-rw-rw-r--. 1 rjones rjones 100M Aug 8 08:08 test1.img
$ du -sh test1.img
3.6M test1.img
(ປຽບທຽບຂະຫນາດທີ່ເຫັນໄດ້ຊັດເຈນ 100M ທຽບກັບຂະຫນາດຕົວຈິງ 3.6M)
ຖ້າທັງຫມົດນີ້ເຮັດໃຫ້ເຈົ້າສັບສົນ, ໃຫ້ໃຊ້ຮູບແບບຜົນຜະລິດທີ່ບໍ່ກະແຈກກະຈາຍໂດຍການລະບຸ --ແປງ
ທາງເລືອກ, ເຊັ່ນ:
virt-sparsify --ປ່ຽນ qcow2 disk.raw disk.qcow2
ເປັນຫຍັງ ບໍ່ virt-ປັບຂະຫນາດ ການເຮັດວຽກ on ໄດ້ ແຜ່ນ ຮູບພາບເລັກນ້ອຍ ໃນສະຖານທີ່?
ການປັບຂະໜາດຮູບດິສກ໌ແມ່ນຍາກຫຼາຍ -- ໂດຍສະເພາະການເຮັດໃຫ້ແນ່ໃຈວ່າທ່ານບໍ່ເສຍຂໍ້ມູນ ຫຼື
ທໍາລາຍ bootloader. ວິທີການປະຈຸບັນປະສິດທິຜົນສ້າງຮູບພາບແຜ່ນໃຫມ່ແລະສໍາເນົາ
ຂໍ້ມູນບວກກັບ bootloader ຈາກອັນເກົ່າ. ຖ້າມີບາງຢ່າງຜິດພາດ, ເຈົ້າສາມາດໄປໄດ້ສະເໝີ
ກັບໄປຕົ້ນສະບັບ.
ຖ້າຫາກວ່າພວກເຮົາຈະເຮັດໃຫ້ການເຮັດວຽກປັບຂະຫນາດ virt ໃນສະຖານທີ່, ມັນຈະຕ້ອງມີຂໍ້ຈໍາກັດ: ສໍາລັບການ
ຍົກຕົວຢ່າງ, ທ່ານຈະບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ຍ້າຍພາທິຊັນທີ່ມີຢູ່ແລ້ວ (ເນື່ອງຈາກວ່າການຍ້າຍຂໍ້ມູນໃນທົ່ວ
ແຜ່ນດຽວກັນມີແນວໂນ້ມທີ່ຈະທໍາລາຍຂໍ້ມູນໃນກໍລະນີທີ່ມີໄຟສາຍຫຼືຂັດ),
ແລະ LVM ຈະເປັນການຍາກຫຼາຍທີ່ຈະສະຫນັບສະຫນູນ (ເນື່ອງຈາກວ່າແຜນທີ່ເກືອບ arbitrary
ລະຫວ່າງເນື້ອຫາ LV ແລະຕັນແຜ່ນທີ່ຕິດພັນ).
ວິທີການອື່ນທີ່ພວກເຮົາໄດ້ພິຈາລະນາແມ່ນການວາງ snapshot ໃນໄລຍະຮູບພາບແຜ່ນຕົ້ນສະບັບ, ດັ່ງນັ້ນ
ວ່າຂໍ້ມູນຕົ້ນສະບັບແມ່ນບໍ່ຖືກແຕະຕ້ອງແລະຄວາມແຕກຕ່າງພຽງແຕ່ຖືກບັນທຶກໄວ້ໃນຮູບຖ່າຍ.
ທ່ານສາມາດເຮັດໄດ້ໃນມື້ນີ້ໂດຍໃຊ້ "qemu-img create" + "virt-resize", ແຕ່ qemu ປະຈຸບັນບໍ່ແມ່ນ.
ສະຫລາດພໍທີ່ຈະຮັບຮູ້ເມື່ອບລັອກດຽວກັນຖືກຂຽນກັບຄືນໄປຫາພາບຖ່າຍທີ່ເປັນແລ້ວ
ມີຢູ່ໃນແຜ່ນຮອງ, ດັ່ງນັ້ນເຈົ້າຈະພົບວ່າອັນນີ້ບໍ່ໄດ້ປະຫຍັດພື້ນທີ່ຫຼືເວລາໃດໆ.
ສະຫຼຸບແລ້ວ, ນີ້ແມ່ນບັນຫາທີ່ຍາກ, ແລະສິ່ງທີ່ພວກເຮົາມີໃນປັດຈຸບັນສ່ວນໃຫຍ່ແມ່ນເຮັດວຽກດັ່ງນັ້ນພວກເຮົາລັງເລໃຈ
ການປ່ຽນແປງມັນ.
ເປັນຫຍັງ ບໍ່ virt-sparsify ການເຮັດວຽກ on ໄດ້ ແຜ່ນ ຮູບພາບເລັກນ້ອຍ ໃນສະຖານທີ່?
ໃນ libguestfs ≥ 1.26, virt-sparsify ດຽວນີ້ສາມາດເຮັດວຽກຢູ່ໃນແຜ່ນດິດຢູ່ໃນສະຖານທີ່. ໃຊ້:
virt-sparsify --in-place disk.img
ແຕ່ທໍາອິດທ່ານຄວນອ່ານ "IN-PLACE SPARSIFICATION" ໃນ virt-sparsify(1).
ບັນຫາ ຫນ້າທໍາອິດ ຈານ IMAGES
ຫ່າງໄກສອກຫຼີກ ເສລີພາບ ບຸກຄົນທົ່ວໄປ ບໍ່ສາມາດເຮັດໄດ້ be ເປີດ.
ການເປີດຜູ້ເຂົ້າພັກ libvirt ໄລຍະໄກແມ່ນບໍ່ຮອງຮັບໃນເວລານີ້. ຕົວຢ່າງນີ້ຈະບໍ່ເຮັດວຽກ:
guestfish -c qemu://remote/system -d ແຂກ
ເພື່ອເປີດແຜ່ນຫ່າງໄກສອກຫຼີກ, ທ່ານຈະຕ້ອງສົ່ງອອກໃຫ້ເຂົາເຈົ້າ somehow, ຫຼັງຈາກນັ້ນເຊື່ອມຕໍ່ກັບການສົ່ງອອກ. ສໍາລັບ
ຕົວຢ່າງຖ້າທ່ານຕັດສິນໃຈໃຊ້ NBD:
remote$ qemu-nbd -t -p 10809 guest.img
local$ guestfish -a nbd://remote:10809 -i
ຄວາມເປັນໄປໄດ້ອື່ນໆລວມມີ ssh (ຖ້າ qemu ແມ່ນພຽງພໍ), NFS ຫຼື iSCSI. ເບິ່ງ "REMOTE
STORAGE" ໃນ ແຂກ(3).
ວິທີການ ສາມາດເຮັດໄດ້ I ເປີດ ນີ້ strange ແຜ່ນ ແຫຼ່ງ?
ທ່ານມີຮູບພາບແຜ່ນທີ່ຕັ້ງຢູ່ໃນລະບົບອື່ນທີ່ຮຽກຮ້ອງໃຫ້ມີການເຂົ້າເຖິງໂດຍຜ່ານຫ້ອງສະຫມຸດ /
HTTP / REST / API ທີ່ເປັນເຈົ້າຂອງ, ຫຼືຖືກບີບອັດຫຼືເກັບໄວ້ໃນບາງທາງ. (ຕົວຢ່າງຫນຶ່ງ
ຈະເປັນການເຂົ້າເຖິງທາງໄກເພື່ອ OpenStack glance ຮູບພາບໂດຍບໍ່ມີການດາວໂຫຼດຕົວຈິງໃຫ້ເຂົາເຈົ້າ.)
ພວກເຮົາມີໂຄງການເອື້ອຍເອີ້ນວ່າ nbdkit (https://github.com/libguestfs/nbdkit). ນີ້
ໂຄງການເຮັດໃຫ້ທ່ານປ່ຽນແຫຼ່ງແຜ່ນໃດຫນຶ່ງເປັນເຄື່ອງແມ່ຂ່າຍ NBD. Libguestfs ສາມາດເຂົ້າເຖິງ NBD
ເຊີບເວີໂດຍກົງ, ຕົວຢ່າງ:
guestfish -a nbd://remote
nbdkit ໄດ້ຮັບໃບອະນຸຍາດຢ່າງເສລີ, ດັ່ງນັ້ນທ່ານສາມາດເຊື່ອມຕໍ່ມັນກັບຫຼືລວມຢູ່ໃນຫ້ອງສະຫມຸດທີ່ເປັນເຈົ້າຂອງ.
ແລະລະຫັດ. ມັນຍັງມີ API plugin ທີ່ງ່າຍດາຍ, ຫມັ້ນຄົງ, ດັ່ງນັ້ນທ່ານສາມາດຂຽນ plugins ຕໍ່ຕ້ານ
API ທີ່ຈະສືບຕໍ່ເຮັດວຽກໃນອະນາຄົດ.
Error ເປີດ vMDK ແຜ່ນ: "ໃຊ້ a vMDK ຄຸນນະສົມບັດ ທີ່ is ບໍ່ ສະຫນັບສະຫນູນ by ນີ້ whoa ຮຸ່ນ:
vMDK ສະບັບພາສາ 3"
Qemu (ແລະເພາະສະນັ້ນ libguestfs) ຮອງຮັບສະເພາະຮູບພາບແຜ່ນ VMDK ເທົ່ານັ້ນ. ຄົນອື່ນຈະບໍ່ເຮັດວຽກ,
ໃຫ້ຄວາມຜິດພາດນີ້ຫຼືຄ້າຍຄືກັນ.
ໂດຍວິທີທາງການ, ຜູ້ໃດຜູ້ຫນຶ່ງຈະແກ້ໄຂ qemu ເພື່ອສະຫນັບສະຫນູນຄຸນສົມບັດ VMDK ຫຼ້າສຸດ, ແຕ່ໃນເວລານີ້
ທ່ານມີສາມທາງເລືອກ:
1. ຖ້າແຂກຖືກໂຮດຢູ່ໃນເຊີບເວີ ESX ທີ່ມີຊີວິດຊີວາ, ຈາກນັ້ນຊອກຫາ ແລະດາວໂຫຼດ
ຮູບພາບ disk ເອີ້ນວ່າ somename-flat.vmdk. ເຖິງວ່າຈະມີຊື່, ນີ້ແມ່ນຮູບພາບແຜ່ນດິບ, ແລະ
ສາມາດເປີດໄດ້ໂດຍຫຍັງ.
ຖ້າທ່ານມີ qemu ແລະ libguestfs ສະບັບພຽງພໍທີ່ຜ່ານມາ, ຫຼັງຈາກນັ້ນທ່ານອາດຈະສາມາດ
ເຂົ້າເຖິງຮູບພາບແຜ່ນນີ້ຈາກໄລຍະໄກໂດຍໃຊ້ HTTPS ຫຼື ssh. ເບິ່ງ "ການເກັບຮັກສາໄລຍະໄກ" ໃນ
ແຂກ(3).
2. ໃຊ້ເຄື່ອງມື vdiskmanager ທີ່ເປັນເຈົ້າຂອງຂອງ VMware ເພື່ອປ່ຽນຮູບພາບໃຫ້ເປັນຮູບແບບດິບ.
3. ໃຊ້ nbdkit ກັບ plugin VDDK ທີ່ເປັນເຈົ້າຂອງເພື່ອສົ່ງອອກຮູບພາບແຜ່ນເປັນ NBD.
ແຫຼ່ງ. ນີ້ຄວນຈະອະນຸຍາດໃຫ້ທ່ານອ່ານແລະຂຽນໄຟລ໌ VMDK.
SFU ແຜ່ນ (ເປັນ ໃຫມ່ by BSD) ບໍ່ສາມາດເຮັດໄດ້ be ເປີດ.
ຮູບແບບລະບົບໄຟລ໌ UFS ມີຫຼາຍຕົວແປ, ແລະສິ່ງເຫຼົ່ານີ້ບໍ່ໄດ້ລະບຸຕົນເອງ. ໄດ້
Linux kernel ຕ້ອງໄດ້ຮັບການບອກວ່າຕົວແປຂອງ UFS ທີ່ມັນຕ້ອງໃຊ້, ເຊິ່ງ libguestfs ບໍ່ສາມາດ.
ຮູ້ຈັກ.
ທ່ານຕ້ອງຜ່ານທາງເລືອກ mount "ufstype" ທີ່ຖືກຕ້ອງໃນເວລາທີ່ຕິດຕັ້ງລະບົບໄຟລ໌ເຫຼົ່ານີ້.
ເບິ່ງ https://www.kernel.org/doc/Documentation/filesystems/ufs.txt
Windows ReFS
Windows ReFS ແມ່ນສຳເນົາ ZFS/Btrfs ຂອງ Microsoft. ລະບົບໄຟລ໌ນີ້ຍັງບໍ່ທັນໄດ້ກັບຄືນ
ວິສະວະກໍາແລະປະຕິບັດໃນ Linux kernel, ແລະດັ່ງນັ້ນ libguestfs ບໍ່ສະຫນັບສະຫນູນ
ມັນ. ໃນປັດຈຸບັນມັນເບິ່ງຄືວ່າ "ຢູ່ໃນປ່າທໍາມະຊາດ".
ບໍ່ແມ່ນ ASCII ລັກສະນະ ບໍ່ໄດ້ ປາກົດ on VFAT ລະບົບໄຟລ໌.
ອາການປົກກະຕິຂອງບັນຫານີ້:
· ທ່ານໄດ້ຮັບຄວາມຜິດພາດໃນເວລາທີ່ທ່ານສ້າງໄຟລ໌ທີ່ຊື່ໄຟລ໌ທີ່ບໍ່ແມ່ນ ASCII
ຕົວອັກສອນໂດຍສະເພາະແມ່ນຕົວອັກສອນທີ່ບໍ່ແມ່ນ 8-bit ຈາກພາສາເອເຊຍ (ຈີນ, ຍີ່ປຸ່ນ,
ແລະອື່ນໆ). ລະບົບໄຟລ໌ແມ່ນ VFAT.
· ເມື່ອທ່ານຂຽນລາຍຊື່ຈາກລະບົບໄຟລ໌ VFAT, ຊື່ໄຟລ໌ຈະປາກົດເປັນເຄື່ອງໝາຍຄໍາຖາມ.
ນີ້ແມ່ນຂໍ້ບົກພ່ອງການອອກແບບຂອງລະບົບ GNU/Linux.
VFAT ເກັບຮັກສາຊື່ໄຟລ໌ຍາວເປັນຕົວອັກສອນ UTF-16. ເມື່ອເປີດຫຼືກັບຄືນຊື່ໄຟລ໌, ໄດ້
Linux kernel ຕ້ອງແປເຫຼົ່ານີ້ເປັນບາງຮູບແບບຂອງ 8 bit string. UTF-8 ຈະເປັນ
ທາງເລືອກທີ່ຊັດເຈນ, ຍົກເວັ້ນສໍາລັບຜູ້ໃຊ້ Linux ທີ່ຍັງຄົງໃຊ້ສະຖານທີ່ທີ່ບໍ່ແມ່ນ UTF-8 (ຜູ້ໃຊ້
locale ບໍ່ຮູ້ຈັກກັບ kernel ເພາະວ່າມັນເປັນຫນ້າທີ່ຂອງ libc).
ດັ່ງນັ້ນ, ເຈົ້າຕ້ອງບອກ kernel ວ່າທ່ານຕ້ອງການແປຫຍັງເມື່ອທ່ານຕິດຕັ້ງ
ລະບົບໄຟລ໌. ທັງສອງວິທີການແມ່ນ "iocharset" ພາລາມິເຕີ (ທີ່ບໍ່ກ່ຽວຂ້ອງກັບ
libguestfs) ແລະທຸງ "utf8".
ດັ່ງນັ້ນເພື່ອໃຊ້ລະບົບໄຟລ໌ VFAT ທ່ານຕ້ອງເພີ່ມທຸງ "utf8" ເມື່ອຕິດຕັ້ງ. ຈາກປາແຂກ,
ໃຊ້:
> mount-options utf8 /dev/sda1 /
ຫຼືຢູ່ໃນເສັ້ນຄໍາສັ່ງຂອງ guestfish:
guestfish [... ] -m /dev/sda1:/:utf8
ຫຼືຈາກ API:
guestfs_mount_options (g, "utf8", "/dev/sda1", "/");
ຫຼັງຈາກນັ້ນ, kernel ຈະແປຊື່ໄຟລ໌ເປັນແລະຈາກ UTF-8 strings.
ພວກເຮົາໄດ້ພິຈາລະນາເພີ່ມທາງເລືອກ mount ນີ້ຢ່າງໂປ່ງໃສ, ແຕ່ຫນ້າເສຍດາຍ, ມີຫຼາຍອັນ
ບັນຫາໃນການເຮັດແນວນັ້ນ:
· ໃນບາງລະບົບ Linux, ທາງເລືອກ mount "utf8" ບໍ່ເຮັດວຽກ. ພວກເຮົາບໍ່ຊັດເຈນ
ເຂົ້າໃຈວ່າລະບົບໃດຫຼືເປັນຫຍັງ, ແຕ່ນີ້ໄດ້ຖືກລາຍງານຢ່າງຫນ້າເຊື່ອຖືໂດຍຜູ້ໃຊ້ຫນຶ່ງ.
· ມັນຈະປ້ອງກັນບໍ່ໃຫ້ເຈົ້າໃຊ້ພາລາມິເຕີ "iocharset" ເພາະວ່າມັນບໍ່ເຂົ້າກັນໄດ້
ດ້ວຍ "utf8". ມັນອາດຈະບໍ່ເປັນຄວາມຄິດທີ່ດີທີ່ຈະໃຊ້ພາລາມິເຕີນີ້, ແຕ່ພວກເຮົາບໍ່ຕ້ອງການ
ເພື່ອປ້ອງກັນມັນ.
ບໍ່ແມ່ນ ASCII ລັກສະນະ ປາກົດ as ຂີດກ້ອງ (_) on ISO9660 ລະບົບໄຟລ໌.
ລະບົບໄຟລ໌ບໍ່ໄດ້ຖືກກະກຽມຢ່າງຖືກຕ້ອງກັບ mkisofs ຫຼື genisoimage. ໃຫ້ແນ່ໃຈວ່າ
ລະບົບໄຟລ໌ຖືກສ້າງຂື້ນໂດຍໃຊ້ Joliet ແລະ/ຫຼື Rock Ridge extensions. libguestfs ບໍ່
ຕ້ອງການຕົວເລືອກ mount ພິເສດເພື່ອຈັດການກັບລະບົບໄຟລ໌.
ເຮັດບໍ່ໄດ້ ເປີດ Windows ບຸກຄົນທົ່ວໄປ ທີ່ ການນໍາໃຊ້ NTFS
ທ່ານເຫັນຄວາມຜິດພາດເຊັ່ນ:
mount: ລະບົບໄຟລ໌ທີ່ບໍ່ຮູ້ຈັກປະເພດ 'ntfs'
ໃນ Red Hat Enterprise Linux ຫຼື CentOS, ທ່ານຕ້ອງຕິດຕັ້ງ libguestfs-winsupport
package
ເຮັດບໍ່ໄດ້ ເປີດ or ກວດກາ RHEL 7 ແຂກ.
ເຮັດບໍ່ໄດ້ ເປີດ Linux ບຸກຄົນທົ່ວໄປ ທີ່ ການນໍາໃຊ້ XFS.
ແຂກ RHEL 7, ແລະແຂກອື່ນໆທີ່ໃຊ້ XFS, ສາມາດເປີດໄດ້ໂດຍ libguestfs, ແຕ່ທ່ານ
ຕ້ອງຕິດຕັ້ງຊຸດ "libguestfs-xfs".
ການ ນຳ ໃຊ້ LIBGUESTFS IN YOUR OWN PROGRAMS
ໄດ້ API ມີ ຮ້ອຍຄົນ of ວິທີການ, ບ່ອນທີ່ do I ເລີ່ມຕົ້ນ?
ພວກເຮົາແນະນໍາໃຫ້ທ່ານເລີ່ມຕົ້ນໂດຍການອ່ານພາບລວມ API: "API OVERVIEW" ໃນ ແຂກ(3).
ເຖິງແມ່ນວ່າພາບລວມ API ກວມເອົາ C API, ມັນຍັງມີມູນຄ່າການອ່ານເຖິງແມ່ນວ່າທ່ານ
ໄປໃຊ້ພາສາການຂຽນໂປລແກລມອື່ນ, ເພາະວ່າ API ແມ່ນຄືກັນ, ພຽງແຕ່ງ່າຍດາຍ
ການປ່ຽນແປງຢ່າງມີເຫດຜົນຕໍ່ກັບຊື່ຂອງການໂທ:
C guestfs_ln_sf (g, target, linkname);
Python g.ln_sf (ເປົ້າຫມາຍ, linkname);
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 ເປັນເຈົ້າຂອງ / ປິດ ແຫຼ່ງ / ການຄ້າ program?
ໂດຍທົ່ວໄປ, ແມ່ນແລ້ວ. ຢ່າງໃດກໍ່ຕາມນີ້ບໍ່ແມ່ນຄໍາແນະນໍາທາງດ້ານກົດຫມາຍ - ອ່ານໃບອະນຸຍາດທີ່ມາພ້ອມກັບ
libguestfs, ແລະຖ້າທ່ານມີຄໍາຖາມສະເພາະ, ຕິດຕໍ່ທະນາຍຄວາມ.
ໃນຕົ້ນສະບັບຕົ້ນສະບັບໃບອະນຸຍາດແມ່ນຢູ່ໃນໄຟລ໌ "COPYING.LIB" (LGPLv2+ ສໍາລັບຫ້ອງສະຫມຸດແລະ.
bindings) ແລະ "COPYING" (GPLv2+ ສໍາລັບໂຄງການ standalone).
ກຳ ລັງດີບັກ 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 debug ໃນເວລາທີ່ ການນໍາໃຊ້ ໃດ libguestfs ໂຄງການ or ເຄື່ອງມື (ຕົວຢ່າງ. virt-v2v or virt-df)?
ມີສອງຕົວແປສະພາບແວດລ້ອມ "LIBGUESTFS_*" ທີ່ທ່ານສາມາດຕັ້ງເພື່ອໃຫ້ໄດ້ຫຼາຍ
ຂໍ້ມູນຈາກ libguestfs.
"LIBGUESTFS_TRACE"
ຕັ້ງຄ່ານີ້ເປັນ 1 ແລະ libguestfs ຈະພິມອອກແຕ່ລະຄໍາສັ່ງ / API call ໃນຮູບແບບທີ່
ແມ່ນຄ້າຍຄືກັນກັບຄໍາສັ່ງຂອງ guestfish.
"LIBGUESTFS_DEBUG"
ຕັ້ງຄ່ານີ້ເປັນ 1 ເພື່ອເປີດໃຊ້ຂໍ້ຄວາມດີບັກຈໍານວນຫຼວງຫຼາຍ. ຖ້າເຈົ້າຄິດ
ມີບັນຫາບາງຢ່າງພາຍໃນເຄື່ອງໃຊ້ libguestfs, ຫຼັງຈາກນັ້ນທ່ານຄວນໃຊ້ມັນ
ທາງເລືອກ.
ເພື່ອຕັ້ງຄ່າເຫຼົ່ານີ້ຈາກ shell, ເຮັດແນວນີ້ກ່ອນທີ່ຈະດໍາເນີນການໂຄງການ:
ສົ່ງອອກ LIBGUESTFS_TRACE=1
ສົ່ງອອກ LIBGUESTFS_DEBUG=1
ສໍາລັບ csh/tcsh ຄໍາສັ່ງທຽບເທົ່າຈະເປັນ:
setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1
ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງ: "ຕົວແປສະພາບແວດລ້ອມ" ໃນ ແຂກ(3).
ວິທີການ do I debug ໃນເວລາທີ່ ການນໍາໃຊ້ ປາແຂກ?
ທ່ານສາມາດນໍາໃຊ້ຕົວແປສະພາບແວດລ້ອມດຽວກັນຂ້າງເທິງ. ທາງເລືອກໃນການໃຊ້ປາ guestfish
-x (ເພື່ອຕິດຕາມຄໍາສັ່ງ) ຫຼື -v (ເພື່ອໃຫ້ໄດ້ຜົນດີບັກເຕັມ), ຫຼືທັງສອງ.
ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງ: ປາແຂກ(1).
ວິທີການ do I debug ໃນເວລາທີ່ ການນໍາໃຊ້ ໄດ້ API?
ໂທຫາ "guestfs_set_trace" ໃນ ແຂກ(3) ເພື່ອເປີດໃຊ້ການຕິດຕາມຄໍາສັ່ງ, ແລະ/ຫຼື
"guestfs_set_verbose" ໃນ ແຂກ(3) ເພື່ອເປີດໃຊ້ງານຂໍ້ຄວາມດີບັກ.
ສໍາລັບຜົນໄດ້ຮັບທີ່ດີທີ່ສຸດ, ໂທຫາຫນ້າທີ່ເຫຼົ່ານີ້ໄວເທົ່າທີ່ຈະໄວໄດ້, ພຽງແຕ່ຫຼັງຈາກສ້າງ
Guestfs ຈັດການຖ້າທ່ານສາມາດເຮັດໄດ້, ແລະແນ່ນອນກ່ອນທີ່ຈະໂທຫາການເປີດຕົວ.
ວິທີການ do I ຈັບ debug output ແລະ ເອົາໃຈໃສ່ it ເຂົ້າໄປໃນ my ການຕັດໄມ້ ລະບົບ?
ໃຊ້ API ເຫດການ. ຕົວຢ່າງ, ເບິ່ງ: "ຕັ້ງຄ່າການເອີ້ນຄືນເພື່ອຈັດການເຫດການ" ໃນ ແຂກ(3)
ແລະ ຕົວຢ່າງ/debug-logging.c ໂຄງການໃນແຫຼ່ງ libguestfs.
ຂຸດ ເລິກກວ່າ ເຂົ້າໄປໃນ ໄດ້ ເຄື່ອງໃຊ້ໄຟຟ້າ ເຮືອ ຂະບວນການ.
ເປີດໃຊ້ການດີບັກ ແລະຈາກນັ້ນອ່ານເອກະສານນີ້ໃນຂະບວນການບູດເຄື່ອງ:
guestfs-ພາຍໃນ(1).
libguestfs hangs or ຂໍ້ເທັດຈິງ ໃນລະຫວ່າງການ ແລ່ນ/ເປີດ.
ເປີດໃຊ້ການດີບັກ ແລະເບິ່ງຜົນອອກເຕັມທີ່. ຖ້າຫາກວ່າທ່ານບໍ່ສາມາດແກ້ໄຂສິ່ງທີ່ເກີດຂຶ້ນ,
ຍື່ນບົດລາຍງານ bug, ລວມທັງ ສົມບູນ ຜົນຜະລິດຂອງ libguestfs-test-tool(1).
Debugging ເສລີພາບ
ຖ້າທ່ານກໍາລັງໃຊ້ libvirt backend, ແລະ libvirt ລົ້ມເຫລວ, ຫຼັງຈາກນັ້ນທ່ານສາມາດເປີດໃຊ້ໄດ້
debugging ໂດຍການແກ້ໄຂ /etc/libvirt/libvirtd.conf.
ຖ້າຫາກວ່າທ່ານກໍາລັງແລ່ນເປັນບໍ່ແມ່ນຮາກ, ຫຼັງຈາກນັ້ນທ່ານຕ້ອງແກ້ໄຂໄຟລ໌ທີ່ແຕກຕ່າງກັນ. ສ້າງ
~/.config/libvirt/libvirtd.conf ບັນຈຸ:
log_level=1
log_outputs="1:file:/tmp/libvirtd.log"
ຂ້າເຊສຊັນໃດກໍໄດ້ (ບໍ່ເປັນຮາກ) libvirtd ທີ່ກຳລັງແລ່ນຢູ່, ແລະຄັ້ງຕໍ່ໄປທີ່ທ່ານເປີດໃຊ້ libguestfs
ຄໍາສັ່ງ, ທ່ານຄວນເຫັນຈໍານວນຂະຫນາດໃຫຍ່ຂອງຂໍ້ມູນ debugging ທີ່ເປັນປະໂຫຍດຈາກ libvirtd ໃນ
/tmp/libvirtd.log
ການອອກແບບ/ພາຍໃນ OF LIBGUESTFS
ເບິ່ງ guestfs-ພາຍໃນ(1).
ເປັນຫຍັງ ບໍ່ໄດ້ ທ່ານ do ທຸກສິ່ງທຸກຢ່າງ ໂດຍຜ່ານການ ໄດ້ ຟິວ / ລະບົບໄຟລ໌ ການໂຕ້ຕອບ?
ພວກເຮົາສະເຫນີຄໍາສັ່ງທີ່ເອີ້ນວ່າ ແຂກ(1) ທີ່ເຮັດໃຫ້ທ່ານຕິດຕັ້ງລະບົບໄຟລ໌ທຶກຜູ້ເຂົ້າໃນ
ເຈົ້າພາບ. ນີ້ແມ່ນປະຕິບັດເປັນໂມດູນ FUSE. ເປັນຫຍັງພວກເຮົາບໍ່ພຽງແຕ່ປະຕິບັດທັງຫມົດຂອງ
libguestfs ໃຊ້ກົນໄກນີ້, ແທນທີ່ຈະມີ API ຂະຫນາດໃຫຍ່ແລະສັບສົນຫຼາຍບໍ?
ເຫດຜົນແມ່ນສອງເທົ່າ. ທໍາອິດ, libguestfs ສະຫນອງການໂທ API ສໍາລັບການເຮັດສິ່ງຕ່າງໆເຊັ່ນ
ການສ້າງແລະການລົບພາທິຊັນແລະປະລິມານຢ່າງມີເຫດຜົນ, ທີ່ບໍ່ເຫມາະກັບລະບົບໄຟລ໌
ຕົວແບບຢ່າງງ່າຍດາຍ. ຫຼືແທນທີ່ຈະ, ທ່ານສາມາດໃສ່ພວກມັນໄດ້: ຕົວຢ່າງ, ການສ້າງພາທິຊັນ
ສາມາດຖືກສ້າງແຜນທີ່ເປັນ "mkdir /fs/hda1" ແຕ່ຫຼັງຈາກນັ້ນທ່ານຈະຕ້ອງກໍານົດວິທີການທີ່ຈະເລືອກເອົາ.
ຂະຫນາດຂອງພາທິຊັນ (ບາງທີ "echo 100M > /fs/hda1/.size"), ແລະປະເພດພາທິຊັນ,
ພາກສ່ວນເລີ່ມຕົ້ນແລະສິ້ນສຸດແລະອື່ນໆ, ແຕ່ເມື່ອທ່ານໄດ້ເຮັດ API ທີ່ອີງໃສ່ລະບົບໄຟລ໌ເລີ່ມຕົ້ນ
ເບິ່ງຄວາມສັບສົນຫຼາຍກ່ວາ API ການໂທທີ່ພວກເຮົາມີໃນປັດຈຸບັນ.
ເຫດຜົນທີສອງແມ່ນສໍາລັບປະສິດທິພາບ. FUSE ຕົວຂອງມັນເອງມີປະສິດທິພາບສົມເຫດສົມຜົນ, ແຕ່ມັນກໍ່ເຮັດໄດ້
ເຮັດການໂທເອກະລາດຫຼາຍອັນເຂົ້າໄປໃນໂມດູນ FUSE. ໃນ guestmount ເຫຼົ່ານີ້ຕ້ອງ
ຖືກແປເປັນຂໍ້ຄວາມໄປຫາເຄື່ອງໃຊ້ libguestfs ທີ່ມີຄ່າໃຊ້ຈ່າຍຂະຫນາດໃຫຍ່ (ໃນເວລາ
ແລະການເດີນທາງໄປມາ). ຕົວຢ່າງ, ການອ່ານໄຟລ໌ໃນ chunks 64 KB ແມ່ນບໍ່ມີປະສິດທິພາບເພາະວ່າແຕ່ລະຄົນ
chunk ຈະປ່ຽນເປັນການເດີນທາງຮອບດຽວ. ໃນ libguestfs API ມັນມີຫຼາຍ
ປະສິດທິພາບໃນການດາວໂຫຼດໄຟລ໌ທັງໝົດ ຫຼືໄດເລກະທໍລີໂດຍຜ່ານໜຶ່ງໃນສາຍໂທສະຕຣີມເຊັ່ນ
"guestfs_download" ຫຼື "guestfs_tar_out".
ເປັນຫຍັງ ບໍ່ໄດ້ ທ່ານ do ທຸກສິ່ງທຸກຢ່າງ ໂດຍຜ່ານການ GVFS?
ບັນຫາແມ່ນຄ້າຍຄືກັນກັບບັນຫາກັບ FUSE.
GVFS ເປັນຕົວຫຍໍ້ທີ່ດີກວ່າ POSIX/FUSE. ມີ backend FTP ສໍາລັບ GVFS, ເຊິ່ງແມ່ນ
ຊຸກຍູ້ເພາະວ່າ FTP ແມ່ນແນວຄວາມຄິດຄ້າຍຄືກັນກັບ libguestfs API. ຢ່າງໃດກໍຕາມ, GVFS
FTP backend ເຮັດໃຫ້ການເຊື່ອມຕໍ່ຫຼາຍຄັ້ງພ້ອມກັນເພື່ອຮັກສາການໂຕ້ຕອບ, ເຊິ່ງ
ພວກເຮົາບໍ່ສາມາດເຮັດໄດ້ຢ່າງງ່າຍດາຍກັບ libguestfs.
ເປັນຫຍັງ ສາມາດເຮັດໄດ້ I ຂຽນ to ໄດ້ ແຜ່ນ, ເຖິງແມ່ນວ່າ ເຖິງແມ່ນວ່າ I ເພີ່ມ it ອ່ານຢ່າງດຽວ?
ເປັນຫຍັງ ບໍ່ "--ro" ປາກົດ to ມີ no ຜົນກະທົບ?
ເມື່ອທ່ານເພີ່ມແຜ່ນອ່ານເທົ່ານັ້ນ, libguestfs ວາງທັບທີ່ຂຽນໄດ້ຢູ່ເທິງສຸດ
ແຜ່ນພື້ນຖານ. ຂຽນເຂົ້າໄປໃນການວາງຊ້ອນນີ້, ແລະຖືກຍົກເລີກເມື່ອຈັບປິດ
(ຫຼື "Gestfish" ແລະອື່ນໆອອກ).
ມີສອງເຫດຜົນສໍາລັບການເຮັດມັນດ້ວຍວິທີນີ້: ກ່ອນອື່ນ ໝົດ, ແຜ່ນທີ່ອ່ານເທົ່ານັ້ນແມ່ນບໍ່ເປັນໄປໄດ້
ຫຼາຍໆກໍລະນີ (ເຊັ່ນ: IDE ພຽງແຕ່ບໍ່ສະຫນັບສະຫນູນພວກມັນ, ດັ່ງນັ້ນທ່ານບໍ່ສາມາດມີ IDE-emulated
ແຜ່ນອ່ານເທົ່ານັ້ນ, ເຖິງແມ່ນວ່ານີ້ບໍ່ແມ່ນທົ່ວໄປໃນການຕິດຕັ້ງ libguestfs ທີ່ແທ້ຈິງ).
ອັນທີສອງແລະສໍາຄັນກວ່ານັ້ນ, ເຖິງແມ່ນວ່າແຜ່ນທີ່ອ່ານໄດ້ເທົ່ານັ້ນເປັນໄປໄດ້, ທ່ານຈະບໍ່ຕ້ອງການ
ເຂົາເຈົ້າ. ການຕິດຕັ້ງລະບົບໄຟລ໌ໃດໆທີ່ມີວາລະສານ, ເຖິງແມ່ນວ່າ "mount -o ro", ເຮັດໃຫ້ເກີດການຂຽນເຖິງ
ລະບົບໄຟລ໌ເນື່ອງຈາກວ່າວາລະສານຕ້ອງໄດ້ຮັບການຫຼິ້ນຄືນໃຫມ່ແລະ metadata ປັບປຸງ. ຖ້າແຜ່ນ
ແມ່ນອ່ານໄດ້ຢ່າງດຽວແທ້ໆ, ທ່ານຈະບໍ່ສາມາດຕິດຕັ້ງລະບົບໄຟລ໌ເປື້ອນໄດ້.
ເພື່ອເຮັດໃຫ້ມັນສາມາດໃຊ້ໄດ້, ພວກເຮົາສ້າງການວາງຊ້ອນກັນເປັນບ່ອນເກັບຮັກສາການຂຽນເຫຼົ່ານີ້ຊົ່ວຄາວ, ແລະ
ຫຼັງຈາກນັ້ນ, ພວກເຮົາຍົກເລີກມັນຫຼັງຈາກນັ້ນ. ນີ້ຮັບປະກັນວ່າແຜ່ນທີ່ຕິດພັນແມ່ນບໍ່ຖືກແຕະຕ້ອງສະເຫມີ.
ໃຫ້ສັງເກດວ່າມີການທົດສອບການຖົດຖອຍສໍາລັບການນີ້ໃນເວລາສ້າງ libguestfs (ໃນ
"tests/qemu"). ນີ້ແມ່ນເຫດຜົນຫນຶ່ງວ່າເປັນຫຍັງມັນເປັນສິ່ງສໍາຄັນສໍາລັບຜູ້ຫຸ້ມຫໍ່ທີ່ຈະດໍາເນີນການຊຸດທົດສອບ.
ບໍ່ "--ro" ເຮັດໃຫ້ ທັງຫມົດ ແຜ່ນ ອ່ານຢ່າງດຽວ?
ບໍ່ມີ! ຕົວເລືອກ "--ro" ມີຜົນກະທົບພຽງແຕ່ແຜ່ນທີ່ເພີ່ມຢູ່ໃນເສັ້ນຄໍາສັ່ງ, ie. ການນໍາໃຊ້ "-a" ແລະ
"-d" ທາງເລືອກ.
ໃນ guestfish, ຖ້າທ່ານໃຊ້ຄໍາສັ່ງ "add", ຫຼັງຈາກນັ້ນ, disk ຈະຖືກເພີ່ມ read-write (ເວັ້ນເສຍແຕ່ວ່າທ່ານ
ລະບຸທຸງ "readonly:true" ຢ່າງຊັດເຈນດ້ວຍຄໍາສັ່ງ).
ສາມາດເຮັດໄດ້ I ການນໍາໃຊ້ "ປາແຂກ --ro" as a ວິທີການ to ສໍາຮອງຂໍ້ມູນ my virtual ເຄື່ອງຈັກ?
ປົກກະຕິແລ້ວນີ້ແມ່ນ ບໍ່ ເປັນຄວາມຄິດທີ່ດີ. ຄໍາຖາມແມ່ນໄດ້ຮັບການຕອບໃນລະອຽດເພີ່ມເຕີມໃນທາງໄປສະນີນີ້
ປະກາດລາຍຊື່: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html
ເບິ່ງຄຳຖາມຕໍ່ໄປ.
ເປັນຫຍັງ ບໍ່ສາມາດ I ແລ່ນ fsck on a ດໍາລົງຊີວິດ ລະບົບໄຟລ໌ ການນໍາໃຊ້ "ປາແຂກ --ro"?
ຄໍາສັ່ງນີ້ຈະປົກກະຕິແລ້ວ ບໍ່ ເຮັດວຽກ:
guestfish --ro -a /dev/vg/my_root_fs ແລ່ນ : fsck /dev/sda
ເຫດຜົນສໍາລັບການນີ້ແມ່ນວ່າ qemu ສ້າງ snapshot ໃນໄລຍະລະບົບໄຟລ໌ຕົ້ນສະບັບ, ແຕ່ວ່າມັນ
ບໍ່ໄດ້ສ້າງພາບຖ່າຍຈຸດເວລາອັນເຄັ່ງຄັດ. ຕັນຂອງຂໍ້ມູນຢູ່ໃນພື້ນຖານ
ລະບົບໄຟລ໌ຖືກອ່ານໂດຍ qemu ໃນເວລາທີ່ແຕກຕ່າງກັນຍ້ອນວ່າການດໍາເນີນງານ fsck ກ້າວຫນ້າ, ກັບເຈົ້າພາບ
ຂຽນໃນລະຫວ່າງ. ຜົນໄດ້ຮັບແມ່ນວ່າ fsck ເຫັນການສໍ້ລາດບັງຫຼວງຂະຫນາດໃຫຍ່ (ຈິນຕະນາການ, ບໍ່ແມ່ນຄວາມຈິງ!)
ແລະລົ້ມເຫລວ.
ສິ່ງທີ່ທ່ານຕ້ອງເຮັດຄືການສ້າງພາບຖ່າຍຈຸດເວລາ. ຖ້າມັນເປັນປະລິມານຢ່າງມີເຫດຜົນ, ໃຫ້ໃຊ້
ພາບຖ່າຍ LVM2. ຖ້າລະບົບໄຟລ໌ຕັ້ງຢູ່ໃນບາງສິ່ງບາງຢ່າງເຊັ່ນ: ໄຟລ໌ btrfs/ZFS,
ໃຊ້ພາບຖ່າຍ btrfs/ZFS, ແລະຫຼັງຈາກນັ້ນແລ່ນ fsck ໃນພາບຖ່າຍ. ໃນການປະຕິບັດ, ທ່ານບໍ່ໄດ້
ຈໍາເປັນຕ້ອງໃຊ້ libguestfs ສໍາລັບການນີ້ - ພຽງແຕ່ດໍາເນີນການ /sbin/fsck ໂດຍກົງ.
ການສ້າງພາບຖ່າຍຈຸດເວລາຂອງອຸປະກອນແມ່ຂ່າຍ ແລະໄຟລ໌ແມ່ນຢູ່ນອກຂອບເຂດຂອງ
libguestfs, ເຖິງແມ່ນວ່າ libguestfs ສາມາດປະຕິບັດພວກມັນໄດ້ເມື່ອພວກມັນຖືກສ້າງຂື້ນ.
ແມ່ນຫຍັງ ໄດ້ ຄວາມແຕກຕ່າງ ລະຫວ່າງ ປາແຂກ ແລະ virt-scue?
ຫຼາຍຄົນສັບສົນໂດຍສອງເຄື່ອງມືທີ່ມີລັກສະນະຄ້າຍຄືກັນທີ່ພວກເຮົາສະໜອງໃຫ້:
$ guestfish --ro -a guest.img
> ແລ່ນ
> fsck /dev/sda1
$ virt-rescue --ro guest.img
> /sbin/fsck / dev / sda1
ແລະຄໍາຖາມທີ່ກ່ຽວຂ້ອງທີ່ເກີດຂື້ນຫຼັງຈາກນັ້ນແມ່ນວ່າເປັນຫຍັງທ່ານບໍ່ສາມາດພິມຄໍາສັ່ງເຕັມ shell
ກັບ - ທາງເລືອກທັງຫມົດໃນ guestfish (ແຕ່ທ່ານສາມາດເຂົ້າໄປໃນ virt-scue(1)).
ປາແຂກ(1) ເປັນໂຄງການສະຫນອງການເຂົ້າເຖິງໂຄງສ້າງຂອງ ແຂກ(3) API. ມັນເກີດຂື້ນ
ຈະເປັນແກະໂຕ້ຕອບທີ່ດີເກີນໄປ, ແຕ່ຈຸດປະສົງຕົ້ນຕໍຂອງມັນແມ່ນການເຂົ້າເຖິງໂຄງສ້າງຈາກ
shell scripts. ຄິດວ່າມັນຄ້າຍຄືກັບການຜູກມັດພາສາ, ເຊັ່ນ Python ແລະການຜູກມັດອື່ນໆ,
ແຕ່ສໍາລັບແກະ. ປັດໄຈຄວາມແຕກຕ່າງທີ່ສໍາຄັນຂອງ guestfish (ແລະ libguestfs API ໃນ
ໂດຍທົ່ວໄປ) ແມ່ນຄວາມສາມາດໃນການປ່ຽນແປງອັດຕະໂນມັດ.
virt-scue(1) ເປັນວິທີການຟຣີສໍາລັບການທັງຫມົດ freeform ເພື່ອບູດເຄື່ອງມື libguestfs ແລະເຮັດໃຫ້
ການປ່ຽນແປງໂດຍຕົນເອງຕໍ່ກັບ VM ຂອງທ່ານ. ມັນບໍ່ມີໂຄງສ້າງ, ທ່ານບໍ່ສາມາດອັດຕະໂນມັດໄດ້, ແຕ່ສໍາລັບການເຮັດ
ການແກ້ໄຂດ່ວນໂດຍສະເພາະສໍາລັບບຸກຄົນທົ່ວໄປຂອງທ່ານ, ມັນສາມາດເປັນປະໂຫຍດຫຼາຍ.
ແຕ່, libguestfs ຍັງມີ "backdoor" ເຂົ້າໄປໃນອຸປະກອນທີ່ຊ່ວຍໃຫ້ທ່ານສາມາດສົ່ງໂດຍຕົນເອງ.
ຄຳສັ່ງ shell. ມັນບໍ່ເປັນການປ່ຽນແປງໄດ້ເປັນການຊ່ວຍເຫຼືອ virt, ເພາະວ່າທ່ານບໍ່ສາມາດພົວພັນກັບ
ຄໍາສັ່ງ shell, ແຕ່ໃນທີ່ນີ້ມັນເປັນແນວໃດ:
> debug sh "cmd arg1 arg2 ... "
ໃຫ້ສັງເກດວ່າທ່ານຄວນ ບໍ່ ອີງໃສ່ນີ້. ມັນສາມາດຖືກໂຍກຍ້າຍອອກຫຼືປ່ຽນແປງໃນອະນາຄົດ. ຖ້າເຈົ້າ
ໂປຣແກຣມຕ້ອງການການດຳເນີນການບາງຢ່າງ, ກະລຸນາເພີ່ມມັນໃສ່ libguestfs API ແທນ.
ແມ່ນຫຍັງ ໄດ້ ການຈັດການ ກັບ "ປາແຂກ -i"?
ເປັນຫຍັງ ບໍ່ virt-cat ພຽງແຕ່ ການເຮັດວຽກ on a ທີ່ແທ້ຈິງ VM ຮູບພາບ, ແຕ່ virt-df ເຮັດວຽກ on ໃດ ແຜ່ນ ຮູບ?
ແມ່ນຫຍັງ ບໍ່ "ບໍ່ ຮາກ ອຸປະກອນ ພົບເຫັນ in ນີ້ ປະຕິບັດການ ລະບົບ ຮູບພາບ" ຫມາຍຄວາມວ່າ?
ຄໍາຖາມເຫຼົ່ານີ້ແມ່ນກ່ຽວຂ້ອງທັງຫມົດໃນລະດັບພື້ນຖານທີ່ອາດຈະບໍ່ທັນທີທັນໃດ
ຈະແຈ້ງ
ຢູ່ທີ່ ແຂກ(3) ລະດັບ API, ເປັນ "ຮູບພາບແຜ່ນ" ແມ່ນພຽງແຕ່ pile ຂອງ partitions ແລະລະບົບໄຟລ໌.
ໃນທາງກົງກັນຂ້າມ, ເມື່ອເຄື່ອງ virtual boots, ມັນຕິດຕັ້ງລະບົບໄຟລ໌ເຫຼົ່ານັ້ນໃຫ້ສອດຄ່ອງ
ລຳດັບເຊັ່ນ:
/ (/dev/sda2)
│
ຂ / boot (/dev/sda1)
│
ຂ / ເຮືອນ (/dev/vg_external/Home)
│
ຂ / usr (/dev/vg_os/lv_usr)
│
ຂ / var (/dev/vg_os/lv_var)
(ຫຼື drive ຕົວອັກສອນໃນ Windows).
API ກ່ອນອື່ນຫມົດເບິ່ງຮູບພາບແຜ່ນຢູ່ໃນລະດັບ "pile ຂອງລະບົບໄຟລ໌". ແຕ່ມັນຍັງ
ມີວິທີການກວດກາຮູບພາບແຜ່ນເພື່ອເບິ່ງວ່າມັນປະກອບດ້ວຍລະບົບປະຕິບັດການ, ແລະວິທີການ
ແຜ່ນຖືກຕິດຕັ້ງເມື່ອລະບົບປະຕິບັດການເລີ່ມຕົ້ນ: "INSPECTION" ໃນ ແຂກ(3).
ຜູ້ໃຊ້ຄາດຫວັງວ່າເຄື່ອງມືບາງຢ່າງ (ເຊັ່ນ: virt-cat(1)) ເພື່ອເຮັດວຽກຮ່ວມກັບເສັ້ນທາງ VM:
virt-cat fedora.img /var/log/messages
virt-cat ຮູ້ໄດ້ແນວໃດ / var ເປັນພາທິຊັນແຍກຕ່າງຫາກບໍ? trick ແມ່ນ ວ່າ virt cat
ດໍາເນີນການກວດສອບຮູບພາບໃນແຜ່ນ, ແລະໃຊ້ມັນເພື່ອແປເສັ້ນທາງຢ່າງຖືກຕ້ອງ.
ເຄື່ອງມືບາງຢ່າງ (ລວມທັງ virt-cat(1) virt-edit(1) virt-ls(1)) ໃຊ້ການກວດກາເພື່ອສ້າງແຜນທີ່ VM
ເສັ້ນທາງ. ເຄື່ອງມືອື່ນໆ, ເຊັ່ນ: virt-df(1) ແລະ virt-filesystems(1) ການດໍາເນີນງານທັງຫມົດທີ່
ລະດັບ "pile ໃຫຍ່ຂອງລະບົບໄຟລ໌" ດິບຂອງ libguestfs API, ແລະຢ່າໃຊ້ການກວດສອບ.
ປາແຂກ(1) ຢູ່ໃນພື້ນທີ່ກາງທີ່ຫນ້າສົນໃຈ. ຖ້າທ່ານໃຊ້ -a ແລະ -m ເສັ້ນຄໍາສັ່ງ
ທາງເລືອກ, ຫຼັງຈາກນັ້ນທ່ານຕ້ອງບອກ guestfish ຢ່າງແທ້ຈິງວິທີການເພີ່ມຮູບພາບແຜ່ນແລະບ່ອນທີ່ຈະຕິດຕັ້ງ
ການແບ່ງສ່ວນ. ນີ້ແມ່ນລະດັບ API ດິບ.
ຖ້າທ່ານໃຊ້ -i ທາງເລືອກ, libguestfs ດໍາເນີນການກວດກາແລະຕິດຕັ້ງລະບົບໄຟລ໌ສໍາລັບ
ທ່ານ.
ຂໍ້ຜິດພາດ "ບໍ່ພົບອຸປະກອນຮາກຢູ່ໃນຮູບພາບຂອງລະບົບປະຕິບັດການ" ແມ່ນກ່ຽວຂ້ອງກັບເລື່ອງນີ້. ມັນ
ຫມາຍຄວາມວ່າການກວດສອບບໍ່ສາມາດຊອກຫາລະບົບປະຕິບັດການພາຍໃນຮູບພາບແຜ່ນທີ່ທ່ານໃຫ້
ມັນ. ເຈົ້າອາດຈະເຫັນອັນນີ້ຈາກບັນດາໂຄງການເຊັ່ນ: virt-cat ຖ້າເຈົ້າພະຍາຍາມໃຊ້ພວກມັນໃນບາງອັນ
ເຊິ່ງເປັນຮູບພາບແຜ່ນ, ບໍ່ແມ່ນຮູບແຜ່ນ virtual machine.
ແມ່ນຫຍັງ do ເຫຼົ່ານີ້ "ດີບັກ*" ແລະ "ພາຍໃນ-*" ຫນ້າທີ່ ເຮັດແນວໃດ?
ມີບາງຫນ້າທີ່ຖືກນໍາໃຊ້ສໍາລັບການ debugging ແລະຈຸດປະສົງພາຍໃນແມ່ນ ບໍ່
ສ່ວນຫນຶ່ງຂອງ API ທີ່ຫມັ້ນຄົງ.
ຟັງຊັນ "debug*" (ຫຼື "guestfs_debug*"), ຕົ້ນຕໍແມ່ນ "guestfs_debug" ໃນ ແຂກ(3) ແລະ
ມືຂອງຄົນອື່ນ, ຖືກນໍາໃຊ້ສໍາລັບການ debugging libguestfs. ເຖິງແມ່ນວ່າພວກເຂົາບໍ່ແມ່ນສ່ວນຫນຶ່ງຂອງ
API ທີ່ຫມັ້ນຄົງແລະດັ່ງນັ້ນອາດຈະມີການປ່ຽນແປງຫຼືຖືກໂຍກຍ້າຍອອກໄດ້ທຸກເວລາ, ບາງໂຄງການອາດຈະຕ້ອງການໂທຫາ
ເຫຼົ່ານີ້ໃນຂະນະທີ່ລໍຖ້າຄຸນສົມບັດທີ່ຈະຖືກເພີ່ມໃສ່ libguestfs.
ຟັງຊັນ "internal-*" (ຫຼື "guestfs_internal_*") ແມ່ນໃຊ້ຢ່າງດຽວໂດຍ libguestfs.
ຕົວຂອງມັນເອງ. ບໍ່ມີເຫດຜົນສໍາລັບໂຄງການທີ່ຈະໂທຫາພວກເຂົາ, ແລະໂຄງການບໍ່ຄວນພະຍາຍາມໃຊ້
ເຂົາເຈົ້າ. ການນໍາໃຊ້ພວກມັນມັກຈະເຮັດໃຫ້ສິ່ງທີ່ບໍ່ດີເກີດຂື້ນ, ເຊັ່ນດຽວກັນກັບບໍ່ເປັນສ່ວນຫນຶ່ງຂອງ
API ຄົງທີ່ເອກະສານ.
ນັກພັດທະນາ
ບ່ອນທີ່ do I ສົ່ງ ເພີ້ມ?
ກະລຸນາສົ່ງ patches ໄປຫາລາຍຊື່ທາງໄປສະນີ libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
ຈະມີການຊັກຊ້າຈົນກ່ວາການປະກາດຂອງທ່ານໄດ້ຮັບການອະນຸມັດດ້ວຍຕົນເອງ.
ກະລຸນາ ບໍ່ໄດ້ ການນໍາໃຊ້ GitHub ດຶງ ການຮ້ອງຂໍ - ພວກເຂົາເຈົ້າ ຈະ be ບໍ່ສົນໃຈ. ເຫດຜົນແມ່ນ (a) ພວກເຮົາຕ້ອງການ
ເພື່ອປຶກສາຫາລືແລະແຍກແພັກເກັດຢູ່ໃນບັນຊີລາຍຊື່ທາງໄປສະນີ, ແລະ (b) ການຮ້ອງຂໍດຶງ github ກາຍເປັນ.
merge commits ແຕ່ພວກເຮົາຕ້ອງການທີ່ຈະມີປະຫວັດສາດ linear.
ວິທີການ do I ສະເຫນີ a ຄຸນນະສົມບັດ?
ລັກສະນະໃຫມ່ຂະຫນາດໃຫຍ່ທີ່ທ່ານຕັ້ງໃຈຈະປະກອບສ່ວນຄວນໄດ້ຮັບການສົນທະນາໃນບັນຊີລາຍຊື່ທາງໄປສະນີ
ທໍາອິດ (https://www.redhat.com/mailman/listinfo/libguestfs). ນີ້ຫຼີກເວັ້ນຄວາມຜິດຫວັງ
ແລະການເຮັດວຽກທີ່ເສຍເງິນຖ້າພວກເຮົາບໍ່ຄິດວ່າຄຸນສົມບັດຈະເຫມາະກັບໂຄງການ libguestfs.
ຖ້າທ່ານຕ້ອງການແນະນໍາຄຸນສົມບັດທີ່ເປັນປະໂຫຍດແຕ່ບໍ່ຕ້ອງການຂຽນລະຫັດ, ທ່ານສາມາດຍື່ນຄໍາຮ້ອງຂໍ a
bug (ເບິ່ງ "ການໄດ້ຮັບການຊ່ວຍເຫຼືອແລະການລາຍງານຂໍ້ຜິດພາດ") ກັບ "RFE:" ໃນຕອນຕົ້ນຂອງບົດສະຫຼຸບ
ເສັ້ນ.
ຜູ້ທີ່ ສາມາດເຮັດໄດ້ ຄໍາຫມັ້ນສັນຍາ to libguestfs git?
ປະມານ 5 ຄົນມີການເຂົ້າເຖິງ github. Patches ຄວນໄດ້ຮັບການປະກາດຢູ່ໃນບັນຊີລາຍຊື່ທໍາອິດ
ແລະ ACKed. ນະໂຍບາຍສໍາລັບການ ACKing ແລະ pushing patches ແມ່ນໄດ້ລະບຸໄວ້ທີ່ນີ້:
https://www.redhat.com/archives/libguestfs/2012-January/msg00023.html
ສາມາດເຮັດໄດ້ I fork libguestfs?
ແນ່ນອນເຈົ້າສາມາດເຮັດໄດ້. Git ເຮັດໃຫ້ມັນງ່າຍທີ່ຈະ fork libguestfs. Github ເຮັດໃຫ້ມັນງ່າຍຂຶ້ນ.
ມັນດີຖ້າທ່ານບອກພວກເຮົາຢູ່ໃນບັນຊີລາຍຊື່ທາງໄປສະນີກ່ຽວກັບສ້ອມແລະເຫດຜົນສໍາລັບພວກມັນ.
MISCELLANEOUS ຄໍາຖາມ
ສາມາດເຮັດໄດ້ I ຕິດຕາມກວດກາ ໄດ້ ດໍາລົງຊີວິດ ແຜ່ນ ກິດຈະກໍາ of a virtual ເຄື່ອງ ການນໍາໃຊ້ libguestfs?
ການຮ້ອງຂໍທົ່ວໄປແມ່ນເພື່ອສາມາດນໍາໃຊ້ libguestfs ເພື່ອຕິດຕາມການເຄື່ອນໄຫວຂອງແຜ່ນສົດຂອງ a
ແຂກ, ຕົວຢ່າງ, ເພື່ອໃຫ້ໄດ້ຮັບການແຈ້ງເຕືອນທຸກຄັ້ງທີ່ແຂກສ້າງໄຟລ໌ໃຫມ່. Libguestfs
ບໍ່ ບໍ່ ເຮັດວຽກໃນແບບທີ່ບາງຄົນຈິນຕະນາການ, ດັ່ງທີ່ເຈົ້າສາມາດເຫັນໄດ້ຈາກແຜນວາດນີ້:
┌────────────────────────────────── ┐
│ໂຄງການຕິດຕາມໂດຍໃຊ້ libguestfs │
└──────────────────────────────── ┘
↓
┌───────────── ┌──────────────────────┐
│ VM ສົດ │ │ libguestfs ເຄື່ອງໃຊ້ │
├───────────── ├──────────────────────┤
│ kernel (1)│ │ kernel ເຄື່ອງໃຊ້ (2) │
└─────────────┘ └──────────────────────┘
↓ ↓ (ການເຊື່ອມຕໍ່ r/o)
┌───────────────────────┐
| ຮູບພາບແຜ່ນ |
└───────────────────────┘
ສະຖານະການນີ້ແມ່ນປອດໄພ (ຕາບໃດທີ່ທ່ານຕັ້ງທຸງ "ອ່ານເທົ່ານັ້ນ" ເມື່ອເພີ່ມໄດຣຟ໌).
ຢ່າງໃດກໍຕາມ, libguestfs appliance kernel (2) ບໍ່ເຫັນການປ່ຽນແປງທັງຫມົດທີ່ເຮັດກັບແຜ່ນ.
ຮູບພາບ, ສໍາລັບສອງເຫດຜົນ:
i. VM kernel (1) ສາມາດ cache ຂໍ້ມູນຢູ່ໃນຫນ່ວຍຄວາມຈໍາ, ສະນັ້ນມັນບໍ່ປາກົດຢູ່ໃນຮູບຂອງແຜ່ນ.
ii. libguestfs appliance kernel (2) ບໍ່ໄດ້ຄາດຫວັງວ່າຮູບພາບຂອງແຜ່ນຈະມີການປ່ຽນແປງ
ພາຍໃຕ້ມັນ, ດັ່ງນັ້ນ cache ຂອງມັນເອງບໍ່ໄດ້ຖືກປັບປຸງ magically ເຖິງແມ່ນວ່າໃນເວລາທີ່ kernel VM (1)
ປັບປຸງຮູບພາບແຜ່ນ.
ການແກ້ໄຂສະຫນັບສະຫນູນພຽງແຕ່ແມ່ນການ restart ເຄື່ອງໃຊ້ libguestfs ທັງຫມົດທຸກຄັ້ງທີ່ທ່ານ
ຕ້ອງການເບິ່ງການປ່ຽນແປງໃນຮູບພາບແຜ່ນ. ໃນລະດັບ API ທີ່ສອດຄ່ອງກັບການໂທ
"guestfs_shutdown" ຕິດຕາມດ້ວຍ "guestfs_launch", ເຊິ່ງເປັນການດໍາເນີນງານທີ່ມີນ້ໍາຫນັກເບົາ (ເບິ່ງ.
ຍັງ guestfs-ການປະຕິບັດ(3)).
ມີບາງແຮັກທີ່ບໍ່ຮອງຮັບທີ່ທ່ານສາມາດລອງໄດ້ ຖ້າການເປີດເຄື່ອງຄືນໃໝ່ກໍ່ແມ່ນຄືກັນ
ຄ່າໃຊ້ຈ່າຍ:
·ໂທຫາ "guestfs_drop_caches (g, 3)". ອັນນີ້ເຮັດໃຫ້ຂໍ້ມູນແຄດທັງໝົດຊ່ວຍໂດຍ libguestfs
appliance kernel (2) ທີ່ຈະຖືກຍົກເລີກ, ສະນັ້ນມັນກັບຄືນໄປບ່ອນຮູບພາບແຜ່ນ.
ຢ່າງໃດກໍຕາມ, ນີ້ຢູ່ໃນຕົວຂອງມັນເອງບໍ່ພຽງພໍ, ເພາະວ່າ qemu ຍັງເກັບຂໍ້ມູນບາງຢ່າງ. ເຈົ້າ
ຍັງຈະຕ້ອງໄດ້ແກ້ໄຂ libguestfs ເພື່ອ (re-)ເປີດໃຊ້ໂໝດ "cache=unsafe". ເບິ່ງ:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/
· ໃຊ້ເຄື່ອງມືເຊັ່ນ: virt-bmap ແທນ.
·ດໍາເນີນການຕົວແທນພາຍໃນແຂກ.
ບໍ່ມີຫຍັງຊ່ວຍໄດ້ຖ້າແຂກເຮັດການປ່ຽນແປງພື້ນຖານເພີ່ມເຕີມ (ເຊັ່ນ: ການລຶບລະບົບໄຟລ໌).
ສໍາລັບປະເພດເຫຼົ່ານັ້ນ, ທ່ານຕ້ອງເປີດເຄື່ອງໃຊ້ໃຫມ່.
(ໃຫ້ສັງເກດວ່າມີບັນຫາທີສາມທີ່ທ່ານຈໍາເປັນຕ້ອງໃຊ້ການຖ່າຍຮູບທີ່ສອດຄ່ອງກັນເພື່ອກວດສອບຢ່າງແທ້ຈິງ
ຮູບພາບແຜ່ນສົດ, ແຕ່ນັ້ນແມ່ນບັນຫາທົ່ວໄປກັບການໃຊ້ libguestfs ຕໍ່ກັບແຜ່ນທີ່ມີຊີວິດຢູ່
ຮູບພາບ.)
ໃຊ້ guestfs-faq ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net