AnglaisFrançaisEspagnol

Ad


Icône de favori OnWorks

guestfs-faq - En ligne dans le Cloud

Exécutez guestfs-faq dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande guestfs-faq qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


guestfs-faq - libguestfs Foire aux questions (FAQ)

À PROPOS LIBGUESTFS


Quoi is libguestfs ?
libguestfs est un moyen de créer, d'accéder et de modifier des images disque. Vous pouvez regarder à l'intérieur du disque
images, modifiez les fichiers qu'elles contiennent, créez-les à partir de zéro, redimensionnez-les et bien plus encore
Suite. C'est particulièrement utile à partir de scripts et de programmes et à partir de la ligne de commande.

libguestfs est une bibliothèque C (d'où "lib-"), et un ensemble d'outils construits sur cette bibliothèque, et
liaisons pour de nombreux langages de programmation courants.

Pour plus d'informations sur ce que libguestfs peut faire, lisez l'introduction sur la page d'accueil
(http://libguestfs.org).

Quoi le vertu outils?
Outils Virt (site Web : http://virt-tools.org) sont un ensemble de gestion de la virtualisation
outils destinés aux administrateurs système. Certains d'entre eux viennent de libguestfs, d'autres de
libvirt et bien d'autres d'autres projets open source. Virt tools est donc un sur-ensemble de
libguestfs. Cependant, libguestfs est livré avec de nombreux outils importants. Voir
http://libguestfs.org pour une liste complète.

Le libguestfs need { libvirt / KVM / Rouge Casquette / Fedora }?
Non!

libvirt n'est pas une exigence pour libguestfs.

libguestfs fonctionne avec n'importe quelle image disque, y compris celles créées dans VMware, KVM, qemu,
VirtualBox, Xen et de nombreux autres hyperviseurs, et ceux que vous avez créés à partir de zéro.

Red Hat sponsorise (c'est-à-dire paie pour) le développement de libguestfs et d'un grand nombre d'autres
projets sources. Mais vous pouvez exécuter libguestfs et les outils virt sur de nombreux Linux différents
distributions et Mac OS X. Nous faisons de notre mieux pour prendre en charge toutes les distributions Linux en tant que première classe
citoyens. Certains outils virt ont été portés sur Windows.

Comment libguestfs comparer à autre outils?
vs. kpartx
Libguestfs adopte une approche différente de kpartx. kpartx a besoin de root et se monte
systèmes de fichiers sur le noyau hôte (qui peut être non sécurisé - voir guestfs-sécurité(1)).
Libguestfs isole votre noyau hôte des invités, est plus flexible, scriptable,
prend en charge LVM, ne nécessite pas de racine, est isolé des autres processus et nettoie
après lui-même. Libguestfs est plus qu'un simple accès aux fichiers car vous pouvez l'utiliser pour
créer des images à partir de zéro.

vs. vdfuse
vdfuse est comme kpartx mais pour les images VirtualBox. Voir la comparaison kpartx ci-dessus.
Vous pouvez utiliser libguestfs sur les fichiers de partition exposés par vdfuse, bien que ce ne soit pas
nécessaire car libguestfs peut accéder directement aux images VirtualBox.

vs. qemu-nbd
NBD (Network Block Device) est un protocole permettant d'exporter des blocs de périphériques sur le réseau.
qemu-nbd est un serveur NBD qui peut gérer n'importe quel format de disque pris en charge par qemu (par exemple raw,
qvache2). Vous pouvez utiliser libguestfs et qemu-nbd ou nbdkit ensemble pour accéder au bloc
périphériques sur le réseau, par exemple : "guestfish -a nbd://remote"

vs. montage systèmes de fichiers in le hôte
Le montage de systèmes de fichiers invités dans l'hôte n'est pas sécurisé et doit être complètement évité
pour les invités non fiables. Utilisez libguestfs pour fournir une couche de protection contre
exploits du système de fichiers. Voir également invitémonter (1).

vs. séparé
Libguestfs prend en charge LVM. Libguestfs utilise parted et fournit la plupart des fonctionnalités séparées
via l'API libguestfs.

OBTENIR AIDE ET DE LA LIGNE BOGUES


Comment do I savoir ce qu'elle vous dit. Recherchez des informations adaptées à l'âge des enfants et examinez-les ensemble. version je suis aide?
La méthode la plus simple est :

poisson invité --version

Le développement de Libguestfs se déroule le long d'une branche instable et nous créons périodiquement un
branche stable vers laquelle nous rétroportons les correctifs stables. Pour en savoir plus, lisez « LIBGUESTFS
NUMÉROS DE VERSION" dans invités (3).

Comment vous I obtenez AIDER?
Quoi mailing listes or le chat chambres disponible?
Si vous êtes un client Red Hat utilisant Red Hat Enterprise Linux, veuillez contacter
Assistance Red Hat : http://redhat.com/support

Il existe une liste de diffusion, principalement pour le développement, mais les utilisateurs sont également invités à demander
questions sur libguestfs et les outils virt :
https://www.redhat.com/mailman/listinfo/libguestfs

Vous pouvez également nous parler sur le canal IRC "#libguestfs" sur FreeNode. Nous ne sommes pas toujours
autour, alors s'il vous plaît restez dans le canal après avoir posé votre question et quelqu'un reviendra
à votre corps.

Pour les autres outils virt (pas ceux fournis avec libguestfs), il existe des outils virt généraux
liste de diffusion : https://www.redhat.com/mailman/listinfo/virt-tools-list

Comment do I rapport Bugs?
Veuillez utiliser le lien suivant pour saisir un bogue dans Bugzilla :

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

Incluez autant de détails que possible et un moyen de reproduire le problème.

Inclure la sortie complète de outil de test libguestfs (1).

COMMUNE PROBLÈMES


Voir aussi "LIBGUESTFS GOTCHAS" dans invités(3) pour certains "gotchas" avec l'utilisation de libguestfs
API.

"Pourrait ne sauraient allouer Dynamic traducteur amortir"
Cette erreur obscure est en fait un échec de SELinux. Vous devez activer les éléments suivants
SELinux booléen :

setsebool -P virt_use_execmem=on

Pour plus d'informations, consultez https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"enfant processus mort de façon inattendue"
[Ce message d'erreur a été modifié dans libguestfs 1.21.18 en quelque chose de plus explicatif.]

Cette erreur indique que qemu a échoué ou que le noyau hôte n'a pas pu démarrer. Pour aller plus loin
informations sur l'échec, vous devez exécuter :

outil de test libguestfs

Si, après utilisation, vous ne comprenez toujours pas la panne, contactez-nous (voir précédent
section).

libguestfs : erreur: ne peut pas trouver tous convient libguestfs supermine, fixé or style ancien appareil
on LIBGUESTFS_PATH
febootstrap-supermin-helper : poste2 : mère annuaire ne sauraient trouvé
supermin-helper : poste2 : mère annuaire ne sauraient trouvé
[Ce problème est résolu définitivement dans libguestfs ≥ 1.26.]

Si vous voyez l'une de ces erreurs sur Debian/Ubuntu, vous devez exécuter la commande suivante :

sudo update-guestfs-appliance

"Autorisation refusé" quand pour le running libguestfs as racine
Vous obtenez une erreur d'autorisation refusée lors de l'ouverture d'une image disque, même si vous exécutez
libguestfs en tant que root.

Ceci est causé par libvirt, et ne se produit donc que lors de l'utilisation du backend libvirt. Lors de l'exécution
en tant que root, libvirt décide d'exécuter l'appliance qemu en tant qu'utilisateur "qemu.qemu". Malheureusement
cela signifie généralement que qemu ne peut pas ouvrir les images disque, surtout si ces images disque sont
appartenant à root, ou sont présents dans des répertoires qui nécessitent un accès root.

Il y a un bogue ouvert contre libvirt pour corriger cela :
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

Vous pouvez contourner ce problème par l'une des méthodes suivantes :

· Basculez vers le backend direct :

exporter LIBGUESTFS_BACKEND=direct

· N'exécutez pas libguestfs en tant que root.

· Modifiez l'image disque et tous les répertoires parents afin que l'utilisateur qemu puisse y accéder.

· (Méchant) Modifier /etc/libvirt/qemu.conf et modifiez le paramètre "utilisateur".

ex. : /init : Autorisation dénié
Remarque: Si cette erreur se produit lorsque vous utilisez un package de distribution de libguestfs (par exemple de
Fedora, Debian, etc) puis déposez un bogue contre la distribution. Ce n'est pas une erreur qui
les utilisateurs normaux devraient toujours voir si le package de distribution a été préparé correctement.

Cette erreur se produit pendant la phase de démarrage supermin du démarrage de l'appliance :

supermin : montage d'une nouvelle racine sur / Root
supermin : chroot
execl : /init : autorisation refusée
supermin : débogage : répertoire de liste /
[... suivi de beaucoup de sorties de débogage...]

Il s'agit d'un bug compliqué lié à supermine(1) appareils électroménagers. L'appareil est construit
en copiant des fichiers comme / bin / bash et de nombreuses bibliothèques de l'hôte. Le fichier "hostfiles"
répertorie les fichiers qui doivent être copiés de l'hôte vers l'appliance. Si certains fichiers
n'existent pas sur l'hôte, ils sont manqués, mais si ces fichiers sont nécessaires dans l'ordre
(par exemple) courir / bin / bash alors vous verrez l'erreur ci-dessus.

Diagnostiquer le problème implique d'étudier les bibliothèques nécessaires à / bin / bash, c'est à dire:

ldd / bin / bash

en comparant cela avec "hostfiles", avec les fichiers réellement disponibles dans le système de fichiers hôte,
et avec la sortie de débogage imprimée dans le message d'erreur. Une fois que vous avez déterminé quel fichier
est manquant, installez ce fichier à l'aide de votre gestionnaire de packages et réessayez.

Vous devriez également vérifier que les fichiers comme /init ainsi que / bin / bash (dans l'appareil) sont
exécutable. La sortie de débogage affiche les modes de fichier.

TÉLÉCHARGEMENT, INSTALLER, COMPILATION LIBGUESTFS


vous I obtenez le Nouveautés binaires en ? ...
Fedora 11
Utilisation:

miam installer '*guestf*'

Pour les dernières versions, voir :
http://koji.fedoraproject.org/koji/packageinfo?ID_paquet=8391

Red Hat Enterprise Linux
RHEL 5
La version livrée dans RHEL 5 officiel est très ancienne et ne doit pas être utilisée sauf
en conjonction avec virt-v2v. Utilisez le package libguestfs 1.20 à jour dans EPEL
5 : https://fedoraproject.org/wiki/EPEL

RHEL 6
RHEL 7
Il fait partie de l'installation par défaut. Sur RHEL 6 et 7 (uniquement) vous devez installer
"libguestfs-winsupport" pour obtenir le support invité Windows.

Debian et Ubuntu
Pour libguestfs < 1.26, après avoir installé libguestfs, vous devez faire :

sudo update-guestfs-appliance

(Ce script a été supprimé sur Debian/Ubuntu avec libguestfs ≥ 1.26 et à la place le
l'appareil est construit sur demande.)

Sur Ubuntu uniquement :

sudo chmod 0644 /boot/vmlinuz*

Vous devrez peut-être vous ajouter au groupe "kvm":

sudo usermod -a -G kvm votre connexion

Compression Debian (6)
Hilko Bengen a construit libguestfs dans les backports squeeze :
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports

Debian Wheezy et versions ultérieures (7+)
Hilko Bengen prend en charge libguestfs sur Debian. Les paquets Debian officiels sont
disponible: http://packages.debian.org/search?keywords=libguestfs

Ubuntu
Nous n'avons pas de mainteneur Ubuntu à plein temps, et les packages fournis par
Les canoniques (qui sont hors de notre contrôle) sont parfois cassées.

Canonical a décidé de modifier les autorisations sur le noyau afin qu'il ne soit pas
lisible sauf par root. C'est complètement stupide, mais ils ne le changeront pas
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). Ainsi, chaque utilisateur
devrait faire ceci:

sudo chmod 0644 /boot/vmlinuz*

Ubuntu 12.04
libguestfs dans cette version d'Ubuntu fonctionne, mais vous devez mettre à jour febootstrap
et seabios aux dernières versions.

Vous avez besoin de febootstrap ≥ 3.14-2 de :
http://packages.ubuntu.com/precise/febootstrap

Après avoir installé ou mis à jour febootstrap, reconstruisez l'appliance :

sudo update-guestfs-appliance

Vous avez besoin de 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

Vous devez également faire (voir ci-dessus) :

sudo chmod 0644 /boot/vmlinuz*

Gentoo
Libguestfs a été ajouté à Gentoo en 2012-07 par Andreis Vinogradovs (libguestfs) et
Maxim Koltsov (principalement ruchex). Faire:

émergent libguestfs

SUSE
Libguestfs a été ajouté à SuSE en 2012 par Olaf Hering.

ArchLinux
Libguestfs a été ajouté à l'AUR en 2010.

Autre distribution Linux
Compiler à partir des sources (section suivante).

Autre distribution non Linux
Vous devrez compiler à partir des sources et les porter.

Comment vous I compiler ainsi que installer libguestfs de la source?
Vous pouvez compiler libguestfs à partir de git ou d'une archive source. Lisez le fichier README avant
départ.

Git : https://github.com/libguestfs/libguestfs Fichiers tar sources :
http://libguestfs.org/download

Ne lancez pas "make install" ! Utilisez le "./ courir" à la place (voir README).

Comment vous I compiler ainsi que installer libguestfs if my distro ne pas avons neufs assez
qemu/supermin/noyau ?
Libguestfs a besoin de supermin 5. Si supermin 5 n'a pas été porté sur votre distribution, consultez
la question ci-dessous.

Commencez par compiler qemu, supermin et/ou le noyau à partir des sources. Tu fais ne sauraient besoin de faire
installez-les".

Dans le répertoire source de libguestfs, créez deux fichiers. « localconfigurer » doit contenir :

source localeenv
#export PATH=/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --préfixe / usr "$@"

Rendez "localconfigure" exécutable.

"localenv" doit contenir :

#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

Décommentez et ajustez ces lignes au besoin pour utiliser les programmes alternatifs que vous avez
compilé.

Utilisez "./localconfigure" au lieu de "./configure", mais sinon vous compilez libguestfs comme
habituel.

Ne lancez pas "make install" ! Utilisez le "./ courir" à la place (voir README).

Comment vous I compiler ainsi que installer libguestfs sans supermine ?
Si supermin 5 prend en charge votre distribution, mais que vous n'avez pas de supermin assez nouveau
installé, puis reportez-vous à la question précédente.

Si supermin 5 ne prend pas du tout en charge votre distribution, vous devrez utiliser le "fixe
méthode de l'appliance" où vous utilisez une appliance binaire pré-compilée. Pour construire libguestfs
sans supermin, vous devez passer "--disable-appliance --disable-daemon" à l'un ou l'autre
./autogen.sh or . / Configure (selon que vous construisez respectivement à partir de git ou
à partir d'archives). Ensuite, lorsque vous utilisez libguestfs, vous must définir le "LIBGUESTFS_PATH"
variable d'environnement dans le répertoire d'une appliance précompilée, comme décrit également dans
"APPAREIL FIXE" dans invités (3).

Pour les appliances précompilées, voir aussi : http://libguestfs.org/download/binaries/appliance/.

Les correctifs pour porter supermin vers d'autres distributions Linux sont les bienvenus.

Comment vous I ajouter Support en sVirt ?
Notes en Fedora/RHEL utilisateurs: Cette configuration est la configuration par défaut à partir de Fedora 18 et
RHEL 7. Si vous rencontrez des problèmes, veuillez nous en informer ou signaler un bogue.

SVirt fournit une appliance renforcée utilisant SELinux, ce qui la rend très difficile pour un disque malveillant
image pour "échapper" au confinement de libguestfs et endommager l'hôte (il est juste de dire
que même dans libguestfs standard, ce serait difficile, mais sVirt fournit une couche supplémentaire de
protection pour l'hôte et surtout protège les machines virtuelles sur le même hôte
de chacun d'eux).

Actuellement, pour activer sVirt, vous aurez besoin de libvirt ≥ 0.10.2 (1.0 ou supérieur de préférence),
libguestfs ≥ 1.20, et les politiques SELinux de la récente Fedora. Si vous ne courez pas
Fedora 18+, vous devrez apporter des modifications à votre politique SELinux - contactez-nous sur le
liste de diffusion.

Une fois que vous avez les exigences, faites :

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

Réglez SELinux sur le mode Enforcing et sVirt devrait être utilisé automatiquement.

Toutes, ou presque toutes, les fonctionnalités de libguestfs devraient fonctionner sous sVirt. il y en a un connu
défaut: virt-sauvetage(1) n'utilisera pas libvirt (d'où sVirt), mais revient à direct
lancement de qemu. Ainsi, vous ne bénéficierez actuellement pas de la protection sVirt lors de l'utilisation
virt-sauvetage.

Vous pouvez vérifier si sVirt est utilisé en activant la journalisation libvirtd (voir
/etc/libvirt/libvirtd.log), en tuant et en redémarrant libvirtd et en vérifiant les fichiers journaux
pour les messages « Définition du contexte SELinux sur ... ».

En théorie, sVirt devrait prendre en charge AppArmor, mais nous ne l'avons pas essayé. ça va presque
nécessite certainement de corriger libvirt et d'écrire une politique AppArmor.

Libguestfs a a vraiment Long liste of dépendances !
La bibliothèque de base ne dépend pas de grand-chose, mais il y a trois causes à la longue liste
d'autres dépendances :

1. Libguestfs doit être capable de lire et d'éditer de nombreux formats de disque différents. Par exemple,
La prise en charge de XFS nécessite des outils XFS.

2. Il existe des liaisons linguistiques pour de nombreuses langues différentes, toutes nécessitant leur propre
outils de développement. Toutes les liaisons de langue (sauf C) sont facultatives.

3. Certaines fonctionnalités de bibliothèque facultatives peuvent être désactivées.

Depuis libguestfs ≥ 1.26, il est possible de diviser les dépendances de l'appliance (élément 1 dans
la liste ci-dessus) et ont donc (par exemple) "libguestfs-xfs" en tant que sous-paquet distinct pour
traitement des images disque XFS. Nous encourageons les emballeurs en aval à commencer à diviser la base
libguestfs en sous-paquets plus petits.

Erreurs pendant lancer on Fedora 18 RHEL 7
Dans Fedora ≥ 18 et RHEL ≥ 7, libguestfs utilise libvirt pour gérer l'appliance. Précédemment
(et en amont) libguestfs exécute qemu directement :

??
libguestfs │
??
│ backend direct │ backend libvirt │
??

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

??
qemu │
??

Fedora en amont 18+
non Fedora RHEL 7+
non RHEL

Le backend libvirt est plus sophistiqué, prenant en charge SELinux/sVirt (voir ci-dessus),
branchement à chaud et plus encore. Il est cependant plus complexe et donc moins robuste.

Si vous rencontrez des problèmes d'autorisations avec le backend libvirt, vous pouvez passer au mode direct
backend en définissant cette variable d'environnement :

exporter LIBGUESTFS_BACKEND=direct

avant d'exécuter un programme libguestfs ou un outil virt.

Comment vous I interrupteur à a fixé / pré-construit appareil?
Cela peut améliorer la stabilité et les performances de libguestfs sur Fedora et RHEL.

À tout moment après l'installation de libguestfs, exécutez les commandes suivantes en tant que root :

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

Définissez maintenant la variable d'environnement suivante avant d'utiliser libguestfs ou tout outil virt :

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

Bien sûr, vous pouvez changer le chemin vers n'importe quel répertoire que vous voulez. Vous pouvez partager l'appareil
sur des machines qui ont la même architecture (par exemple, tous les x86-64), mais notez que libvirt
vous empêchera de partager l'appliance sur NFS en raison de problèmes d'autorisations (donc
passer au backend direct ou ne pas utiliser NFS).

Comment vous I vitesse up libguestfs construit?
De loin, la chose la plus importante que vous puissiez faire est d'installer et de configurer correctement Squid.
Notez que la configuration par défaut fournie avec Squid est de la foutaise, donc la configurer est
pas facultatif.

Un très bon point de départ avec la configuration de Squid est ici :
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

Assurez-vous que Squid est en cours d'exécution et que les variables d'environnement $http_proxy et $ftp_proxy
le désignent.

Avec Squid en cours d'exécution et correctement configuré, les versions de l'appliance devraient être réduites à quelques
minutes.

Comment vous I vitesse up libguestfs construit (Debian) ?

Hilko Bengen suggère d'utiliser "approx" qui est un proxy d'archive Debian
(http://packages.debian.org/approx). Cet outil est documenté sur Debian dans le environ(8)
page de manuel.

LA VITESSE, STOCKAGE SPACE OCCASION BY LIBGUESTFS


Remarque: La plupart des informations de cette section ont été déplacées : performances-invités (1).

Téléchargement or écrire sembler très lent.
Si le disque sous-jacent n'est pas entièrement alloué (par exemple, sparse raw ou qcow2), les écritures peuvent être
lent car le système d'exploitation hôte doit effectuer des allocations de disque coûteuses pendant que vous
l'écriture. La solution consiste à utiliser à la place un format entièrement alloué, c'est-à-dire. brut non clairsemé, ou
qcow2 avec l'option "preallocation=metadata".

Libguestfs Usages trop beaucoup disque espace!
libguestfs met en cache une appliance de grande taille dans :

/var/tmp/.guestfs-

Si la variable d'environnement "TMPDIR" est définie, alors $TMPDIR/.guestfs- est utilisé
à la place.

Il est prudent de supprimer ce répertoire lorsque vous n'utilisez pas libguestfs.

virt-sparsifier semble à faire le image grow à le plein taille of le virtuel disque
Si l'entrée de virt-sparsifier(1) est brut, alors la sortie sera brute clairsemée. S'assurer
vous mesurez la sortie avec un outil qui comprend la rareté tel que "du -sh".
Cela peut faire une énorme différence :

$ ls -lh test1.img
-rw-rw-r--. 1 rjones rjones 100M 8 août 08:08 test1.img
$ du -sh test1.img
3.6 millions de tests1.img

(Comparez la taille apparente 100M par rapport à la taille réelle 3.6M)

Si tout cela vous embrouille, utilisez un format de sortie non fragmenté en spécifiant le --convertir
option, par exemple :

virt-sparsify --convert qcow2 disque.raw disque.qcow2

Constat ne pas virt-redimensionner TRAVAIL on le disque image en place?
Redimensionner une image disque est très délicat -- surtout s'assurer que vous ne perdez pas de données ou
casser le bootloader. La méthode actuelle crée effectivement une nouvelle image disque et copie
les données et le chargeur de démarrage de l'ancien. Si quelque chose ne va pas, vous pouvez toujours y aller
retour à l'original.

Si nous devions faire fonctionner virt-resize sur place, il devrait y avoir des limitations : pour
exemple, vous ne seriez pas autorisé à déplacer des partitions existantes (car déplacer des données à travers
le même disque est le plus susceptible de corrompre les données en cas de panne de courant ou de plantage),
et LVM serait très difficile à prendre en charge (en raison du mappage presque arbitraire
entre le contenu LV et les blocs de disque sous-jacents).

Une autre méthode que nous avons envisagée consiste à placer un instantané sur l'image disque d'origine, donc
que les données d'origine ne sont pas modifiées et que seules les différences sont enregistrées dans l'instantané.
Vous pouvez le faire aujourd'hui en utilisant "qemu-img create" + "virt-resize", mais qemu ne l'est actuellement pas
assez intelligent pour reconnaître quand le même bloc est déjà réécrit dans l'instantané
existe dans le disque de sauvegarde, vous constaterez donc que cela ne vous fait gagner ni espace ni temps.

En résumé, c'est un problème difficile, et ce que nous avons maintenant fonctionne principalement, nous sommes donc réticents
pour le changer.

Constat ne pas virt-sparsifier TRAVAIL on le disque image en place?
Dans libguestfs ≥ 1.26, virt-sparsify peut désormais fonctionner sur les images disque en place. Utilisation:

virt-sparsify --disque sur place.img

Mais vous devriez d'abord lire "SPARSIFICATION EN PLACE" dans virt-sparsifier (1).

PROBLÈMES OUVERTURE STOCKAGE Démarche Qualité


Remote libvirt invités ne peut pas be ouvert.
L'ouverture d'invités libvirt distants n'est pas prise en charge pour le moment. Par exemple, cela ne fonctionnera pas :

guestfish -c qemu://remote/system -d Invité

Pour ouvrir des disques distants, vous devez les exporter d'une manière ou d'une autre, puis vous connecter à l'exportation. Pour
exemple si vous avez décidé d'utiliser NBD :

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

D'autres possibilités incluent ssh (si qemu est assez récent), NFS ou iSCSI. Voir " TÉLÉCOMMANDE
STOCKAGE" dans invités (3).

Comment vous I ouvert this étrange disque la source?
Vous avez une image disque située à l'intérieur d'un autre système qui nécessite un accès via une bibliothèque /
HTTP / REST / API propriétaire, ou est compressé ou archivé d'une manière ou d'une autre. (Un exemple
serait un accès à distance aux images OpenStack sans les télécharger réellement.)

Nous avons un projet frère appelé nbdkit (https://github.com/libguestfs/nbdkit). Cette
project vous permet de transformer n'importe quelle source de disque en serveur NBD. Libguestfs peut accéder à NBD
serveurs directement, par exemple :

poisson invité -a nbd://remote

nbdkit est sous licence libérale, vous pouvez donc le lier ou l'inclure dans des bibliothèques propriétaires
et code. Il dispose également d'une API de plugin simple et stable pour que vous puissiez facilement écrire des plugins contre
l'API qui continuera à fonctionner à l'avenir.

Erreur ouverture VMDK disques : "les usages a vmdk caractéristique qui is ne sauraient soutenu by this qemu Version:
VMDK version 3"
Qemu (et donc libguestfs) ne prend en charge que certaines images disque VMDK. D'autres ne fonctionneront pas,
donnant ceci ou des erreurs similaires.

Idéalement, quelqu'un réparerait qemu pour prendre en charge les dernières fonctionnalités VMDK, mais en attendant
vous avez trois options:

1. Si l'invité est hébergé sur un serveur ESX en direct et accessible, recherchez et téléchargez le
image disque appelée unnom-flat.vmdk. Malgré son nom, il s'agit d'une image disque brute, et
peut être ouvert par n'importe quoi.

Si vous disposez d'une version suffisamment récente de qemu et de libguestfs, vous pourrez peut-être
accéder à cette image disque à distance en utilisant HTTPS ou ssh. Voir « STOCKAGE À DISTANCE » dans
invités (3).

2. Utilisez l'outil propriétaire vdiskmanager de VMware pour convertir l'image au format brut.

3. Utilisez nbdkit avec le plugin propriétaire VDDK pour exporter en direct l'image disque en tant que NBD
la source. Cela devrait vous permettre de lire et d'écrire le fichier VMDK.

UFS disques (comme d'utiliser by BDS) ne peut pas be ouvert.
Le format du système de fichiers UFS a de nombreuses variantes, et celles-ci ne s'identifient pas d'elles-mêmes. Les
Le noyau Linux doit savoir quelle variante d'UFS il doit utiliser, ce que libguestfs ne peut pas
Savoir.

Vous devez passer la bonne option de montage "ufstype" lors du montage de ces systèmes de fichiers.

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

Windows Refs
Windows ReFS est la copie ZFS/Btrfs de Microsoft. Ce système de fichiers n'a pas encore été inversé
conçu et implémenté dans le noyau Linux, et donc libguestfs ne prend pas en charge
ce. Pour le moment, il semble être très rare "à l'état sauvage".

Non ASCII caractères ne le font pas apparaître on VFAT systèmes de fichiers.
Symptômes typiques de ce problème :

· Vous obtenez une erreur lorsque vous créez un fichier dont le nom de fichier contient des caractères non ASCII
caractères, en particulier les caractères non 8 bits des langues asiatiques (chinois, japonais,
etc). Le système de fichiers est VFAT.

· Lorsque vous répertoriez un répertoire à partir d'un système de fichiers VFAT, les noms de fichiers apparaissent sous forme de points d'interrogation.

Il s'agit d'un défaut de conception du système GNU/Linux.

VFAT stocke les noms de fichiers longs sous forme de caractères UTF-16. Lors de l'ouverture ou du retour des noms de fichiers, le
Le noyau Linux doit les traduire en une forme de chaîne de 8 bits. UTF-8 serait le
choix évident, sauf pour les utilisateurs de Linux qui persistent à utiliser des locales non UTF-8 (le
locale n'est pas connue du noyau car c'est une fonction de la libc).

Par conséquent, vous devez indiquer au noyau quelle traduction vous voulez faire lorsque vous montez le
système de fichiers. Les deux méthodes sont le paramètre "iocharset" (qui n'est pas pertinent pour
libguestfs) et le drapeau "utf8".

Donc, pour utiliser un système de fichiers VFAT, vous devez ajouter le drapeau "utf8" lors du montage. Du poisson invité,
utilisation:

> options de montage utf8 /dev/sda1 /

ou sur la ligne de commande guestfish :

poisson invité [...] -m /dev/sda1:/:utf8

ou depuis l'API :

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

Le noyau traduira ensuite les noms de fichiers vers et depuis les chaînes UTF-8.

Nous avons envisagé d'ajouter cette option de montage de manière transparente, mais malheureusement il existe plusieurs
des problèmes pour faire ça :

· Sur certains systèmes Linux, l'option de montage "utf8" ne fonctionne pas. Nous ne faisons pas précisément
comprendre quels systèmes ou pourquoi, mais cela a été signalé de manière fiable par un utilisateur.

· Cela vous empêcherait d'utiliser le paramètre "iocharset" car il est incompatible
avec "utf8". Ce n'est probablement pas une bonne idée d'utiliser ce paramètre, mais nous ne voulons pas
pour l'empêcher.

Non ASCII caractères apparaître as souligner (_) on ISO9660. systèmes de fichiers.
Le système de fichiers n'a pas été préparé correctement avec mkisofs ou genisoimage. Assurez-vous que le
système de fichiers a été créé à l'aide des extensions Joliet et/ou Rock Ridge. libguestfs ne fonctionne pas
nécessitent des options de montage spéciales pour gérer le système de fichiers.

Ne peux pas ouvert Windows invités qui utilisé NTFS.
Vous voyez des erreurs telles que :

mount : type de système de fichiers inconnu 'ntfs'

Sur Red Hat Enterprise Linux ou CentOS, vous devez installer le libguestfs-winsupport
paquet.

Ne peux pas ouvert or inspecter RHEL 7 clients.
Ne peux pas ouvert Linux/Unix invités qui utilisé XFS.
Les invités RHEL 7, et tout autre invité utilisant XFS, peuvent être ouverts par libguestfs, mais vous
devez installer le package "libguestfs-xfs".

EN UTILISANT LIBGUESTFS IN VOTRE PROPRE PROGRAMMES


La API a des centaines of Méthodes, De do I début?
Nous vous recommandons de commencer par lire l'aperçu de l'API : "API OVERVIEW" dans invités (3).

Bien que l'aperçu de l'API couvre l'API C, il vaut toujours la peine d'être lu même si vous êtes
va utiliser un autre langage de programmation, car l'API est la même, juste avec un simple
modifications logiques des noms des appels :

C guestfs_ln_sf (g, cible, nom du lien);
Python g.ln_sf (cible, nom du lien);
OCaml g#ln_sf nom du lien cible ;
Perl $g->ln_sf (cible, nom du lien);
Shell (poisson invité) ln-sf nom du lien cible
PHP guestfs_ln_sf ($g, $cible, $linkname);

Une fois que vous vous êtes familiarisé avec la présentation de l'API, vous devriez consulter cette liste de
points pour d'autres liaisons linguistiques : "UTILISATION DE LIBGUESTFS AVEC D'AUTRES LANGUES DE PROGRAMMATION" dans
invités (3).

Pouvez I utilisé libguestfs in my propriétaire / fonds à capital fermé la source / commercial programme?
En général, oui. Cependant, il ne s'agit pas d'un avis juridique - lisez la licence fournie avec
libguestfs, et si vous avez des questions spécifiques, contactez un avocat.

Dans l'arborescence des sources la licence se trouve dans le fichier "COPYING.LIB" (LGPLv2+ pour la librairie et
liaisons) et "COPYING" (GPLv2+ pour les programmes autonomes).

DÉBOGAGE LIBGUESTFS


Aide, c'est ne sauraient travail!
Si aucun programme libguestfs ne semble fonctionner du tout, exécutez le programme ci-dessous et collez le
Achevée, non édité sortie dans un e-mail à "libguestfs" @ "redhat.com":

outil de test libguestfs

Si une opération particulière échoue, fournissez toutes les informations de cette liste de contrôle, dans un e-mail
à "libguestfs" @ "redhat.com":

1. Qu'essayez-vous de faire?

2. Quelle(s) commande(s) exacte(s) avez-vous exécutées ?

3. Quelle était l'erreur ou la sortie précise de ces commandes ?

4. Activez le débogage, exécutez à nouveau les commandes et capturez le complet sortie. Do ne sauraient
éditer le sortie.

exporter LIBGUESTFS_DEBUG=1
exporter LIBGUESTFS_TRACE=1

5. Incluez la version de libguestfs, la version du système d'exploitation et comment vous avez installé
libguestfs (par exemple à partir des sources, "yum install", etc.)

Comment do I déboguer quand en utilisant tous libguestfs Danse or outil (par exemple. virt-v2v or virt-df) ?
Il existe deux variables d'environnement "LIBGUESTFS_*" que vous pouvez définir afin d'obtenir plus
informations de libguestfs.

"LIBGUESTFS_TRACE"
Définissez ceci sur 1 et libguestfs imprimera chaque commande/appel d'API dans un format qui
est similaire aux commandes guestfish.

"LIBGUESTFS_DEBUG"
Définissez ce paramètre sur 1 afin d'activer des quantités massives de messages de débogage. Si vous pensez
il y a un problème à l'intérieur de l'appliance libguestfs, alors vous devriez utiliser ceci
option.

Pour les définir à partir du shell, faites ceci avant d'exécuter le programme :

exporter LIBGUESTFS_TRACE=1
exporter LIBGUESTFS_DEBUG=1

Pour csh/tcsh, les commandes équivalentes seraient :

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

Pour plus d'informations, voir : "VARIABLES D'ENVIRONNEMENT" dans invités (3).

Comment do I déboguer quand en utilisant poisson invité ?
Vous pouvez utiliser les mêmes variables d'environnement ci-dessus. Vous pouvez également utiliser les options de poisson invité
-x (pour tracer les commandes) ou -v (pour obtenir la sortie de débogage complète), ou les deux.

Pour plus d'informations, voir: poisson invité (1).

Comment do I déboguer quand en utilisant le API ?
Appelez "guestfs_set_trace" dans invités(3) pour activer les traces de commandes, et/ou
"guestfs_set_verbose" dans invités(3) pour activer les messages de débogage.

Pour de meilleurs résultats, appelez ces fonctions le plus tôt possible, juste après avoir créé le
guestfs gère si vous le pouvez, et certainement avant d'appeler launch.

Comment do I capturer déboguer sortie ainsi que mettre it développement my enregistrement système?
Utilisez l'API d'événement. Pour des exemples, voir : "PARAMETRAGE DES RAPPELS POUR GERER LES EVENEMENTS" dans invités(3)
et par exemples/debug-logging.c programme dans les sources de libguestfs.

Creusement profond développement le appareil botte processus.
Activez le débogage, puis lisez cette documentation sur le processus de démarrage de l'appliance :
guestfs-internes (1).

libguestfs bloque or échoue pendant exécuter/lancer.
Activez le débogage et regardez la sortie complète. Si vous ne pouvez pas comprendre ce qui se passe,
déposer un rapport de bogue, y compris le complet sortie de outil de test libguestfs (1).

Débogage libvirt
Si vous utilisez le backend libvirt et que libvirt échoue, vous pouvez activer
débogage par édition /etc/libvirt/libvirtd.conf.

Si vous exécutez en tant que non-root, vous devez alors éditer un fichier différent. Créer
~/.config/libvirt/libvirtd.conf contenant:

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

Tuez toute session (non root) libvirtd en cours d'exécution, et la prochaine fois que vous exécuterez libguestfs
commande, vous devriez voir une grande quantité d'informations de débogage utiles de libvirtd dans
/tmp/libvirtd.log

CONCEPTION/INTERNES OF LIBGUESTFS


Voir aussi guestfs-internes (1).

Constat ne le font pas you do peut à travers le FUSE / système de fichiers interface?
Nous proposons une commande appelée invitémonter(1) qui vous permet de monter des systèmes de fichiers invités sur le
hôte. Ceci est implémenté en tant que module FUSE. Pourquoi ne pas simplement mettre en œuvre l'ensemble de
libguestfs utilisant ce mécanisme, au lieu d'avoir l'API grande et plutôt compliquée ?

Les raisons sont doubles. Premièrement, libguestfs propose des appels d'API pour faire des choses comme
créer et supprimer des partitions et des volumes logiques, qui ne rentrent pas dans un système de fichiers
modèle très facilement. Ou plutôt, vous pourriez les intégrer : par exemple, créer une partition
pourrait être mappé sur "mkdir /fs/hda1" mais vous devrez alors spécifier une méthode à choisir
la taille de la partition (peut-être "echo 100M > /fs/hda1/.size"), et le type de partition,
secteurs de début et de fin, etc., mais une fois que vous avez fait cela, l'API basée sur le système de fichiers commence à
semble plus compliqué que l'API basée sur les appels que nous avons actuellement.

La deuxième raison est l'efficacité. FUSE lui-même est raisonnablement efficace, mais il le fait
faire beaucoup de petits appels indépendants dans le module FUSE. En guestmount, ceux-ci doivent
être traduit en messages à l'appliance libguestfs qui a une grande surcharge (en temps
et allers-retours). Par exemple, la lecture d'un fichier en morceaux de 64 Ko est inefficace car chaque
morceau se transformerait en un seul aller-retour. Dans l'API libguestfs, c'est bien plus
efficace pour télécharger un fichier ou un répertoire entier via l'un des appels de streaming comme
"guestfs_download" ou "guestfs_tar_out".

Constat ne le font pas you do peut à travers GVFS ?
Les problèmes sont similaires aux problèmes avec FUSE.

GVFS est une meilleure abstraction que POSIX/FUSE. Il existe un backend FTP pour GVFS, qui est
encourageant car FTP est conceptuellement similaire à l'API libguestfs. Cependant, le GVFS
Le backend FTP établit plusieurs connexions simultanées afin de garder l'interactivité, ce qui
nous ne pouvons pas le faire facilement avec libguestfs.

Constat vous I écrire à le disque, pair bien que I ajoutée it lecture seulement?
Constat "--ro" apparaître à avons aucune effet?
Lorsque vous ajoutez un disque en lecture seule, libguestfs place une superposition inscriptible au-dessus du
disque sous-jacent. Les écritures entrent dans cette superposition et sont ignorées lorsque la poignée est fermée
(ou sorties "guestfish" etc.).

Il y a deux raisons de procéder de cette façon : Premièrement, les disques en lecture seule ne sont pas possibles dans
de nombreux cas (par exemple, IDE ne les prend tout simplement pas en charge, vous ne pouvez donc pas avoir un IDE émulé
disque en lecture seule, bien que cela ne soit pas courant dans les installations réelles de libguestfs).

Deuxièmement et plus important encore, même si les disques en lecture seule étaient possibles, vous ne voudriez pas
eux. Le montage de n'importe quel système de fichiers qui a un journal, même "mount -o ro", provoque des écritures sur
le système de fichiers car le journal doit être relu et les métadonnées mises à jour. Si le disque
était vraiment en lecture seule, vous ne seriez pas en mesure de monter un système de fichiers sale.

Pour le rendre utilisable, nous créons la superposition comme un endroit pour stocker temporairement ces écritures, et
puis nous le jetons par la suite. Cela garantit que le disque sous-jacent est toujours intact.

Notez également qu'il existe un test de régression pour cela lors de la construction de libguestfs (dans
"tests/qemu"). C'est l'une des raisons pour lesquelles il est important que les conditionneurs exécutent la suite de tests.

Le "--ro" faire TOUTE disques lecture seulement?
Non! L'option "--ro" n'affecte que les disques ajoutés sur la ligne de commande, c'est-à-dire. en utilisant "-a" et
option "-d".

Dans guestfish, si vous utilisez la commande "add", alors le disque est ajouté en lecture-écriture (sauf si vous
spécifiez explicitement l'indicateur "readonly:true" avec la commande).

Pouvez I utilisé "poisson invité --ro" as a manière à sauvegarde my virtuel Machines?
Habituellement, c'est ne sauraient une bonne idée. La question est répondue plus en détail dans ce mailing
publication de la liste : https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

Voir aussi la question suivante.

Constat ne peut pas I courir fsck on a le travail système de fichiers en utilisant "poisson invité --ro" ?
Cette commande sera généralement ne sauraient travail:

guestfish --ro -a /dev/vg/my_root_fs exécuter : fsck /dev/sda

La raison en est que qemu crée un instantané sur le système de fichiers d'origine, mais il
ne crée pas un instantané ponctuel strict. Blocs de données sur le sous-jacent
système de fichiers sont lus par qemu à différents moments au fur et à mesure que l'opération fsck progresse, avec l'hôte
écrit entre les deux. Le résultat est que fsck voit une corruption massive (imaginaire, pas réelle !)
et échoue.

Ce que vous devez faire est de créer un instantané ponctuel. S'il s'agit d'un volume logique, utilisez
un instantané LVM2. Si le système de fichiers se trouve dans quelque chose comme un fichier btrfs/ZFS,
utilisez un instantané btrfs/ZFS, puis exécutez le fsck sur l'instantané. En pratique, vous ne
besoin d'utiliser libguestfs pour cela - il suffit de lancer /sbin/fsck directement.

La création d'instantanés ponctuels de périphériques hôtes et de fichiers n'entre pas dans le cadre de
libguestfs, bien que libguestfs puisse opérer sur eux une fois qu'ils sont créés.

Ce qui est le différence jusqu'à XNUMX fois poisson invité ainsi que virt-sauvetage ?
Beaucoup de gens sont déconcertés par les deux outils superficiellement similaires que nous proposons :

$ guestfish --ro -a invité.img
> Cours
> fsck /dev/sda1

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

Et la question connexe qui se pose alors est de savoir pourquoi vous ne pouvez pas saisir de commandes shell complètes
avec toutes les --options dans guestfish (mais vous pouvez dans virt-sauvetage(1)).

poisson invité(1) est un programme offrant un accès structuré au invités(3) API. Ça arrive
être aussi un bon shell interactif, mais son objectif principal est un accès structuré à partir de
scripts shell. Pensez-y plus comme une liaison de langage, comme Python et d'autres liaisons,
mais pour la coquille. Le facteur clé de différenciation de guestfish (et l'API libguestfs dans
général) est la capacité d'automatiser les changements.

virt-sauvetage(1) est un moyen gratuit pour tous de démarrer l'appliance libguestfs et de faire
des modifications arbitraires à votre VM. Ce n'est pas structuré, vous ne pouvez pas l'automatiser, mais pour faire
des correctifs ad-hoc rapides à vos invités, cela peut être très utile.

Mais, libguestfs a également une "porte dérobée" dans l'appliance vous permettant d'envoyer arbitrairement
commandes shell. Ce n'est pas aussi flexible que virt-rescue, car vous ne pouvez pas interagir avec le
commandes shell, mais le voici quand même :

> debug sh "cmd arg1 arg2 ..."

Notez que vous devriez ne sauraient compter sur cela. Il pourrait être supprimé ou modifié à l'avenir. Si votre
programme a besoin d'une opération, veuillez l'ajouter à l'API libguestfs à la place.

Ce qui est le affaire avec "poisson invité -je"?
Constat chat-virt uniquement TRAVAIL on a réal VM image, mais virt-df vos contrats on tous disque image?
Quoi "non racine dispositif trouvé in this d'exploitation combustion propre image" signifier?
Ces questions sont toutes liées à un niveau fondamental qui peut ne pas être immédiatement
évident.

Au invités(3) Au niveau de l'API, une "image disque" n'est qu'un amas de partitions et de systèmes de fichiers.

En revanche, lorsque la machine virtuelle démarre, elle monte ces systèmes de fichiers dans un
hiérarchie telles que :

/ (/dev/sda2)

├── / boot (/dev/sda1)

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

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

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

(ou des lettres de lecteur sous Windows).

L'API voit tout d'abord l'image disque au niveau de la « pile de systèmes de fichiers ». Mais c'est aussi
a un moyen d'inspecter l'image disque pour voir si elle contient un système d'exploitation, et comment le
les disques sont montés au démarrage du système d'exploitation : "INSPECTION" dans invités (3).

Les utilisateurs attendent certains outils (comme chat-virt(1)) pour travailler avec les chemins de VM :

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

Comment virt-cat sait-il que / var est une partition séparée? L'astuce est que virt-cat
effectue une inspection sur l'image disque et l'utilise pour traduire correctement le chemin.

Certains outils (notamment chat-virt(1), virt-éditer(1), virt-ls(1)) utiliser l'inspection pour cartographier la VM
chemins. D'autres outils, tels que virt-dfde Géographie (1) et avec la systèmes de fichiers virt(1) fonctionner entièrement à la
niveau brut "gros tas de systèmes de fichiers" de l'API libguestfs, et n'utilisez pas l'inspection.

poisson invité(1) est dans un juste milieu intéressant. Si vous utilisez le -a ainsi que -m ligne de commande
options, alors vous devez dire à guestfish exactement comment ajouter des images disque et où monter
partitions. Il s'agit du niveau brut de l'API.

Si vous utilisez le -i option, libguestfs effectue une inspection et monte les systèmes de fichiers pour
vous.

L'erreur "aucun périphérique racine trouvé dans cette image du système d'exploitation" est liée à cela. Ce
signifie que l'inspection n'a pas pu localiser un système d'exploitation dans l'image disque que vous avez donnée
ce. Vous pouvez voir cela à partir de programmes comme virt-cat si vous essayez de les exécuter sur quelque chose
qui est juste une image disque, pas une image disque de machine virtuelle.

Quoi do ces "déboguer*" ainsi que "interne-*" fonctions cobots?
Certaines fonctions sont utilisées pour le débogage et à des fins internes qui sont ne sauraient
partie de l'API stable.

Les fonctions "debug*" (ou "guestfs_debug*"), principalement "guestfs_debug" dans invitésde Géographie (3) et avec la
une poignée d'autres sont utilisés pour le débogage de libguestfs. Bien qu'ils ne fassent pas partie du
API stable et peut donc changer ou être supprimée à tout moment, certains programmes peuvent vouloir appeler
ceux-ci en attendant que des fonctionnalités soient ajoutées à libguestfs.

Les fonctions "internal-*" (ou "guestfs_internal_*") sont uniquement destinées à être utilisées par libguestfs
lui-même. Il n'y a aucune raison pour que les programmes les appellent, et les programmes ne devraient pas essayer d'utiliser
eux. Les utiliser causera souvent de mauvaises choses, tout en ne faisant pas partie du
API stable documentée.

DÉVELOPPEURS


do I envoyer patchs ?
Veuillez envoyer les correctifs à la liste de diffusion libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
il y aura un délai jusqu'à ce que votre publication soit approuvée manuellement.

Veuillez ne le font pas utilisé github tirer demandes - l'ont sera be ignoré. Les raisons sont (a) nous voulons
pour discuter et disséquer les correctifs sur la liste de diffusion, et (b) les demandes d'extraction de github se transforment en
merge commits mais nous préférons avoir un historique linéaire.

Comment do I proposer a fonctionnalité?
Les nouvelles fonctionnalités importantes auxquelles vous avez l'intention de contribuer doivent être discutées sur la liste de diffusion
d'abord (https://www.redhat.com/mailman/listinfo/libguestfs). Cela évite les déceptions
et du travail gaspillé si nous ne pensons pas que la fonctionnalité s'intégrerait dans le projet libguestfs.

Si vous souhaitez suggérer une fonctionnalité utile mais ne souhaitez pas écrire le code, vous pouvez déposer un
bug (voir « OBTENIR DE L'AIDE ET SIGNALER DES BOGUES ») avec « RFE : » au début du résumé
ligne.

Qui vous commettre à libguestfs idiot ?
Environ 5 personnes ont un accès commit à github. Les correctifs doivent être affichés sur la liste en premier
et ACK. La politique d'ACK et de diffusion des correctifs est décrite ici :

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

Pouvez I fourche libguestfs ?
Bien sûr vous pouvez. Git facilite le fork de libguestfs. Github le rend encore plus facile.
C'est bien si vous nous parlez sur la liste de diffusion des fourchettes et de leurs raisons.

DIVERS DES QUESTIONS


Pouvez I moniteur le le travail disque activité of a virtuel click en utilisant libguestfs ?
Une demande courante est de pouvoir utiliser libguestfs pour surveiller l'activité du disque en direct d'un
invité, par exemple, pour être averti chaque fois qu'un invité crée un nouveau fichier. Libguestfs
ne sauraient fonctionnent comme certains l'imaginent, comme vous pouvez le voir sur ce schéma :

??
│ programme de surveillance utilisant libguestfs │
??

┌──────────────────────┐
│ VM en direct │ │ appliance libguestfs │
├──────────────────────┤
│ noyau (1)│ │ noyau de l'appliance (2) │
└──────────────────────┘
↓ ↓ (r/o connexion)
??
| image disque |
??

Ce scénario est sûr (tant que vous définissez l'indicateur "lecture seule" lors de l'ajout du lecteur).
Cependant, le noyau de l'appliance libguestfs (2) ne voit pas toutes les modifications apportées au disque
image, pour deux raisons :

je. Le noyau de la VM (1) peut mettre en cache les données en mémoire, afin qu'elles n'apparaissent pas dans l'image disque.

ii. Le noyau de l'appliance libguestfs (2) ne s'attend pas à ce que l'image disque change
en dessous, de sorte que son propre cache n'est pas mis à jour comme par magie même lorsque le noyau de la VM (1)
met à jour l'image disque.

La seule solution prise en charge est de redémarrer l'ensemble de l'appliance libguestfs chaque fois que vous
voulez regarder les changements dans l'image disque. Au niveau de l'API qui correspond à l'appel
"guestfs_shutdown" suivi de "guestfs_launch", qui est une opération lourde (voir
aussi performances-invités(3)).

Il y a quelques hacks non pris en charge que vous pouvez essayer si relancer l'appliance est vraiment trop
cher:

· Appelez "guestfs_drop_caches (g, 3)". Cela provoque l'aide de toutes les données mises en cache par libguestfs
le noyau de l'appliance (2) doit être supprimé, il revient donc à l'image disque.

Cependant, cela ne suffit pas, car qemu met également en cache certaines données. Tu
devra également patcher libguestfs pour (ré)activer le mode "cache=unsafe". Voir:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· Utilisez plutôt un outil comme virt-bmap.

· Exécutez un agent à l'intérieur de l'invité.

Rien n'aide si l'invité fait des changements plus fondamentaux (par exemple, en supprimant des systèmes de fichiers).
Pour ce genre de choses, vous devez relancer l'appareil.

(Notez qu'il y a un troisième problème que vous devez utiliser des instantanés cohérents pour vraiment examiner
images de disque en direct, mais c'est un problème général avec l'utilisation de libguestfs contre n'importe quel disque en direct
image.)

Utilisez guestfs-faq en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad