Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

guestfs-faq - Trực tuyến trên đám mây

Chạy guestfs-faq trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình mô phỏng trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là lệnh guestfs-faq có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


guestfs-faq - libguestfs Câu hỏi thường gặp (FAQ)

VỀ(ABOUT) LIBGUESTFS


Điều gì is libguestfs?
libguestfs là một cách để tạo, truy cập và sửa đổi hình ảnh đĩa. Bạn có thể nhìn vào bên trong đĩa
hình ảnh, sửa đổi các tệp chứa chúng, tạo chúng từ đầu, thay đổi kích thước chúng và nhiều thứ khác
hơn. Nó đặc biệt hữu ích từ các tập lệnh và chương trình và từ dòng lệnh.

libguestfs là một thư viện C (do đó là "lib-") và một bộ công cụ được xây dựng trên thư viện này, và
ràng buộc cho nhiều ngôn ngữ lập trình phổ biến.

Để biết thêm thông tin về những gì libguestfs có thể làm, hãy đọc phần giới thiệu trên trang chủ
(http://libguestfs.org).

Điều gì đang các đức hạnh công cụ?
Công cụ đức hạnh (trang web: http://virt-tools.org) là một tập hợp toàn bộ quản lý ảo hóa
công cụ hướng tới người quản trị hệ thống. Một số trong số đó đến từ libguestfs, một số từ
libvirt và nhiều người khác từ các dự án mã nguồn mở khác. Vì vậy, các công cụ đạo đức là một tập hợp các
libguestfs. Tuy nhiên libguestfs đi kèm với nhiều công cụ quan trọng. Nhìn thấy
http://libguestfs.org cho một danh sách đầy đủ.

Liệu libguestfs nhu cầu { sinh nhật / KVM / đỏ / Fedora }?
Không!

libvirt không phải là một yêu cầu đối với libguestfs.

libguestfs hoạt động với bất kỳ hình ảnh đĩa nào, bao gồm cả những hình ảnh được tạo trong VMware, KVM, qemu,
VirtualBox, Xen và nhiều trình siêu giám sát khác và những trình giám sát mà bạn đã tạo từ đầu.

Các nhà tài trợ của Red Hat (tức là trả tiền cho) sự phát triển của libguestfs và một số lượng lớn các chương trình mở khác
các dự án nguồn. Nhưng bạn có thể chạy libguestfs và các công cụ ảo trên nhiều Linux khác nhau
các bản phân phối và Mac OS X. Chúng tôi cố gắng hết sức để hỗ trợ tất cả các bản phân phối Linux ở dạng hạng nhất
công dân. Một số công cụ ảo đã được chuyển sang Windows.

Độ đáng tin của làm libguestfs so sánh đến khác công cụ?
vs. kpartx
Libguestfs có cách tiếp cận khác với kpartx. kpartx cần root và gắn kết
hệ thống tệp trên nhân máy chủ (có thể không an toàn - xem guestfs-an ninh(1)).
Libguestfs cô lập hạt nhân máy chủ của bạn với khách, linh hoạt hơn, có thể viết kịch bản,
hỗ trợ LVM, không yêu cầu root, được cách ly khỏi các quy trình khác và dọn dẹp
sau chính nó. Libguestfs không chỉ là quyền truy cập tệp vì bạn có thể sử dụng nó để
tạo hình ảnh từ đầu.

vs. vdfuse
vdfuse giống như kpartx nhưng đối với hình ảnh VirtualBox. Xem so sánh kpartx ở trên.
Bạn có thể sử dụng libguestfs trên các tệp phân vùng được vdfuse hiển thị, mặc dù nó không
cần thiết vì libguestfs có thể truy cập trực tiếp hình ảnh VirtualBox.

vs. qemu-nbd
NBD (Network Block Device) là một giao thức để xuất các thiết bị khối qua mạng.
qemu-nbd là một máy chủ NBD có thể xử lý bất kỳ định dạng đĩa nào được qemu hỗ trợ (ví dụ: raw,
qcow2). Bạn có thể sử dụng libguestfs và qemu-nbd hoặc nbdkit cùng nhau để truy cập khối
thiết bị qua mạng, ví dụ: "guestfish -a nbd: // remote"

vs. lắp hệ thống tập tin in các chủ nhà
Việc gắn hệ thống tệp khách trong máy chủ lưu trữ là không an toàn và nên tránh hoàn toàn
cho những vị khách không đáng tin cậy. Sử dụng libguestfs để cung cấp một lớp bảo vệ chống lại
khai thác hệ thống tập tin. Xem thêm số lượng khách(1).

vs. chia tay
Libguestfs hỗ trợ LVM. Libguestfs sử dụng parted và cung cấp hầu hết các tính năng parted
thông qua API libguestfs.

NHẬN CỨU GIÚP BÁO CÁO GIỎI


Độ đáng tin của do I Biết phiên bản Tôi là sử dụng?
Phương pháp đơn giản nhất là:

cá khách --version

Sự phát triển của Libguestfs xảy ra dọc theo một nhánh không ổn định và chúng tôi định kỳ tạo
nhánh ổn định mà chúng tôi hỗ trợ các bản vá ổn định. Để tìm hiểu thêm, hãy đọc "LIBGUESTFS
VERSION NUMBERS "trong khách mời(3).

Độ đáng tin của có thể I được giúp đỡ?
Điều gì gửi thư danh sách or trò chuyện trên mạng phòng đang có sẵn?
Nếu bạn là khách hàng của Red Hat sử dụng Red Hat Enterprise Linux, vui lòng liên hệ
Hỗ trợ Mũ đỏ: http://redhat.com/support

Có một danh sách gửi thư, chủ yếu để phát triển, nhưng người dùng cũng có thể yêu cầu
câu hỏi về libguestfs và các công cụ kỹ thuật:
https://www.redhat.com/mailman/listinfo/libguestfs

Bạn cũng có thể nói chuyện với chúng tôi trên kênh IRC "#libguestfs" trên FreeNode. Không phải lúc nào chúng tôi cũng
xung quanh, vì vậy hãy ở lại kênh sau khi đặt câu hỏi và sẽ có người liên hệ lại
cho bạn.

Đối với các công cụ ảo khác (không phải những công cụ được cung cấp với libguestfs), có một công cụ ảo chung
danh sách gửi thư: https://www.redhat.com/mailman/listinfo/virt-tools-list

Độ đáng tin của do I báo cáo lỗi?
Vui lòng sử dụng liên kết sau để nhập lỗi trong Bugzilla:

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

Bao gồm nhiều chi tiết nhất có thể và một cách để tái tạo vấn đề.

Bao gồm đầu ra đầy đủ của libguestfs-test-tool(1).

CHUNG VẤN ĐỀ


Xem thêm "LIBGUESTFS GOTCHAS" trong khách mời(3) đối với một số "gotchas" với việc sử dụng libguestfs
API.

"Có thể không chỉ định năng động Người phiên dịch đệm"
Lỗi khó hiểu này thực chất là lỗi SELinux. Bạn phải kích hoạt những điều sau
Boolean SELinux:

setsebool -P Virt_use_execmem = on

Để biết thêm thông tin, hãy xem https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"đứa trẻ quá trình chết bất ngờ "
[Thông báo lỗi này đã được thay đổi trong libguestfs 1.21.18 thành một thứ gì đó dễ giải thích hơn.]

Lỗi này chỉ ra rằng qemu bị lỗi hoặc hạt nhân máy chủ không thể khởi động. Để đi xa hơn
thông tin về lỗi, bạn phải chạy:

libguestfs-test-tool

Nếu sau khi sử dụng, bạn vẫn không hiểu lỗi hỏng hóc, hãy liên hệ với chúng tôi (xem phần trước
phần).

libguestfs: lỗi: không thể tìm bất kì phù hợp libguestfs siêu nhân, cố định or Kiểu cũ thiết bị
on LIBGUESTFS_PATH
febootstrap-supermin-người trợ giúp: máy lẻ 2: cha mẹ thư mục không tìm thấy
người trợ giúp siêu nhân: máy lẻ 2: cha mẹ thư mục không tìm thấy
[Sự cố này được khắc phục vĩnh viễn trong libguestfs ≥ 1.26.]

Nếu bạn gặp bất kỳ lỗi nào trong số này trên Debian / Ubuntu, bạn cần chạy lệnh sau:

sudo update-guestfs-device

"Sự cho phép từ chối" khi nào chạy libguestfs as nguồn gốc
Bạn nhận được lỗi bị từ chối quyền khi mở hình ảnh đĩa, ngay cả khi bạn đang chạy
libguestfs làm gốc.

Điều này là do libvirt gây ra và vì vậy chỉ xảy ra khi sử dụng phần mềm phụ trợ libvirt. Khi chạy
với tư cách là người chủ, libvirt quyết định chạy thiết bị qemu với tư cách là người dùng "qemu.qemu". không may
điều này thường có nghĩa là qemu không thể mở ảnh đĩa, đặc biệt nếu những ảnh đĩa đó
thuộc sở hữu của root hoặc có trong các thư mục yêu cầu quyền root.

Có một lỗi mở trên libvirt để sửa lỗi này:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Bạn có thể giải quyết vấn đề này bằng một trong các phương pháp sau:

· Chuyển sang phần phụ trợ trực tiếp:

xuất LIBGUESTFS_BACKEND = trực tiếp

· Không chạy libguestfs dưới dạng root.

· Chmod hình ảnh đĩa và bất kỳ thư mục mẹ nào để người dùng qemu có thể truy cập chúng.

· (Nasty) Chỉnh sửa /etc/libvirt/qemu.conf và thay đổi cài đặt "người dùng".

thực thi: /trong đó: Sự cho phép từ chối
Lưu ý: Nếu lỗi này xảy ra khi bạn đang sử dụng gói phân phối của libguestfs (ví dụ: from
Fedora, Debian, v.v.) sau đó gửi lỗi cho bản phân phối. Đây không phải là một lỗi mà
người dùng bình thường nên xem gói phân phối đã được chuẩn bị chính xác hay chưa.

Lỗi này xảy ra trong giai đoạn khởi động siêu nhỏ khi khởi động thiết bị:

supermin: gắn root mới vào /nguồn gốc
siêu nhân: chroot
executel: / init: Quyền bị từ chối
supermin: debug: danh sách thư mục /
[... theo sau là rất nhiều đầu ra gỡ lỗi ...]

Đây là một lỗi phức tạp liên quan đến siêu nhân(1) thiết bị gia dụng. Thiết bị được cấu tạo
bằng cách sao chép các tệp như / bin / bash và nhiều thư viện từ máy chủ. Tệp "hostfiles"
liệt kê các tệp cần được sao chép từ máy chủ lưu trữ vào công cụ. Nếu một số tệp
không tồn tại trên máy chủ thì chúng sẽ bị bỏ sót, nhưng nếu các tệp này cần thiết theo thứ tự
để (ví dụ) chạy / bin / bash thì bạn sẽ thấy lỗi ở trên.

Chẩn đoán vấn đề liên quan đến việc nghiên cứu các thư viện cần thiết / bin / bash, I E:

ldd / bin / bash

so sánh điều đó với "tệp máy chủ lưu trữ", với các tệp thực sự có sẵn trong hệ thống tệp máy chủ lưu trữ,
và với đầu ra gỡ lỗi được in trong thông báo lỗi. Khi bạn đã tìm ra tệp nào
bị thiếu, hãy cài đặt tệp đó bằng trình quản lý gói của bạn và thử lại.

Bạn cũng nên kiểm tra xem các tệp như /trong đó/ bin / bash (trong thiết bị) là
có thể thực thi. Đầu ra gỡ lỗi hiển thị các chế độ tệp.

TẢI XUỐNG, CÀI ĐẶT, LẮP RÁP LIBGUESTFS


Ở đâu có thể I được các mới nhất nhị phân cho ...?
Fedora ≥ 11
Sử dụng:

yum cài đặt '* guestf *'

Để biết các bản dựng mới nhất, hãy xem:
http://koji.fedoraproject.org/koji/packageinfo? packageID = 8391

Red Hat Enterprise Linux
RHEL 5
Phiên bản được vận chuyển trong RHEL 5 chính thức đã rất cũ và không nên được sử dụng ngoại trừ
kết hợp với Virt-v2v. Sử dụng gói libguestfs 1.20 cập nhật trong EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Nó là một phần của cài đặt mặc định. Trên RHEL 6 và 7 (chỉ), bạn phải cài đặt
"libguestfs-wonupport" để nhận hỗ trợ khách của Windows.

Debian và Ubuntu
Đối với libguestfs <1.26, sau khi cài đặt libguestfs, bạn cần thực hiện:

sudo update-guestfs-device

(Tập lệnh này đã bị xóa trên Debian / Ubuntu với libguestfs ≥ 1.26 và thay vào đó là
thiết bị được xây dựng theo yêu cầu.)

Chỉ trên Ubuntu:

sudo chmod 0644 / boot / vmlinuz *

Bạn có thể cần thêm mình vào nhóm "kvm":

sudo usermod -a -G kvm yourlogin

Debian Bóp (6)
Hilko Bengen đã xây dựng các libguestfs trong các backports:
http://packages.debian.org/search? keywords = guestfs & searchhon = names§ion = all & suite =quee-backports

Debian Wheezy trở lên (7+)
Hilko Bengen hỗ trợ libguestfs trên Debian. Các gói Debian chính thức là
có sẵn: http://packages.debian.org/search? keywords = libguestfs

Ubuntu
Chúng tôi không có người bảo trì Ubuntu toàn thời gian và các gói được cung cấp bởi
Canonical (nằm ngoài tầm kiểm soát của chúng tôi) đôi khi bị hỏng.

Canonical quyết định thay đổi các quyền trên hạt nhân để nó không
có thể đọc được ngoại trừ bởi root. Điều này là hoàn toàn ngu ngốc, nhưng họ sẽ không thay đổi nó
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Vì vậy, mọi người dùng
nên làm điều này:

sudo chmod 0644 / boot / vmlinuz *

Ubuntu 12.04
libguestfs trong phiên bản Ubuntu này hoạt động, nhưng bạn cần cập nhật febootstrap
và seabios lên các phiên bản mới nhất.

Bạn cần febootstrap ≥ 3.14-2 từ:
http://packages.ubuntu.com/precise/febootstrap

Sau khi cài đặt hoặc cập nhật febootstrap, hãy xây dựng lại công cụ:

sudo update-guestfs-device

Bạn cần seabios ≥ 0.6.2-0ubuntu2.1 hoặc ≥ 0.6.2-0ubuntu3 từ:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

Ngoài ra bạn cần làm (xem ở trên):

sudo chmod 0644 / boot / vmlinuz *

Gentoo
Libguestfs đã được Andreis Vinogradovs (libguestfs) thêm vào Gentoo vào năm 2012-07 và
Maxim Koltsov (chủ yếu là nổi mề đay). Làm:

nổi lên libguestfs

THỤY SĨ
Libguestfs đã được Olaf Hering thêm vào SuSE vào năm 2012.

ArchLinux
Libguestfs đã được thêm vào AUR vào năm 2010.

Bản phân phối Linux khác
Biên dịch từ nguồn (phần tiếp theo).

Bản phân phối không phải Linux khác
Bạn sẽ phải biên dịch từ nguồn và chuyển nó.

Độ đáng tin của có thể I biên dịch cài đặt, dựng lên libguestfs từ nguồn?
Bạn có thể biên dịch libguestfs từ git hoặc tarball nguồn. Đọc tệp README trước
bắt đầu.

Git: https://github.com/libguestfs/libguestfs Nguồn tarballs:
http://libguestfs.org/download

Đừng chạy "thực hiện cài đặt"! Sử dụng "./ chạy"script thay thế (xem README).

Độ đáng tin của có thể I biên dịch cài đặt, dựng lên libguestfs if my distro không mới đủ
qemu / supermin / kernel?
Libguestfs cần supermin 5. Nếu supermin 5 chưa được chuyển sang bản phân phối của bạn, hãy xem
câu hỏi bên dưới.

Đầu tiên biên dịch qemu, supermin và / hoặc hạt nhân từ nguồn. Bạn làm không cần phải làm
cài đặt "chúng.

Trong thư mục nguồn libguestfs, hãy tạo hai tệp. "localconfigure" phải chứa:

nguồn localenv
#export PATH = / tmp / qemu / x86_64-softmmu: $ PATH
./autogen.sh --prefix / usr "$ @"

Làm cho "localconfigure" có thể thực thi được.

"localenv" phải chứa:

#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

Bỏ ghi chú và điều chỉnh các dòng này theo yêu cầu để sử dụng các chương trình thay thế bạn có
biên soạn.

Sử dụng "./localconfigure" thay vì "./configure", nhưng nếu không, bạn biên dịch libguestfs thành
bình thường.

Đừng chạy "thực hiện cài đặt"! Sử dụng "./ chạy"script thay thế (xem README).

Độ đáng tin của có thể I biên dịch cài đặt, dựng lên libguestfs không có siêu nhân?
Nếu supermin 5 hỗ trợ bản phân phối của bạn, nhưng bạn không tình cờ có supermin mới đủ
đã cài đặt, sau đó xem câu hỏi trước.

Nếu supermin 5 không hỗ trợ bản phân phối của bạn, bạn sẽ cần sử dụng "fixed
phương thức công cụ "nơi bạn sử dụng công cụ nhị phân được biên dịch trước. Để tạo libguestfs
nếu không có supermin, bạn cần phải chuyển "--disable-device --disable-daemon" cho một trong hai
./autogen.sh or / Cấu hình. (tùy thuộc vào việc bạn đang xây dựng tương ứng từ git hay
từ tarballs). Sau đó, khi sử dụng libguestfs, bạn phải đặt "LIBGUESTFS_PATH"
biến môi trường cho thư mục của một công cụ được biên dịch trước, như cũng được mô tả trong
"ÁP DỤNG CỐ ĐỊNH" trong khách mời(3).

Đối với các thiết bị được biên dịch trước, hãy xem thêm: http://libguestfs.org/download/binaries/appliance/.

Các bản vá để chuyển supermin sang nhiều bản phân phối Linux khác được hoan nghênh.

Độ đáng tin của có thể I thêm vào hỗ trợ cho sVirt?
Chú thích cho Fedora / RHEL người dùng: Cấu hình này là mặc định bắt đầu với Fedora 18 và
RHEL 7. Nếu bạn tìm thấy bất kỳ vấn đề nào, vui lòng cho chúng tôi biết hoặc gửi thông báo lỗi.

SVirt cung cấp một thiết bị cứng sử dụng SELinux, làm cho nó rất cứng đối với một đĩa giả mạo
hình ảnh để "thoát" khỏi sự hạn chế của libguestfs và làm hỏng máy chủ (công bằng mà nói
rằng ngay cả trong libguestfs tiêu chuẩn, điều này sẽ khó, nhưng sVirt cung cấp thêm một lớp
bảo vệ cho máy chủ và quan trọng hơn là bảo vệ các máy ảo trên cùng một máy chủ
từ nhau).

Hiện tại để kích hoạt sVirt, bạn sẽ cần libvirt ≥ 0.10.2 (ưu tiên 1.0 hoặc mới hơn),
libguestfs ≥ 1.20 và các chính sách SELinux từ Fedora gần đây. Nếu bạn không chạy
Fedora 18+, bạn sẽ cần thực hiện các thay đổi đối với chính sách SELinux của mình - hãy liên hệ với chúng tôi trên
danh sách gửi thư.

Khi bạn có các yêu cầu, hãy làm:

./configure --with-default-backend = libvirt # libguestfs> = 1.22
./configure --with-default-attachment-method = libvirt # libguestfs <= 1.20
làm cho

Đặt SELinux thành chế độ Thực thi và sVirt sẽ được sử dụng tự động.

Tất cả, hoặc gần như tất cả, các tính năng của libguestfs phải hoạt động dưới sVirt. Có một cái đã biết
sự thiếu sót: cứu hộ(1) sẽ không sử dụng libvirt (do đó sVirt), nhưng quay trở lại trực tiếp
ra mắt qemu. Vì vậy, bạn hiện sẽ không nhận được lợi ích của tính năng bảo vệ sVirt khi sử dụng
cứu nhân đức.

Bạn có thể kiểm tra xem sVirt có đang được sử dụng hay không bằng cách bật tính năng ghi nhật ký libvirtd (xem
/etc/libvirt/libvirtd.log), giết và khởi động lại libvirtd, đồng thời kiểm tra các tệp nhật ký
cho thông báo "Đặt ngữ cảnh SELinux trên ...".

Về lý thuyết, sVirt nên hỗ trợ AppArmor, nhưng chúng tôi chưa thử. Nó sẽ gần như
chắc chắn yêu cầu vá libvirt và viết chính sách AppArmor.

Libguestfs a có thật không Dài of phụ thuộc!
Thư viện cơ sở không phụ thuộc nhiều, nhưng có ba nguyên nhân dẫn đến danh sách dài
của các phụ thuộc khác:

1. Libguestfs phải có khả năng đọc và chỉnh sửa nhiều định dạng đĩa khác nhau. Ví dụ,
Hỗ trợ XFS yêu cầu công cụ XFS.

2. Có các ràng buộc ngôn ngữ cho nhiều ngôn ngữ khác nhau, tất cả đều yêu cầu
công cụ phát triển. Tất cả các ràng buộc ngôn ngữ (ngoại trừ C) là tùy chọn.

3. Có một số tính năng thư viện tùy chọn có thể bị vô hiệu hóa.

Vì libguestfs ≥ 1.26 nên có thể chia nhỏ các phần phụ thuộc của công cụ (mục 1 trong
danh sách trên) và do đó có (ví dụ) "libguestfs-xfs" như một gói con riêng biệt cho
xử lý ảnh đĩa XFS. Chúng tôi khuyến khích những người đóng gói hạ nguồn bắt đầu tách cơ sở
gói libguestfs thành các gói con nhỏ hơn.

lỗi suốt trong phóng on Fedora 18, RHEL 7
Trong Fedora ≥ 18 và RHEL ≥ 7, libguestfs sử dụng libvirt để quản lý thiết bị. Trước đây
(và ngược dòng) libguestfs chạy qemu trực tiếp:

┌───────────────────────────────
│ libguestfs │
├─────────────────┬───────────────
│ phụ trợ trực tiếp │ phụ trợ libvirt │
└─────────────────┴───────────────
↓ ↓
┌───────┐ ┌───────────┐
│ qemu │ │ libvirtd │
└───────┘ └───────────┘

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

ngược dòng Fedora 18+
không phải Fedora RHEL 7+
không RHEL

Phần mềm phụ trợ libvirt phức tạp hơn, hỗ trợ SELinux / sVirt (xem ở trên),
hotplugging và hơn thế nữa. Tuy nhiên, nó phức tạp hơn và kém mạnh mẽ hơn.

Nếu bạn gặp sự cố về quyền khi sử dụng chương trình phụ trợ libvirt, bạn có thể chuyển sang trực tiếp
phụ trợ bằng cách đặt biến môi trường này:

xuất LIBGUESTFS_BACKEND = trực tiếp

trước khi chạy bất kỳ chương trình libguestfs hoặc công cụ nào.

Độ đáng tin của có thể I chuyển đổi đến a cố định / dựng sẵn thiết bị?
Điều này có thể cải thiện độ ổn định và hiệu suất của libguestfs trên Fedora và RHEL.

Bất kỳ lúc nào sau khi cài đặt libguestfs, hãy chạy các lệnh sau với quyền root:

mkdir -p / usr / local / lib / guestfs / Dụng cụ
libguestfs-make-fixed-Dụng cụ / usr / local / lib / guestfs / Dụng cụ
ls -l / usr / local / lib / guestfs / device

Bây giờ, hãy đặt biến môi trường sau trước khi sử dụng libguestfs hoặc bất kỳ công cụ nào:

xuất LIBGUESTFS_PATH = / usr / local / lib / guestfs / Dụng cụ

Tất nhiên bạn có thể thay đổi đường dẫn đến bất kỳ thư mục nào bạn muốn. Bạn có thể dùng chung thiết bị
trên các máy có cùng kiến ​​trúc (ví dụ: tất cả x86-64), nhưng lưu ý rằng libvirt
sẽ ngăn bạn chia sẻ công cụ trên NFS vì các vấn đề về quyền (vì vậy
hoặc chuyển sang phần phụ trợ trực tiếp hoặc không sử dụng NFS).

Độ đáng tin của có thể I tốc độ up libguestfs xây dựng?
Cho đến nay, điều quan trọng nhất bạn có thể làm là cài đặt và cấu hình Squid đúng cách.
Lưu ý rằng cấu hình mặc định đi kèm với Squid là rác, vì vậy cấu hình nó là
không tùy chọn.

Một nơi rất tốt để bắt đầu với cấu hình Squid là ở đây:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Đảm bảo rằng Squid đang chạy và các biến môi trường $ http_proxy và $ ftp_proxy
đang chỉ vào nó.

Với Squid đang chạy và được định cấu hình chính xác, các bản dựng thiết bị sẽ được giảm xuống một vài
phút.

Độ đáng tin của có thể I tốc độ up libguestfs xây dựng (Debian)?

Hilko Bengen đề xuất sử dụng "khoảng" là proxy lưu trữ Debian
(http://packages.debian.org/approx). Công cụ này được ghi lại trên Debian trong xấp xỉ(8)
trang hướng dẫn sử dụng.

TỐC ĐỘ, ĐÔ LA SPACE ĐÃ SỬ DỤNG BY LIBGUESTFS


Lưu ý: Hầu hết thông tin trong phần này đã di chuyển: khách mời-hiệu suất(1).

Tải lên or viết hình như rất chậm rãi.
Nếu đĩa bên dưới không được cấp phát đầy đủ (ví dụ: raw hoặc qcow2) thì có thể ghi
chậm bởi vì hệ điều hành máy chủ phải thực hiện phân bổ đĩa tốn kém trong khi bạn
viết. Giải pháp là sử dụng một định dạng được cấp phát đầy đủ để thay thế, tức là. thô không thưa thớt, hoặc
qcow2 với tùy chọn "preallocation = metadata".

Libguestfs sử dụng quá nhiều đĩa không gian!
libguestfs lưu trữ một thiết bị ish lớn trong:

/var/tmp/.guestfs-

Nếu biến môi trường "TMPDIR" được xác định, thì $ TMPDIR / .guestfs- được sử dụng
thay thế.

Có thể an toàn để xóa thư mục này khi bạn không sử dụng libguestfs.

ảo hóa dường như đến làm cho các hình ảnh phát triển đến các Full kích thước of các ảo đĩa
Nếu đầu vào cho ảo hóa(1) là thô, sau đó đầu ra sẽ là thô. Bảo đảm
bạn đang đo lường kết quả đầu ra bằng một công cụ có thể hiểu được độ thưa thớt, chẳng hạn như "du -sh".
Nó có thể tạo ra sự khác biệt rất lớn:

$ ls -lh test1.img
-rw-rw-r--. 1 rjones rjones 100M 8 tháng 08 08:1 testXNUMX.img
$ du -sh test1.img
3.6M test1.img

(So ​​sánh kích thước rõ ràng 100M so với kích thước thực tế 3.6M)

Nếu tất cả những điều này làm bạn bối rối, hãy sử dụng định dạng đầu ra không thưa thớt bằng cách chỉ định --đổi
tùy chọn, ví dụ:

virtual sparsify --convert qcow2 disk.raw disk.qcow2

Tại sao không thay đổi kích thước ảo công việc on các đĩa hình ảnh tại chỗ?
Thay đổi kích thước hình ảnh đĩa rất phức tạp - đặc biệt là đảm bảo rằng bạn không bị mất dữ liệu hoặc
phá vỡ bộ nạp khởi động. Phương pháp hiện tại tạo một hình ảnh đĩa mới và sao chép một cách hiệu quả
dữ liệu cộng với bộ nạp khởi động từ cái cũ. Nếu có vấn đề gì xảy ra, bạn luôn có thể tiếp tục
trở lại ban đầu.

Nếu chúng tôi thực hiện công việc thay đổi kích thước ảo tại chỗ thì sẽ phải có những giới hạn: đối với
ví dụ: bạn sẽ không được phép di chuyển các phân vùng hiện có (vì di chuyển dữ liệu qua
cùng một đĩa có nhiều khả năng làm hỏng dữ liệu trong trường hợp mất điện hoặc sự cố),
và LVM sẽ rất khó hỗ trợ (vì ánh xạ gần như tùy ý
giữa nội dung LV và các khối đĩa bên dưới).

Một phương pháp khác mà chúng tôi đã xem xét là đặt một ảnh chụp nhanh lên ảnh đĩa gốc, vì vậy
rằng dữ liệu gốc không bị ảnh hưởng và chỉ có sự khác biệt được ghi lại trong ảnh chụp nhanh.
Bạn có thể thực hiện việc này ngay hôm nay bằng cách sử dụng "qemu-img create" + "ảo thay đổi kích thước", nhưng qemu hiện không
đủ thông minh để nhận ra khi cùng một khối được ghi lại vào ảnh chụp nhanh như đã có
tồn tại trong đĩa sao lưu, vì vậy bạn sẽ thấy rằng điều này không giúp bạn tiết kiệm bất kỳ không gian hoặc thời gian nào.

Tóm lại, đây là một bài toán khó và những gì chúng tôi có hiện tại hầu hết đều hoạt động nên chúng tôi miễn cưỡng
để thay đổi nó

Tại sao không ảo hóa công việc on các đĩa hình ảnh tại chỗ?
Trong libguestfs ≥ 1.26, giờ đây, công nghệ ảo ảo có thể hoạt động trên ảnh đĩa tại chỗ. Sử dụng:

virtual sparsify --in-place disk.img

Nhưng trước tiên, bạn nên đọc "IN-PLACE SPARSIFICATION" trong ảo hóa(1).

VẤN ĐỀ KHAI MẠC ĐÔ LA HÌNH ẢNH


Xa sinh nhật khách không thể be đã mở.
Tính năng mở khách libvirt từ xa không được hỗ trợ tại thời điểm này. Ví dụ, điều này sẽ không hoạt động:

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

Để mở các đĩa từ xa, bạn phải xuất chúng bằng cách nào đó, sau đó kết nối với quá trình xuất. Vì
ví dụ nếu bạn quyết định sử dụng NBD:

điều khiển từ xa $ qemu-nbd -t -p 10809 guest.img
local $ guestfish -a nbd: // remote: 10809 -i

Các khả năng khác bao gồm ssh (nếu qemu đủ gần đây), NFS hoặc iSCSI. Xem "TỪ XA
LƯU TRỮ "trong khách mời(3).

Độ đáng tin của có thể I mở điều này lạ đĩa nguồn?
Bạn có một hình ảnh đĩa nằm bên trong một hệ thống khác yêu cầu quyền truy cập thông qua thư viện /
HTTP / REST / API độc quyền hoặc được nén hoặc lưu trữ theo một cách nào đó. (Một ví dụ
sẽ có thể truy cập từ xa vào các hình ảnh lướt qua của OpenStack mà không thực sự tải chúng xuống.)

Chúng tôi có một dự án chị em tên là nbdkit (https://github.com/libguestfs/nbdkit). Điều này
dự án cho phép bạn biến bất kỳ nguồn đĩa nào thành một máy chủ NBD. Libguestfs có thể truy cập NBD
máy chủ trực tiếp, ví dụ:

guestfish -a nbd: // remote

nbdkit được cấp phép tự do, vì vậy bạn có thể liên kết nó với hoặc đưa nó vào các thư viện độc quyền
và mã. Nó cũng có một API plugin đơn giản, ổn định để bạn có thể dễ dàng viết các plugin chống lại
API sẽ tiếp tục hoạt động trong tương lai.

lỗi mở VMDK đĩa: "sử dụng a vmdk tính năng cái nào is không hỗ trợ by điều này Ái chà phiên bản:
VMDK phiên bản 3"
Qemu (và do đó là libguestfs) chỉ hỗ trợ một số hình ảnh đĩa VMDK. Những người khác sẽ không hoạt động,
đưa ra lỗi này hoặc các lỗi tương tự.

Lý tưởng nhất là ai đó sẽ sửa chữa qemu để hỗ trợ các tính năng VMDK mới nhất, nhưng trong thời gian chờ đợi
bạn có ba lựa chọn:

1. Nếu khách được lưu trữ trên một máy chủ ESX trực tiếp, có thể truy cập được, hãy xác định vị trí và tải xuống
hình ảnh đĩa được gọi là somename-phẳng.vmdk. Bất chấp cái tên, đây là hình ảnh đĩa thô và
có thể được mở bằng bất cứ thứ gì.

Nếu bạn có đủ phiên bản qemu và libguestfs gần đây, thì bạn có thể
truy cập hình ảnh đĩa này từ xa bằng HTTPS hoặc ssh. Xem "LƯU TRỮ TỪ XA" trong
khách mời(3).

2. Sử dụng công cụ vdiskmanager độc quyền của VMware để chuyển đổi hình ảnh sang định dạng thô.

3. Sử dụng nbdkit với plugin VDDK độc quyền để xuất trực tiếp hình ảnh đĩa dưới dạng NBD
nguồn. Điều này sẽ cho phép bạn đọc và ghi tệp VMDK.

UFS đĩa (như đã sử dụng by BSD) không thể be đã mở.
Định dạng hệ thống tệp UFS có nhiều biến thể và chúng không tự nhận dạng. Các
Hạt nhân Linux phải được cho biết nó phải sử dụng biến thể UFS nào, libguestfs nào không thể
biết.

Bạn phải vượt qua tùy chọn gắn kết "ufstype" phù hợp khi gắn các hệ thống tệp này.

Xem https://www.kernel.org/doc/Documentation/filesystems/ufs.txt

Windows Refs
Windows ReFS là bản sao ZFS / Btrfs của Microsoft. Hệ thống tệp này vẫn chưa được đảo ngược
được thiết kế và triển khai trong nhân Linux, và do đó libguestfs không hỗ trợ
nó. Hiện tại nó dường như là rất hiếm "trong tự nhiên".

Không phải ASCII nhân vật không xuất hiện on VFAT hệ thống tập tin.
Các triệu chứng điển hình của vấn đề này:

· Bạn gặp lỗi khi tạo tệp trong đó tên tệp chứa không phải ASCII
các ký tự, đặc biệt là các ký tự không phải 8 bit từ các ngôn ngữ Châu Á (Trung Quốc, Nhật Bản,
Vân vân). Hệ thống tập tin là VFAT.

· Khi bạn liệt kê một thư mục từ hệ thống tệp VFAT, tên tệp sẽ xuất hiện dưới dạng dấu hỏi.

Đây là một lỗi thiết kế của hệ thống GNU / Linux.

VFAT lưu trữ các tên tệp dài dưới dạng ký tự UTF-16. Khi mở hoặc trả lại tên tệp,
Hạt nhân Linux phải dịch chúng thành một số dạng chuỗi 8 bit. UTF-8 sẽ là
sự lựa chọn rõ ràng, ngoại trừ những người dùng Linux vẫn tiếp tục sử dụng các ngôn ngữ không phải UTF-8 (người dùng
kernel không được biết đến locale vì nó là một chức năng của libc).

Do đó, bạn phải cho hạt nhân biết bản dịch bạn muốn thực hiện khi bạn gắn kết
hệ thống tập tin. Hai phương thức là tham số "iocharset" (không liên quan đến
libguestfs) và cờ "utf8".

Vì vậy, để sử dụng hệ thống tệp VFAT, bạn phải thêm cờ "utf8" khi gắn kết. Từ cá khách,
sử dụng:

> mount-options utf8 / dev / sda1 /

hoặc trên dòng lệnh guestfish:

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

hoặc từ API:

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

Sau đó, hạt nhân sẽ dịch tên tệp sang và từ chuỗi UTF-8.

Chúng tôi đã xem xét thêm tùy chọn gắn kết này một cách minh bạch, nhưng rất tiếc có một số
vấn đề với việc đó:

· Trên một số hệ thống Linux, tùy chọn gắn kết "utf8" không hoạt động. Chúng tôi không chính xác
hiểu hệ thống nào hoặc lý do tại sao, nhưng điều này đã được một người dùng báo cáo một cách đáng tin cậy.

· Nó sẽ ngăn bạn sử dụng tham số "iocharset" vì nó không tương thích
với "utf8". Có lẽ không phải là một ý kiến ​​hay khi sử dụng tham số này, nhưng chúng tôi không muốn
để ngăn chặn nó.

Không phải ASCII nhân vật xuất hiện as nhấn mạnh 🇧🇷 on ISO9660 hệ thống tập tin.
Hệ thống tệp không được chuẩn bị đúng cách với mkisofs hoặc genisoimage. Hãy đảm bảo rằng
hệ thống tập tin được tạo bằng cách sử dụng các phần mở rộng Joliet và / hoặc Rock Ridge. libguestfs không
yêu cầu bất kỳ tùy chọn gắn kết đặc biệt nào để xử lý hệ thống tệp.

Không thể mở Windows khách cái nào sử dụng NTFS.
Bạn thấy các lỗi như:

mount: loại hệ thống tệp không xác định 'ntfs'

Trên Red Hat Enterprise Linux hoặc CentOS, bạn phải cài đặt libguestfs-wonupport
Gói.

Không thể mở or thanh tra RHEL 7 khách.
Không thể mở Linux khách cái nào sử dụng XFS.
RHEL 7 khách và bất kỳ khách nào khác sử dụng XFS, có thể được mở bằng libguestfs, nhưng bạn
phải cài đặt gói "libguestfs-xfs".

SỬ DỤNG LIBGUESTFS IN CỦA BẠN SỞ HỮU CHƯƠNG TRÌNH


Sản phẩm API hàng trăm of phương pháp, Ở đâu do I khởi đầu?
Chúng tôi khuyên bạn nên bắt đầu bằng cách đọc tổng quan về API: "TỔNG QUAN VỀ API" trong khách mời(3).

Mặc dù tổng quan về API bao gồm API C, nó vẫn đáng đọc ngay cả khi bạn
sẽ sử dụng một ngôn ngữ lập trình khác, vì API giống nhau, chỉ đơn giản là
các thay đổi hợp lý đối với tên của các cuộc gọi:

C guestfs_ln_sf(g, target, linkname);
Python g.ln_sf (đích, tên liên kết);
OCaml g # ln_sf tên liên kết đích;
Perl $ g-> ln_sf (target, linkname);
Shell (cá) tên liên kết mục tiêu ln-sf
PHP guestfs_ln_sf ($ g, $ target, $ linkname);

Khi bạn đã quen với tổng quan về API, bạn nên xem danh sách bắt đầu này
điểm cho các ràng buộc ngôn ngữ khác: "SỬ DỤNG LIBGUESTFS VỚI CÁC NGÔN NGỮ LẬP TRÌNH KHÁC" trong
khách mời(3).

Có thể I sử dụng libguestfs in my độc quyền / đóng cửa nguồn / thương gia chương trình?
Nói chung, có. Tuy nhiên, đây không phải là lời khuyên pháp lý - hãy đọc giấy phép đi kèm
libguestfs, và nếu bạn có câu hỏi cụ thể, hãy liên hệ với luật sư.

Trong cây nguồn, giấy phép nằm trong tệp "COPYING.LIB" (LGPLv2 + cho thư viện và
ràng buộc) và "SAO CHÉP" (GPLv2 + cho các chương trình độc lập).

NỢ LIBGUESTFS


Giúp đỡ, không đang làm việc!
Nếu không có chương trình libguestfs nào hoạt động, hãy chạy chương trình bên dưới và dán
hoàn thành, chưa chỉnh sửa xuất thành email tới "libguestfs" @ "redhat.com":

libguestfs-test-tool

Nếu một thao tác cụ thể không thành công, hãy cung cấp tất cả thông tin trong danh sách kiểm tra này, trong một email
tới "libguestfs" @ "redhat.com":

1. Bạn đang cố gắng làm gì?

2. Bạn đã chạy (các) lệnh chính xác nào?

3. Lỗi chính xác hoặc đầu ra của các lệnh này là gì?

4. Bật gỡ lỗi, chạy lại các lệnh và chụp hoàn thành đầu ra. Do không
chỉnh sửa các đầu ra.

xuất LIBGUESTFS_DEBUG = 1
xuất LIBGUESTFS_TRACE = 1

5. Bao gồm phiên bản libguestfs, phiên bản hệ điều hành và cách bạn cài đặt
libguestfs (ví dụ: từ nguồn, "yum install", v.v.)

Độ đáng tin của do I gỡ lỗi khi nào sử dụng bất kì libguestfs chương trình or công cụ (ví dụ. Virt-v2v or đạo đức)?
Bạn có thể đặt hai biến môi trường "LIBGUESTFS_ *" để có thêm
thông tin từ libguestfs.

"LIBGUESTFS_TRACE"
Đặt giá trị này thành 1 và libguestfs sẽ in ra từng lệnh / lệnh gọi API ở định dạng
tương tự như lệnh guestfish.

"LIBGUESTFS_DEBUG"
Đặt giá trị này thành 1 để kích hoạt số lượng lớn thông báo gỡ lỗi. Nếu bạn nghĩ
có một số vấn đề bên trong thiết bị libguestfs, khi đó bạn nên sử dụng
tùy chọn.

Để đặt chúng từ shell, hãy thực hiện việc này trước khi chạy chương trình:

xuất LIBGUESTFS_TRACE = 1
xuất LIBGUESTFS_DEBUG = 1

Đối với csh / tcsh, các lệnh tương đương sẽ là:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Để biết thêm thông tin, hãy xem: "CÁC BIẾN ĐỔI MÔI TRƯỜNG" trong khách mời(3).

Độ đáng tin của do I gỡ lỗi khi nào sử dụng cá khách?
Bạn có thể sử dụng các biến môi trường tương tự ở trên. Hoặc sử dụng các tùy chọn cá khách
-x (để theo dõi lệnh) hoặc -v (để nhận đầu ra gỡ lỗi đầy đủ) hoặc cả hai.

Để biết thêm thông tin, hãy xem: cá khách(1).

Độ đáng tin của do I gỡ lỗi khi nào sử dụng các API?
Gọi "guestfs_set_trace" trong khách mời(3) để bật dấu vết lệnh và / hoặc
"guestfs_set_verbose" trong khách mời(3) để kích hoạt thông báo gỡ lỗi.

Để có kết quả tốt nhất, hãy gọi các hàm này càng sớm càng tốt, ngay sau khi tạo
guestfs xử lý nếu bạn có thể và chắc chắn trước khi gọi khởi chạy.

Độ đáng tin của do I nắm bắt gỡ lỗi đầu ra đặt it trong my khai thác gỗ hệ thống?
Sử dụng API sự kiện. Ví dụ: xem: "THIẾT LẬP CUỘC GỌI ĐỂ XỬ LÝ SỰ KIỆN" trong khách mời(3)
example / debug-logging.c chương trình trong các nguồn libguestfs.

Đào sâu sắc hơn trong các thiết bị khởi động quá trình.
Bật gỡ lỗi và sau đó đọc tài liệu này về quy trình khởi động công cụ:
guestfs-nội bộ(1).

libguestfs bị treo or không suốt trong chạy / khởi chạy.
Bật gỡ lỗi và xem toàn bộ kết quả đầu ra. Nếu bạn không thể tìm ra những gì đang xảy ra,
gửi một báo cáo lỗi, bao gồm hoàn thành đầu ra của libguestfs-test-tool(1).

Gỡ lỗi sinh nhật
Nếu bạn đang sử dụng phần mềm phụ trợ libvirt và libvirt không thành công, thì bạn có thể bật
gỡ lỗi bằng cách chỉnh sửa /etc/libvirt/libvirtd.conf.

Nếu bạn đang chạy dưới dạng không phải root, thì bạn phải chỉnh sửa một tệp khác. Tạo ra
~ / .config / libvirt / libvirtd.conf chứa:

log_level = 1
log_outputs = "1: tệp: /tmp/libvirtd.log"

Hủy bất kỳ phiên nào (không phải root) libvirtd đang chạy và lần tiếp theo bạn chạy libguestfs
, bạn sẽ thấy một lượng lớn thông tin gỡ lỗi hữu ích từ libvirtd trong
/tmp/libvirtd.log

THIẾT KẾ / NỘI BỘ OF LIBGUESTFS


Xem thêm guestfs-nội bộ(1).

Tại sao không bạn do tất cả mọi thứ thông qua các FUSE / hệ thống tập tin giao diện?
Chúng tôi cung cấp một lệnh được gọi là số lượng khách(1) cho phép bạn gắn kết các hệ thống tệp khách trên
tổ chức. Điều này được thực hiện như một mô-đun FUSE. Tại sao chúng ta không triển khai toàn bộ
libguestfs sử dụng cơ chế này, thay vì có API lớn và khá phức tạp?

Lý do là gấp đôi. Thứ nhất, libguestfs cung cấp các lệnh gọi API để thực hiện những việc như
tạo và xóa các phân vùng và khối lượng hợp lý, không phù hợp với hệ thống tệp
mô hình rất dễ dàng. Hoặc đúng hơn, bạn có thể đưa chúng vào: ví dụ: tạo một phân vùng
có thể được ánh xạ tới "mkdir / fs / hda1" nhưng sau đó bạn phải chỉ định một số phương pháp để chọn
kích thước của phân vùng (có thể là "echo 100M> /fs/hda1/.size") và loại phân vùng,
start và end sector, v.v., nhưng khi bạn đã làm xong, API dựa trên hệ thống tệp sẽ bắt đầu
trông phức tạp hơn API dựa trên cuộc gọi mà chúng tôi hiện có.

Lý do thứ hai là vì hiệu quả. Bản thân FUSE có hiệu quả hợp lý, nhưng nó không
thực hiện nhiều lệnh gọi nhỏ, độc lập vào mô-đun FUSE. Trong số lượng khách, họ phải
được dịch thành tin nhắn tới công cụ libguestfs có chi phí lớn (trong thời gian
và các chuyến đi khứ hồi). Ví dụ: đọc một tệp ở các phần 64 KB là không hiệu quả vì mỗi
chunk sẽ biến thành một chuyến đi khứ hồi. Trong API libguestfs, nó còn nhiều hơn thế nữa
hiệu quả để tải xuống toàn bộ tệp hoặc thư mục thông qua một trong các cuộc gọi phát trực tuyến như
"guestfs_download" hoặc "guestfs_tar_out".

Tại sao không bạn do tất cả mọi thứ thông qua GVFS?
Các vấn đề tương tự như các vấn đề với FUSE.

GVFS là một trừu tượng tốt hơn so với POSIX / FUSE. Có một chương trình phụ trợ FTP cho GVFS, đó là
khuyến khích vì FTP về mặt khái niệm tương tự như API libguestfs. Tuy nhiên GVFS
Phần phụ trợ FTP tạo nhiều kết nối đồng thời để duy trì tính tương tác,
chúng ta không thể dễ dàng làm được với libguestfs.

Tại sao có thể I viết đến các đĩa, cũng Tuy nhiên I thêm it chỉ đọc?
Tại sao làm "--ro" xuất hiện đến Không hiệu ứng?
Khi bạn thêm đĩa chỉ đọc, libguestfs đặt một lớp phủ có thể ghi lên trên
đĩa bên dưới. Các phần ghi đi vào lớp phủ này và bị loại bỏ khi tay cầm được đóng lại
(hoặc "khách cá", v.v. thoát ra).

Có hai lý do để làm theo cách này: Thứ nhất, không thể sử dụng đĩa chỉ đọc trong
nhiều trường hợp (ví dụ: IDE chỉ đơn giản là không hỗ trợ chúng, vì vậy bạn không thể có IDE giả lập
đĩa chỉ đọc, mặc dù điều này không phổ biến trong cài đặt libguestfs thực).

Thứ hai và quan trọng hơn, ngay cả khi có thể sử dụng đĩa chỉ đọc, bạn sẽ không muốn
họ. Việc gắn bất kỳ hệ thống tệp nào có tạp chí, thậm chí là "mount -o ro", gây ra việc ghi vào
hệ thống tập tin vì tạp chí phải được phát lại và cập nhật siêu dữ liệu. Nếu đĩa
thực sự ở chế độ chỉ đọc, bạn sẽ không thể gắn một hệ thống tệp bẩn.

Để làm cho nó có thể sử dụng được, chúng tôi tạo lớp phủ làm nơi lưu trữ tạm thời những lần ghi này và
sau đó chúng tôi loại bỏ nó sau đó. Điều này đảm bảo rằng đĩa bên dưới luôn không bị ảnh hưởng.

Cũng lưu ý rằng có một kiểm tra hồi quy cho điều này khi xây dựng libguestfs (trong
"tests / qemu"). Đây là một lý do tại sao điều quan trọng đối với người đóng gói là chạy bộ thử nghiệm.

Liệu "--ro" làm cho tất cả các đĩa chỉ đọc?
Không! Tùy chọn "--ro" chỉ ảnh hưởng đến các đĩa được thêm vào dòng lệnh, tức là. sử dụng "-a" và
tùy chọn "-d".

Trong guestfish, nếu bạn sử dụng lệnh "add", thì đĩa sẽ được thêm tính năng đọc-ghi (trừ khi bạn
chỉ định rõ ràng cờ "readonly: true" bằng lệnh).

Có thể I sử dụng "cá khách --ro " as a cách đến sao lưu my ảo máy móc?
Thông thường đây là không một ý kiến ​​hay. Câu hỏi được trả lời chi tiết hơn trong thư này
danh sách đăng: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Xem thêm câu hỏi tiếp theo.

Tại sao không thể I chạy chết tiệt on a sống hệ thống tập tin sử dụng "cá khách --ro "?
Lệnh này thường sẽ không công việc:

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

Lý do cho điều này là qemu tạo một ảnh chụp nhanh trên hệ thống tệp gốc, nhưng nó
không tạo ra một ảnh chụp nhanh theo thời điểm nghiêm ngặt. Các khối dữ liệu bên dưới
hệ thống tệp được qemu đọc vào các thời điểm khác nhau khi hoạt động fsck tiến triển, với máy chủ
viết ở giữa. Kết quả là fsck thấy tham nhũng lớn (tưởng tượng, không có thật!)
và không thành công.

Những gì bạn phải làm là tạo một ảnh chụp nhanh theo thời gian. Nếu đó là một tập hợp lý, hãy sử dụng
một ảnh chụp nhanh LVM2. Nếu hệ thống tệp được đặt bên trong một cái gì đó giống như tệp btrfs / ZFS,
sử dụng ảnh chụp nhanh btrfs / ZFS, sau đó chạy fsck trên ảnh chụp nhanh. Trong thực tế, bạn không
cần sử dụng libguestfs cho việc này - chỉ cần chạy / sbin / fsck trực tiếp.

Tạo ảnh chụp nhanh tại thời điểm của các thiết bị lưu trữ và tệp nằm ngoài phạm vi của
libguestfs, mặc dù libguestfs có thể hoạt động trên chúng sau khi chúng được tạo.

Có gì các sự khác biệt giữa cá khách cứu đức?
Rất nhiều người bị nhầm lẫn bởi hai công cụ bề ngoài giống nhau mà chúng tôi cung cấp:

$ guestfish --ro -a guest.img
> chạy
> fsck / dev / sda1

$ Virt-Rescue --ro guest.img
> / sbin / fsck / dev / sda1

Và câu hỏi liên quan sau đó nảy sinh là tại sao bạn không thể nhập các lệnh shell đầy đủ
với tất cả các tùy chọn trong guestfish (nhưng bạn có thể trong cứu hộ(1)).

cá khách(1) là một chương trình cung cấp quyền truy cập có cấu trúc vào khách mời(3) API. Nó xảy ra
cũng trở thành một shell tương tác tốt, nhưng mục đích chính của nó là truy cập có cấu trúc từ
các tập lệnh shell. Hãy nghĩ về nó giống như một ràng buộc ngôn ngữ, như Python và các ràng buộc khác,
nhưng đối với vỏ. Yếu tố khác biệt chính của cá khách (và API libguestfs trong
chung) là khả năng tự động hóa các thay đổi.

cứu hộ(1) là một cách tự do hoàn toàn miễn phí để khởi động thiết bị libguestfs và tạo
các thay đổi tùy ý đối với máy ảo của bạn. Nó không có cấu trúc, bạn không thể tự động hóa nó, nhưng để tạo ra
các bản sửa lỗi đặc biệt nhanh chóng cho khách của bạn, nó có thể khá hữu ích.

Tuy nhiên, libguestfs cũng có một "cửa sau" vào thiết bị cho phép bạn gửi tùy ý
các lệnh shell. Nó không linh hoạt như cứu hộ ảo, bởi vì bạn không thể tương tác với
lệnh shell, nhưng dù sao thì nó vẫn ở đây:

> gỡ lỗi sh "cmd arg1 arg2 ..."

Lưu ý rằng bạn nên không dựa vào điều này. Nó có thể bị xóa hoặc thay đổi trong tương lai. Nếu là của bạn
chương trình cần một số thao tác, vui lòng thêm nó vào API libguestfs.

Có gì các nhiều với "cá khách -tôi"?
Tại sao làm mèo ảo có thể công việc on a thực VM hình ảnh, nhưng đạo đức công trinh on bất kì đĩa hình ảnh?
Điều gì làm "không nguồn gốc thiết bị tìm thấy in điều này hoạt động hệ thống hình ảnh" nghĩa là gì?
Tất cả các câu hỏi này đều có liên quan ở mức độ cơ bản mà có thể không phải là ngay lập tức
hiển nhiên

Tại khách mời(3) Cấp độ API, một "hình ảnh đĩa" chỉ là một đống phân vùng và hệ thống tệp.

Ngược lại, khi máy ảo khởi động, nó sẽ gắn các hệ thống tệp đó thành một
phân cấp chẳng hạn như:

/ (/ dev / sda2)

/ khởi động (/ dev / sda1)

/ Home (/ dev / vg_external / Homes)

/ usr (/ dev / vg_os / lv_usr)

/ var (/ dev / vg_os / lv_var)

(hoặc ký tự ổ đĩa trên Windows).

Trước hết, API nhìn thấy hình ảnh đĩa ở cấp độ "đống hệ thống tệp". Nhưng nó cũng
có một cách để kiểm tra hình ảnh đĩa để xem nó có chứa hệ điều hành hay không và cách
đĩa được gắn khi hệ điều hành khởi động: "INSPECTION" trong khách mời(3).

Người dùng mong đợi một số công cụ (như mèo ảo(1)) để làm việc với các đường dẫn VM:

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

Làm thế nào mà mèo nhân đức biết điều đó / var là một phân vùng riêng biệt? Bí quyết là con mèo nhân đức
thực hiện kiểm tra hình ảnh đĩa và sử dụng hình ảnh đó để dịch đường dẫn một cách chính xác.

Một số công cụ (bao gồm mèo ảo(1) chỉnh sửa ảo(1) đạo đức(1)) sử dụng kiểm tra để lập bản đồ VM
các lối đi. Các công cụ khác, chẳng hạn như đạo đức(1) hệ thống tập tin ảo(1) hoạt động hoàn toàn tại
cấp "đống lớn hệ thống tệp" thô của API libguestfs và không sử dụng kiểm tra.

cá khách(1) là ở một trung địa thú vị. Nếu bạn sử dụng -a-m dòng lệnh
tùy chọn, sau đó bạn phải cho khách cá biết chính xác cách thêm hình ảnh đĩa và nơi để gắn kết
vách ngăn. Đây là cấp API thô.

Nếu bạn sử dụng -i tùy chọn, libguestfs thực hiện kiểm tra và gắn kết các hệ thống tệp cho
bạn.

Lỗi "không tìm thấy thiết bị gốc trong hình ảnh hệ điều hành này" có liên quan đến điều này. Nó
có nghĩa là kiểm tra không thể xác định vị trí hệ điều hành trong hình ảnh đĩa bạn đã cung cấp
nó. Bạn có thể thấy điều này từ các chương trình như mèo ảo nếu bạn cố gắng chạy chúng trên một cái gì đó
mà chỉ là một hình ảnh đĩa, không phải là một hình ảnh đĩa máy ảo.

Điều gì do các "gỡ lỗi *" "Nội bộ-*" chức năng Làm gì?
Có một số chức năng được sử dụng để gỡ lỗi và các mục đích nội bộ là không
một phần của API ổn định.

Các hàm "debug *" (hoặc "guestfs_debug *"), chủ yếu là "guestfs_debug" trong khách mời(3)
một số ít khác được sử dụng để gỡ lỗi libguestfs. Mặc dù chúng không phải là một phần của
API ổn định và do đó có thể thay đổi hoặc bị xóa bất kỳ lúc nào, một số chương trình có thể muốn gọi
trong khi chờ các tính năng được thêm vào libguestfs.

Các hàm "internal- *" (hoặc "guestfs_internal_ *") hoàn toàn được sử dụng bởi libguestfs
chinh no. Không có lý do gì để các chương trình gọi chúng và các chương trình không nên cố gắng sử dụng
họ. Việc sử dụng chúng thường xuyên sẽ khiến những điều tồi tệ xảy ra, cũng như không phải là một phần của
API ổn định được lập thành tài liệu.

NHÀ PHÁT TRIỂN


Ở đâu do I gửi bản vá lỗi?
Vui lòng gửi các bản vá đến danh sách gửi thư libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
sẽ có một sự chậm trễ cho đến khi bài đăng của bạn được chấp thuận theo cách thủ công.

Vui lòng không sử dụng github kéo yêu cầu - họ sẽ be bỏ qua. Lý do là (a) chúng tôi muốn
thảo luận và mổ xẻ các bản vá trong danh sách gửi thư và (b) các yêu cầu kéo github chuyển thành
hợp nhất các cam kết nhưng chúng tôi muốn có lịch sử tuyến tính.

Độ đáng tin của do I đề xuất a đặc tính?
Các tính năng mới lớn mà bạn định đóng góp sẽ được thảo luận trên danh sách gửi thư
đầu tiên (https://www.redhat.com/mailman/listinfo/libguestfs). Điều này tránh thất vọng
và lãng phí công việc nếu chúng tôi không nghĩ rằng tính năng này sẽ phù hợp với dự án libguestfs.

Nếu bạn muốn đề xuất một tính năng hữu ích nhưng không muốn viết mã, bạn có thể gửi
lỗi (xem "NHẬN TRỢ GIÚP VÀ BÁO CÁO") với "RFE:" ở đầu Tóm tắt
hàng.

Về có thể cam kết đến libguestfs gi?
Khoảng 5 người có quyền truy cập cam kết vào github. Các bản vá lỗi nên được đăng trên danh sách trước tiên
và ACKed. Chính sách về ACKing và các bản vá lỗi được nêu ở đây:

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

Có thể I ngã ba libguestfs?
Tất nhiên bạn có thể. Git giúp bạn dễ dàng phân tách các libguestfs. Github làm cho nó thậm chí còn dễ dàng hơn.
Thật tuyệt nếu bạn cho chúng tôi biết trong danh sách gửi thư về nĩa và lý do cho chúng.

KHÁC CÂU HỎI


Có thể I màn hình các sống đĩa hoạt động of a ảo máy sử dụng libguestfs?
Một yêu cầu phổ biến là có thể sử dụng libguestfs để giám sát hoạt động đĩa trực tiếp của
chẳng hạn như khách để nhận thông báo mỗi khi khách tạo tệp mới. Libguestfs
làm không hoạt động theo cách mà một số người tưởng tượng, như bạn có thể thấy từ sơ đồ này:

┌───────────────────────────────
│ chương trình giám sát bằng libguestfs │
└────────────────────────────────

┌────────────┐ ┌────────────────
│ trực tiếp VM │ │ thiết bị libguestfs │
├────────────┤ ├───────────────────────┤
│ nhân (1) │ │ nhân thiết bị (2) │
└────────────┘ └───────────────────────┘
↓ ↓ (kết nối r / o)
┌────────────────────────┐
| hình ảnh đĩa |
└────────────────────────┘

Trường hợp này là an toàn (miễn là bạn đặt cờ "chỉ đọc" khi thêm ổ đĩa).
Tuy nhiên, nhân của thiết bị libguestfs (2) không thấy tất cả các thay đổi được thực hiện đối với đĩa
hình ảnh, vì hai lý do:

tôi. Hạt nhân VM (1) có thể lưu dữ liệu vào bộ nhớ đệm, vì vậy nó không xuất hiện trong ảnh đĩa.

ii. Kernel của thiết bị libguestfs (2) không mong đợi rằng hình ảnh đĩa đang thay đổi
bên dưới nó, vì vậy bộ nhớ cache của chính nó không được cập nhật một cách kỳ diệu ngay cả khi hạt nhân VM (1)
cập nhật hình ảnh đĩa.

Giải pháp được hỗ trợ duy nhất là khởi động lại toàn bộ thiết bị libguestfs bất cứ khi nào bạn
muốn xem những thay đổi trong hình ảnh đĩa. Ở cấp API tương ứng với gọi
"guestfs_shutdown" theo sau là "guestfs_launch", là một hoạt động nặng (xem
Ngoài ra khách mời-hiệu suất(3)).

Có một số thủ thuật không được hỗ trợ mà bạn có thể thử nếu quá trình khởi chạy lại thiết bị thực sự quá
tốn kém:

· Gọi "guestfs_drop_caches (g, 3)". Điều này khiến cho tất cả dữ liệu đã lưu trong bộ nhớ cache được trợ giúp bởi libguestfs
hạt nhân của thiết bị (2) sẽ bị loại bỏ, vì vậy nó sẽ quay trở lại hình ảnh đĩa.

Tuy nhiên điều này tự nó là không đủ, vì qemu cũng lưu trữ một số dữ liệu. Bạn
cũng sẽ cần vá libguestfs để (lại) bật chế độ "cache = không an toàn". Nhìn thấy:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Sử dụng một công cụ như ảo bmap thay thế.

· Điều hành một đại lý bên trong khách.

Không có gì hữu ích nếu khách thực hiện các thay đổi cơ bản hơn (ví dụ: xóa hệ thống tệp).
Đối với những loại này, bạn phải khởi động lại thiết bị.

(Lưu ý rằng có một vấn đề thứ ba là bạn cần sử dụng ảnh chụp nhanh nhất quán để thực sự kiểm tra
hình ảnh đĩa trực tiếp, nhưng đó là vấn đề chung khi sử dụng libguestfs đối với bất kỳ đĩa trực tiếp nào
hình ảnh.)

Sử dụng guestfs-faq trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

Lệnh Linux

  • 1
    2 đến 3-3.5
    2 đến 3-3.5
    2to3-3.3 - Công cụ chuyển đổi Python2 sang Python3
    hữu ích. Cảm ơn !
    Chạy 2to3-3.5
  • 2
    2to3
    2to3
    2to3-2.7 - Công cụ chuyển đổi Python2 sang Python3
    hữu ích. Cảm ơn !
    Chạy 2to3
  • 3
    cpqarrayd
    cpqarrayd
    cpqarrayd - Bộ điều khiển mảng
    giám sátdaemon CỐ ĐỊNH: cpqarrayd [-d]
    [-v] [-t máy chủ [-t máy chủ]] MÔ TẢ:
    Chương trình này có khả năng giám sát HP
    (Compaq) sắp xếp...
    Chạy cpqarrayd
  • 4
    cproto
    cproto
    cproto - tạo nguyên mẫu hàm C
    và chuyển đổi các định nghĩa hàm ...
    Chạy cproto
  • 5
    gbbin
    gbbin
    gbbin - Một chương trình chuyển đổi dữ liệu...
    Chạy gbbin
  • 6
    gbboot
    gbboot
    gbboot - Dữ liệu do người dùng Bootstrap cung cấp ...
    Chạy gbboot
  • Khác »

Ad