Redimensionnement des images NTFS (Xen, KVM, Qemu, whatever)

Bon d'accord, une note similaire est déjà disponible - Redimensionnement des images Xen - ; mais cette fois-ci ça se complique :

  • Le fichier loopback attaché à la machine virtuelle ne représente plus une partition unique mais bien le périphérique disque complet : MBR, table des partitions, etc
  • Le système de fichier utilisé est NTFS

Avant d'aller plus loin, il vous faudra les outils fdisk/cfdisk, kpartx, losetup et ntfsresize. Je fais confiance à votre distribution pour vous les fournir.

  • Création de l'espace supplémentaire : contrairement à l'ancienne note, on utilise cette fois-ci un sparse file (clairsemé en français). Ça signifie juste que le fichier n'est pas écrit dans sa totalité.
    $ dd if=/dev/zero of=additional-10G.img bs=1 count=0 seek=10G
    0+0 records in
    0+0 records out
    0 bytes (0 B) copied, 5.0898e-05 s, 0.0 kB/s
  •  On concatène ensuite l'ancienne image avec l'espace supplémentaire que l'on vient de créer :
    $ cat root.img additional-10G.img > new.img
  •  À partir de ce moment, on a l'équivalent d'un disque plus grand de 10G mais contenant toujours la même table de partitions. La plupart des outils intervenant à ce niveau intervenant au niveau d'un block device (périphérique), on va tout simplement rendre accessible notre fichier new.img en tant que périphérique par l'intérmédiaire de losetup.
    $ sudo losetup -f 
    /dev/loop3
    

    $ sudo losetup /dev/loop3 new.img

  • Notre fichier new.img est maintenant accessible comme périphérique système par l'intérmédiaire de /dev/loop3. Il est maintenant possible d'utiliser les outils unix standard pour le redimensionnement de la partition.
  • fdisk? cfdisk? À vous de décider. Il faut juste prendre en considération 2 éléments :
    • Ce type d'outils permet rarement le redimensionnement. Dans ce cas, il suffit de supprimer la partition puis de la réécrer. On démarrera la partition au niveau du même cylindre que précédemment (faîtes attention à cela), et on la cloturera au minimun au niveau du cylindre précédent + 1 (il s'agit quand même d'ajouter de l'espace disque).
    • Penser bien à utiliser NTFS (07) comme type de partition. Windows n'en voudra pas sans cela.
  • Hop, le redimensionnement de la partition est terminée. Il faut maintenant travailler au niveau du système de fichiers. Pour cela, il nous faut accèder directement à la partition en passant par kpartx.
    $ kpartx -a /dev/loop3
  •  Il est maintenant possible d'accèder à la 1ère partition du disque en utilisant le périphérique /dev/mapper/loop3p1. Un coup de ntfsresize et hop, on y est (j'y vais en bourrin histoire de prendre tout l'espace mis à disposition par la partition).
    $ ntfsresize /dev/mapper/loop3p1
  •  Un peu de ménage et c'est fini
    $ kpartx -d /dev/loop3
    

    $ losetup -d /dev/loop3 $ mv root.img old.img $ mv new.img root.img

 Lors du prochain redémarrage, Windows effectuera un chkdisk de votre volume.

Commentaires

Thanks. Nice article

Thanks. Nice article

Poster un nouveau commentaire

Le contenu de ce champ est gardé secret et ne sera pas montré publiquement.