====== 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