АнглийскийФранцузскийИспанский

Ad


Значок OnWorks

guestfs-faq - Интернет в облаке

Запустите guestfs-faq в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

Это команда guestfs-faq, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


guestfs-faq - Часто задаваемые вопросы по libguestfs (FAQ)

О компании LIBGUESTFS


Что is либгостфс?
libguestfs - это способ создания, доступа и изменения образов дисков. Вы можете заглянуть внутрь диска
изображения, изменять файлы, которые они содержат, создавать их с нуля, изменять их размер и многое другое
более. Это особенно полезно из сценариев и программ, а также из командной строки.

libguestfs - это библиотека C (отсюда "lib-") и набор инструментов, построенных на этой библиотеке, и
привязки для многих распространенных языков программирования.

Для получения дополнительной информации о том, что может делать libguestfs, прочтите введение на домашней странице.
(http://libguestfs.org).

Что Он домен добродетель инструменты?
Инструменты Virt (веб-сайт: http://virt-tools.org) представляют собой целый набор средств управления виртуализацией.
инструменты, предназначенные для системных администраторов. Некоторые из них взяты из libguestfs, некоторые из
libvirt и многие другие из других проектов с открытым исходным кодом. Итак, virt tools - это надмножество
libguestfs. Однако libguestfs поставляется со многими важными инструментами. Видеть
http://libguestfs.org Для получения полного списка.

Есть ли libguestfs необходимость { Libvirt / KVM / Red Шапка / Fedora }?
Нет!

libvirt не является обязательным требованием для libguestfs.

libguestfs работает с любыми образами дисков, в том числе созданными в VMware, KVM, qemu,
VirtualBox, Xen и многие другие гипервизоры, которые вы создали с нуля.

Red Hat спонсирует (т.е. оплачивает) разработку libguestfs и огромного количества других открытых
исходные проекты. Но вы можете запускать libguestfs и инструменты virt на многих разных Linux.
дистрибутивов и Mac OS X. Мы делаем все возможное, чтобы поддерживать все дистрибутивы Linux как первоклассные.
граждане. Некоторые инструменты virt были перенесены в Windows.

Как приносит libguestfs сравнить в другие инструменты?
против Кпарткс
Libguestfs использует другой подход, чем kpartx. kpartx нужен root и монтирует
файловые системы на ядре хоста (которые могут быть небезопасными - см. Guestfs-безопасность(1 г.)).
Libguestfs изолирует ядро ​​вашего хоста от гостей, является более гибким, поддерживает сценарии,
поддерживает LVM, не требует root, изолирован от других процессов и очищает
после себя. Libguestfs - это больше, чем просто доступ к файлам, потому что вы можете использовать его для
создавать изображения с нуля.

против vdfuse
vdfuse похож на kpartx, но для изображений VirtualBox. См. Сравнение kpartx выше.
Вы можете использовать libguestfs для файлов разделов, предоставляемых vdfuse, но это не так.
необходимо, поскольку libguestfs может напрямую обращаться к изображениям VirtualBox.

против qemu-nbd
NBD (Network Block Device) - это протокол для экспорта блочных устройств по сети.
qemu-nbd - это сервер NBD, который может обрабатывать любой формат диска, поддерживаемый qemu (например, raw,
qcow2). Вы можете использовать libguestfs и qemu-nbd или nbdkit вместе для доступа к блоку
устройства в сети, например: "guestfish -a nbd: // remote"

против монтаж файловые системы in домен кашель
Монтирование гостевых файловых систем на хосте небезопасно, и его следует полностью избегать.
для ненадежных гостей. Используйте libguestfs для обеспечения уровня защиты от
эксплойты файловой системы. Смотрите также гостевая гора(1).

против расставался
Libguestfs поддерживает LVM. Libguestfs использует parted и предоставляет большинство функций parted
через API libguestfs.

ПОЛУЧЕНИЕ ПОМОГИТЕ И СОСТАВЛЕНИЕ ОТЧЕТОВ ОШИБКИ


Как do I знают почему версия я с помощью?
Самый простой способ:

гостевая рыба --версия

Разработка Libguestfs происходит в нестабильной ветке, и мы периодически создаем
стабильная ветка, в которую мы переносим стабильные патчи. Чтобы узнать больше, прочтите "LIBGUESTFS
НОМЕРА ВЕРСИИ "в гость(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-тест-инструмент(1).

ОБЩИЙ ПРОБЛЕМЫ


См. Также "LIBGUESTFS GOTCHAS" в гость(3) для некоторых "ошибок" с использованием libguestfs
API.

"Мог не выделять динамический переводчик буфер "
Эта непонятная ошибка на самом деле является ошибкой SELinux. Вы должны включить следующие
SELinux логический:

setsebool -P virt_use_execmem = on

Для получения дополнительной информации см. Https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"ребенок процесс умер неожиданно"
[Это сообщение об ошибке было изменено в libguestfs 1.21.18 на более пояснительное.]

Эта ошибка указывает на то, что qemu не удалось или ядро ​​хоста не могло загрузиться. Чтобы продвинуться дальше
информацию о сбое, необходимо запустить:

libguestfs-тест-инструмент

Если после использования вы по-прежнему не понимаете, что произошло, свяжитесь с нами (см. Предыдущий
раздел).

libguestfs: ошибка: не могу найдите любой подходящее libguestfs супермин фиксированной or старый стиль прибор
on LIBGUESTFS_PATH
febootstrap-supermin-помощник: доб2: родителя каталог не найденный
супермин-помощник: доб2: родителя каталог не найденный
[Эта проблема навсегда устранена в libguestfs ≥ 1.26.]

Если вы видите любую из этих ошибок в Debian / Ubuntu, вам необходимо выполнить следующую команду:

sudo update-guestfs-устройство

"Разрешение отклонен" когда Бег libguestfs as корень
Вы получаете ошибку отказа в разрешении при открытии образа диска, даже если вы работаете
libguestfs как root.

Это вызвано libvirt и происходит только при использовании бэкэнда libvirt. При запуске
от имени пользователя root libvirt решает запустить устройство qemu от имени пользователя qemu.qemu. к несчастью
обычно это означает, что qemu не может открывать образы дисков, особенно если эти образы дисков
принадлежат пользователю root или находятся в каталогах, требующих доступа root.

В libvirt есть ошибка, чтобы исправить это:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Вы можете обойти это одним из следующих способов:

· Переключитесь на прямой бэкэнд:

экспорт LIBGUESTFS_BACKEND = прямой

· Не запускайте libguestfs от имени пользователя root.

· Изменить образ диска и все родительские каталоги, чтобы пользователь qemu мог получить к ним доступ.

· (Противно) Править /etc/libvirt/qemu.conf и измените настройку «пользователя».

испр: /в этом: Разрешение отказано
Примечание: Если эта ошибка возникает, когда вы используете дистрибутив libguestfs (например, из
Fedora, Debian и т. Д.), А затем сообщите об ошибке в дистрибутиве. Это не ошибка,
обычные пользователи должны когда-либо видеть, правильно ли подготовлен пакет дистрибутива.

Эта ошибка возникает во время фазы суперминальной загрузки при запуске устройства:

supermin: установка нового корня на / Корень
супермин: chroot
execl: / init: в доступе отказано
supermin: debug: список каталога /
[... сопровождаемый большим количеством отладочных данных ...]

Это сложная ошибка, связанная с супермин(1) бытовая техника. Устройство сконструировано
путем копирования файлов типа / bin / bash и многие библиотеки от хоста. Файл "hostfiles"
перечисляет файлы, которые следует скопировать с хоста на устройство. Если какие-то файлы
не существуют на хосте, то они пропущены, но если эти файлы нужны для того, чтобы
(например) бежать / bin / bash тогда вы увидите указанную выше ошибку.

Диагностика проблемы включает изучение библиотек, необходимых для / bin / bash, то есть:

LDD / bin / bash

сравнивая это с "hostfiles", с файлами, фактически доступными в файловой системе хоста,
и с выводом отладки, напечатанным в сообщении об ошибке. Как только вы выяснили, какой файл
отсутствует, установите этот файл с помощью диспетчера пакетов и повторите попытку.

Вы также должны проверить, что такие файлы, как /в этом и / bin / bash (в приборе)
исполняемый файл. Выходные данные отладки показывают режимы файлов.

ЗАГРУЗКА, УСТАНОВКА, СОСТАВЛЕНИЕ LIBGUESTFS


где может I получить домен последний двоичные файлы для ? ...
Федора ≥ 11
Использование:

yum install '* guestf *'

Последние сборки см. В следующих статьях:
http://koji.fedoraproject.org/koji/packageinfo? packageID = 8391

Red Hat Enterprise Linux
RHEL 5
Версия, поставляемая в официальном RHEL 5, очень старая и не должна использоваться, кроме как
в сочетании с virt-v2v. Используйте обновленный пакет libguestfs 1.20 в EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Это часть установки по умолчанию. На RHEL 6 и 7 (только) вам необходимо установить
"libguestfs-winsupport", чтобы получить гостевую поддержку Windows.

Debian и Ubuntu
Для libguestfs <1.26 после установки libguestfs необходимо сделать:

sudo update-guestfs-устройство

(Этот сценарий был удален в Debian / Ubuntu с помощью libguestfs ≥ 1.26 и вместо
прибор построен по запросу.)

Только в Ubuntu:

sudo chmod 0644 / загрузка / vmlinuz *

Возможно, вам потребуется добавить себя в группу «kvm»:

sudo usermod -a -G kvm ваш логин

Сжатие Debian (6)
Хилко Бенген построил libguestfs в squeeze 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? ключевые слова = libguestfs

Ubuntu
У нас нет штатного сопровождающего Ubuntu, и пакеты, поставляемые
Канонические (которые находятся вне нашего контроля) иногда нарушаются.

Canonical решила изменить права доступа к ядру, чтобы оно не
читается кроме root. Это совершенно глупо, но они этого не изменят
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Итак, каждый пользователь
должен сделать это:

sudo chmod 0644 / загрузка / vmlinuz *

Ubuntu 12.04
libguestfs в этой версии Ubuntu работает, но вам нужно обновить febootstrap
и seabios до последних версий.

Вам нужен febootstrap ≥ 3.14-2 из:
http://packages.ubuntu.com/precise/febootstrap

После установки или обновления febootstrap перестройте устройство:

sudo update-guestfs-устройство

Вам нужен 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 / загрузка / vmlinuz *

Gentoo
Libguestfs был добавлен в Gentoo в 2012-07 годах Андреисом Виноградовым (libguestfs) и
Максим Кольцов (в основном улей). Делать:

установить libguestfs

ШВЕЙЦАРИЯ
Libguestfs был добавлен в SuSE в 2012 году Олафом Херингом.

ArchLinux
Libguestfs был добавлен в AUR в 2010 году.

Другой дистрибутив Linux
Скомпилировать из исходного кода (следующий раздел).

Другой дистрибутив, отличный от Linux
Вам нужно будет скомпилировать из исходного кода и перенести его.

Как может I компилировать и устанавливать libguestfs от источник?
Вы можете скомпилировать libguestfs из git или архива с исходным кодом. Прочтите файл README перед
начиная.

Git: https://github.com/libguestfs/libguestfs Архивы исходного кода:
http://libguestfs.org/download

Не запускайте «make install»! Использовать "./ бежать"вместо этого (см. README).

Как может I компилировать и устанавливать libguestfs if my дистрибутив не иметь new достаточно
qemu / supermin / kernel?
Libguestfs нужен supermin 5. Если supermin 5 не был перенесен в ваш дистрибутив, см.
вопрос ниже.

Сначала скомпилируйте qemu, supermin и / или ядро ​​из исходников. Ты сделаешь не нужно "сделать
установить "их.

В исходном каталоге libguestfs создайте два файла. "localconfigure" должен содержать:

источник localenv
#export PATH = / tmp / qemu / x86_64-softmmu: $ PATH
./autogen.sh --префикс / USR "$ @"

Сделайте "localconfigure" исполняемым.

"localenv" должен содержать:

#export SUPERMIN = / tmp / supermin / src / supermin
#export LIBGUESTFS_HV = / tmp / qemu / x86_64-softmmu / qemu-system-x86_64
#export SUPERMIN_KERNEL = / tmp / linux / arch / x86 / boot / bzImage
#export SUPERMIN_KERNEL_VERSION = 4.XX.0
#export SUPERMIN_MODULES = / tmp / lib / modules / 4.XX.0

Раскомментируйте и отрегулируйте эти строки по мере необходимости, чтобы использовать альтернативные программы, которые у вас есть.
скомпилирован.

Используйте "./localconfigure" вместо "./configure", но в противном случае вы компилируете libguestfs как
обычный.

Не запускайте «make install»! Использовать "./ бежать"вместо этого (см. README).

Как может I компилировать и устанавливать libguestfs без супермин?
Если супермин 5 поддерживает ваш дистрибутив, но у вас нет достаточно нового супермина
установлен, то смотрите предыдущий вопрос.

Если supermin 5 совсем не поддерживает ваш дистрибутив, вам нужно будет использовать "fixed
метод устройства ", в котором вы используете предварительно скомпилированный двоичный модуль. Для сборки libguestfs
без супермина вам нужно передать "--disable-appliance --disable-daemon" либо
./autogen.sh or . / Настроить (в зависимости от того, создаете ли вы, соответственно, из git или
из архивов). Затем при использовании libguestfs вы должен установите "LIBGUESTFS_PATH"
переменную среды в каталог предварительно скомпилированного устройства, как также описано в
«СТАНДАРТНАЯ ТЕХНИКА» в г. гость(3).

Для предварительно скомпилированных устройств см. Также: http://libguestfs.org/download/binaries/appliance/.

Приветствуются патчи для переноса supermin на другие дистрибутивы Linux.

Как может I Добавить поддержка для свирт?
Внимание для Fedora / RHEL пользователей: Эта конфигурация используется по умолчанию, начиная с Fedora 18 и
RHEL 7. Если вы обнаружите какие-либо проблемы, сообщите нам об этом или сообщите об ошибке.

SVirt предоставляет защищенное устройство с использованием SELinux, что очень затрудняет работу с несанкционированным диском.
образ, чтобы «вырваться» из ограничений libguestfs и повредить хост (справедливо сказать
что даже в стандартной libguestfs это было бы сложно, но sVirt предоставляет дополнительный уровень
защита для хоста и, что более важно, защищает виртуальные машины на том же хосте
друг от друга).

В настоящее время для включения sVirt вам потребуется libvirt ≥ 0.10.2 (предпочтительно 1.0 или более поздняя версия),
libguestfs ≥ 1.20 и политики SELinux из последней версии Fedora. Если ты не бежишь
Fedora 18+, вам нужно будет внести изменения в свою политику SELinux - свяжитесь с нами по
список рассылки.

Когда у вас появятся требования, выполните:

./configure --with-default-backend = libvirt # libguestfs> = 1.22.
./configure --with-default-attach-method = libvirt # libguestfs <= 1.20.
сделать

Установите SELinux в принудительный режим, и sVirt должен использоваться автоматически.

Все или почти все функции libguestfs должны работать под sVirt. Есть один известный
недостаток: спасение вирт(1) не будет использовать libvirt (следовательно, sVirt), но вернется к прямому
запуск qemu. Таким образом, в настоящее время вы не сможете воспользоваться преимуществами защиты sVirt при использовании
вирт-спасение.

Вы можете проверить, используется ли sVirt, включив ведение журнала libvirtd (см.
/etc/libvirt/libvirtd.log), завершение работы и перезапуск libvirtd и проверка файлов журнала.
для сообщений "Установка контекста SELinux на ...".

Теоретически sVirt должен поддерживать AppArmor, но мы это не пробовали. Это будет почти
безусловно, потребуют исправления libvirt и написания политики AppArmor.

libguestfs и a на самом деле длинной список of зависимости!
Базовая библиотека не сильно зависит от нее, но длинный список может быть вызван тремя причинами.
других зависимостей:

1. Libguestfs должен уметь читать и редактировать множество различных форматов дисков. Например,
Для поддержки XFS требуются инструменты XFS.

2. Существуют языковые привязки для многих разных языков, для каждого из которых требуются собственные
Инструменты разработки. Все языковые привязки (кроме C) необязательны.

3. Есть некоторые дополнительные функции библиотеки, которые можно отключить.

Поскольку libguestfs ≥ 1.26, можно разделить зависимости устройства (пункт 1 в
список выше) и, таким образом, (например) "libguestfs-xfs" в качестве отдельного подпакета для
обработка образов дисков XFS. Мы призываем последующих упаковщиков начать разделение базы
libguestfs на более мелкие подпакеты.

ошибки в течение запуск on Fedora 18, RHEL 7
В Fedora ≥ 18 и RHEL ≥ 7 libguestfs использует libvirt для управления устройством. Ранее
(и вышестоящая версия) libguestfs запускает qemu напрямую:

┌────────────────────────────────────
│ libguestfs │
├────────────────┬──────────────────
│ прямой бэкэнд │ бэкэнд libvirt │
└────────────────┴──────────────────
↓ ↓
┌───────┐ ┌───────────┐
│ qemu │ │ libvirtd │
└───────┘ └───────────┘

┌───────
│ кэму │
└───────

исходная версия Fedora 18+
не-Fedora RHEL 7+
не-RHEL

Бэкэнд libvirt более сложен, поддерживает SELinux / sVirt (см. Выше),
горячее подключение и многое другое. Однако он более сложен и поэтому менее надежен.

Если у вас есть проблемы с разрешениями при использовании бэкэнда libvirt, вы можете переключиться на прямой
backend, установив эту переменную среды:

экспорт LIBGUESTFS_BACKEND = прямой

перед запуском любой программы libguestfs или инструмента virt.

Как может I переключатель в a фиксированной / прекомпилированное прибор?
Это может улучшить стабильность и производительность libguestfs в Fedora и RHEL.

В любое время после установки libguestfs выполните следующие команды от имени пользователя root:

mkdir -p / usr / local / lib / guestfs / устройство
libguestfs-make-fixed-appliance / usr / local / lib / guestfs / устройство
ls -l / usr / локальный / lib / guestfs / устройство

Теперь перед использованием libguestfs или любого инструмента virt установите следующую переменную среды:

экспорт LIBGUESTFS_PATH = / usr / local / lib / guestfs / устройство

Конечно, вы можете изменить путь к любому каталогу, который хотите. Вы можете поделиться прибором
на машинах с одинаковой архитектурой (например, все x86-64), но учтите, что libvirt
предотвратит совместное использование устройства через NFS из-за проблем с разрешениями (так
либо переключитесь на прямой бэкэнд, либо не используйте NFS).

Как может I скорость up libguestfs строит?
Безусловно, самое важное, что вы можете сделать, - это установить и правильно настроить Squid.
Обратите внимание, что конфигурация по умолчанию, которая поставляется с Squid, является мусором, поэтому ее настройка
не обязательно.

Хорошее место для начала настройки Squid здесь:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Убедитесь, что Squid запущен и что переменные окружения $ http_proxy и $ ftp_proxy
указывают на это.

Когда Squid запущен и правильно настроен, количество сборок устройства должно быть уменьшено до нескольких.
минут.

Как может I скорость up libguestfs строит (Дебиан)?

Хилко Бенген предлагает использовать "ок", который является прокси-сервером архива Debian.
(http://packages.debian.org/approx). Этот инструмент задокументирован в Debian в приблизительно(8)
справочная страница.

СКОРОСТЬ, ДИСК SPACE ИСПОЛЬЗУЕМЫЙ BY LIBGUESTFS


Примечание: Большая часть информации в этом разделе перемещена: Guestfs-производительность(1).

Загрузите or записывать казаться очень медленный.
Если нижележащий диск не полностью выделен (например, sparse raw или qcow2), то записи могут быть
медленно, потому что операционная система хоста должна делать дорогостоящее выделение диска, пока вы
пишу. Решение состоит в том, чтобы вместо этого использовать полностью выделенный формат, т.е. нередкое сырье, или
qcow2 с опцией "preallocation = metadata".

libguestfs использования слишком много диск Космос!
libguestfs кэширует крупногабаритное устройство в:

/var/tmp/.guestfs-

Если переменная среды "TMPDIR" определена, то $ TMPDIR / .guestfs- используется
.

Этот каталог можно безопасно удалить, если вы не используете libguestfs.

вирт-разреженный кажется в сделать домен изображение расти в домен полный размер of домен виртуальный диск
Если вход в вирт-разреженный(1) является сырым, тогда вывод будет сырым разреженным. Убедись
вы измеряете результат с помощью инструмента, который понимает разреженность, такого как "du -sh".
Это может иметь огромное значение:

$ ls -lh test1.img
-rw-rw-r--. 1 rjones rjones 100M 8 августа 08:08 test1.img
$ du -sh test1.img
3.6М test1.img

(Сравните видимый размер 100M против фактического размера 3.6M)

Если все это вас смущает, используйте не разреженный выходной формат, указав --перерабатывать
вариант, например:

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

почему не виртуальное изменение размера работает on домен диск изображение на месте?
Изменить размер образа диска очень сложно - особенно убедитесь, что вы не потеряете данные или
сломать загрузчик. Текущий метод эффективно создает новый образ диска и копирует
данные плюс загрузчик от старого. Если что-то пойдет не так, ты всегда можешь пойти
вернуться к оригиналу.

Если бы мы заставили virt-resize работать на месте, тогда были бы ограничения: для
Например, вам не будет разрешено перемещать существующие разделы (поскольку перемещение данных между
тот же диск, скорее всего, повредит данные в случае сбоя питания или сбоя),
и LVM было бы очень сложно поддерживать (из-за почти произвольного сопоставления
между содержимым LV и нижележащими дисковыми блоками).

Другой метод, который мы рассмотрели, - разместить снимок поверх исходного образа диска, чтобы
что исходные данные остаются нетронутыми, и в моментальный снимок записываются только различия.
Вы можете сделать это сегодня, используя "qemu-img create" + "virt-resize", но в настоящее время qemu этого не делает.
достаточно умен, чтобы распознать, когда в снимок записывается тот же блок, что и уже
существует на резервном диске, поэтому вы обнаружите, что это не экономит вам ни места, ни времени.

Таким образом, это сложная проблема, и то, что у нас есть сейчас, в основном работает, поэтому мы неохотно
чтобы изменить его.

почему не вирт-разреженный работает on домен диск изображение на месте?
В libguestfs ≥ 1.26 virt-sparsify теперь может работать с образами дисков на месте. Использовать:

virt-sparsify - на месте disk.img

Но сначала вы должны прочитать «РАСПРЕДЕЛЕНИЕ НА МЕСТЕ» в вирт-разреженный(1).

ПРОБЛЕМЫ ОТКРЫТИЕ ДИСК ИЗОБРАЖЕНИЙ


Удаленный Libvirt Гости не могу be открыт.
Открытие удаленных гостей libvirt в настоящее время не поддерживается. Например, это не сработает:

guestfish -c qemu: // удаленный / система -d Гость

Чтобы открыть удаленные диски, вам нужно как-то их экспортировать, а затем подключиться к экспорту. Для
пример, если вы решили использовать NBD:

удаленный $ qemu-nbd -t -p 10809 guest.img
локальный $ guestfish -a nbd: // удаленный: 10809 -i

Другие возможности включают ssh (если qemu достаточно свежая версия), NFS или iSCSI. См. "УДАЛЕННЫЙ
ХРАНЕНИЕ "в гость(3).

Как может I открытый этой странный диск источник?
У вас есть образ диска, расположенный внутри другой системы, для которой требуется доступ через библиотеку /
HTTP / REST / проприетарный API либо каким-либо образом сжат или заархивирован. (Один пример
будет удаленный доступ к изображениям взглядов OpenStack без их фактической загрузки.)

У нас есть родственный проект под названием nbdkit (https://github.com/libguestfs/nbdkit). Этот
проект позволяет превратить любой дисковый источник в сервер NBD. Libguestfs может получить доступ к NBD
серверы напрямую, например:

guestfish -a nbd: // удаленный

nbdkit имеет широкую лицензию, поэтому вы можете связать его или включить в проприетарные библиотеки
и код. Он также имеет простой и стабильный API плагинов, поэтому вы можете легко писать плагины для
API, который будет работать и в будущем.

Ошибка открытие VMDK диски: "использует a вмдк которая который is не поддержал by этой кему Версия:
VMDK версия 3"
Qemu (и, следовательно, libguestfs) поддерживает только определенные образы дисков VMDK. Другие не сработают,
дающие эту или подобные ошибки.

В идеале кто-то исправил бы qemu для поддержки последних функций VMDK, но пока
у вас есть три варианта:

1. Если гость размещен на активном доступном сервере ESX, найдите и загрузите
образ диска называется какое-то имя-квартира.vmdk. Несмотря на название, это необработанный образ диска, и
может открываться чем угодно.

Если у вас достаточно свежая версия qemu и libguestfs, возможно, вы сможете
получить доступ к этому образу диска удаленно, используя HTTPS или ssh. См. «УДАЛЕННОЕ ХРАНЕНИЕ» в
гость(3).

2. Используйте собственный инструмент VMware vdiskmanager для преобразования образа в необработанный формат.

3. Используйте nbdkit с проприетарным плагином VDDK, чтобы в реальном времени экспортировать образ диска как NBD.
источник. Это должно позволить вам читать и записывать файл VMDK.

UFS диски (в виде используемый by БСД) не могу be открыт.
Формат файловой системы UFS имеет множество вариантов, и они не самоидентифицируются. В
Ядру Linux нужно указать, какой вариант UFS он должен использовать, а какой libguestfs не может.
знаю.

При монтировании этих файловых систем вы должны передать правильную опцию монтирования «ufstype».

См. Https://www.kernel.org/doc/Documentation/filesystems/ufs.txt.

Windows Работах
Windows ReFS - это копия ZFS / Btrfs от Microsoft. Эта файловая система еще не была перевернута
спроектирован и реализован в ядре Linux, поэтому libguestfs не поддерживает
Это. На данный момент это, кажется, очень редко «в дикой природе».

Не-ASCII символы не появиться on ВФАТ файловые системы.
Типичные симптомы этой проблемы:

· Вы получаете сообщение об ошибке при создании файла, в котором имя файла содержит код, отличный от ASCII.
символы, особенно не 8-битные символы из азиатских языков (китайский, японский,
так далее). Файловая система - VFAT.

· Когда вы перечисляете каталог из файловой системы VFAT, имена файлов отображаются в виде вопросительных знаков.

Это недостаток конструкции системы GNU / Linux.

VFAT хранит длинные имена файлов как символы UTF-16. При открытии или возврате имен файлов
Ядро Linux должно преобразовать их в некоторую форму 8-битной строки. UTF-8 будет
очевидный выбор, за исключением пользователей Linux, которые упорно используют локали, отличные от UTF-8 (пользователь
языковой стандарт не известен ядру, потому что это функция libc).

Поэтому вы должны указать ядру, какой перевод вы хотите сделать, когда монтируете
файловая система. Эти два метода - это параметр "iocharset" (который не имеет отношения к
libguestfs) и флаг utf8.

Итак, чтобы использовать файловую систему VFAT, вы должны добавить флаг «utf8» при монтировании. От guestfish,
использование:

> параметры монтирования utf8 / dev / sda1 /

или в командной строке guestfish:

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

или из API:

guestfs_mount_options (g, «utf8», «/ dev / sda1», «/»);

Затем ядро ​​переведет имена файлов в строки UTF-8 и обратно.

Мы рассматривали возможность прозрачного добавления этой опции крепления, но, к сожалению, есть несколько
проблемы с этим:

· В некоторых системах Linux опция монтирования «utf8» не работает. Мы точно не
понять, какие системы и почему, но об этом достоверно сообщил один пользователь.

· Это помешает вам использовать параметр "iocharset", потому что он несовместим
с "utf8". Вероятно, использовать этот параметр не рекомендуется, но мы не хотим
чтобы предотвратить это.

Не-ASCII символы появиться as подчеркивать 🇧🇷 on ISO9660 файловые системы.
Файловая система не была правильно подготовлена ​​с помощью mkisofs или genisoimage. Убедитесь, что
файловая система была создана с использованием расширений Joliet и / или Rock Ridge. libguestfs не
требуются какие-либо специальные параметры монтирования для работы с файловой системой.

Не могу открытый Windows Гости который использование NTFS.
Вы видите такие ошибки, как:

mount: неизвестный тип файловой системы 'ntfs'

В Red Hat Enterprise Linux или CentOS вам необходимо установить libguestfs-winsupport.
пакет.

Не могу открытый or осмотреть RHEL 7 .
Не могу открытый Linux Гости который использование XFS.
Гости RHEL 7 и любые другие гости, использующие XFS, могут быть открыты с помощью libguestfs, но вы
необходимо установить пакет libguestfs-xfs.

С ПОМОЩЬЮ LIBGUESTFS IN ВАШ СВОЯ ПРОГРАММЫ


Ассоциация API и сотни of методы, в котором do I Начало?
Мы рекомендуем вам начать с чтения обзора API: «ОБЗОР API» в гость(3).

Хотя обзор API охватывает API C, его все же стоит прочитать, даже если вы
собираюсь использовать другой язык программирования, потому что API такой же, только с простым
логические изменения названий звонков:

C guestfs_ln_sf (g, цель, имя ссылки);
Python g.ln_sf (цель, имя ссылки);
OCaml g # ln_sf target linkname;
Perl $ g-> ln_sf (цель, имя ссылки);
Shell (guestfish) ln-sf имя целевой ссылки
PHP guestfs_ln_sf ($ g, $ target, $ linkname);

Ознакомившись с обзором API, вы должны взглянуть на этот список начальных
баллы за привязку других языков: «ИСПОЛЬЗОВАНИЕ БИБГЕСТОВ С ДРУГИМИ ЯЗЫКАМИ ПРОГРАММИРОВАНИЯ» в
гость(3).

Может I использование libguestfs in my ( изучите наши патенты), / закрыто источник / коммерческая программы?
В общем да. Однако это не юридическая консультация - прочтите лицензию, прилагаемую к
libguestfs, а если у вас есть конкретные вопросы, обратитесь к юристу.

В дереве исходных текстов лицензия находится в файле "COPYING.LIB" (LGPLv2 + для библиотеки и
привязки) и «КОПИРОВАНИЕ» (GPLv2 + для автономных программ).

ОТЛАДКА LIBGUESTFS


Справка это не за работой!
Если кажется, что никакая программа libguestfs не работает, запустите программу ниже и вставьте
полный, неотредактированный вывод в электронном письме на "libguestfs" @ "redhat.com":

libguestfs-тест-инструмент

Если определенная операция не удалась, предоставьте всю информацию из этого контрольного списка по электронной почте.
на "libguestfs" @ "redhat.com":

1. Что вы пытаетесь сделать?

2. Какие именно команды вы выполнили?

3. Какова была точная ошибка или вывод этих команд?

4. Включите отладку, снова запустите команды и запишите полный вывод. Do не
отредактировать домен вывод.

экспорт LIBGUESTFS_DEBUG = 1
экспорт LIBGUESTFS_TRACE = 1

5. Укажите версию libguestfs, версию операционной системы и способ установки.
libguestfs (например, из исходного кода, "yum install" и т. д.)

Как do I отлаживать когда через любой libguestfs программа or инструментом (например. вирт-v2v or вирт-дф)?
Есть две переменные среды "LIBGUESTFS_ *", которые вы можете установить, чтобы получить больше
информация из libguestfs.

«LIBGUESTFS_TRACE»
Установите для него значение 1, и libguestfs будет распечатывать каждый вызов команды / API в формате, который
аналогичен командам guestfish.

«LIBGUESTFS_DEBUG»
Установите это значение в 1, чтобы разрешить огромное количество отладочных сообщений. Если вы думаете
есть проблема внутри устройства libguestfs, тогда вы должны использовать это
опцию.

Чтобы установить их из оболочки, сделайте это перед запуском программы:

экспорт LIBGUESTFS_TRACE = 1
экспорт LIBGUESTFS_DEBUG = 1

Для csh / tcsh эквивалентными командами будут:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Для получения дополнительной информации см .: «ПЕРЕМЕННЫЕ ОКРУЖАЮЩЕЙ СРЕДЫ» в гость(3).

Как do I отлаживать когда через Guestfish?
Вы можете использовать те же переменные среды, что и выше. В качестве альтернативы используйте варианты guestfish
-x (для трассировки команд) или -v (для получения полного отладочного вывода) или оба.

Для получения дополнительной информации см .: рыба-гость(1).

Как do I отлаживать когда через домен API?
Вызовите "guestfs_set_trace" в гость(3) для включения трассировки команд и / или
"guestfs_set_verbose" в гость(3) для включения сообщений отладки.

Для достижения наилучших результатов вызывайте эти функции как можно раньше, сразу после создания
Guestfs обработайте, если можете, и обязательно перед вызовом launch.

Как do I захватить отлаживать выходной и положил it в my каротаж система?
Используйте API событий. Примеры см. В разделе "НАСТРОЙКА ОТВЕТОВ ДЛЯ ОБРАБОТКИ СОБЫТИЙ" в гость(3)
и примеры / debug-logging.c программа в исходниках libguestfs.

Рытье более глубокий в домен прибор лодка процесс.
Включите отладку, а затем прочтите эту документацию по процессу загрузки устройства:
guestfs-внутренние(1).

libguestfs виснет or не удается в течение запустить / запустить.
Включите отладку и посмотрите полный вывод. Если вы не можете понять, что происходит,
отправить отчет об ошибке, включая полный выход libguestfs-тест-инструмент(1).

Отладка Libvirt
Если вы используете бэкэнд libvirt и libvirt дает сбой, вы можете включить
отладка редактированием /etc/libvirt/libvirtd.conf.

Если вы работаете без полномочий root, вам придется отредактировать другой файл. Создавать
~ / .config / libvirt / libvirtd.conf содержащий:

log_level = 1
log_outputs = "1: файл: /tmp/libvirtd.log"

Завершите любой сеанс (не root) libvirtd, который запущен, и в следующий раз, когда вы запустите libguestfs
, вы должны увидеть большое количество полезной отладочной информации из libvirtd в
/tmp/libvirtd.log

ДИЗАЙН / ВНУТРЕННЯЯ ЧАСТЬ OF LIBGUESTFS


Смотрите также guestfs-внутренние(1).

почему не являетесь do многое через домен FUSE / файловая система интерфейс?
Предлагаем команду под названием гостевая гора(1) который позволяет монтировать гостевые файловые системы на
хозяин. Это реализовано как модуль FUSE. Почему бы нам просто не реализовать все
libguestfs использует этот механизм вместо того, чтобы иметь большой и довольно сложный API?

Причины двоякие. Во-первых, libguestfs предлагает вызовы API для таких вещей, как
создание и удаление разделов и логических томов, которые не помещаются в файловую систему
модель очень легко. Вернее, вы могли бы их уместить: например, создав раздел
может быть сопоставлен с "mkdir / fs / hda1", но тогда вам нужно будет указать какой-то метод для выбора
размер раздела (возможно, "echo 100M> /fs/hda1/.size") и тип раздела,
начальный и конечный секторы и т. д., но как только вы это сделаете, API на основе файловой системы начнет
выглядят сложнее, чем API на основе вызовов, который у нас есть сейчас.

Вторая причина - эффективность. FUSE сам по себе достаточно эффективен, но он
совершать множество небольших независимых вызовов модуля FUSE. В guestmount они должны
быть переведены в сообщения для устройства libguestfs, которое имеет большие накладные расходы (со временем
и туда и обратно). Например, чтение файла фрагментами по 64 КБ неэффективно, потому что каждый
кусок превратится в одну поездку туда и обратно. В API libguestfs гораздо больше
эффективен для загрузки всего файла или каталога с помощью одного из потоковых вызовов, например
"guestfs_download" или "guestfs_tar_out".

почему не являетесь do многое через ГВФС?
Проблемы аналогичны проблемам с FUSE.

GVFS - лучшая абстракция, чем POSIX / FUSE. Существует серверная часть FTP для GVFS, которая
обнадеживает, потому что FTP концептуально похож на API libguestfs. Однако ГВФС
Серверная часть FTP выполняет несколько одновременных подключений для сохранения интерактивности, что
мы не можем легко обойтись с libguestfs.

почему может I записывать в домен диск, даже хоть I добавленный it только для чтения?
почему приносит "--ro" появиться в иметь нет эффект?
Когда вы добавляете диск только для чтения, libguestfs помещает доступный для записи оверлей поверх
нижележащий диск. Записи входят в этот оверлей и отбрасываются при закрытии дескриптора.
(или выходы "guestfish" и т. д.).

Для этого есть две причины: во-первых, диски только для чтения невозможны в
во многих случаях (например, IDE просто не поддерживает их, поэтому у вас не может быть эмуляции IDE
диск только для чтения, хотя в реальных установках libguestfs это нечасто).

Во-вторых, что более важно, даже если бы диски только для чтения были возможны, вы бы не захотели
их. Монтирование любой файловой системы, имеющей журнал, даже «mount -o ro», приводит к записи в
файловая система, потому что журнал должен быть воспроизведен и метаданные обновлены. Если диск
действительно был доступен только для чтения, вы не смогли бы смонтировать грязную файловую систему.

Чтобы его можно было использовать, мы создаем оверлей как место для временного хранения этих записей, и
потом мы его выбрасываем. Это гарантирует, что нижележащий диск всегда остается нетронутым.

Также обратите внимание, что для этого есть регрессионный тест при сборке libguestfs (в
"тесты / qemu"). Это одна из причин, почему упаковщикам важно запускать набор тестов.

Есть ли "--ro" сделать Найти диски только для чтения?
Нет! Параметр «--ro» влияет только на диски, добавленные в командной строке, т.е. используя "-a" и
Параметры "-d".

В guestfish, если вы используете команду "добавить", то диск добавляется для чтения и записи (если вы не
укажите флаг "readonly: true" явно с командой).

Может I использование "рыба-гость" --ro " as a путь в резервная копия my виртуальный машины?
Обычно это не хорошая идея. Более подробно на вопрос ответят в этой рассылке.
размещение списка: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

См. Также следующий вопрос.

почему не может I пробег Fsck on a жить файловая система через "рыба-гость" --ро "?
Эта команда обычно не Работа:

guestfish --ro -a / dev / vg / my_root_fs запустить: fsck / dev / sda

Причина в том, что qemu создает снимок над исходной файловой системой, но
не создает строгий моментальный снимок. Блоки данных об андерлаинге
файловая система читается qemu в разное время по мере выполнения операции fsck, при этом host
пишет между ними. В результате fsck видит массовое повреждение (воображаемое, а не реальное!)
и терпит неудачу.

Что вам нужно сделать, так это создать моментальный снимок на определенный момент времени. Если это логический том, используйте
снимок LVM2. Если файловая система находится внутри чего-то вроде файла btrfs / ZFS,
используйте снимок btrfs / ZFS, а затем запустите fsck для снимка. На практике вы не
для этого нужно использовать libguestfs - просто запустите / sbin / fsck непосредственно.

Создание моментальных снимков хост-устройств и файлов выходит за рамки
libguestfs, хотя libguestfs может работать с ними после их создания.

какой домен разница между рыба-гость и вирт-спасение?
Многие люди сбиты с толку двумя внешне похожими инструментами, которые мы предоставляем:

$ Guestfish --ro -a Guest.img
> запустить
> fsck / dev / sda1

$ virt-rescue --ro Guest.img
> / sbin / fsck / Dev / sda1

И тогда возникает связанный с этим вопрос: почему вы не можете вводить полные команды оболочки
со всеми --options в guestfish (но вы можете в спасение вирт(1 г.)).

рыба-гость(1) - это программа, обеспечивающая структурированный доступ к гость(3) API. Такое случается
быть красивой интерактивной оболочкой, но ее основная цель - структурированный доступ из
сценарии оболочки. Думайте об этом больше как о привязке к языку, например о Python и других привязках,
но для оболочки. Ключевой фактор, отличающий guestfish (и API libguestfs в
общие) - это возможность автоматизировать изменения.

спасение вирт(1) - это бесплатный способ загрузки устройства libguestfs и выполнения
произвольные изменения вашей виртуальной машины. Он не структурирован, автоматизировать его нельзя, но для создания
быстрые специальные исправления для ваших гостей, это может быть весьма полезно.

Но у libguestfs также есть «бэкдор» в устройство, позволяющий отправлять произвольные
команды оболочки. Это не так гибко, как virt-rescue, потому что вы не можете взаимодействовать с
команд оболочки, но вот она все равно:

> отладка sh "cmd arg1 arg2 ..."

Обратите внимание, что вы должны не положитесь на это. В будущем он может быть удален или изменен. Если твой
программе требуется некоторая операция, пожалуйста, добавьте ее в API libguestfs.

какой домен сделка "рыба-гость" -я"?
почему приносит виртуальный кот только работает on a реальные VM образ, но вирт-дф работает on любой диск образ?
Что приносит «нет корень устройство найденный in этой операционный система изображение" значит?
Все эти вопросы связаны на фундаментальном уровне, который может быть не сразу
очевидно.

на гость(3) Уровень API, «образ диска» - это просто куча разделов и файловых систем.

Напротив, когда виртуальная машина загружается, она монтирует эти файловые системы в согласованный
иерархия, такая как:

/ (/ dev / sda2)

├── / загрузки (/ dev / sda1)

├── / Главная (/ dev / vg_external / Дома)

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

└── / вар (/ dev / vg_os / lv_var)

(или буквы дисков в Windows).

API в первую очередь видит образ диска на уровне «груды файловых систем». Но это также
есть способ проверить образ диска, чтобы узнать, содержит ли он операционную систему и как
диски монтируются при загрузке операционной системы: «ПРОВЕРКА» в гость(3).

Пользователи ожидают некоторых инструментов (например, виртуальный кот(1)) для работы с путями ВМ:

виртуальный кот fedora.img / var / журнал / сообщения

Откуда вирт-кошка знает, что / вар это отдельный раздел? Хитрость в том, что вирт-кот
выполняет проверку образа диска и использует его для правильного преобразования пути.

Некоторые инструменты (в том числе виртуальный кот(1) вирт-править(1) вирт-лс(1)) использовать инспекцию для отображения ВМ
пути. Другие инструменты, такие как вирт-дф(1) и виртуальные файловые системы(1) полностью работать на
необработанный уровень «большая куча файловых систем» API libguestfs и не использовать проверку.

рыба-гость(1) находится в интересной золотой середине. Если вы используете -a и -m командной строки
параметры, то вы должны указать guestfish, как именно добавлять образы дисков и куда монтировать
перегородки. Это исходный уровень API.

Если вы используете -i опция, libguestfs выполняет проверку и монтирует файловые системы для
вас.

С этим связана ошибка «в этом образе операционной системы не найдено корневое устройство». Это
означает, что проверка не смогла найти операционную систему в предоставленном вами образе диска
Это. Вы можете увидеть это в таких программах, как virt-cat, если попытаетесь запустить их на чем-то
это просто образ диска, а не образ диска виртуальной машины.

Что do эти "отлаживать*" и "внутренний-*" Функции делать?
Есть некоторые функции, которые используются для отладки и внутренних целей, которые не
часть стабильного API.

Функции «debug *» (или «guestfs_debug *»), в основном «guestfs_debug» в гость(3) и
несколько других используются для отладки libguestfs. Хотя они не входят в
стабильный API и, следовательно, может быть изменен или удален в любое время, некоторые программы могут захотеть вызвать
пока они ждут добавления функций в libguestfs.

Функции "internal- *" (или "guestfs_internal_ *") предназначены исключительно для использования libguestfs.
сам. У программ нет причин вызывать их, и программы не должны пытаться использовать
их. Их использование часто приводит к плохим вещам, а также к тому, что вы не участвуете в
документированный стабильный API.

РАЗРАБОТЧИКИ


где do I Отправить патчи?
Присылайте исправления в список рассылки libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
будет задержка до тех пор, пока ваше сообщение не будет одобрено вручную.

Пожалуйста, не использование GitHub тянуть Запросы - они будете be игнорируются. Причины: (а) мы хотим
для обсуждения и анализа патчей в списке рассылки, и (б) запросы на вытягивание github превращаются в
слияние коммитов, но мы предпочитаем иметь линейную историю.

Как do I предлагает a особенность?
Большие новые функции, которые вы собираетесь предложить, должны быть обсуждены в списке рассылки.
сначала (https://www.redhat.com/mailman/listinfo/libguestfs). Это позволяет избежать разочарования
и напрасно потратили работу, если мы не думаем, что эта функция впишется в проект libguestfs.

Если вы хотите предложить полезную функцию, но не хотите писать код, вы можете отправить
ошибка (см. «ПОЛУЧЕНИЕ ПОМОЩИ И СООБЩЕНИЕ ОБ ОШИБКАХ») с «RFE:» в начале резюме
линии.

Кто может совершать в libguestfs мерзавец?
Около 5 человек имеют доступ к github для коммитов. Патчи должны быть размещены в списке первыми.
и ACKed. Политика подтверждения и отправки исправлений изложена здесь:

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

Может I вилка либгостфс?
Конечно вы можете. Git упрощает форк libguestfs. Github делает это еще проще.
Приятно, если вы сообщите нам в списке рассылки о форках и их причинах.

РАЗНОЕ ВОПРОСОВ


Может I монитор домен жить диск деятельность of a виртуальный машина через либгостфс?
Обычный запрос - иметь возможность использовать libguestfs для мониторинга активности живого диска
guest, например, чтобы получать уведомления каждый раз, когда гость создает новый файл. Libguestfs
приносит не работают так, как некоторые люди представляют, как вы можете видеть на этой диаграмме:

┌───────────────────────────────────────
│ программа мониторинга с использованием libguestfs │
└───────────────────────────────────────

┌───────────┐ ┌───────────────────────
│ живая виртуальная машина │ │ устройство libguestfs │
├───────────┤ ├────────────────────────
│ ядро ​​(1) │ │ ядро ​​устройства (2) │
└───────────┘ └────────────────────────
↓ ↓ (r / o соединение)
┌───────────────────────┐
| образ диска |
└───────────────────────

Этот сценарий безопасен (пока вы устанавливаете флаг «только для чтения» при добавлении диска).
Однако ядро ​​устройства libguestfs (2) не видит всех изменений, внесенных на диск.
изображение по двум причинам:

я. Ядро виртуальной машины (1) может кэшировать данные в памяти, поэтому они не отображаются в образе диска.

II. Ядро устройства libguestfs (2) не ожидает изменения образа диска.
под ним, поэтому его собственный кеш не обновляется волшебным образом, даже когда ядро ​​виртуальной машины (1)
обновляет образ диска.

Единственное поддерживаемое решение - перезапускать все устройство libguestfs всякий раз, когда вы
хочу посмотреть изменения в образе диска. На уровне API, соответствующем вызову
"guestfs_shutdown", за которым следует "guestfs_launch", что является тяжелой операцией (см.
Также Guestfs-производительность(3 г.)).

Есть несколько неподдерживаемых хаков, которые вы можете попробовать, если перезапуск устройства действительно слишком
дорого:

· Вызовите "guestfs_drop_caches (g, 3)". Это заставляет libguestfs справиться со всеми кэшированными данными.
ядро устройства (2), которое нужно отбросить, чтобы оно вернулось к образу диска.

Однако одного этого недостаточно, потому что qemu также кэширует некоторые данные. Ты
также потребуется исправить libguestfs, чтобы (повторно) включить режим "cache = unsafe". Видеть:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Вместо этого используйте такой инструмент, как virt-bmap.

· Запустить агента внутри гостя.

Ничего не помогает, если гость вносит более фундаментальные изменения (например, удаляет файловые системы).
В таких случаях вы должны перезапустить прибор.

(Обратите внимание, что есть третья проблема, что вам нужно использовать согласованные снимки, чтобы действительно изучить
живые образы дисков, но это общая проблема с использованием libguestfs против любого живого диска
изображение.)

Используйте guestfs-faq онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

Команды Linux

Ad