4 votes

Suppression de la partition étendue sans supprimer les logiques qu'elle contient

J'utilise un ordinateur portable basé sur Linux, et afin de pouvoir démarrer plusieurs distros dessus, j'ai créé une partition étendue qui contient un tas de partitions logiques avec GParted. Maintenant, après un certain temps avec cette configuration, j'ai changé d'avis en raison du manque d'espace de stockage pour ma partition de données. Maintenant, je veux garder une seule distro comme si c'était normal, et éventuellement avoir d'autres systèmes d'exploitation stockés dans des supports externes à brancher et à utiliser si je veux.

Évidemment, cette partition que je veux garder (et agrandir un peu aussi) n'est qu'une logique à l'intérieur de l'étendue que je veux garder. Pour ce qui est du nombre, je suis ok, c'est à dire que j'ai actuellement cette grosse distro dédiée à l'extension, la partition swap et la partition de données, donc il y a de la place pour une autre primaire avant de supprimer l'extension, mais je ne sais pas comment la supprimer sans toucher à la logique qu'elle contient, je ne veux pas réinstaller le système en perdant tous les changements et les paramètres, et je ne veux pas garder une partition étendue pour une logique seule.

Comment puis-je faire ? Dois-je créer un nouveau primaire, y copier le contenu logique et ensuite tout supprimer ? Le système va-t-il démarrer et conserver exactement toutes les fonctionnalités qu'il possède actuellement ? Ou existe-t-il un moyen de convertir une extension en primaire lorsqu'elle ne contient qu'une seule logique ? Ou puis-je déplacer directement une logique hors d'une extension en la transformant en primaire ? Ou, encore une fois, suis-je fichu ?

4voto

Steve Points 1241

Merci pour les réponses, j'ai fini par trouver d'autres méthodes aussi, j'ai juste cherché de la mauvaise façon : je ne savais pas que tout ce que j'avais à écrire était "transformer logique en primaire". La solution que j'ai trouvée est celle que knjers suggère, je suppose, mais dit comme ça en une seule phrase, je n'ai même pas compris de quoi il parlait avant de lire ça.

Le poste est le suivant : Convertir via le terminal

Si j'avais trouvé plus tôt le moyen de rechercher des solutions à ce problème, je me serais épargné un post inutile, mais peut-être que certaines personnes sont dans la même situation que moi, alors je vais reprendre la solution. Pour faire court, nous avons besoin de sfdisk. Première exécution

sudo sfdisk -d /dev/sdX

pour obtenir la carte détaillée de votre disque (évidemment, X représente la lettre du périphérique, exécutez sudo fdisk -l pour obtenir la liste de votre lecteur si vous ne connaissez pas le code de votre lecteur).
Il suffit de le copier dans un fichier texte et de modifier manuellement la table de partition pour obtenir celle que vous voulez. Faites attention, le risque de tout gâcher est assez élevé. J'ai déjà testé sur une clé USB et ça marche.

Quoi qu'il en soit, il vous suffit de déterminer la carte que vous souhaitez créer et de l'exprimer en termes de secteurs. Tout est plus facile si vous êtes dans une situation comme la mienne (vous voulez vous débarrasser de la partition étendue), car cela signifie que vous pouvez supprimer toutes les logiques sauf celle que vous voulez transformer en primaire et n'avoir qu'une logique à l'intérieur de l'étendue, aussi grande qu'elle. Vous pouvez arriver à cette situation avec un outil automatique plus facile comme GParted. C'est plus facile parce que vous pouvez simplement utiliser le point de départ et le point d'arrivée de l'extension pour la nouvelle primaire, alors que si vous voulez garder l'extension avec plusieurs logiques à l'intérieur et simplement déplacer l'une d'entre elles à l'extérieur (évidemment, seulement possible si c'est la dernière ou la première - il suffit de la déplacer si ce n'est pas le cas - et si vous avez trois partitions primaires/extendues ou moins), l'édition est un peu plus complexe, car vous devez spécifier correctement les nouveaux points de départ et d'arrivée de l'extension pour contenir toutes les autres primaires etc.

Disons par exemple que vous avez cette carte simple : une seule logique dans une extension située au tout début, un swap et une énorme partition de données.

sudo sfdisk -d /dev/sda

table de partition de /dev/sda
unité : secteurs

/dev/sda1 : start= 2048, size=80000000, Id= f
/dev/sda2 : start=80002048, size= 800000, Id=82
/dev/sda3 : start= 80802048, size= 800000000, Id=83
/dev/sda4 : start= 0, size= 0, Id= 0
/dev/sda5 : start= 4096, size=79997952, Id=83

Les nombres sont juste inventés par moi pour faciliter la compréhension du fonctionnement. Comme vous le voyez, le nombre maximum de "vraies" partitions possibles est de quatre, ce qui signifie que chaque logique commencera à numéroter à partir de cinq, même si vous avez moins de quatre primaires. De même, /dev/sda4 serait affiché comme type 0 en commençant par 0 et grand 0 également si vous n'aviez que trois partitions et aucune logique. Le seuil de quatre primaires est toujours affiché. Id 83 est une partition Linux ext, et 82 est un swap Linux. (Liste des types de partition avec les ID) . Maintenant, si nous voulons garder cette carte exacte à l'exception de la partition logique remplaçant la partition étendue comme une partition logique, nous collons simplement la sortie exacte de la commande que nous avons obtenue (de "partition table") et la modifions de cette façon :

