Resize IMG file

De Sn4kY
Révision datée du 12 avril 2018 à 14:58 par Sn4kY (discussion | contributions) (Page créée avec « = Comment redimensionner un fichier .IMG ? = == Agrandir l'espace disque == Assurez vous que le fichier n'est plus utilisé (ni par une VM, ni monté dans un loop device)... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Comment redimensionner un fichier .IMG ?

Agrandir l'espace disque

Assurez vous que le fichier n'est plus utilisé (ni par une VM, ni monté dans un loop device)

(faites-en une copie, on sait jamais)

cp /my/file.img /my/file.img.backup

Agrandissez la taille du fichier IMG (exemple donné pour étendre le fichier à 50Go (50000 x 1Mb) :

dd if=/dev/zero of=/my/file.img bs=1M conv=notrunc count=1 seek=50000


Étendre le filesystem

Deux possibilités s'offrent a présent, le fichier contient, ou pas, un partitionnement propre.

Pour le vérifier : fdisk -l /my/file.img Si fdisk sors ce genre de choses

Disk /my/file.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

                                    Device Boot      Start         End      Blocks   Id  System
/my/file.img1   *           1          25      200781   83  Linux
/my/file.img2              26         156     1052257+  82  Linux swap / Solaris
/my/file.img3             157        6527    51175057+  83  Linux

Sinon,


Le fichier contient des partitions

Si le fichier contient des partitions

  1. Vérifier le FS, puis mapper le fichier dans un loop device (la sortie indique les mappings réalisés avec le partitionnement du fichier, on va prendre loop0 comme exemple, nous voulons resizer la 3eme partition)
e2fsck -f /dev/loop0p3
kpartx -av /my/file.img
  1. pour étendre la partition, il faut en réalité la supprimer, puis la recréer. Cette opération ne supprime PAS les données, si le bloc de début de la partition reste le même et que le bloc de fin se est plus loin. Ces opérations sont réalisées avec fdisk :
fdisk /dev/loop0
# on affiche les propriétés des partitions actuelles
p
# on supprime la partition à étendre
d
[1-4]
# on la recréée, avec le même type, même numéro de partition et le même bloc de départ
n
[1-4]
# on sauvegarde le tout
w
  1. Pour que les modifications soient prises en comptes, fdisk demande de rebooter le systeme. Il est possible de détacher puis de rattacher, avec kpartx, le fichier IMG :
kpartx -d /my/file.img
kpartx -av /my/file.img

Un checkdisk devient obligatoire à cet instant, afin de pouvoir resizer par la suite la partition :

e2fsck -f /dev/loop0p3
resize2fs /dev/loop0p3

Normalement, si tout c'est bien passé, il devrait y avoir un joli message :

Resizing the filesystem on /dev/mapper/loop0p3 to 12793764 (4k) blocks.
The filesystem on /dev/mapper/loop2p3 is now 12793764 blocks long.

Il ne reste plus qu'à vérifier l'intégrité du système de fichiers, et à détacher le tout

e2fsck -f /dev/loop0p3
kpartx -d /my/file.img

Le fichier ne contient pas de partitions

Sans partitionnement, il est plus simple d'ajuster la taille du filesystem :

  1. Chercher un loopdevice vide (la commande sors les loopdevice utilisés)
losetup -a
  1. Monter en loop le fichier img
losetup /dev/loop0 /my/file.img
  1. Forcer le fsck
e2fsck -f /dev/loop0
  1. Resizer le fs à la taille maxi du volume :
resize2fs /dev/loop0
  1. Forcer le fsck
e2fsck -f /dev/loop0
  1. Démonter le loopdevice
losetup -d /my/file.img