====== 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 =====
* http://backreference.org/2010/09/25/access-partitions-in-non-disk-block-devices-with-kpartx/
* http://www.nsas.de/dokuwiki/doku.php/linux:losetup
* http://tinyapps.org/docs/mount_partitions_from_disk_images.html
* http://wiki.osdev.org/Loopback_Device
===== Dans la même veine =====
Vous voudrez peut-être jeter un coup d’œil à la page [[sysadmin:tips:qcow2]] si les disques de vos VMs sont en qcow et non en raw