table de partition de /dev/sda
unité : secteurs

/dev/sda1 : start= 4096, size=79997952, Id=83
/dev/sda2 : start=80002048, size= 800000, Id=82
/dev/sda3 : start= 80802048, size= 800000000, Id=83
/dev/sda4 : start= 0, size= 0, Id= 0

Tout ce que nous avons fait, c'est de mettre notre logique, avec ses limites originales (elle commence un peu après et se termine un peu avant l'étendue, il faut mettre ses propres limites) à la place de notre étendue (elle occupe maintenant une position avec un numéro < 5, réservé aux étendues ou aux primaires) avec l'ID 83 (système de fichiers natif de Linux, le définissant finalement comme primaire). De cette façon, lorsque nous importerons la nouvelle table, le chunk contenant tous les fichiers de notre logique sera reconnu comme faisant partie d'un primaire, mais aucun d'entre eux ne sera supprimé, donc c'est juste parfait. Pour importer notre nouvelle configuration, sauvegardez notre fichier texte et faites la commande suivante :

sudo sfdisk --force /dev/sdX < path/to/file/yournewpartitiontable.txt

IMPORTANT : Si vous faites cela à partir d'une session en direct, il est fondamental que votre disque dur ne soit pas utilisé et que toutes les partitions soient démontées. Si le disque que vous modifiez n'est pas celui de votre système (comme un disque dur secondaire ou un disque externe ou un stylo USB/carte SD), alors très bien, assurez-vous simplement que toutes ses partitions sont démontées.

Méthode GParted :

En démarrant dans GParted live pour supprimer toutes les autres partitions logiques et faire en sorte que l'étendue contienne toutes les partitions logiques que je voulais transformer en primaire, je suis tombé sur une nouvelle méthode, juste par hasard (celle que j'ai utilisée, donc je peux vous garantir qu'elle fonctionne, vous devez juste avoir moins de quatre partitions car vous allez avoir besoin d'un bloc de sauvegarde libre et créer votre nouvelle primaire avant de pouvoir supprimer l'étendue).

GParted a un copie qui crée une copie exacte d'une partition dans un bloc libre suffisamment grand. Tout ce que j'ai fait, c'est copier ma logique en dehors de l'étendue et ensuite, après m'être assuré que tout fonctionnait comme dans ma partition d'origine, supprimer la logique et l'étendue et déplacer tout à la place de celles-ci, étendre ma partition de données. Cette méthode est plus sûre car elle n'est pas 100% manuelle, mais aussi beaucoup plus longue (j'ai fait en sorte que ma partition de données occupe l'espace libre restant, l'agrandissant de 380 à 440 GiB, ce qui a demandé 5 heures) et peut-être plus stressante pour le disque dur, car vous allez faire plus d'actions dans celle-ci au lieu de modifier directement la table de partition et les informations symboliques. Mais encore une fois, c'est aussi plus propre car vous faites tout en une seule opération, en occupant les espaces libres restants et en faisant coller les partitions ensemble sans espace perdu entre elles (avec sfdisk, vous donnerez aux nouvelles primaires les limites des anciennes logiques, ce qui signifie que vous commencerez après et finirez avant, laissant de l'espace inutilisé entre les deux).

J'espère que cela vous aidera, merci !

0voto

Tigerlily Points 11

Il suffit d'utiliser les adresses LBA de début et de fin de la partition logique et de les saisir comme début et fin de l'un des quatre emplacements de partition primaire dans le MBR.

S'il s'agit d'un SSD, il faut espérer qu'il est aligné sur un multiple de 8 secteurs LBA. Les SSD vivent plus longtemps lorsque tout est aligné sur au moins 4096B. C'est encore mieux à 128KB.

0voto

Rod Smith Points 20483

Personnellement, je ne m'en préoccuperais pas ; garder une partition étendue avec une partition logique à l'intérieur ne fera aucun mal. Il existe un minuscule risque supplémentaire de perdre la partition en raison de dommages causés aux structures de données de la partition logique, mais ce risque est probablement inférieur au risque encouru en utilisant un outil de partitionnement pour convertir la partition logique en une partition primaire.

Si vous êtes vraiment décidé à le faire, je vous recommande mon FixParts qui peut convertir les primaires en logiques et vice-versa, en respectant les contraintes imposées par le système MBR et la disposition actuelle de vos partitions. D'après ce que vous avez dit, je ne m'attends à aucun problème avec cette conversion. La procédure serait quelque chose comme :

  1. Lancer FixParts sur le disque
  2. Type p pour voir votre table de partition et vérifier que FixParts affiche tout ce qu'il devrait.
  3. Type r pour changer votre logique en primaire. (On vous demandera un numéro de partition).
  4. Type p pour revoir votre table de partition et vous assurer que tout est en ordre.
  5. Type w pour enregistrer vos modifications.

Bien que l'enregistrement des secteurs de début et de fin de la partition logique, la suppression de cette dernière et de la partition étendue qui la contient, puis la recréation manuelle de la partition avec le logiciel fdisk o parted Je ne le ferais donc pas de cette façon, alors qu'il existe un outil qui permet de le faire automatiquement sans qu'une faute de frappe puisse causer des ravages.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X