Problème de partitionnement

Résolu/Fermé
mick39 - Modifié par mick39 le 24/01/2012 à 20:38
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 1 juil. 2012 à 19:02
Bonsoir,

Suite à une tentative de redimensionnement de mes partitions, ma table de partition a été endommagé.

En lançant Gparted, je n'arrive même pas à consulter la liste de mes partitions et j'obtiens une erreur : "La partition ne peut pas être en dehors du disque !".

Depuis l'utilitaire de disque, je retrouve mes partitions habituelles mais avec un espace non alloué de 1844674 TB (oui c'est bien du TB).

Je n'arrive plus à gérer mes partitions, voici un exemple de message d'erreur obtenu :


Error modifying partition: helper exited with exit code 1: In part_change_partition: device_file=/dev/sda, start=263710572544, new_start=263710572544, new_size=1207959552, type=0x0b  
Entering MS-DOS parser (offset=0, size=320072933376)  
MSDOS_MAGIC found  
looking at part 0 (offset 32256, size 7345142784, type 0x0b)  
new part entry  
looking at part 1 (offset 7345274880, size 160035766272, type 0x07)  
new part entry  
looking at part 2 (offset 167382089728, size 96328467968, type 0x07)  
new part entry  
looking at part 3 (offset 263710557696, size 56367988224, type 0x0f)  
Entering MS-DOS extended parser (offset=263710557696, size=56367988224)  
readfrom = 263710557696  
MSDOS_MAGIC found  
readfrom = 264921624576  
MSDOS_MAGIC found  
readfrom = 319326981120  
MSDOS_MAGIC found  
Exiting MS-DOS extended parser  
Exiting MS-DOS parser  
MSDOS partition table detected  
containing partition table scheme = 1  
got it  
Error: Can't have a partition outside the disk!  
ped_disk_new() failed 




Voici ce que m'indique le fdisk -l :

Disque /dev/sda: 320.1 Go, 320072933376 octets  
255 têtes, 63 secteurs/piste, 38913 cylindres  
Unités = cylindres de 16065 * 512 = 8225280 octets  
Sector size (logical/physical): 512 bytes / 512 bytes  
I/O size (minimum/optimal): 512 bytes / 512 bytes  
Identifiant de disque : 0x3d62130f  

Périphérique Amorce  Début        Fin      Blocs     Id  Système  
/dev/sda1   *           1         893     7172991    b  W95 FAT32  
/dev/sda2             894       20350   156284928    7  HPFS/NTFS  
/dev/sda3           20350       32061    94070769+   7  HPFS/NTFS  
/dev/sda4           32061       38914    55046863+   f  W95 Etendue (LBA)  
/dev/sda5           32061       32208     1179648    7  HPFS/NTFS  
/dev/sda6           32209       38653    51764224   83  Linux  
/dev/sda7           38823       38914      728056   82  Linux swap / Solaris  


Que puis-je faire ?

Merci d'avance.

1 réponse

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
24 janv. 2012 à 21:09
Je ne sais pas si c'est le cas de gparted (et parted), mais c'est celui de cfdisk, quand la table des partitions est bancales ça ne marche pas super.

Heureusement fdisk est beaucoup moins sensible à ce genre de problèmes. Même si fdisk est moins convivial, fdisk permet tout à fait de créer, supprimer, ou modifier des partitions d'un disque. Par contre contrairement à gparted, il ne permet pas de créer un système de fichiers, c'est le rôle de la commande mkfs (voir plus loin).

Exemple :

(mando@aldur) (~) $ sudo fdisk /dev/sda

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): p

Disk /dev/sda: 64.0 GB, 64023257088 bytes
255 heads, 63 sectors/track, 7783 cylinders, total 125045424 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c20ab

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048     7813119     3905536   82  Linux swap / Solaris
/dev/sda2         7815166   125044735    58614785    5  Extended
/dev/sda5         7815168    27344895     9764864   83  Linux
/dev/sda6        27346944   125044735    48848896   83  Linux

Command (m for help): q

(root@aldur) (~) #


Dans ton cas, il faut (re)définir les partitions de manière cohérentes. Ensuite, il faut bien voir que fdisk ne fait que modifier la table des partitions. Il faut que ces entrées référencent un système de fichiers valide et qui concorde avec ce qui est indiqué avec la table des partitions. Par exemple si tu dis dans la table des partitions que /dev/sda5 contient un système de fichier Linux (par exemple ext4) à la position 7815168 et se finissant à la position 7815168, ce doit être le cas.

Ainsi, soit il y a réellement un tel système de fichier à cet endroit (sous entendu tu sais que ta partition de disque dur était là et dans ce système de fichiers), soit il faudra créer un nouveau système de fichiers à cet endroit (ie formater cette partition), par exemple grâce à la commande mkfs. Toutefois, la commande mkfs altère les données dans cette zone, et donc s'il y avait des données sur cette plage de disque dur, elles seront perdues. Il faut donc être sûr de ce que tu fais !

D'un point de vue "Linux", la table des partitions engendre des device (/dev/sda1 etc...) associés à chaque partition. On peut alors envisager de faire un "mount" pour accéder à ses données.

Exemple :

mkdir -p /mnt/toto
mount-t ext4 /dev/sda1 /mnt/toto


Un mount ne peut fonctionner que si certaines conditions sont vérifiées :
- le point de montage (/mnt/toto dans mon exemple) existe
- le device (/dev/sda1) correspond bien à un système de fichier valide et du type précisé à mount (ext4 dans mon exemple)
- le noyau linux (ou les modules chargés) permettent de prendre en charge le système de fichier mis en jeu (ext4 dans mon exemple)
- le système de fichier n'est pas déjà monté ailleurs (en tout cas il ne devrait pas l'être déjà !)

Pour plus de détails, tu peux jeter un oeil ici :
http://www.mistra.fr/tutoriel-linux-monter-peripherique.html

Bonne chance
0
Ça me semble relativement compliqué, je vais suivre ligne par ligne votre message et vous tient au courant.
Merci beaucoup.
0
J'ai enfin résolu mon problème, j'ai supprimé toutes mes partions linux et après une réinstallation, plus de problème :)
Merci quand même pour votre aide, qui je pense en aidera plusieurs.
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
1 juil. 2012 à 19:02
Ok bonne continuation !
0