Montage d'une partition VDI/VMDK
Mise à jour le Vendredi, 03 Février 2012 11:41
Problématique
Avec l'utilisation croissante de la virtualisation, nous rencontrons de plus en plus souvent des fichiers de type VDI (VirtualBox) ou VMDK (VMWare), qui représentent un disque d'une machine virtuelle. Plusieurs questions peuvent se poser. Notamment, en supposant que la machine virtuelle n'est pas démarrée :
- comment faire une sauvegarde ?
- comment examiner le contenu du disque/de la partition ?
Ces questions sont loin d'être innocentes. Il existe de nombreuses situations dans lesquelles il est souhaitable d'accéder au contenu de l'un de ces fichiers, sans pour autant démarrer la machine virtuelle (ce qui peut d'ailleurs se révéler impossible pour une foule de raisons).
Une solution : pilote "network block device" et Qemu
Le pilote network block device (nbd pour faire court) permet d'accéder à une ressource sur le réseau comme s'il s'agissait d'un périphérique local en mode bloc. Pour plus d'informations, se référer par exemple au site de l'Université de Cincinatti (attention : informations anciennes, peut-être obsolètes).
Qemu est un émulateur bien connu. De même, nous ne nous attarderons pas sur cet outil, sauf sur les caractéristiques qui nous intéressent :
- qemu reconnaît de nombreux formats d'images disques, dont VDI et VMDK.
- qemu peut exporter une image via nbd et la commande qemu-nbd.
La conjonction de ces deux caractéristiques nous permet de monter très facilement des images VirtualBox et VMWare.
Pilote NBD dans le noyau
Il convient de s'assurer que le pilote nbd est bien activé dans le noyau Linux :
Device Drivers -->
Block devices -->
<M> Network block device support
Le pilote peut être chargeable (comme ci-dessus) ou inclus statiquement dans le noyau.
Activer le module :
# modprobe nbd
Il est à noter que, selon les distributions de GNU/Linux, il peut s'avérer nécessaire de transmettre le paramètre max_part (nombre maximal de partition) non nul lors du chargement du module :
# modprobe nbd max_part=8
Utilisation de qemu-nbd
Une fois le module nbd chargé, il suffit d'invoquer qemu-nbd en indiquant sur quel descripteur de périphérique connecter l'image du disque. Dans l'exemple ci-dessous, nous utilisons le descripteur /dev/nbd1 :
# qemu-nbd -c /dev/nbd1 image.vdi
L'option -c de qemu-nbd signifie "connecter". La déconnexion d'une image se fait à l'aide de l'option -d :
# qemu-nbd -d /dev/nbd1
Une fois l'image connectée, il est conseillé de vérifier que tout s'est bien passé. Le pilote nbd affiche (via syslog) la liste des partitions reconnues sur l'image. Ainsi, nous obtenons :
nbd1: queue cleared
nbd1: p1
Ce qui signifie que nbd a identifié une partition sur l'image connectée à /dev/nbd1. La partition est accessible via /dev/nbd1p1.
Si vous disposez de mmls ou de fsstat (commandes issues de Sleuthkit), vous pouvez examiner les informations relatives à ce disque et les partitions qu'il contient (ici une seule) :
# mmls /dev/nbd1
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Description
00: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000000 0000000062 0000000063 Unallocated
02: 00:00 0000000063 0031439204 0031439142 NTFS (0x07)
03: ----- 0031439205 0031457279 0000018075 Unallocated
# fsstat /dev/nbd1p1
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: NTFS
Volume Serial Number: E41431CA1431A08A
OEM Name: NTFS
Version: Windows XP
METADATA INFORMATION
--------------------------------------------
First Cluster of MFT: 786432
First Cluster of MFT Mirror: 1964946
Size of MFT Entries: 1024 bytes
Size of Index Records: 4096 bytes
Range: 0 - 19968
Root Directory: 5
La partition peut bien évidemment être montée comme un disque normal :
# mount -o ro /dev/nbd1p1 /mnt/partition
Note : nous n'avons pas testé l'écriture sur une partition VDI par le biais de qemu-nbd. Soyez donc prudents à cet égard.
Une fois la partition reliée logiquement au système d'exploitation, nous pouvons mener à bien nos investigations.
| Suivant > |
|---|



