https://wiki.sn4ky.net/index.php?title=Resize_IMG_file&feed=atom&action=historyResize IMG file - Historique des versions2024-03-28T09:38:12ZHistorique des versions pour cette page sur le wikiMediaWiki 1.30.0https://wiki.sn4ky.net/index.php?title=Resize_IMG_file&diff=10&oldid=prevSn4kY : 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)... »2018-04-12T13:58:17Z<p>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)... »</p>
<p><b>Nouvelle page</b></p><div>= Comment redimensionner un fichier .IMG ? =<br />
<br />
== Agrandir l'espace disque ==<br />
Assurez vous que le fichier n'est plus utilisé (ni par une VM, ni monté dans un loop device)<br />
<br />
(faites-en une copie, on sait jamais)<br />
cp /my/file.img /my/file.img.backup<br />
<br />
Agrandissez la taille du fichier IMG (exemple donné pour étendre le fichier à 50Go (50000 x 1Mb) :<br />
dd if=/dev/zero of=/my/file.img bs=1M conv=notrunc count=1 seek=50000<br />
<br />
<br />
== Étendre le filesystem ==<br />
Deux possibilités s'offrent a présent, le fichier contient, ou pas, un partitionnement propre.<br />
<br />
Pour le vérifier : <code>fdisk -l /my/file.img</code><br />
Si fdisk sors ce genre de choses <br />
Disk /my/file.img: 0 MB, 0 bytes<br />
255 heads, 63 sectors/track, 0 cylinders<br />
Units = cylinders of 16065 * 512 = 8225280 bytes<br />
<br />
Device Boot Start End Blocks Id System<br />
/my/file.img1 * 1 25 200781 83 Linux<br />
/my/file.img2 26 156 1052257+ 82 Linux swap / Solaris<br />
/my/file.img3 157 6527 51175057+ 83 Linux<br />
<br />
* [[Resize_IMG_file#Le_fichier_contient_des_partitions|Le fichier contient des partitions]]<br />
Sinon,<br />
* [[Resize_IMG_file#Le_fichier_ne_contient_pas_de_partitions|Le fichier ne contient pas de partitions]]<br />
<br />
<br />
=== Le fichier contient des partitions ===<br />
Si le fichier contient des partitions<br />
# 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)<br />
e2fsck -f /dev/loop0p3<br />
kpartx -av /my/file.img<br />
<br />
# 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 :<br />
fdisk /dev/loop0<br />
# on affiche les propriétés des partitions actuelles<br />
p<br />
# on supprime la partition à étendre<br />
d<br />
[1-4]<br />
# on la recréée, avec le même type, même numéro de partition et le même bloc de départ<br />
n<br />
[1-4]<br />
# on sauvegarde le tout<br />
w<br />
<br />
#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 :<br />
kpartx -d /my/file.img<br />
kpartx -av /my/file.img<br />
Un checkdisk devient obligatoire à cet instant, afin de pouvoir resizer par la suite la partition :<br />
e2fsck -f /dev/loop0p3<br />
resize2fs /dev/loop0p3<br />
Normalement, si tout c'est bien passé, il devrait y avoir un joli message :<br />
Resizing the filesystem on /dev/mapper/loop0p3 to 12793764 (4k) blocks.<br />
The filesystem on /dev/mapper/loop2p3 is now 12793764 blocks long.<br />
<br />
Il ne reste plus qu'à vérifier l'intégrité du système de fichiers, et à détacher le tout<br />
e2fsck -f /dev/loop0p3<br />
kpartx -d /my/file.img<br />
<br />
=== Le fichier ne contient pas de partitions ===<br />
Sans partitionnement, il est plus simple d'ajuster la taille du filesystem :<br />
# Chercher un loopdevice vide (la commande sors les loopdevice utilisés)<br />
losetup -a<br />
# Monter en loop le fichier img<br />
losetup /dev/loop0 /my/file.img<br />
# Forcer le fsck<br />
e2fsck -f /dev/loop0<br />
# Resizer le fs à la taille maxi du volume :<br />
resize2fs /dev/loop0<br />
# Forcer le fsck<br />
e2fsck -f /dev/loop0<br />
# Démonter le loopdevice<br />
losetup -d /my/file.img</div>Sn4kY