Table des matières

Effectuer des opérations sur des images de disque raw

Dans le cadre d'utilisations de VMs KVM, on utilise souvent des images disques qcow2 ou encore raw.

Il existe des outils rapides de conversion d'un type vers l'autre, comme par exemple pour convertir un qcow2 en raw :

qemu-img convert -O raw fichier.qcow2 fichier.raw

ou encore l'opération inverse :

qemu-img convert -O qcow2 fichier.raw fichier.qcow2

Effectuer un fsck sur une partition d'un fichier RAW

Pour dire a linux d'utiliser un fichier en tant que périphérique, on utilise un périphérique loop. Pour connaitre le premier périphérique loop disponible, utiliser la commande

losetup -f

qui devrait renvoyer quelque chose comme :

#losetup -f
/dev/loop0

Nous pouvons donc utiliser /dev/loop0. Pour assigner le fichier raw a /dev/loop0 :

losetup /dev/loop0 fichier.raw

On peut utiliser la commande

losetup -a

pour vérifier l'utilisation de lo0 : elle devrait fournir un résultat similaire à :

# losetup -a
/dev/loop0: [fc00]:7077927 (/mnt/data/fichier.raw)

On utilise ensuite kpartx pour lire les partitions de loop0 et créer les périphériques correspondants afin que nous puissions y accéder :

kpartx -av /dev/loop0

qui devrait affichier quelque chose comme (dépendant des partitions présentes) :

# kpartx -av /dev/loop0
add map loop0p1 (251:0): 0 15624928 linear /dev/loop0 32
add map loop0p2 (251:1): 0 3906176 linear /dev/loop0 15627008
add map loop0p3 (251:2): 0 19531264 linear /dev/loop0 19535104
add map loop0p4 (251:3): 0 39062400 linear /dev/loop0 39068416

On peut ensuite accéder aux partitions via /dev/mapper/loop0p1 a /dev/mapper/loop0p4 dans notre exemple.

Ainsi pour effectuer un fsck sur la partition /dev/mapper/loop0p4 :

# e2fsck -f /dev/mapper/loop0p4
e2fsck 1.41.11 (14-Mar-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/loop0p4: 9138/1224000 files (17.1% non-contiguous), 1175780/4882800 blocks
Apres utilisation, il faut “désaffecter” le fichier de loop0, en utilisant les commandes suivantes :
kpartx -dv /dev/loop0
losetup -d /dev/loop0

On peut ensuite vérifier de nouveau avec la commande “losetup -a” que loop0 n'est plus utilisé :

Le résultat de ces commandes devrait ressembler à :

root@kvm-3:~ # kpartx -dv /dev/loop0
del devmap : loop0p4
del devmap : loop0p3
del devmap : loop0p2
del devmap : loop0p1
root@kvm-3:~ # losetup -d /dev/loop0
root@kvm-3:~ # losetup -a
root@kvm-3:~ #

Références

Dans la même veine

Vous voudrez peut-être jeter un coup d’œil à la page Monter une image disque qcow2 si les disques de vos VMs sont en qcow et non en raw