InglêsFrancêsEspanhol

Ad


favicon do OnWorks

guestfs-faq - Online na nuvem

Execute guestfs-faq no provedor de hospedagem gratuita OnWorks no Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

Este é o comando guestfs-faq que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

PROGRAMA:

NOME


guestfs-faq - Perguntas frequentes sobre libguestfs (FAQ)

SOBRE(ABOUT) LIBGUESTFS


O Quê is libguestfs?
libguestfs é uma forma de criar, acessar e modificar imagens de disco. Você pode olhar dentro do disco
imagens, modifique os arquivos que eles contêm, crie-os do zero, redimensione-os e muito
mais. É especialmente útil em scripts e programas e na linha de comando.

libguestfs é uma biblioteca C (daí "lib-"), e um conjunto de ferramentas construídas nesta biblioteca, e
ligações para muitas linguagens de programação comuns.

Para mais informações sobre o que libguestfs pode fazer, leia a introdução na página inicial
(http://libguestfs.org).

O Quê e guarante que os mesmos estão que o virt Ferramentas?
Ferramentas Virt (site: http://virt-tools.org) são um conjunto completo de gerenciamento de virtualização
ferramentas destinadas a administradores de sistema. Alguns deles vêm de libguestfs, alguns de
libvirt e muitos outros de outros projetos de código aberto. Então, virt tools é um superconjunto de
libguestfs. No entanto, o libguestfs vem com muitas ferramentas importantes. Ver
http://libguestfs.org para uma lista completa.

Será que libguestfs necessidade { libvirt / KVM / Vermelho Chapéu / Fedora }?
Não!

libvirt não é um requisito para libguestfs.

libguestfs funciona com qualquer imagem de disco, incluindo aquelas criadas em VMware, KVM, qemu,
VirtualBox, Xen e muitos outros hipervisores, e aqueles que você criou do zero.

O Red Hat patrocina (ou seja, paga) o desenvolvimento de libguestfs e um grande número de outros
projetos de origem. Mas você pode executar libguestfs e as ferramentas virt em muitos Linux diferentes
distros e Mac OS X. Nós tentamos nosso melhor para oferecer suporte a todas as distros Linux como de primeira classe
cidadãos. Algumas ferramentas virt foram transferidas para o Windows.

Como funciona o dobrador de carta de canal parece libguestfs comparar para de outros Ferramentas?
vs kpartx
Libguestfs tem uma abordagem diferente do kpartx. kpartx precisa de root e montagens
sistemas de arquivos no kernel do host (que pode ser inseguro - veja guestfs-segurança(1)).
Libguestfs isola seu kernel host de convidados, é mais flexível, programável por script,
suporta LVM, não requer root, é isolado de outros processos e limpa
depois de si mesmo. Libguestfs é mais do que apenas acesso a arquivos porque você pode usá-lo para
crie imagens do zero.

vs vdfuse
vdfuse é como kpartx, mas para imagens do VirtualBox. Veja a comparação kpartx acima.
Você pode usar libguestfs nos arquivos de partição expostos por vdfuse, embora não seja
necessário, pois o libguestfs pode acessar as imagens do VirtualBox diretamente.

vs qemu-nbd
NBD (Network Block Device) é um protocolo para exportar dispositivos de bloco pela rede.
qemu-nbd é um servidor NBD que pode lidar com qualquer formato de disco suportado pelo qemu (por exemplo, raw,
qcow2). Você pode usar libguestfs e qemu-nbd ou nbdkit juntos para acessar o bloco
dispositivos na rede, por exemplo: "guestfish -a nbd: // remote"

vs montagem sistemas de arquivos in que o hospedeiro
Montar sistemas de arquivos convidados no host é inseguro e deve ser evitado completamente
para convidados não confiáveis. Use libguestfs para fornecer uma camada de proteção contra
exploits do sistema de arquivos. Veja também montagem de convidados(1).

vs se separaram
Libguestfs suporta LVM. Libguestfs usa parted e fornece a maioria dos recursos parted
por meio da API libguestfs.

OBTENDO AJUDA E RELATÓRIOS INSETOS


Como funciona o dobrador de carta de canal do I sabemos o que versão Eu estou usando?
O método mais simples é:

guestfish --versão

O desenvolvimento do Libguestfs acontece ao longo de um branch instável e periodicamente criamos um
branch estável para o qual fazemos backport de patches estáveis. Para saber mais, leia "LIBGUESTFS
NÚMEROS DE VERSÃO "em convidados(3).

Como funciona o dobrador de carta de canal pode I ter ajudar?
O Quê correspondência listas or bate-papo quartos e guarante que os mesmos estão disponível?
Se você é um cliente Red Hat usando Red Hat Enterprise Linux, entre em contato
Suporte da Red Hat: http://redhat.com/support

Existe uma lista de discussão, principalmente para desenvolvimento, mas os usuários também podem perguntar
perguntas sobre libguestfs e as ferramentas virt:
https://www.redhat.com/mailman/listinfo/libguestfs

Você também pode falar conosco no canal IRC "#libguestfs" no FreeNode. Não somos sempre
por perto, então, por favor, fique no canal depois de fazer sua pergunta e alguém responderá
para você.

Para outras ferramentas virt (não as fornecidas com libguestfs), há ferramentas gerais virt
lista de correspondência: https://www.redhat.com/mailman/listinfo/virt-tools-list

Como funciona o dobrador de carta de canal do I Denunciar insetos?
Use o seguinte link para inserir um bug no Bugzilla:

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

Inclua o máximo de detalhes que puder e uma maneira de reproduzir o problema.

Inclui a produção completa de ferramenta de teste libguestfs(1).

COMUM PROBLEMAS


Veja também "LIBGUESTFS GOTCHAS" em convidados(3) para algumas "pegadinhas" com o uso do libguestfs
API.

"Poderia não distribuir dinâmico tradutor amortecedor"
Este erro obscuro é na verdade uma falha do SELinux. Você tem que habilitar o seguinte
SELinux booleano:

setsebool -P virt_use_execmem = on

Para obter mais informações, consulte https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"filho processo morreu inesperadamente "
[Esta mensagem de erro foi alterada no libguestfs 1.21.18 para algo mais explicativo.]

Este erro indica que o qemu falhou ou o kernel do host não conseguiu inicializar. Para ir mais longe
informações sobre a falha, você deve executar:

ferramenta de teste libguestfs

Se, depois de usar isso, você ainda não entender a falha, entre em contato conosco (ver anterior
seção).

libguestfs: erro: não podes find qualquer adequado libguestfs supermin, fixado or velho estilo utensílio
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: principal anuário não encontrado
supermin-ajudante: ext2: principal anuário não encontrado
[Este problema foi corrigido permanentemente em libguestfs ≥ 1.26.]

Se você vir algum desses erros no Debian / Ubuntu, precisará executar o seguinte comando:

sudo update-guestfs-appliance

"Permissão negado" quando corrida libguestfs as raiz
Você obtém um erro de permissão negada ao abrir uma imagem de disco, mesmo que esteja executando
libguestfs como root.

Isso é causado por libvirt e, portanto, só acontece ao usar o backend libvirt. Quando corre
como root, libvirt decide executar o dispositivo qemu como usuário "qemu.qemu". Infelizmente
isso geralmente significa que o qemu não pode abrir imagens de disco, especialmente se essas imagens de disco forem
pertencentes ao root ou estão presentes em diretórios que requerem acesso root.

Há um bug aberto no libvirt para corrigir isso:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Você pode contornar isso por um dos seguintes métodos:

· Mudar para o back-end direto:

exportar LIBGUESTFS_BACKEND = direto

· Não execute libguestfs como root.

· Chmod a imagem de disco e quaisquer diretórios pai para que o usuário qemu possa acessá-los.

· Editar (desagradável) /etc/libvirt/qemu.conf e altere a configuração do "usuário".

execução: /iniciar: Permissão negado
Observação: Se este erro acontecer quando você estiver usando um pacote de distribuição de libguestfs (por exemplo, de
Fedora, Debian, etc), em seguida, registre um bug contra a distro. Este não é um erro que
usuários normais devem sempre verificar se o pacote de distro foi preparado corretamente.

Este erro ocorre durante a fase de inicialização supermin de inicialização do dispositivo:

supermin: montagem de nova raiz em / Root
supermin: chroot
execl: / init: permissão negada
supermin: debug: diretório de listagem /
[... seguido por uma grande quantidade de saída de depuração ...]

Este é um bug complicado relacionado a superminuto(1) aparelhos. O aparelho é construído
copiando arquivos como / bin / bash e muitas bibliotecas do host. O arquivo "hostfiles"
lista os arquivos que devem ser copiados do host para o dispositivo. Se alguns arquivos
não existem no host, então eles são perdidos, mas se esses arquivos forem necessários para
para (por exemplo) executar / bin / bash então você verá o erro acima.

Diagnosticar o problema envolve estudar as bibliotecas necessárias para / bin / bash, ou seja:

ldd / bin / bash

comparando isso com "hostfiles", com os arquivos realmente disponíveis no sistema de arquivos host,
e com a saída de depuração impressa na mensagem de erro. Depois de descobrir qual arquivo
está faltando, instale esse arquivo usando seu gerenciador de pacotes e tente novamente.

Você também deve verificar se arquivos como /iniciar e / bin / bash (no aparelho) são
executável. A saída de depuração mostra modos de arquivo.

BAIXANDO, INSTALANDO, COMPILANDO LIBGUESTFS


Onde pode I ter que o mais recente binários para ? ...
Fedora ≥ 11
Uso:

yum install '* guestf *'

Para as compilações mais recentes, consulte:
http://koji.fedoraproject.org/koji/packageinfo? packageID = 8391

Red Hat Enterprise Linux
RHEL 5
A versão enviada no RHEL 5 oficial é muito antiga e não deve ser usada, exceto
em conjunto com virt-v2v. Use o pacote libguestfs 1.20 atualizado no EPEL
5: https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Faz parte da instalação padrão. No RHEL 6 e 7 (apenas), você deve instalar
"libguestfs-winsupport" para obter suporte para convidados do Windows.

Debian e Ubuntu
Para libguestfs <1.26, após instalar libguestfs, você precisa fazer:

sudo update-guestfs-appliance

(Este script foi removido no Debian / Ubuntu com libguestfs ≥ 1.26 e em vez do
aparelho é construído sob demanda.)

Apenas no Ubuntu:

sudo chmod 0644 / boot / vmlinuz *

Você pode precisar se adicionar ao grupo "kvm":

sudo usermod -a -G kvm seulogin

Compressão Debian (6)
Hilko Bengen criou libguestfs em backports do squeeze:
http://packages.debian.org/search? keywords = guestfs & searchon = names§ion = all & suite = squeeze-backports

Debian Wheezy e posterior (7 +)
Hilko Bengen suporta libguestfs no Debian. Os pacotes oficiais do Debian são
disponível: http://packages.debian.org/search? keywords = libguestfs

Ubuntu
Não temos um mantenedor do Ubuntu em tempo integral, e os pacotes fornecidos por
Canônicos (que estão fora do nosso controle) às vezes são interrompidos.

A Canonical decidiu alterar as permissões no kernel para que não
legível, exceto pelo root. Isso é completamente estúpido, mas eles não vão mudar isso
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Então, todo usuário
deve fazer isso:

sudo chmod 0644 / boot / vmlinuz *

Ubuntu 12.04
libguestfs nesta versão do Ubuntu funciona, mas você precisa atualizar o febootstrap
e seabios para as versões mais recentes.

Você precisa de febootstrap ≥ 3.14-2 de:
http://packages.ubuntu.com/precise/febootstrap

Depois de instalar ou atualizar o febootstrap, reconstrua o aparelho:

sudo update-guestfs-appliance

Você precisa do seabios ≥ 0.6.2-0ubuntu2.1 ou ≥ 0.6.2-0ubuntu3 de:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

Além disso, você precisa fazer (veja acima):

sudo chmod 0644 / boot / vmlinuz *

Gentoo
Libguestfs foi adicionado ao Gentoo em 2012-07 por Andreis Vinogradovs (libguestfs) e
Maxim Koltsov (principalmente hivex). Fazer:

emerge libguestfs

SUÍÇA
Libguestfs foi adicionado ao SuSE em 2012 por Olaf Hering.

ArchLinux
Libguestfs foi adicionado ao AUR em 2010.

Outra distro Linux
Compile a partir da fonte (próxima seção).

Outra distro não Linux
Você terá que compilar a partir do código-fonte e portá-lo.

Como funciona o dobrador de carta de canal pode I compilar e instalar libguestfs da fonte?
Você pode compilar libguestfs a partir do git ou de um tarball de origem. Leia o arquivo README antes
iniciando.

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

Não execute "make install"! Use o "./ corre"script em vez disso (consulte README).

Como funciona o dobrador de carta de canal pode I compilar e instalar libguestfs if my distro não novo suficiente
qemu / supermin / kernel?
Libguestfs precisa do supermin 5. Se o supermin 5 não foi portado para sua distro, então veja
a pergunta abaixo.

Primeiro compile o qemu, supermin e / ou o kernel do código-fonte. Você faz não Precisa fazer
instale "eles.

No diretório de origem libguestfs, crie dois arquivos. "localconfigure" deve conter:

fonte localenv
#export PATH = / tmp / qemu / x86_64-softmmu: $ PATH
./autogen.sh --prefixo / usr "$ @"

Torne o executável "localconfigure".

"localenv" deve conter:

#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

Remova o comentário e ajuste essas linhas conforme necessário para usar os programas alternativos que você tem
compilado.

Use "./localconfigure" em vez de "./configure", mas caso contrário, você compila libguestfs como
de sempre.

Não execute "make install"! Use o "./ corre"script em vez disso (consulte README).

Como funciona o dobrador de carta de canal pode I compilar e instalar libguestfs sem supermin?
Se o supermin 5 oferecer suporte à sua distribuição, mas você não tiver um supermin novo o suficiente
instalado, veja a pergunta anterior.

Se o supermin 5 não for compatível com a sua distribuição, você precisará usar o "
método de aparelho "onde você usa um aparelho binário pré-compilado. Para construir libguestfs
sem o supermin, você precisa passar "--disable-appliance --disable-daemon" para qualquer
./autogen.sh or . / Configure (dependendo se você está compilando respectivamente a partir do git ou
de tarballs). Então, ao usar libguestfs, você devo definir o "LIBGUESTFS_PATH"
variável de ambiente para o diretório de um dispositivo pré-compilado, conforme também descrito em
"APARELHO FIXO" em convidados(3).

Para aparelhos pré-compilados, consulte também: http://libguestfs.org/download/binaries/appliance/.

Patches para portar o supermin para mais distros Linux são bem-vindos.

Como funciona o dobrador de carta de canal pode I adicionar ajuda para svirt?
Note para Fedora / RHEL Comercial: Esta configuração é o padrão começando com Fedora 18 e
RHEL 7. Se você encontrar qualquer problema, informe-nos ou registre um bug.

O SVirt fornece um dispositivo reforçado usando SELinux, tornando-o muito difícil para um disco não autorizado
imagem para "escapar" do confinamento de libguestfs e danificar o hospedeiro (é justo dizer
que mesmo em libguestfs padrão isso seria difícil, mas sVirt fornece uma camada extra de
proteção para o host e, mais importante, protege as máquinas virtuais no mesmo host
de um para o outro).

Atualmente, para habilitar o sVirt, você precisará de libvirt ≥ 0.10.2 (1.0 ou posterior preferido),
libguestfs ≥ 1.20 e as políticas SELinux do Fedora recente. Se você não está correndo
Fedora 18+, você precisará fazer alterações em sua política SELinux - entre em contato conosco no
lista de discussão.

Assim que tiver os requisitos, faça:

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

Defina o SELinux para o modo de imposição e o sVirt deve ser usado automaticamente.

Todos ou quase todos os recursos do libguestfs devem funcionar no sVirt. Há um conhecido
deficiência: virt-resgate(1) não usará libvirt (portanto, sVirt), mas volta ao direto
lançamento do qemu. Portanto, atualmente você não obterá o benefício da proteção sVirt ao usar
virt-resgate.

Você pode verificar se o sVirt está sendo usado habilitando o registro do libvirtd (veja
/etc/libvirt/libvirtd.log), matando e reiniciando libvirtd e verificando os arquivos de log
para mensagens "Configurando o contexto SELinux em ...".

Em teoria, o sVirt deveria suportar o AppArmor, mas ainda não o testamos. Vai quase
certamente requer a correção da libvirt e a escrita de uma política do AppArmor.

LibguestfsGenericName tem a clientes longo Lista of dependências!
A biblioteca base não depende muito, mas existem três causas para a longa lista
de outras dependências:

1. Libguestfs deve ser capaz de ler e editar muitos formatos de disco diferentes. Por exemplo,
O suporte XFS requer ferramentas XFS.

2. Existem ligações de idioma para muitos idiomas diferentes, todos exigindo seus próprios
ferramentas de desenvolvimento. Todas as ligações de linguagem (exceto C) são opcionais.

3. Existem alguns recursos de biblioteca opcionais que podem ser desativados.

Desde libguestfs ≥ 1.26 é possível dividir as dependências do aparelho (item 1 em
a lista acima) e, portanto, tem (por exemplo) "libguestfs-xfs" como um subpacote separado para
processamento de imagens de disco XFS. Encorajamos os empacotadores a jusante a começar a dividir a base
pacote libguestfs em subpacotes menores.

erros durante lançamento on Fedora 18, RHEL 7
No Fedora ≥ 18 e RHEL ≥ 7, libguestfs usa libvirt para gerenciar o dispositivo. Anteriormente
(e upstream) libguestfs executa o qemu diretamente:

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

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

upstream Fedora 18+
não-Fedora RHEL 7+
não RHEL

O backend libvirt é mais sofisticado, com suporte a SELinux / sVirt (veja acima),
hotplugging e muito mais. É, no entanto, mais complexo e menos robusto.

Se você tiver problemas de permissão ao usar o backend libvirt, você pode mudar para o direto
back-end definindo esta variável de ambiente:

exportar LIBGUESTFS_BACKEND = direto

antes de executar qualquer programa libguestfs ou ferramenta virt.

Como funciona o dobrador de carta de canal pode I interruptor para a fixado / pré-construído utensílio?
Isso pode melhorar a estabilidade e o desempenho de libguestfs no Fedora e RHEL.

A qualquer momento após a instalação do libguestfs, execute os seguintes 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

Agora defina a seguinte variável de ambiente antes de usar libguestfs ou qualquer ferramenta virt:

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

Claro, você pode alterar o caminho para qualquer diretório que desejar. Você pode compartilhar o aparelho
em máquinas que têm a mesma arquitetura (por exemplo, todos x86-64), mas observe que libvirt
irá impedi-lo de compartilhar o dispositivo através do NFS devido a problemas de permissões (então
mude para o back-end direto ou não use NFS).

Como funciona o dobrador de carta de canal pode I velocidade up libguestfs constrói?
De longe, a coisa mais importante que você pode fazer é instalar e configurar corretamente o Squid.
Observe que a configuração padrão que vem com o Squid é uma porcaria, então configurá-lo é
não opcional.

Um bom lugar para começar com a configuração do Squid é aqui:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Certifique-se de que o Squid esteja rodando e que as variáveis ​​de ambiente $ http_proxy e $ ftp_proxy
estão apontando para ele.

Com o Squid em execução e configurado corretamente, as compilações de dispositivos devem ser reduzidas a alguns
minutos.

Como funciona o dobrador de carta de canal pode I velocidade up libguestfs Constrói (Debian)?

Hilko Bengen sugere o uso de "aprox", que é um proxy de arquivo Debian
(http://packages.debian.org/approx) Esta ferramenta está documentada no Debian no Aproximadamente(8)
página do manual.

RAPIDEZ, DISCO ESPAÇO USAVA BY LIBGUESTFS


Observação: A maioria das informações nesta seção mudou: desempenho de guestfs(1).

Escolher arquivo or escrever parecem muito lento.
Se o disco subjacente não estiver totalmente alocado (por exemplo, sparse raw ou qcow2), as gravações podem ser
lento porque o sistema operacional host tem que fazer alocações de disco caras enquanto você está
escrita. A solução é usar um formato totalmente alocado, ou seja, não esparso cru, ou
qcow2 com a opção "preallocation = metadata".

LibguestfsGenericName usos também muito disco espaço!
libguestfs armazena em cache um dispositivo grande em:

/var/tmp/.guestfs-

Se a variável de ambiente "TMPDIR" for definida, então $ TMPDIR / .guestfs- é usado
ao invés.

É seguro deletar este diretório quando você não estiver usando libguestfs.

virt-sparsify parece para fazer que o imagem crescer para que o cheio tamanho of que o virtual disco
Se a entrada para virt-sparsify(1) é bruto, então a saída será esparsa em bruto. Certificar-se de que
você está medindo a saída com uma ferramenta que entende a dispersão, como "du -sh".
Isso pode fazer uma grande diferença:

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

(Compare o tamanho aparente 100M vs o tamanho real 3.6M)

Se tudo isso o confunde, use um formato de saída não esparso, especificando o --converter
opção, por exemplo:

virt-sparsify --convert qcow2 disco.raw disco.qcow2

Sua marca não virtual-resize TRABALHO on que o disco imagem no lugar?
O redimensionamento de uma imagem de disco é muito complicado - especialmente tendo certeza de que você não perderá dados ou
quebrar o bootloader. O método atual cria efetivamente uma nova imagem de disco e copia
os dados mais o bootloader do antigo. Se algo der errado, você sempre pode ir
de volta ao original.

Se fôssemos fazer o virt-resize funcionar no local, então teria que haver limitações: para
por exemplo, você não teria permissão para mover partições existentes (porque mover dados entre
o mesmo disco tem maior probabilidade de corromper os dados no caso de falha de energia ou falha),
e LVM seria muito difícil de suportar (por causa do mapeamento quase arbitrário
entre o conteúdo LV e os blocos de disco subjacentes).

Outro método que consideramos é colocar um instantâneo sobre a imagem de disco original, então
se os dados originais não foram alterados e apenas as diferenças foram registradas no instantâneo.
Você pode fazer isso hoje usando "qemu-img create" + "virt-resize", mas qemu atualmente não é
inteligente o suficiente para reconhecer quando o mesmo bloco é escrito de volta para o instantâneo como já
existe no disco de apoio, então você descobrirá que isso não economiza espaço ou tempo.

Em resumo, este é um problema difícil, e o que temos agora funciona principalmente, por isso estamos relutantes
para mudar isso.

Sua marca não virt-sparsify TRABALHO on que o disco imagem no lugar?
Em libguestfs ≥ 1.26, virt-sparsify agora pode funcionar em imagens de disco no local. Usar:

virt-sparsify --in-place disk.img

Mas primeiro você deve ler "IN-PLACE SPARSIFICATION" em virt-sparsify(1).

PROBLEMAS ABERTURA DISCO IMAGENS


Remote libvirt convidados não podes be aberto.
A abertura de convidados libvirt remotos não é suportada neste momento. Por exemplo, isso não funcionará:

guestfish -c qemu: // remoto / sistema -d Convidado

Para abrir discos remotos, você precisa exportá-los de alguma forma e, em seguida, conectar-se à exportação. Para
exemplo se você decidiu usar o NBD:

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

Outras possibilidades incluem ssh (se qemu for recente o suficiente), NFS ou iSCSI. Veja "REMOTO
STORAGE "em convidados(3).

Como funciona o dobrador de carta de canal pode I aberto isto estranho disco fonte?
Você tem uma imagem de disco localizada dentro de outro sistema que requer acesso por meio de uma biblioteca /
HTTP / REST / API proprietária ou compactado ou arquivado de alguma forma. (Um exemplo
seria o acesso remoto às imagens de visualização do OpenStack sem realmente baixá-las.)

Temos um projeto irmão chamado nbdkit (https://github.com/libguestfs/nbdkit). Esse
projeto permite que você transforme qualquer fonte de disco em um servidor NBD. Libguestfs pode acessar NBD
servidores diretamente, por exemplo:

guestfish -a nbd: // remoto

nbdkit é amplamente licenciado, então você pode vinculá-lo ou incluí-lo em bibliotecas proprietárias
e código. Ele também tem uma API de plug-in simples e estável para que você possa escrever plug-ins facilmente
a API que continuará a funcionar no futuro.

erro abertura VMDK discos: "usa a vmdk integrado qual is não suportado by isto qemu versão:
VMDK versão 3"
Qemu (e portanto libguestfs) suporta apenas certas imagens de disco VMDK. Outros não funcionam,
dando este ou erros semelhantes.

O ideal é que alguém conserte o qemu para oferecer suporte aos recursos VMDK mais recentes, mas enquanto isso
você tem três opções:

1. Se o convidado estiver hospedado em um servidor ESX ao vivo e acessível, localize e baixe o
imagem de disco chamada algumnome-flat.vmdk. Apesar do nome, esta é uma imagem de disco bruta e
pode ser aberto por qualquer coisa.

Se você tiver uma versão recente o suficiente do qemu e libguestfs, você poderá
acesse esta imagem de disco remotamente usando HTTPS ou ssh. Veja "ARMAZENAMENTO REMOTO" em
convidados(3).

2. Use a ferramenta vdiskmanager de propriedade da VMware para converter a imagem em formato bruto.

3. Use o nbdkit com o plug-in VDDK proprietário para exportar ao vivo a imagem do disco como um NBD
fonte. Isso deve permitir que você leia e grave o arquivo VMDK.

UFS discos (Conforme usava by BSD) não podes be aberto.
O formato do sistema de arquivos UFS tem muitas variantes e não são autoidentificantes. o
O kernel do Linux deve ser informado de qual variante do UFS deve ser usada, qual libguestfs não pode
Sei.

Você deve passar a opção de montagem "ufstype" correta ao montar esses sistemas de arquivos.

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

Windows refs
O Windows ReFS é uma cópia ZFS / Btrfs da Microsoft. Este sistema de arquivos ainda não foi revertido
projetado e implementado no kernel do Linux e, portanto, libguestfs não oferece suporte
isto. No momento, parece ser muito raro "na natureza".

Não ASCII caracteres não aparecer on VFAT sistemas de arquivos.
Sintomas típicos deste problema:

· Você obtém um erro ao criar um arquivo em que o nome do arquivo contém não-ASCII
caracteres, especialmente caracteres que não sejam de 8 bits de idiomas asiáticos (chinês, japonês,
etc). O sistema de arquivos é VFAT.

· Quando você lista um diretório de um sistema de arquivos VFAT, os nomes dos arquivos aparecem como pontos de interrogação.

Esta é uma falha de design do sistema GNU / Linux.

VFAT armazena nomes extensos de arquivos como caracteres UTF-16. Ao abrir ou retornar nomes de arquivos, o
O kernel do Linux deve traduzi-los para alguma forma de string de 8 bits. UTF-8 seria o
escolha óbvia, exceto para usuários Linux que persistem em usar locales não UTF-8 (o usuário
locale não é conhecido pelo kernel porque é uma função da libc).

Portanto, você tem que dizer ao kernel qual tradução deseja fazer quando montar o
sistema de arquivo. Os dois métodos são o parâmetro "iocharset" (que não é relevante para
libguestfs) e o sinalizador "utf8".

Portanto, para usar um sistema de arquivos VFAT, você deve adicionar o sinalizador "utf8" ao montar. De guestfish,
usar:

> opções de montagem utf8 / dev / sda1 /

ou na linha de comando guestfish:

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

ou da API:

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

O kernel então traduzirá os nomes de arquivos de e para strings UTF-8.

Nós consideramos adicionar esta opção de montagem de forma transparente, mas infelizmente existem vários
problemas em fazer isso:

· Em alguns sistemas Linux, a opção de montagem "utf8" não funciona. Nós não precisamente
entender quais sistemas ou por quê, mas isso foi relatado de forma confiável por um usuário.

· Isso impediria você de usar o parâmetro "iocharset" porque é incompatível
com "utf8". Provavelmente não é uma boa ideia usar este parâmetro, mas não queremos
para impedi-lo.

Não ASCII caracteres aparecer as sublinhar (_) on ISO9660 sistemas de arquivos.
O sistema de arquivos não foi preparado corretamente com mkisofs ou genisoimage. Certifique-se de que
sistema de arquivos foi criado usando extensões Joliet e / ou Rock Ridge. libguestfs não
requer qualquer opção de montagem especial para lidar com o sistema de arquivos.

Não podes aberto Windows convidados qual usar NTFS.
Você vê erros como:

montagem: tipo de sistema de arquivos desconhecido 'ntfs'

No Red Hat Enterprise Linux ou CentOS, você deve instalar o libguestfs-winsupport
pacote.

Não podes aberto or inspecionar RHEL 7 convidados.
Não podes aberto Linux convidados qual usar XFS.
Convidados RHEL 7, e quaisquer outros convidados que usam XFS, podem ser abertos por libguestfs, mas você
tem que instalar o pacote "libguestfs-xfs".

USANDO LIBGUESTFS IN SUA PRÓPRIO PROGRAMAS


A API tem centenas of métodos, onde do I começar?
Recomendamos que você comece lendo a visão geral da API: "VISÃO GERAL DA API" em convidados(3).

Embora a visão geral da API cubra a API C, ainda vale a pena ler, mesmo se você estiver
vai usar outra linguagem de programação, porque a API é a mesma, apenas com
mudanças lógicas nos nomes das chamadas:

C guestfs_ln_sf (g, destino, linkname);
Python g.ln_sf (destino, nome do link);
OCaml g # ln_sf linkname de destino;
Perl $ g-> ln_sf (destino, nome do link);
Shell (guestfish) linkname destino ln-sf
PHP guestfs_ln_sf ($ g, $ target, $ linkname);

Quando estiver familiarizado com a visão geral da API, você deve olhar para esta lista de
pontos para outras ligações de idioma: "USING LIBGUESTFS WITH OTHER PROGRAMMING LANGUAGES" em
convidados(3).

lata I usar libguestfs in my proprietário / fechado fonte / comercial programa?
Em geral, sim. No entanto, este não é um conselho jurídico - leia a licença que vem com
libguestfs, e se você tiver perguntas específicas, entre em contato com um advogado.

Na árvore de origem a licença está no arquivo "COPYING.LIB" (LGPLv2 + para a biblioteca e
bindings) e "COPYING" (GPLv2 + para os programas autônomos).

DEPURAÇÃO LIBGUESTFS


Ajuda, é não trabalhando!
Se nenhum programa libguestfs parece funcionar, execute o programa abaixo e cole o
completo, não editado saída em um e-mail para "libguestfs" @ "redhat.com":

ferramenta de teste libguestfs

Se uma determinada operação falhar, forneça todas as informações nesta lista de verificação, em um e-mail
para "libguestfs" @ "redhat.com":

1. O que você está tentando fazer?

2. Quais comandos exatos você executou?

3. Qual foi o erro preciso ou a saída desses comandos?

4. Ative a depuração, execute os comandos novamente e capture o completar saída. Do não
editar que o saída.

exportar LIBGUESTFS_DEBUG = 1
exportar LIBGUESTFS_TRACE = 1

5. Inclua a versão de libguestfs, a versão do sistema operacional e como você instalou
libguestfs (por exemplo, da fonte, "yum install", etc.)

Como funciona o dobrador de carta de canal do I depurar quando utilização qualquer libguestfs programa or ferramenta (por exemplo. virt-v2v or virt-df)?
Existem duas variáveis ​​de ambiente "LIBGUESTFS_ *" que você pode definir para obter mais
informações do libguestfs.

"LIBGUESTFS_TRACE"
Defina como 1 e libguestfs irá imprimir cada comando / chamada API em um formato que
é semelhante aos comandos guestfish.

"LIBGUESTFS_DEBUG"
Defina como 1 para permitir uma grande quantidade de mensagens de depuração. Se você acha
há algum problema dentro do dispositivo libguestfs, então você deve usar este
opção.

Para defini-los a partir do shell, faça isso antes de executar o programa:

exportar LIBGUESTFS_TRACE = 1
exportar LIBGUESTFS_DEBUG = 1

Para csh / tcsh, os comandos equivalentes seriam:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Para mais informações, consulte: "VARIÁVEIS DE AMBIENTE" em convidados(3).

Como funciona o dobrador de carta de canal do I depurar quando utilização peixe convidado?
Você pode usar as mesmas variáveis ​​de ambiente acima. Alternativamente, use as opções de peixe convidado
-x (para rastrear comandos) ou -v (para obter a saída de depuração completa), ou ambos.

Para mais informações, consulte: peixe convidado(1).

Como funciona o dobrador de carta de canal do I depurar quando utilização que o API?
Chame "guestfs_set_trace" em convidados(3) para habilitar rastreios de comando e / ou
"guestfs_set_verbose" em convidados(3) para habilitar mensagens de depuração.

Para obter melhores resultados, chame essas funções o mais cedo possível, logo após criar o
guestfs manipula se você puder, e definitivamente antes de chamar o launch.

Como funciona o dobrador de carta de canal do I capturar depurar saída e colocar it para dentro my logging sistema?
Use a API de eventos. Para obter exemplos, consulte: "CONFIGURANDO CHAMADAS PARA LIDAR COM EVENTOS" em convidados(3)
e os votos de exemplos / debug-logging.c programa nas fontes libguestfs.

Escavação mais profunda para dentro que o utensílio bota processo.
Ative a depuração e leia esta documentação sobre o processo de inicialização do dispositivo:
guestfs-internos(1).

libguestfs trava or falha durante executar / lançar.
Habilite a depuração e veja a saída completa. Se você não consegue descobrir o que está acontecendo,
arquivar um relatório de bug, incluindo o completar saída de ferramenta de teste libguestfs(1).

depuração libvirt
Se você estiver usando o backend libvirt e o libvirt estiver falhando, você pode habilitar
depuração por edição /etc/libvirt/libvirtd.conf.

Se você estiver executando como não root, será necessário editar um arquivo diferente. Crio
~ / .config / libvirt / libvirtd.conf contendo:

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

Mate qualquer libvirtd de sessão (não root) que esteja em execução e, na próxima vez que você executar o libguestfs
comando, você deve ver uma grande quantidade de informações úteis de depuração do libvirtd em
/tmp/libvirtd.log

DESIGN / INTERNOS OF LIBGUESTFS


Veja também guestfs-internos(1).

Sua marca não Você do tudo NFT`s que o FUSE / sistema de arquivo interface?
Oferecemos um comando chamado montagem de convidados(1) que permite montar sistemas de arquivos convidados no
hospedeiro. Isso é implementado como um módulo FUSE. Por que simplesmente não implementamos todo o
libguestfs usando este mecanismo, em vez de ter a API grande e bastante complicada?

As razões são duas. Em primeiro lugar, libguestfs oferece chamadas de API para fazer coisas como
criação e exclusão de partições e volumes lógicos, que não cabem em um sistema de arquivos
modelo muito facilmente. Ou melhor, você pode encaixá-los: por exemplo, criando uma partição
poderia ser mapeado para "mkdir / fs / hda1" mas então você teria que especificar algum método para escolher
o tamanho da partição (talvez "echo 100M> /fs/hda1/.size") e o tipo de partição,
setores de início e fim, etc., mas depois de fazer isso, a API baseada no sistema de arquivos começa a
parece mais complicado do que a API baseada em chamadas que temos atualmente.

A segunda razão é para eficiência. O próprio FUSE é razoavelmente eficiente, mas faz
faça muitas chamadas pequenas e independentes para o módulo FUSE. Na montagem de convidados, estes têm que
ser traduzido em mensagens para o dispositivo libguestfs que tem uma grande sobrecarga (com o tempo
e viagens de ida e volta). Por exemplo, ler um arquivo em blocos de 64 KB é ineficiente porque cada
pedaço se transformaria em uma única viagem de ida e volta. Na API libguestfs é muito mais
eficiente para baixar um arquivo ou diretório inteiro por meio de uma das chamadas de streaming, como
"guestfs_download" ou "guestfs_tar_out".

Sua marca não Você do tudo NFT`s GVFS?
Os problemas são semelhantes aos problemas com o FUSE.

GVFS é uma abstração melhor que POSIX / FUSE. Há um back-end de FTP para GVFS, que é
encorajador porque o FTP é conceitualmente semelhante à API libguestfs. No entanto, o GVFS
O back-end FTP faz várias conexões simultâneas para manter a interatividade, que
não podemos fazer facilmente com libguestfs.

Sua marca pode I escrever para que o disco, até embora I adicionado it somente leitura?
Sua marca parece "--ro" aparecer para não efeito?
Quando você adiciona um disco somente leitura, libguestfs coloca uma sobreposição gravável em cima do
disco subjacente. As gravações vão para esta sobreposição e são descartadas quando a alça é fechada
(ou saídas "guestfish" etc.).

Há duas razões para fazer isso desta forma: Em primeiro lugar, discos somente leitura não são possíveis em
muitos casos (por exemplo, IDE simplesmente não os suporta, então você não poderia ter um IDE emulado
disco somente leitura, embora isso não seja comum em instalações reais de libguestfs).

Em segundo lugar, e mais importante, mesmo que discos somente leitura fossem possíveis, você não gostaria
eles. Montar qualquer sistema de arquivos que tenha um diário, mesmo "mount -o ro", causa gravações em
o sistema de arquivos porque o diário deve ser reproduzido e os metadados atualizados. Se o disco
fosse verdadeiramente somente leitura, você não seria capaz de montar um sistema de arquivos sujo.

Para torná-lo utilizável, criamos a sobreposição como um lugar para armazenar temporariamente essas gravações e
então nós o descartamos depois. Isso garante que o disco subjacente esteja sempre intocado.

Observe também que há um teste de regressão para isso ao construir libguestfs (em
"testes / qemu"). Esse é um dos motivos pelos quais é importante que os empacotadores executem o conjunto de testes.

Será que "--ro" fazer todos os discos somente leitura?
Não! A opção "--ro" afeta apenas os discos adicionados na linha de comando, ou seja. usando "-a" e
Opções "-d".

No guestfish, se você usar o comando "add", então o disco é adicionado para leitura e gravação (a menos que você
especifique o sinalizador "readonly: true" explicitamente com o comando).

lata I usar "peixe convidado --ro " as a maneira para backup my virtual máquinas?
Normalmente isso é não uma boa ideia. A pergunta é respondida com mais detalhes nesta correspondência
postagem da lista: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Veja também a próxima pergunta.

Sua marca não pode I corrida fsck on a viver sistema de arquivo utilização "peixe convidado --ro "?
Este comando normalmente não trabalhos:

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

A razão para isso é que o qemu cria um instantâneo sobre o sistema de arquivos original, mas
não cria um instantâneo pontual estrito. Blocos de dados na base
sistema de arquivos são lidos pelo qemu em momentos diferentes conforme o progresso da operação fsck, com o host
escreve no meio. O resultado é que o fsck vê corrupção maciça (imaginária, não real!)
e falha.

O que você precisa fazer é criar um instantâneo point-in-time. Se for um volume lógico, use
um instantâneo LVM2. Se o sistema de arquivos estiver localizado dentro de algo como um arquivo btrfs / ZFS,
use um instantâneo btrfs / ZFS e execute o fsck no instantâneo. Na prática você não
precisa usar libguestfs para isso - basta executar / sbin / fsck diretamente.

A criação de instantâneos point-in-time de dispositivos host e arquivos está fora do escopo de
libguestfs, embora libguestfs possa operar neles assim que forem criados.

O que é que o diferença entre peixe convidado e virt-resgate?
Muitas pessoas ficam confusas com as duas ferramentas superficialmente semelhantes que oferecemos:

$ guestfish --ro -a convidado.img
> corre
> fsck / dev / sda1

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

E a questão relacionada que surge então é porque você não pode digitar comandos shell completos
com todas as opções - em guestfish (mas você pode em virt-resgate(1)).

peixe convidado(1) é um programa que fornece acesso estruturado ao convidados(3) API. Acontece
para ser um bom shell interativo também, mas seu objetivo principal é o acesso estruturado a partir de
scripts de shell. Pense nisso mais como uma ligação de linguagem, como Python e outras ligações,
mas para shell. O principal fator de diferenciação do guestfish (e a API libguestfs em
geral) é a capacidade de automatizar alterações.

virt-resgate(1) é uma forma gratuita para todos de inicializar o dispositivo libguestfs e fazer
mudanças arbitrárias em sua VM. Não é estruturado, você não pode automatizar, mas para fazer
correções ad-hoc rápidas para seus convidados, pode ser bastante útil.

Mas, libguestfs também tem uma "porta dos fundos" para o aparelho, permitindo que você envie
comandos do shell. Não é tão flexível quanto virt-rescue, porque você não pode interagir com o
comandos do shell, mas aqui está de qualquer maneira:

> debugar sh "cmd arg1 arg2 ..."

Note que você deve não confiar nisso. Ele pode ser removido ou alterado no futuro. Se seu
o programa precisa de alguma operação, adicione-o à API libguestfs.

O que é que o acordo com "peixe convidado -eu"?
Sua marca parece virt-gato TRABALHO on a reais VM imagem, mas a virt-df trabalho on qualquer disco imagem?
O Quê parece "não raiz dispositivo encontrado in isto operando . imagem" significa?
Essas questões estão todas relacionadas em um nível fundamental, que pode não ser imediatamente
óbvio.

No convidados(3) Nível API, uma "imagem de disco" é apenas uma pilha de partições e sistemas de arquivos.

Em contraste, quando a máquina virtual é inicializada, ela monta esses sistemas de arquivos em uma
hierarquia como:

/ (/ dev / sda2)

─── / Bota (/ dev / sda1)

─── / Home (/ dev / vg_external / Homes)

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

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

(ou letras de unidade no Windows).

A API primeiro vê a imagem do disco no nível de "pilha de sistemas de arquivos". Mas também
tem uma maneira de inspecionar a imagem do disco para ver se ele contém um sistema operacional e como o
os discos são montados quando o sistema operacional inicializa: "INSPECTION" em convidados(3).

Os usuários esperam algumas ferramentas (como virt-gato(1)) para trabalhar com caminhos VM:

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

Como virt-cat sabe disso / var é uma partição separada? O truque é que virt-cat
executa a inspeção na imagem do disco e a usa para traduzir o caminho corretamente.

Algumas ferramentas (incluindo virt-gato(1) edição virt(1) virt-ls(1) usar inspeção para mapear VM
caminhos. Outras ferramentas, como virt-df(1) e virt-sistemas de arquivos(1) operar inteiramente no
nível bruto de "grande pilha de sistemas de arquivos" da API libguestfs, e não use inspeção.

peixe convidado(1) está em um meio termo interessante. Se você usar o -a e -m linha de comando
opções, então você tem que dizer ao guestfish exatamente como adicionar imagens de disco e onde montar
partições. Este é o nível bruto da API.

Se você usar o -i opção, libguestfs realiza inspeção e monta os sistemas de arquivos para
você.

O erro "nenhum dispositivo raiz encontrado nesta imagem do sistema operacional" está relacionado a isso. Isto
significa que a inspeção não conseguiu localizar um sistema operacional dentro da imagem de disco que você forneceu
isto. Você pode ver isso em programas como o virt-cat se tentar executá-los em algo
que é apenas uma imagem de disco, não uma imagem de disco de máquina virtual.

O Quê do estes "depurar*" e "interno-*" funções Faz?
Existem algumas funções que são usadas para depuração e propósitos internos que são não
parte da API estável.

As funções "debug *" (ou "guestfs_debug *"), principalmente "guestfs_debug" em convidados(3) e
um punhado de outros são usados ​​para depurar libguestfs. Embora eles não façam parte do
API estável e, portanto, pode mudar ou ser removida a qualquer momento, alguns programas podem querer chamar
enquanto espera que recursos sejam adicionados ao libguestfs.

As funções "internal- *" (ou "guestfs_internal_ *") devem ser usadas exclusivamente por libguestfs
em si. Não há razão para os programas chamá-los, e os programas não devem tentar usá-los
eles. Usá-los muitas vezes fará com que coisas ruins aconteçam, além de não fazer parte do
API estável documentada.

COLABORADORES


Onde do I enviar remendos?
Por favor, envie patches para a lista de discussão libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
haverá um atraso até que sua postagem seja aprovada manualmente.

. não usar github puxar pedidos - deles precisarão be ignoradas. As razões são (a) queremos
para discutir e dissecar patches na lista de discussão, e (b) solicitações de pull do github se transformam em
mesclar commits, mas preferimos ter um histórico linear.

Como funciona o dobrador de carta de canal do I oferece a apresentam?
Grandes novos recursos com os quais você pretende contribuir devem ser discutidos na lista de discussão
primeiro (https://www.redhat.com/mailman/listinfo/libguestfs). Isso evita decepções
e trabalho perdido se acharmos que o recurso não caberia no projeto libguestfs.

Se quiser sugerir um recurso útil, mas não quiser escrever o código, você pode enviar um
bug (veja "OBTENDO AJUDA E RELATANDO BUGS") com "RFE:" no início do Resumo
linha.

Quem pode commit para libguestfs entendeu?
Cerca de 5 pessoas têm acesso de commit ao github. Os patches devem ser postados na lista primeiro
e ACKed. A política para ACKing e envio de patches é descrita aqui:

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

lata I garfo libguestfs?
Claro que você pode. O Git facilita a bifurcação de libguestfs. O Github torna tudo ainda mais fácil.
É bom se você nos contar na lista de discussão sobre garfos e as razões para eles.

DIVERSOS QUESTÕES


lata I monitor que o viver disco atividade of a virtual máquina utilização libguestfs?
Um pedido comum é ser capaz de usar libguestfs para monitorar a atividade do disco ao vivo de um
convidado, por exemplo, para ser notificado sempre que um convidado cria um novo arquivo. Libguestfs
parece não trabalhe da maneira que algumas pessoas imaginam, como você pode ver neste diagrama:

┌─────────────────────────────────────────
│ programa de monitoramento usando libguestfs │
└─────────────────────────────────────────

┌─────────────┐ ┌────────────────────────
│ VM ao vivo │ │ dispositivo libguestfs │
├─────────────┤ ├────────────────────────
│ kernel (1) │ │ kernel do aparelho (2) │
└─────────────┘ └────────────────────────
↓ ↓ (conexão r / o)
┌─────────────────────────┐
| imagem de disco |
└─────────────────────────┘

Este cenário é seguro (contanto que você defina o sinalizador "somente leitura" ao adicionar a unidade).
No entanto, o kernel do dispositivo libguestfs (2) não vê todas as alterações feitas no disco
imagem, por dois motivos:

eu. O kernel VM (1) pode armazenar dados em cache na memória, para que não apareça na imagem do disco.

ii. O kernel do dispositivo libguestfs (2) não espera que a imagem do disco esteja mudando
embaixo dele, para que seu próprio cache não seja atualizado magicamente, mesmo quando o kernel VM (1)
atualiza a imagem do disco.

A única solução suportada é reiniciar todo o dispositivo libguestfs sempre que você
deseja ver as mudanças na imagem do disco. No nível da API que corresponde à chamada
"guestfs_shutdown" seguido por "guestfs_launch", que é uma operação pesada (consulte
tb desempenho de guestfs(3)).

Existem alguns hacks não suportados que você pode tentar se relançar o aparelho for realmente muito
dispendioso:

· Chame "guestfs_drop_caches (g, 3)". Isso faz com que todos os dados em cache sejam ajudados pelo libguestfs
kernel do dispositivo (2) a ser descartado, então ele volta para a imagem do disco.

No entanto, isso por si só não é suficiente, porque o qemu também armazena alguns dados em cache. Vocês
também precisará corrigir o libguestfs para (re) habilitar o modo "cache = inseguro". Ver:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Use uma ferramenta como virt-bmap ao invés.

· Executar um agente dentro do convidado.

Nada ajuda se o convidado estiver fazendo mudanças mais fundamentais (por exemplo, deletar sistemas de arquivos).
Para esse tipo de coisa, você deve reiniciar o aparelho.

(Observe que há um terceiro problema que você precisa usar instantâneos consistentes para realmente examinar
imagens de disco ao vivo, mas esse é um problema geral com o uso de libguestfs em qualquer disco ao vivo
imagem.)

Use guestfs-faq online usando serviços onworks.net


Servidores e estações de trabalho gratuitos

Baixar aplicativos Windows e Linux

Comandos Linux

Ad