InglésFrancésEspañol

Ad


icono de página de OnWorks

guestfs-faq - Online en la nube

Ejecute guestfs-faq en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando guestfs-faq que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


guestfs-faq - libguestfs Preguntas frecuentes (FAQ)

SOBRE NOSOTROS BIBLIOGRAFIAS


¿ is ¿libguestfs?
libguestfs es una forma de crear, acceder y modificar imágenes de disco. Puedes mirar dentro del disco
imágenes, modifique los archivos que contienen, créelos desde cero, cambie su tamaño y mucho
más. Es especialmente útil desde scripts y programas y desde la línea de comandos.

libguestfs es una biblioteca C (de ahí "lib-"), y un conjunto de herramientas construido en esta biblioteca, y
enlaces para muchos lenguajes de programación comunes.

Para obtener más información sobre lo que pueden hacer libguestfs, lea la introducción en la página de inicio.
(http://libguestfs.org).

¿ en las virtud ¿herramientas?
Virt tools (sitio web: http://virt-tools.org) son un conjunto completo de gestión de virtualización
herramientas dirigidas a administradores de sistemas. Algunos de ellos provienen de libguestfs, algunos de
libvirt y muchos otros de otros proyectos de código abierto. Entonces virt tools es un superconjunto de
libguestfs. Sin embargo, libguestfs viene con muchas herramientas importantes. Ver
http://libguestfs.org Para obtener una lista completa.

¿Afecta la regulación de la libguestfs necesite { libvirt / KVM / Rojo Sombrero / Fedora }?
¡No!

libvirt no es un requisito para libguestfs.

libguestfs funciona con cualquier imagen de disco, incluidas las creadas en VMware, KVM, qemu,
VirtualBox, Xen y muchos otros hipervisores, y los que ha creado desde cero.

Red Hat patrocina (es decir, paga) el desarrollo de libguestfs y una gran cantidad de otros programas abiertos
proyectos fuente. Pero puede ejecutar libguestfs y las herramientas virt en muchos Linux diferentes
distribuciones y Mac OS X. Hacemos todo lo posible para admitir todas las distribuciones de Linux como primera clase
los ciudadanos. Algunas herramientas virt se han adaptado a Windows.

Cómo libguestfs comparar a otros ¿herramientas?
vs kpartx
Libguestfs adopta un enfoque diferente al de kpartx. kpartx necesita root y se monta
sistemas de archivos en el kernel del host (que pueden ser inseguros; consulte guestfs-seguridad(1)).
Libguestfs aísla el kernel de su host de los invitados, es más flexible, programable,
admite LVM, no requiere root, está aislado de otros procesos y limpia
después de sí mismo. Libguestfs es más que solo acceso a archivos porque puede usarlo para
crea imágenes desde cero.

vs fusible
vdfuse es como kpartx pero para imágenes de VirtualBox. Vea la comparación de kpartx arriba.
Puede usar libguestfs en los archivos de partición expuestos por vdfuse, aunque no
necesario ya que libguestfs puede acceder directamente a las imágenes de VirtualBox.

vs qemu-nbd
NBD (Network Block Device) es un protocolo para exportar dispositivos de bloque a través de la red.
qemu-nbd es un servidor NBD que puede manejar cualquier formato de disco compatible con qemu (por ejemplo, raw,
qcow2). Puede usar libguestfs y qemu-nbd o nbdkit juntos para acceder al bloque
dispositivos a través de la red, por ejemplo: "guestfish -a nbd: // remoto"

vs montaje sistemas de archivos in las fortaleza
Montar sistemas de archivos invitados en el host es inseguro y debe evitarse por completo
para huéspedes que no son de confianza. Utilice libguestfs para proporcionar una capa de protección contra
exploits del sistema de archivos. Ver también Guestmount(1).

vs separado
Libguestfs es compatible con LVM. Libguestfs utiliza parted y proporciona la mayoría de las funciones parted
a través de la API libguestfs.

CONSIGUIENDO AYUDA Y PRESENTACIÓN DE INFORMES LOCO


Cómo do I sabes qué qué versión estoy ¿usando?
El método más simple es:

guestfish --versión

El desarrollo de Libguestf ocurre a lo largo de una rama inestable y periódicamente creamos un
rama estable a la que exportamos los parches estables. Para obtener más información, lea "LIBGUESTFS
NÚMEROS DE VERSIÓN "en invitados(3).

Cómo podemos I obtener AYUDA?
¿ envío liza or chat habitaciones en ¿disponible?
Si es un cliente de Red Hat que utiliza Red Hat Enterprise Linux, comuníquese con
Soporte de Red Hat: http://redhat.com/support

Hay una lista de correo, principalmente para desarrollo, pero los usuarios también pueden preguntar
preguntas sobre libguestfs y las herramientas virt:
https://www.redhat.com/mailman/listinfo/libguestfs

También puede hablar con nosotros en el canal de IRC "#libguestfs" en FreeNode. No siempre somos
alrededor, así que permanezca en el canal después de hacer su pregunta y alguien se pondrá en contacto
para usted.

Para otras herramientas virt (no las suministradas con libguestfs) hay herramientas virt generales
lista de correo: https://www.redhat.com/mailman/listinfo/virt-tools-list

Cómo do I reporte ¿insectos?
Utilice el siguiente enlace para introducir un error en Bugzilla:

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

Incluya todos los detalles que pueda y una forma de reproducir el problema.

Incluya la salida completa de herramienta de prueba libguestfs(1).

COMÚN PROBLEMAS


Consulte también "LIBGUESTFS GOTCHAS" en invitados(3) para algunos "errores" con el uso de libguestfs
API.

"Podría no asignar lugar de trabajo dinámico traductor buffer"
Este oscuro error es, de hecho, una falla de SELinux. Tienes que habilitar lo siguiente
SELinux booleano:

setsebool -P virt_use_execmem = activado

Para obtener más información, consulte https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"niño murió inesperadamente"
[Este mensaje de error se cambió en libguestfs 1.21.18 a algo más explicativo].

Este error indica que qemu falló o que el kernel del host no pudo arrancar. Para llegar mas lejos
información sobre la falla, debe ejecutar:

herramienta de prueba libguestfs

Si, después de usar esto, aún no comprende la falla, contáctenos (ver anterior
sección).

libguestfs: error: no puede encontrar cualquier adecuado libguestfs supermín, fijas or viejo estilo aparato
on LIBGUESTFS_PATH
febootstrap-supermin-ayudante: ext2: con el futuro bebé directorio no encontrado
supermin-ayudante: ext2: con el futuro bebé directorio no encontrado
[Este problema se soluciona de forma permanente en libguestfs ≥ 1.26].

Si ve alguno de estos errores en Debian / Ubuntu, debe ejecutar el siguiente comando:

sudo update-guestfs-dispositivo

"Permiso negado " cuando correr libguestfs as raíz
Obtiene un error de permiso denegado al abrir una imagen de disco, aunque esté ejecutando
libguestfs como root.

Esto es causado por libvirt, por lo que solo ocurre cuando se usa el backend de libvirt. Cuando corre
como root, libvirt decide ejecutar el dispositivo qemu como usuario "qemu.qemu". Desafortunadamente
esto generalmente significa que qemu no puede abrir imágenes de disco, especialmente si esas imágenes de disco son
propiedad de root, o están presentes en directorios que requieren acceso de root.

Hay un error abierto contra libvirt para solucionar esto:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Puede solucionar esto mediante uno de los siguientes métodos:

· Cambiar al backend directo:

exportar LIBGUESTFS_BACKEND = directo

· No ejecute libguestfs como root.

· Modifique la imagen del disco y los directorios principales para que el usuario qemu pueda acceder a ellos.

· (Desagradable) Editar /etc/libvirt/qemu.conf y cambiar la configuración de "usuario".

excl: /en eso: Permiso negado
Nota: Si este error ocurre cuando está utilizando un paquete de distribución de libguestfs (por ejemplo, de
Fedora, Debian, etc.) luego presenta un error contra la distribución. Este no es un error que
los usuarios normales deberían ver si el paquete de distribución se ha preparado correctamente.

Este error ocurre durante la fase de arranque supermin de iniciar el dispositivo:

supermin: montaje de nueva raíz en / Root
supermin: chroot
execl: / init: Permiso denegado
supermin: debug: directorio de listado /
[... seguido de una gran cantidad de resultados de depuración ...]

Este es un error complicado relacionado con supermín(1) electrodomésticos. El aparato está construido
copiando archivos como / bin / bash y muchas bibliotecas del host. El archivo "hostfiles"
enumera los archivos que deben copiarse del host al dispositivo. Si algunos archivos
no existen en el host, entonces se pierden, pero si estos archivos son necesarios para
para (por ejemplo) correr / bin / bash entonces verá el error anterior.

Diagnosticar el problema implica estudiar las bibliotecas que necesita / bin / bash, es decir:

ldd / bin / bash

comparando eso con "archivos de host", con los archivos realmente disponibles en el sistema de archivos del host,
y con la salida de depuración impresa en el mensaje de error. Una vez que haya averiguado qué archivo
falta, instale ese archivo usando su administrador de paquetes y vuelva a intentarlo.

También debe verificar que archivos como /en eso y / bin / bash (en el aparato) son
ejecutable. La salida de depuración muestra los modos de archivo.

DESCARGANDO, INSTALANDO, COMPILACIÓN BIBLIOGRAFIAS


Dónde podemos I obtener las más reciente binarios para ? ...
Fedora ≥ 11
Uso:

yum instalar '* guestf *'

Para conocer las últimas versiones, consulte:
http://koji.fedoraproject.org/koji/packageinfo? packageID = 8391

Red Hat Enterprise Linux
RHEL 5
La versión enviada en RHEL 5 oficial es muy antigua y no debe usarse excepto
junto con virt-v2v. Utilice el paquete libguestfs 1.20 actualizado en EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Es parte de la instalación predeterminada. En RHEL 6 y 7 (solo) debe instalar
"libguestfs-winsupport" para obtener soporte para invitados de Windows.

Debian y Ubuntu
Para libguestfs <1.26, después de instalar libguestfs debe hacer:

sudo update-guestfs-dispositivo

(Este script ha sido eliminado en Debian / Ubuntu con libguestfs ≥ 1.26 y en su lugar el
El aparato se construye bajo demanda.)

Solo en Ubuntu:

sudo chmod 0644 / boot / vmlinuz *

Es posible que deba agregarse al grupo "kvm":

sudo usermod -a -G kvm su inicio de sesión

Apretar Debian (6)
Hilko Bengen ha construido libguestfs en backports squeeze:
http://packages.debian.org/search? keywords = guestfs & searchon = names§ion = all & suite = squeeze-backports

Debian Wheezy y posterior (7+)
Hilko Bengen admite libguestfs en Debian. Los paquetes oficiales de Debian son
tamaños: http://packages.debian.org/search? palabras clave = libguestfs

Ubuntu
No tenemos un mantenedor de Ubuntu a tiempo completo, y los paquetes suministrados por
Los canónicos (que están fuera de nuestro control) a veces se rompen.

Canonical decidió cambiar los permisos en el kernel para que no sea
legible excepto por root. Esto es completamente estúpido, pero no lo cambiarán.
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Entonces cada usuario
debería hacer esto:

sudo chmod 0644 / boot / vmlinuz *

Ubuntu 12.04
libguestfs en esta versión de Ubuntu funciona, pero necesitas actualizar febootstrap
y seabios a las últimas versiones.

Necesita febootstrap ≥ 3.14-2 de:
http://packages.ubuntu.com/precise/febootstrap

Después de instalar o actualizar febootstrap, reconstruya el dispositivo:

sudo update-guestfs-dispositivo

Necesita seabios ≥ 0.6.2-0ubuntu2.1 o ≥ 0.6.2-0ubuntu3 de:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

También debe hacer (ver arriba):

sudo chmod 0644 / boot / vmlinuz *

Gentoo
Libguestfs fue agregado a Gentoo en 2012-07 por Andreis Vinogradovs (libguestfs) y
Maxim Koltsov (principalmente hivex). Hacer:

emergen libguestfs

SUSE
Libguestfs fue agregado a SuSE en 2012 por Olaf Hering.

ArchLinux
Libguestfs se agregó a AUR en 2010.

Otra distribución de Linux
Compilar desde la fuente (siguiente sección).

Otra distribución que no es de Linux
Tendrá que compilar desde el código fuente y portarlo.

Cómo podemos I compilar y instalar libguestfs en ¿fuente?
Puede compilar libguestfs desde git o un tarball fuente. Lea el archivo README antes
comenzando.

Git: https://github.com/libguestfs/libguestfs Tarballs de origen:
http://libguestfs.org/download

¡No ejecute "make install"! Utilizar el "./correr"script en su lugar (ver README).

Cómo podemos I compilar y instalar libguestfs if my distro no se tienen nueva suficientes
qemu / supermin / kernel?
Libguestfs necesita supermin 5. Si supermin 5 no se ha portado a su distribución, consulte
la siguiente pregunta.

Primero compile qemu, supermin y / o el kernel desde la fuente. Tú haces no que tenga que hacer
instalarlos.

En el directorio fuente libguestfs, cree dos archivos. "localconfigure" debe contener:

fuente localenv
# exportar RUTA = / tmp / qemu / x86_64-softmmu: $ RUTA
./autogen.sh --prefijo / usr PS

Haga "localconfigure" ejecutable.

"localenv" debe contener:

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

Descomente y ajuste estas líneas según sea necesario para usar los programas alternativos que tiene
compilado.

Utilice "./localconfigure" en lugar de "./configure", pero de lo contrario, compila libguestfs como
costumbre.

¡No ejecute "make install"! Utilizar el "./correr"script en su lugar (ver README).

Cómo podemos I compilar y instalar libguestfs sin ¿Supermín?
Si supermin 5 es compatible con tu distribución, pero no tienes un supermin lo suficientemente nuevo
instalado, luego vea la pregunta anterior.

Si supermin 5 no es compatible con su distribución en absoluto, deberá utilizar el "arreglo
método de dispositivo "donde se utiliza un dispositivo binario precompilado. Para compilar libguestfs
sin supermin, debe pasar "--disable-appliance --disable-daemon" a
./autogen.sh or . / Configure (dependiendo de si está construyendo respectivamente desde git o
de tarballs). Luego, al usar libguestfs, debe establecer el "LIBGUESTFS_PATH"
variable de entorno al directorio de un dispositivo precompilado, como también se describe en
"ELECTRODOMÉSTICO FIJO" en invitados(3).

Para dispositivos precompilados, consulte también: http://libguestfs.org/download/binaries/appliance/.

Los parches para portar supermin a más distribuciones de Linux son bienvenidos.

Cómo podemos I add SOPORTE para ¿Virt?
Note para Fedora / RHEL usuarios: Esta configuración es la predeterminada a partir de Fedora 18 y
RHEL 7. Si encuentra algún problema, háganoslo saber o notifique un error.

SVirt proporciona un dispositivo reforzado que utiliza SELinux, lo que lo hace muy difícil para un disco no autorizado
imagen para "escapar" del confinamiento de libguestfs y dañar el host (es justo decir
que incluso en libguestfs estándar esto sería difícil, pero sVirt proporciona una capa extra de
protección para el host y, lo que es más importante, protege las máquinas virtuales en el mismo host
de cada uno).

Actualmente, para habilitar sVirt, necesitará libvirt ≥ 0.10.2 (se prefiere 1.0 o posterior),
libguestfs ≥ 1.20, y las políticas de SELinux de Fedora reciente. Si no estas corriendo
Fedora 18+, deberá realizar cambios en su política de SELinux; contáctenos en el
mailing list.

Una vez que tenga los requisitos, haga lo siguiente:

./configure --with-default-backend = libvirt # libguestfs> = 1.22
./configure --with-default-attach-method = libvirt # libguestfs <= 1.20
para lograr

Establezca SELinux en el modo Enforcing, y sVirt debería usarse automáticamente.

Todas, o casi todas, las características de libguestfs deberían funcionar bajo sVirt. Hay uno conocido
defecto: virt-rescate(1) no usará libvirt (de ahí sVirt), pero recurre a direct
lanzamiento de qemu. Por lo tanto, actualmente no obtendrá el beneficio de la protección sVirt al usar
virtud-rescate.

Puede comprobar si se está utilizando sVirt habilitando el registro libvirtd (consulte
/etc/libvirt/libvirtd.log), matando y reiniciando libvirtd y verificando los archivos de registro
para los mensajes "Establecer contexto SELinux en ...".

En teoría, sVirt debería ser compatible con AppArmor, pero no lo hemos probado. Casi lo hará
ciertamente requiere parchear libvirt y escribir una política de AppArmor.

libguestfs tiene a realmente Corto lista of dependencias!
La biblioteca base no depende mucho, pero hay tres causas de la lista larga
de otras dependencias:

1. Libguestfs debe poder leer y editar muchos formatos de disco diferentes. Por ejemplo,
La compatibilidad con XFS requiere herramientas XFS.

2. Existen enlaces de idiomas para muchos idiomas diferentes, y todos requieren su propio
herramientas de desarrollo. Todos los enlaces de idioma (excepto C) son opcionales.

3. Hay algunas funciones de biblioteca opcionales que pueden desactivarse.

Dado que libguestfs ≥ 1.26 es posible dividir las dependencias del dispositivo (elemento 1 en
la lista anterior) y así tener (por ejemplo) "libguestfs-xfs" como un subpaquete separado para
procesamiento de imágenes de disco XFS. Alentamos a los empaquetadores intermedios a comenzar a dividir la base
libguestfs en subpaquetes más pequeños.

Errores durante lanzamiento on Fedora 18, RHEL 7
En Fedora ≥ 18 y RHEL ≥ 7, libguestfs usa libvirt para administrar el dispositivo. Previamente
(y upstream) libguestfs ejecuta qemu directamente:

┌─────────────────────────────────┐
│libguestfs│
├────────────────┬─────────────────┤
│ backend directo │ backend libvirt │
└────────────────┴─────────────────┘
↓ ↓
┌───────┐ ┌──────────┐
│ qemu │ │ libvirtd │
└───────┘ └──────────┘

┌───────┐
│ qemú │
└───────┘

aguas arriba de Fedora 18+
RHEL 7+ que no es de Fedora
no RHEL

El backend de libvirt es más sofisticado y admite SELinux / sVirt (ver arriba),
hotplugging y más. Sin embargo, es más complejo y menos robusto.

Si tiene problemas de permisos al usar el backend libvirt, puede cambiar al
backend configurando esta variable de entorno:

exportar LIBGUESTFS_BACKEND = directo

antes de ejecutar cualquier programa libguestfs o herramienta virt.

Cómo podemos I cambiar a a fijas / pre-construido ¿aparato?
Esto puede mejorar la estabilidad y el rendimiento de libguestfs en Fedora y RHEL.

En cualquier momento después de instalar libguestfs, ejecute los siguientes comandos como root:

mkdir -p / usr / local / lib / guestfs / appliance
libguestfs-make-fixed-appliance / usr / local / lib / guestfs / appliance
ls -l / usr / local / lib / guestfs / appliance

Ahora configure la siguiente variable de entorno antes de usar libguestfs o cualquier herramienta virt:

exportar LIBGUESTFS_PATH = / usr / local / lib / guestfs / appliance

Por supuesto, puede cambiar la ruta a cualquier directorio que desee. Puedes compartir el aparato
en máquinas que tienen la misma arquitectura (por ejemplo, todas x86-64), pero tenga en cuenta que libvirt
evitará que comparta el dispositivo a través de NFS debido a problemas de permisos (por lo que
cambie al backend directo o no use NFS).

Cómo podemos I velocidad up libguestfs construye?
De lejos, lo más importante que puede hacer es instalar y configurar correctamente Squid.
Tenga en cuenta que la configuración predeterminada que se envía con Squid es basura, por lo que configurarla es
no es opcional.

Un muy buen lugar para comenzar con la configuración de Squid es aquí:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Asegúrese de que Squid se esté ejecutando y de que las variables de entorno $ http_proxy y $ ftp_proxy
lo están señalando.

Con Squid ejecutándose y configurado correctamente, las compilaciones de dispositivos deben reducirse a unos pocos
minutos.

Cómo podemos I velocidad up libguestfs construye (Debian)?

Hilko Bengen sugiere usar "approx", que es un proxy de archivo de Debian
(http://packages.debian.org/approx). Esta herramienta está documentada en Debian en la aprox.(8)
página de manual.

VELOCIDAD, DISCO SPACE USADO BY BIBLIOGRAFIAS


Nota: La mayor parte de la información de esta sección se ha movido: guestfs-rendimiento(1).

Subir or escribir parecer muy lento.
Si el disco subyacente no está completamente asignado (por ejemplo, sparse raw o qcow2), las escrituras pueden ser
lento porque el sistema operativo host tiene que realizar costosas asignaciones de disco mientras usted
escribiendo. En su lugar, la solución es utilizar un formato totalmente asignado, es decir. crudo no escaso, o
qcow2 con la opción "preasignación = metadatos".

libguestfs usos demasiado mucho más disco ¡espacio!
libguestfs almacena en caché un dispositivo de gran tamaño en:

/var/tmp/.guestfs-

Si se define la variable de entorno "TMPDIR", entonces $ TMPDIR / .guestfs- se utiliza
preferiblemente.

Es seguro eliminar este directorio cuando no esté utilizando libguestfs.

virt-esparsificar parece a para lograr las imagen crecer a las ser completados tamaño of las virtual disco
Si la entrada a virt-esparsificar(1) está en bruto, entonces la salida será escasa en bruto. Asegurarse
está midiendo la salida con una herramienta que comprende la escasez, como "du -sh".
Puede hacer una enorme diferencia:

$ ls -lh prueba1.img
-rw-rw-r--. 1 rjones rjones 100M 8 de agosto 08:08 test1.img
$ du -sh prueba1.img
3.6M prueba1.img

(Compare el tamaño aparente 100 m vs el tamaño real 3.6 m)

Si todo esto lo confunde, use un formato de salida no disperso especificando el --convertir
opción, por ejemplo:

virt-sparsify --convertir qcow2 disk.raw disk.qcow2

¿Por qué no se virt-cambiar tamaño TRABAJO on las disco imagen ¿en su lugar?
Cambiar el tamaño de una imagen de disco es muy complicado, especialmente para asegurarse de no perder datos o
romper el cargador de arranque. El método actual crea efectivamente una nueva imagen de disco y copia
los datos más el cargador de arranque del anterior. Si algo sale mal, siempre puedes ir
de vuelta al original.

Si tuviéramos que hacer que virt-resize funcione en el lugar, entonces tendría que haber limitaciones: para
Por ejemplo, no se le permitiría mover particiones existentes (porque mover datos a través
es más probable que el mismo disco corrompa los datos en caso de un corte de energía o una falla),
y LVM sería muy difícil de soportar (debido al mapeo casi arbitrario
entre el contenido de LV y los bloques de disco subyacentes).

Otro método que hemos considerado es colocar una instantánea sobre la imagen del disco original, por lo que
que los datos originales están intactos y que solo se registran las diferencias en la instantánea.
Puede hacer esto hoy usando "qemu-img create" + "virt-resize", pero qemu actualmente no lo es
lo suficientemente inteligente como para reconocer cuando el mismo bloque se escribe de nuevo en la instantánea como ya
existe en el disco de respaldo, por lo que encontrará que esto no le ahorra espacio ni tiempo.

En resumen, este es un problema difícil, y lo que tenemos ahora funciona principalmente, por lo que somos reacios
para cambiarlo.

¿Por qué no se virt-esparsificar TRABAJO on las disco imagen ¿en su lugar?
En libguestfs ≥ 1.26, virt-sparsify ahora puede trabajar en imágenes de disco en su lugar. Usar:

virt-sparsify - en el lugar disk.img

Pero primero debería leer "ESPARSIFICACIÓN EN EL LUGAR" en virt-esparsificar(1).

PROBLEMAS APERTURA DISCO IMÁGENES


Remote libvirt invitados no puede be abierto.
En este momento, no se admite la apertura de invitados libvirt remotos. Por ejemplo, esto no funcionará:

guestfish -c qemu: // remoto / system -d Invitado

Para abrir discos remotos, debe exportarlos de alguna manera y luego conectarse a la exportación. Para
ejemplo si decidió utilizar NBD:

remoto $ qemu-nbd -t -p 10809 guest.img
local $ pez invitado -a nbd: // remoto: 10809 -i

Otras posibilidades incluyen ssh (si qemu es lo suficientemente reciente), NFS o iSCSI. Ver "REMOTO
ALMACENAMIENTO "en invitados(3).

Cómo podemos I habiertos así extrañas disco ¿fuente?
Tiene una imagen de disco ubicada dentro de otro sistema que requiere acceso a través de una biblioteca /
HTTP / REST / API propietaria, o está comprimido o archivado de alguna manera. (Un ejemplo
sería el acceso remoto a las imágenes de vista previa de OpenStack sin tener que descargarlas).

Tenemos un proyecto hermano llamado nbdkit (https://github.com/libguestfs/nbdkit). Esta
proyecto le permite convertir cualquier fuente de disco en un servidor NBD. Libguestfs puede acceder a NBD
servidores directamente, por ejemplo:

guestfish -a nbd: // remoto

nbdkit tiene una licencia liberal, por lo que puede vincularlo o incluirlo en bibliotecas propietarias
y código. También tiene una API de complemento simple y estable para que pueda escribir complementos fácilmente contra
la API que seguirá funcionando en el futuro.

Error apertura VMDK discos: "usos a vmdk característica que is no apoyadas by así qemu Versión:
VMDK versión 3"
Qemu (y por lo tanto libguestfs) solo admite ciertas imágenes de disco VMDK. Otros no funcionarán
dando este o errores similares.

Lo ideal sería que alguien arreglara qemu para admitir las últimas funciones de VMDK, pero mientras tanto
tienes tres opciones:

1. Si el invitado está alojado en un servidor ESX en vivo y accesible, busque y descargue el
imagen de disco llamada algúnnombre-plano.vmdk. A pesar del nombre, esta es una imagen de disco sin procesar y
puede ser abierto por cualquier cosa.

Si tiene una versión lo suficientemente reciente de qemu y libguestfs, es posible que pueda
acceda a esta imagen de disco de forma remota utilizando HTTPS o ssh. Consulte "ALMACENAMIENTO REMOTO" en
invitados(3).

2. Utilice la herramienta vdiskmanager patentada de VMware para convertir la imagen a formato sin procesar.

3. Utilice nbdkit con el complemento VDDK patentado para exportar en vivo la imagen del disco como un NBD
fuente. Esto debería permitirle leer y escribir el archivo VMDK.

UFS Discos (Como se usado by BSD) no puede be abierto.
El formato del sistema de archivos UFS tiene muchas variantes, y estas no son autoidentificables. El
El kernel de Linux debe saber qué variante de UFS debe usar, qué libguestfs no puede
Saber.

Debe pasar la opción de montaje correcta "ufstype" cuando monte estos sistemas de archivos.

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

Windows Refs
Windows ReFS es la copia ZFS / Btrfs de Microsoft. Este sistema de archivos aún no se ha revertido
diseñado e implementado en el kernel de Linux y, por lo tanto, libguestfs no admite
eso. Por el momento parece ser muy raro "en estado salvaje".

No ASCII personajes Rechazar Aparecer on VFAT sistemas de archivos.
Síntomas típicos de este problema:

· Obtiene un error cuando crea un archivo en el que el nombre del archivo no contiene ASCII
caracteres, en particular caracteres que no sean de 8 bits de idiomas asiáticos (chino, japonés,
etc). El sistema de archivos es VFAT.

· Cuando enumera un directorio de un sistema de archivos VFAT, los nombres de archivo aparecen como signos de interrogación.

Este es un defecto de diseño del sistema GNU / Linux.

VFAT almacena nombres de archivo largos como caracteres UTF-16. Al abrir o devolver nombres de archivo, el
El kernel de Linux tiene que traducirlos a alguna forma de cadena de 8 bits. UTF-8 sería el
elección obvia, excepto para los usuarios de Linux que persisten en el uso de configuraciones regionales no UTF-8 (el usuario
El kernel no conoce la configuración regional porque es una función de libc).

Por lo tanto, debe decirle al kernel qué traducción desea hacer cuando monte el
sistema de archivos. Los dos métodos son el parámetro "iocharset" (que no es relevante para
libguestfs) y el indicador "utf8".

Entonces, para usar un sistema de archivos VFAT, debe agregar el indicador "utf8" al montar. De pez invitado,
utilizar:

> opciones de montaje utf8 / dev / sda1 /

o en la línea de comando de guestfish:

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

o desde la API:

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

El kernel luego traducirá los nombres de archivo ay desde cadenas UTF-8.

Consideramos agregar esta opción de montaje de forma transparente, pero desafortunadamente hay varias
problemas para hacer eso:

· En algunos sistemas Linux, la opción de montaje "utf8" no funciona. Nosotros no precisamente
comprender qué sistemas o por qué, pero esto fue informado de manera confiable por un usuario.

· Le impediría utilizar el parámetro "iocharset" porque es incompatible
con "utf8". Probablemente no sea una buena idea utilizar este parámetro, pero no queremos
para evitarlo

No ASCII personajes Aparecer as guion bajo (_) on ISO9660 sistemas de archivos.
El sistema de archivos no se preparó correctamente con mkisofs o genisoimage. Asegúrate que
El sistema de archivos se creó con las extensiones Joliet y / o Rock Ridge. libguestfs no
requieren cualquier opción de montaje especial para manejar el sistema de archivos.

No poder habiertos Windows invitados que utilizan el NTFS.
Ves errores como:

montaje: tipo de sistema de archivos desconocido 'ntfs'

En Red Hat Enterprise Linux o CentOS, debe instalar libguestfs-winsupport
paquete.

No poder habiertos or inspeccionar RHEL 7 invitados.
No poder habiertos Linux invitados que utilizan el XFS.
Los invitados de RHEL 7, y cualquier otro invitado que use XFS, pueden ser abiertos por libguestfs, pero usted
tiene que instalar el paquete "libguestfs-xfs".

USO BIBLIOGRAFIAS IN TU PROPIO PROGRAMAS


El API tiene centenares of , donde do I ¿comienzo?
Le recomendamos que comience por leer la descripción general de la API: "DESCRIPCIÓN GENERAL DE LA API" en invitados(3).

Aunque la descripción general de la API cubre la API de C, vale la pena leerla incluso si está
va a usar otro lenguaje de programación, porque la API es la misma, solo que con un simple
cambios lógicos en los nombres de las llamadas:

C guestfs_ln_sf (g, destino, nombre de enlace);
Python g.ln_sf (destino, nombre de enlace);
OCaml g # ln_sf nombre de enlace de destino;
Perl $ g-> ln_sf (destino, nombre de enlace);
Shell (pez invitado) ln-sf nombre de enlace de destino
PHP guestfs_ln_sf ($ g, $ objetivo, $ nombre de enlace);

Una vez que esté familiarizado con la descripción general de la API, debería consultar esta lista de
puntos para enlaces de otros idiomas: "USANDO LIBGUESTFS CON OTROS IDIOMAS DE PROGRAMACIÓN" en
invitados(3).

Poder I utilizan el libguestfs in my propietario / cerrado fuente / completo programa?
En general, si. Sin embargo, esto no es un consejo legal; lea la licencia que viene con
libguestfs, y si tiene preguntas específicas, comuníquese con un abogado.

En el árbol de fuentes, la licencia está en el archivo "COPYING.LIB" (LGPLv2 + para la biblioteca y
enlaces) y "COPIA" (GPLv2 + para los programas independientes).

DEPURACIÓN BIBLIOGRAFIAS


Ayuda, es no ¡trabajando!
Si ningún programa libguestfs parece funcionar, ejecute el programa siguiente y pegue el
completar, sin editar salida en un correo electrónico a "libguestfs" @ "redhat.com":

herramienta de prueba libguestfs

Si una operación en particular falla, proporcione toda la información en esta lista de verificación, en un correo electrónico
a "libguestfs" @ "redhat.com":

1. ¿Qué estás intentando hacer?

2. ¿Qué comando (s) exacto (s) ejecutó?

3. ¿Cuál fue el error exacto o la salida de estos comandos?

4. Habilite la depuración, ejecute los comandos nuevamente y capture el completar salida. Do no
editar las salida.

exportar LIBGUESTFS_DEBUG = 1
exportar LIBGUESTFS_TRACE = 1

5. Incluya la versión de libguestfs, la versión del sistema operativo y cómo lo instaló
libguestfs (por ejemplo, de la fuente, "yum install", etc.)

Cómo do I depurar cuando usando cualquier libguestfs programa or del IRS (p.ej. virt-v2v or virt-df)?
Hay dos variables de entorno "LIBGUESTFS_ *" que puede establecer para obtener más
información de libguestfs.

"LIBGUESTFS_TRACE"
Establezca esto en 1 y libguestfs imprimirá cada comando / llamada API en un formato que
es similar a los comandos guestfish.

"LIBGUESTFS_DEBUG"
Establezca esto en 1 para habilitar cantidades masivas de mensajes de depuración. Si piensas
hay algún problema dentro del dispositivo libguestfs, entonces debería usar este
.

Para configurarlos desde el shell, haga esto antes de ejecutar el programa:

exportar LIBGUESTFS_TRACE = 1
exportar LIBGUESTFS_DEBUG = 1

Para csh / tcsh, los comandos equivalentes serían:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Para obtener más información, consulte: "VARIABLES DEL MEDIO AMBIENTE" en invitados(3).

Cómo do I depurar cuando usando pez invitado?
Puede utilizar las mismas variables de entorno anteriores. Alternativamente, use las opciones de pez invitado
-x (para rastrear comandos) o -v (para obtener la salida de depuración completa), o ambos.

Para más información, ver: pez invitado(1).

Cómo do I depurar cuando usando las API?
Llamar a "guestfs_set_trace" en invitados(3) para habilitar los rastreos de comandos, y / o
"guestfs_set_verbose" en invitados(3) para habilitar mensajes de depuración.

Para obtener los mejores resultados, llame a estas funciones lo antes posible, justo después de crear el
guestfs maneje si puede, y definitivamente antes de llamar a launch.

Cómo do I capturar depurar salida y poner it dentro my registro sistema?
Utilice la API de eventos. Para obtener ejemplos, consulte: "CONFIGURACIÓN DE LLAMADAS PARA MANEJAR EVENTOS" en invitados(3)
y del ejemplos / debug-logging.c programa en las fuentes libguestfs.

Excavación más profundo dentro las aparato bota .
Habilite la depuración y luego lea esta documentación sobre el proceso de arranque del dispositivo:
guestfs-internos(1).

libguestfs cuelga or falla durante ejecutar / lanzar.
Habilite la depuración y observe el resultado completo. Si no puede averiguar qué está pasando,
Presentar un informe de error, incluido el completar salida de herramienta de prueba libguestfs(1).

Depuración libvirt
Si está utilizando el backend libvirt y libvirt falla, puede habilitar
depurar mediante la edición /etc/libvirt/libvirtd.conf.

Si está ejecutando como no root, entonces debe editar un archivo diferente. Crear
~ / .config / libvirt / libvirtd.conf conteniendo:

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

Elimine cualquier sesión (no root) libvirtd que se esté ejecutando y la próxima vez que ejecute libguestfs
comando, debería ver una gran cantidad de información útil de depuración de libvirtd en
/tmp/libvirtd.log

DISEÑO / INTERNOS OF BIBLIOGRAFIAS


Vea también guestfs-internos(1).

¿Por qué Rechazar Usted do todo a las FUSIBLE / sistema de archivos ¿interfaz?
Ofrecemos un comando llamado Guestmount(1) que le permite montar sistemas de archivos invitados en el
anfitrión. Esto se implementa como un módulo FUSE. ¿Por qué no implementamos la totalidad de
libguestfs usando este mecanismo, en lugar de tener la API grande y bastante complicada?

Las razones son dobles. En primer lugar, libguestfs ofrece llamadas a la API para hacer cosas como
crear y eliminar particiones y volúmenes lógicos, que no encajan en un sistema de archivos
modelo muy fácilmente. O más bien, podría encajarlos: por ejemplo, creando una partición
podría asignarse a "mkdir / fs / hda1" pero luego tendría que especificar algún método para elegir
el tamaño de la partición (tal vez "echo 100M> /fs/hda1/.size") y el tipo de partición,
sectores de inicio y finalización, etc., pero una vez que lo haya hecho, la API basada en el sistema de archivos comienza a
parece más complicado que la API basada en llamadas que tenemos actualmente.

La segunda razón es la eficiencia. FUSE en sí es razonablemente eficiente, pero lo hace
Realice muchas llamadas pequeñas e independientes al módulo FUSE. En Guestmount, estos deben
ser traducido en mensajes al dispositivo libguestfs que tiene una gran sobrecarga (en el tiempo
y viajes de ida y vuelta). Por ejemplo, leer un archivo en fragmentos de 64 KB es ineficaz porque cada
chunk se convertiría en un solo viaje de ida y vuelta. En la API de libguestfs hay mucho más
eficiente para descargar un archivo o directorio completo a través de una de las llamadas de transmisión como
"guestfs_download" o "guestfs_tar_out".

¿Por qué Rechazar Usted do todo a ¿GVFS?
Los problemas son similares a los problemas con FUSE.

GVFS es una mejor abstracción que POSIX / FUSE. Hay un servidor FTP para GVFS, que es
alentador porque FTP es conceptualmente similar a la API libguestfs. Sin embargo, el GVFS
El backend de FTP realiza múltiples conexiones simultáneas para mantener la interactividad, que
no podemos hacerlo fácilmente con libguestfs.

¿Por qué podemos I escribir a las disco, incluso aunque I adicional it ¿solo lectura?
¿Por qué "--ro" Aparecer a tienen no ¿efecto?
Cuando agrega un disco de solo lectura, libguestfs coloca una superposición de escritura en la parte superior del
disco subyacente. Las escrituras entran en esta superposición y se descartan cuando se cierra la manija
(o salidas de "pez invitado", etc.).

Hay dos razones para hacerlo de esta manera: en primer lugar, los discos de solo lectura no son posibles en
muchos casos (por ejemplo, IDE simplemente no los admite, por lo que no podría tener un IDE emulado
disco de solo lectura, aunque esto no es común en instalaciones reales de libguestfs).

En segundo lugar, y lo que es más importante, incluso si los discos de solo lectura fueran posibles, no querría
ellos. Montar cualquier sistema de archivos que tenga un diario, incluso "mount -o ro", provoca que se escriban
el sistema de archivos porque el diario debe reproducirse y actualizarse los metadatos. Si el disco
fue realmente de solo lectura, no podría montar un sistema de archivos sucio.

Para que sea utilizable, creamos la superposición como un lugar para almacenar temporalmente estas escrituras y
luego lo descartamos después. Esto asegura que el disco subyacente siempre esté intacto.

Tenga en cuenta también que hay una prueba de regresión para esto al construir libguestfs (en
"pruebas / qemu"). Esta es una de las razones por las que es importante que los empaquetadores ejecuten el conjunto de pruebas.

¿Afecta la regulación de la "--ro" para lograr todos Discos ¿solo lectura?
¡No! La opción "--ro" solo afecta a los discos agregados en la línea de comando, es decir. usando "-a" y
Opciones "-d".

En guestfish, si usa el comando "agregar", el disco se agrega lectura-escritura (a menos que
especifique el indicador "readonly: true" explícitamente con el comando).

Poder I utilizan el "pez invitado --ro " as a Manera a copia de seguridad my virtual ¿máquinas?
Por lo general, esto es no una buena idea. La pregunta se responde con más detalle en este correo.
publicación de lista: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Consulte también la siguiente pregunta.

¿Por qué no puedes I corrida fsck on a para vivir sistema de archivos usando "pez invitado --ro "?
Este comando normalmente no trabajo:

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

La razón de esto es que qemu crea una instantánea sobre el sistema de archivos original, pero
no crea una instantánea estricta de un momento determinado. Bloques de datos sobre el subyacente
qemu lee el sistema de archivos en diferentes momentos a medida que avanza la operación fsck, con el host
escribe en el medio. El resultado es que fsck ve una corrupción masiva (¡imaginaria, no real!)
y falla.

Lo que tiene que hacer es crear una instantánea de un momento determinado. Si es un volumen lógico, use
una instantánea LVM2. Si el sistema de archivos se encuentra dentro de algo como un archivo btrfs / ZFS,
use una instantánea btrfs / ZFS y luego ejecute fsck en la instantánea. En la práctica no
necesita usar libguestfs para esto, solo ejecute / sbin / fsck .

La creación de instantáneas puntuales de dispositivos host y archivos está fuera del alcance de
libguestfs, aunque libguestfs puede operar en ellos una vez creados.

Qué está haciendo las un cambio entre pez invitado y virtud-rescate?
Mucha gente se confunde con las dos herramientas superficialmente similares que proporcionamos:

$ pez invitado --ro -a invitado.img
> correr
> fsck / dev / sda1

$ virt-rescate --ro guest.img
> / sbin / fsck / Dev / sda1

Y la pregunta relacionada que surge es por qué no puede escribir comandos de shell completos
con todas las --opciones en guestfish (pero puedes en virt-rescate(1)).

pez invitado(1) es un programa que proporciona acceso estructurado a la invitados(3) API. Sucede
para ser un buen shell interactivo también, pero su propósito principal es el acceso estructurado desde
secuencias de comandos de shell. Piense en ello más como un enlace de lenguaje, como Python y otros enlaces,
pero por cáscara. El factor de diferenciación clave de guestfish (y la API libguestfs en
general) es la capacidad de automatizar cambios.

virt-rescate(1) es una forma libre para todos de arrancar el dispositivo libguestfs y hacer
cambios arbitrarios en su máquina virtual. No está estructurado, no se puede automatizar, pero para hacer
arreglos rápidos ad-hoc para sus invitados, puede ser muy útil.

Pero, libguestfs también tiene una "puerta trasera" en el dispositivo que le permite enviar
comandos de shell. No es tan flexible como virt-rescue, porque no puedes interactuar con el
comandos de shell, pero aquí está de todos modos:

> debug sh "cmd arg1 arg2 ..."

Tenga en cuenta que debe no confíe en esto. Podría eliminarse o cambiarse en el futuro. Si tu
El programa necesita alguna operación, por favor agréguelo a la API libguestfs en su lugar.

Qué está haciendo las acuerdo "pez invitado -I"?
¿Por qué virt-gato , solamente TRABAJO on a real VM imagen, pero virt-df funciona on cualquier disco ¿imagen?
¿ "No raíz dispositivo encontrado in así funcionamiento te imagen" significa?
Todas estas preguntas están relacionadas a un nivel fundamental que puede no ser inmediatamente
obvio.

En el invitados(3) Nivel de API, una "imagen de disco" es solo una pila de particiones y sistemas de archivos.

Por el contrario, cuando la máquina virtual arranca, monta esos sistemas de archivos en una
jerarquía como:

/ (/ dev / sda2)

├── /bota (/ dev / sda1)

├── / home (/ dev / vg_external / Homes)

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

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

(o letras de unidad en Windows).

En primer lugar, la API ve la imagen del disco en el nivel de "pila de sistemas de archivos". Pero tambien
tiene una forma de inspeccionar la imagen del disco para ver si contiene un sistema operativo y cómo
Los discos se montan cuando se inicia el sistema operativo: "INSPECCIÓN" en invitados(3).

Los usuarios esperan algunas herramientas (como virt-gato(1)) para trabajar con rutas de VM:

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

¿Cómo sabe virt-cat eso? / var es una partición separada? El truco es que virt-cat
realiza una inspección en la imagen del disco y la usa para traducir la ruta correctamente.

Algunas herramientas (incluidas virt-gato(1) virt-editar(1) virt-ls(1)) use la inspección para mapear VM
caminos. Otras herramientas, como virt-df(1) y sistemas de archivos virt(1) operar completamente en el
nivel bruto de "gran pila de sistemas de archivos" de la API libguestfs, y no utilice la inspección.

pez invitado(1) se encuentra en un terreno intermedio interesante. Si usa el -a y -m de línea de comandos
opciones, entonces tienes que decirle a guestfish exactamente cómo agregar imágenes de disco y dónde montar
particiones. Este es el nivel de API sin procesar.

Si utiliza la opcion de -i opción, libguestfs realiza una inspección y monta los sistemas de archivos para
tus vecinos.

El error "no se encontró ningún dispositivo raíz en esta imagen del sistema operativo" está relacionado con esto. Eso
significa que la inspección no pudo ubicar un sistema operativo dentro de la imagen de disco que proporcionó
eso. Es posible que vea esto en programas como virt-cat si intenta ejecutarlos en algo
que es solo una imagen de disco, no una imagen de disco de máquina virtual.

¿ do estos "depurar*" y "interno-*" funciones ¿hacer?
Hay algunas funciones que se utilizan para depurar y con fines internos que son no
parte de la API estable.

Las funciones "debug *" (o "guestfs_debug *"), principalmente "guestfs_debug" en invitados(3) y
un puñado de otros, se utilizan para depurar libguestfs. Aunque no forman parte del
API estable y, por lo tanto, puede cambiar o eliminarse en cualquier momento, algunos programas pueden querer llamar
estos mientras espera que se agreguen funciones a libguestfs.

Las funciones "internal- *" (o "guestfs_internal_ *") son exclusivamente para ser utilizadas por libguestfs
sí mismo. No hay ninguna razón para que los programas los llamen, y los programas no deben intentar usar
ellos. Usarlos a menudo hará que sucedan cosas malas, además de no ser parte de la
API estable documentada.

DESARROLLADORES


Dónde do I envío parches?
Envíe los parches a la lista de correo libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
Habrá un retraso hasta que su publicación sea aprobada manualmente.

Por favor, Rechazar utilizan el gitHub recogida solicitudes - ellos seguirá be ignorado. Las razones son (a) queremos
para discutir y analizar los parches en la lista de correo, y (b) las solicitudes de extracción de github se convierten en
fusionar confirmaciones pero preferimos tener un historial lineal.

Cómo do I ofrece a función?
Las grandes características nuevas que tiene la intención de contribuir deben discutirse en la lista de correo.
primero (https://www.redhat.com/mailman/listinfo/libguestfs). Esto evita la decepción.
y trabajo desperdiciado si no creemos que la característica encajaría en el proyecto libguestfs.

Si desea sugerir una función útil pero no desea escribir el código, puede presentar una
error (consulte "OBTENER AYUDA Y REPORTAR ERRORES") con "RFE:" al comienzo del Resumen
la línea.

Quién podemos hacer a libguestfs idiota?
Aproximadamente 5 personas tienen acceso de confirmación a github. Los parches deben publicarse primero en la lista
y ACKed. La política para aceptar y enviar parches se describe aquí:

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

Poder I tenedor ¿libguestfs?
Por supuesto que puede. Git facilita la bifurcación de libguestfs. Github lo hace aún más fácil.
Es bueno que nos cuentes en la lista de correo acerca de las bifurcaciones y los motivos de las mismas.

OTRO FRECUENTES


Poder I monitorear las para vivir disco actividad of a virtual máquina usando ¿libguestfs?
Una solicitud común es poder usar libguestfs para monitorear la actividad del disco en vivo de un
invitado, por ejemplo, para recibir una notificación cada vez que un invitado crea un nuevo archivo. Libguestfs
no funcionan de la manera que algunas personas imaginan, como puede ver en este diagrama:

┌─────────────────────────────────────┐
│ programa de monitoreo usando libguestfs │
└─────────────────────────────────────┘

┌───────────┐ ┌──────────────────────┐
│ VM en vivo │ │ dispositivo libguestfs │
├───────────┤ ├──────────────────────┤
│ kernel (1) │ │ kernel del dispositivo (2) │
└───────────┘ └──────────────────────┘
↓ ↓ (conexión r / o)
┌──────────────────────┐
| imagen de disco |
└──────────────────────┘

Este escenario es seguro (siempre que establezca el indicador de "solo lectura" al agregar la unidad).
Sin embargo, el kernel del dispositivo libguestfs (2) no ve todos los cambios realizados en el disco
imagen, por dos razones:

I. El kernel de VM (1) puede almacenar datos en caché en la memoria, por lo que no aparecen en la imagen del disco.

ii. El kernel del dispositivo libguestfs (2) no espera que la imagen del disco esté cambiando
debajo de él, por lo que su propia caché no se actualiza mágicamente incluso cuando el kernel de VM (1)
actualiza la imagen del disco.

La única solución compatible es reiniciar todo el dispositivo libguestfs siempre que
desea ver los cambios en la imagen del disco. En el nivel de API que corresponde a la llamada
"guestfs_shutdown" seguido de "guestfs_launch", que es una operación de gran peso (consulte
también guestfs-rendimiento(3)).

Hay algunos trucos no compatibles que puede probar si reiniciar el dispositivo es realmente demasiado
costoso:

· Llame a "guestfs_drop_caches (g, 3)". Esto hace que todos los datos almacenados en caché sean ayudados por libguestfs
kernel del dispositivo (2) para ser descartado, por lo que vuelve a la imagen del disco.

Sin embargo, esto por sí solo no es suficiente, porque qemu también almacena en caché algunos datos. Ustedes
también necesitará parchear libguestfs para (re) habilitar el modo "cache = unsafe". Ver:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Utilice una herramienta como virt-bmap en su lugar.

· Ejecutar un agente dentro del invitado.

Nada ayuda si el invitado está haciendo cambios más fundamentales (por ejemplo, eliminando sistemas de archivos).
Para ese tipo de cosas, debe reiniciar el dispositivo.

(Tenga en cuenta que hay un tercer problema que debe utilizar instantáneas coherentes para examinar realmente
imágenes de disco en vivo, pero eso es un problema general al usar libguestfs contra cualquier disco en vivo
imagen.)

Utilice guestfs-faq en línea utilizando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

Comandos de Linux

Ad