J'ai un répertoire rempli de données /var/backups/disk1
que je veux convertir en une image de disque virtuel que je pourrai ensuite démarrer en utilisant QEMU ou KVM (le répertoire contient le système de fichiers pour une machine virtuelle, copié via rsync).
Bien qu'il existe de nombreuses instructions pour convertir un disque physique complet en disque virtuel, empaqueter uniquement le contenu d'un seul répertoire en une image de disque virtuel s'avère beaucoup plus difficile que prévu. Des idées?
Soit dit en passant, je sais que je peux utiliser qemu-img
pour convertir un périphérique de bloc en disque virtuel (par exemple, qemu-img convert -f /dev/sdc -O qcow2 disk.qcow2
), donc si seulement je pouvais faire en sorte que le répertoire /var/backups/disk1
apparaisse comme un périphérique de bloc, alors théoriquement, je devrais pouvoir atteindre mon objectif en utilisant qemu-img
. J'ai pensé à des moyens créatifs d'exposer le répertoire en tant que périphérique de bloc à l'aide de NBD ou d'un périphérique de bouclage, mais je n'ai pas réussi.
qemu-img
etfallocate
sont un peu plus pratique quedd
.On dirait que libguestfs peut le faire, voir virt-make-fs (1) et peut - être virt-copy-in (1) .
la source
virt-make-fs
à partir de l'qcow2
exemple de libguestfs/server//a/332114/163884 l'a mentionné, mais voici un exemple complet:
Notez comment
sudo
n'est pas requis, sauf pour l'installation et les solutions de contournement des bogues Ubuntu.J'ai ensuite vérifié que QEMU peut réellement le lire avec:
Je peux ensuite monter l'image dans QEMU Linux et lire le fichier.
virt-make-fs
exemple extCet outil génial peut également créer des systèmes de fichiers ext bruts, par exemple:
que nous pouvons vérifier directement sur l'hôte avec:
Minimisation de la taille de l'image
Une très bonne caractéristique de
virt-make-fs
est qu'il essaie automatiquement de minimiser la taille de l'image si c'est ce que nous voulons:donc:
me dit que l'image est remplie à 82%:
Nous pouvons facilement ajouter de l'espace supplémentaire en plus du minimum avec
--size-=+
:frais généraux de journal ext4
Le manuel mentionne également que:
et il est intéressant de vérifier cela avec:
qui produit:
nous voyons donc que l'ext4 est sorti beaucoup plus gros.
libguestfs bogues Ubuntu
Maintenant, pour le revers de la médaille: il ne semble pas y avoir de responsable Ubuntu actuellement et la bibliothèque est généralement boguée sur Ubuntu.
sudo
n'est pas en théorie requis, mais il est requis en raison d'un bogue de package Ubuntu, sauf si nous faisons une solution de contournement: /ubuntu/1046828/how-to-run-libguestfs-tools-tools-such-as- virt-make-fs-without-sudo / 1046829 # 1046829Après cela, sans nos solutions de contournement, 18.04 (mais pas 16.04) échoue avec: https://bugzilla.redhat.com/show_bug.cgi?id=1591617
en raison d'un bogue déjà corrigé en amont.
Testé dans Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3, QEMU 1: 2.11 + dfsg-1ubuntu7.3.
la source
Utiliser la stratégie de Michaels dans Fedora 23:
Cela crée un système de fichiers ext2, que vous pouvez monter dans un répertoire:
Maintenant / mnt contient tous vos fichiers
la source
file.fs
c'est un fichier, lamount
commande ne devrait-elle pas êtremount -o loop file.fs /mnt
:?Qu'en est-il de l'accès au répertoire en tant que partage réseau à partir d'une machine virtuelle également montée sur votre image de disque virtuel cible? Vous pouvez alors effectuer une simple copie du partage sur l'image disque montée.
la source
Je préfère (et utilise) la réponse de Ciro Santilli, mais voici quelque chose qui fonctionne avec un
guestfish
shell:la source