Possible de supprimer les partitions étendues sans tout casser ?

Bonjour,

Suite à un passage de Windows vers debian, j’ai les partitions qui sont, je trouve, mal "fagotées"sur mes 3 dd. Cf PJ en-dessous.
J’aimerais avoir au final:
sda:

  • Une partition principale
  • Une partition swap
    => suppression/transformation partition étendue qui contient la partition swap

sdb:

  • une partition principale
    => suppression de sdb1 sans conséquence? (windows)

sdc:

  • une partition principale
    => suppression/transformation partition étendue vers principale

Avant de faire une méthode un peu bourrin avec création de partition (resize) puis transfert de fichiers puis fusion de partitions, avez-vous un conseil ou une méthode à me conseiller svp?
Sur un autre PC (windows vers debian aussi), j’avais supprimé une petite partition qui servait de boot à grub. Je me suis bien amusé à recoller les morceaux… D’ailleurs comment savoir où boot debian? Est-ce sur sda1 (ext4)? ou sur la partition windows sur sdb1?

Capture%20d'%C3%A9cran%20de%202019-02-23%2012-45-01 Capture%20d'%C3%A9cran%20de%202019-02-23%2012-45-07 Capture%20d'%C3%A9cran%20de%202019-02-23%2012-44-13

Je préfèrerais la sortie au format texte de la commande suivante :

fdisk -l

au lieu de copies d’écran peu lisibles.

Il est possible de supprimer les partitions étendues et convertir les partitions logiques en partitions principales. Pour cela j’utiliserais la commande sfdisk qui permet d’exporter et importer la table de partition via un fichier texte éditable, mais il faut savoir s’en servir.

Attention : les numéros des partitions converties changeront. Les partitions principales sont numérotées de 1 à 4, les partitions logiques à partir de 5. Ce n’est pas gênant si les partitions sont référencées par UUID ou LABEL dans /etc/fstab et ailleurs. Cela pourrait être gênant pour le chargeur d’amorçage GRUB si le répertoire /boot/grub était dans une partition logique, mais je doute que ce soit le cas ici.

Autre possibilité : convertir les tables de partition de sda et sdc au format GPT, comme sdb. Ainsi plus de distinction entre partitions principales et logiques, et les partitions peuvent garder leurs numéros. Par contre il faudra réinstaller le chargeur d’amorçage et lui créer une petite partition “BIOS boot” (on trouve toujours la place nécessaire).

La partition réservée Microsoft (MSR) peut être supprimée, mais ça n’apportera pas grand-chose vu sa taille et sa position.

Pour savoir où les différents morceaux de GRUB sont installés, le plus simple est d’installer le paquet boot-info-script, d’exécuter la commande bootinfoscript et d’étudier le rapport produit. Logiquement cela devrait être dans sda.

Par contre je ne comprends pas cette histoire de resize et de fusion des partitions.

Pour le resize et fusion c’est seulement pour le sdc. Sauf à trouver une autre méthode, je créerais une partition principale, je copierais toutes les données dessus et supprimerais la partition étendue.

Merci pour toutes ces infos. Je ne connais pas sfdisk. Je vais regarder mais je vais p’tre pas me risquer dessus tout de suite.

Mon fdisk -l

Disque /dev/sdc : 931,5 GiB, 1000204886016 octets, 1953525168 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0xfb1c2a70

Périphérique Amorçage Début        Fin   Secteurs Taille Id Type
/dev/sdc1             16065 1953520064 1953504000 931,5G  f Étendue
/dev/sdc5             16128 1953520064 1953503937 931,5G 83 Linux

La partition 1 ne commence pas sur une frontière de cylindre physique.

Disque /dev/sdb : 2,7 TiB, 3000592982016 octets, 5860533168 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 9FDC50E5-726F-4E5E-8243-48BAC9376FD8

Périphérique  Début        Fin   Secteurs Taille Type
/dev/sdb1        34     262177     262144   128M Réservé Microsoft
/dev/sdb3    264192 5860532223 5860268032   2,7T Système de fichier
La partition 1 ne commence pas sur une frontière de cylindre physique.

Disque /dev/sda : 59,6 GiB, 64023257088 octets, 125045424 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x596a7648

Périphérique Amorçage     Début       Fin  Secteurs Taille Id Type
/dev/sda1    *             2048 116662271 116660224  55,6G 83 Linux
/dev/sda2             116664318 125044735   8380418     4G  5 Étend
/dev/sda5             116664320 125044735   8380416     4G 82 parti

Ça me tente bien de basculer vers GPT si on peut s’éviter un formatage pour garder les données. La petite partition BIOS est de quel format? Sur mon autre PC c’est fat16. Je l’avais supprimé (car taguée windows) et je me suis bien amusé avec systemrescuecd pour reconstruire grub.

Pour info, je préfère écrire les UUID dans fstab. Aujourd’hui ce n’est pas le cas car ces écritures ont été faites en auto lors de l’installation de debian.

Je ne comprends toujours pas ce que tu veux redimensionner sur sdc ni pourquoi. Si le but est d’étirer la partition dans l’espace non alloué situé au début du disque, ça implique de la déplacer et donc recopier tout son contenu (avec les risques que cela comporte en cas d’interruption, les positions initiale et finale se chevauchant). Tout ça pour gagner ~8 malheureux Mo sur disque de 1 Go, bof.

Quant à ta méthode, elle n’est pas appliquable : tant que la partition étendue existe, tu ne peux pas créer de partition principale assez grande pour y copier le contenu de la partition logique.

Une partition BIOS Boot n’est pas formatée, elle est utilisée directement et implicitement par grub-install.

La partition FAT de ton autre PC était probablement une partition système EFI qui contenait à la fois Windows Boot Manager et GRUB. Ce n’est pas très compliqué de la recréer, il faut juste connaître un peu.

Concernant sda, c’est juste la partition de swap qu’il faut transformer en partition principale. Comme elle ne contient pas de données permanentes, il suffit de la supprimer et de la recréer avec le même UUID.

Récupérer l’UUID du swap pour plus tard avec

blkid /dev/sda5

ou dans /etc/fstab.
Désactiver le swap avec

swapoff -a

Supprimer la partition logique et la partition étendue sur sda.
Créer une partition principale de type swap.
Si on a utilisé fdisk, sfdisk ou cfdisk, il faut ensuite exécuter

partprobe

qui fait partie du paquet parted pour faire relire la table de partition par le noyau car l’autre partition du disque est utilisée. Alternativement, on peut utiliser delpart avant et addpart après, mais c’est moins pratique. Si on utilise parted ou Gparted, ce n’est pas nécessaire.
Formater la nouvelle partition de swap avec le même UUID que l’ancienne :

mkswap -U <uuid> /dev/sda2

Activer le swap pour vérifier que tout fonctionne :

swapon -a

Je ne comprends toujours pas ce que tu veux redimensionner sur sdc ni pourquoi. Si le but est d’étirer la partition dans l’espace non alloué situé au début du disque, ça implique de la déplacer et donc recopier tout son contenu (avec les risques que cela comporte en cas d’interruption, les positions initiale et finale se chevauchant). Tout ça pour gagner ~8 malheureux Mo sur disque de 1 Go, bof.

Tu vas peut-être me trouver trop pointilleux mais je trouve que c’est mal foutu d’avoir une partition étendue qui contient une partition swap sur sda. Également une partition étendue qui contient une (seule) partition logique sur sdc.

J’aimerais avoir:

  • sda1 avec 55 Gosystème + sda2 avec 5 Go swap + boot partition
  • sdb1 1To data (/home, /var)
  • sdc1 3To data

Tentative d’élaboration de plan d’action:

  • passer en GPT sur les 3 disques.
  • sur le sda (qui accueille le système), je fais un grub-install qui va créer une partition BIOS lui-même
  • sur le sda, je recrée un swap avec le même UUID
  • sur sdb, je supprime la partition windows sdb1 128Mb (et je suppose que je fusionne avec sdb2). Possible de renommer en sda1? Se fait en auto?
  • sur sdc, avec le passage en GPT, y’a plus grand chose à faire j’ai l’impression.

outil: sfdisk?

Je ne parle pas de ça mais de ça :

A ceci près que les tailles et les noms des disques ne correspondent pas à ce qu’affichent Gparted et fdisk (sdb 3 To et sdc 1 To). Mais il ne faut pas s’attacher aux noms des disques, ils ne sont pas garantis persistants et peuvent changer à chaque démarrage.
Précise bien “partition BIOS Boot” car “partition de boot” peut prêter à confusion et être interprété comme “partition /boot”, voire “partition système EFI” dans le cas d’un amorçage EFI.

Vu sa petite taille comparé au deux autres, je suppose que le disque de 60 Go contenant le système est un SSD ? Dans ce cas déporter /home sur un disque dur est une mauvaise idée, cela va pénaliser les performances. Il vaut mieux laisser /home sur un SSD et déporter les données volumineuses sur un disque dur si nécessaire.

grub-install ne crée pas la partition BIOS boot, il ne fait que l’utiliser. Il faut la créer avant. Si créée avec fdisk, cdisk, sfdisk ou gdisk, il faudra exécuter partprobe ou redémarrer pour la faire prendre en compte par le noyau.

Tu veux dire agrandir sdb3 en l’étirant sur l’espace libre situé avant elle ? Je répète l’objection déjà formulée pour sdc : ça implique de la déplacer et donc recopier tout son contenu (avec les risques que cela comporte en cas d’interruption, les positions initiale et finale se chevauchant). Tout ça pour gagner ~128 malheureux Mo sur disque de 3 To, bof.

En sdb1, tu veux dire ? Possible mais pas automatique.

sfdisk est pratique pour convertir une partition logique en partition principale mais en revanche il ne fait que modifier la table de partition, il ne fait pas le redimensionnement/déplacement du système de fichiers contenu dans la partition, qui sera inaccessible si la partition est réduite ou déplacée. Gparted est le seul capable de redimensionner/déplacer une partition et son contenu.

Je voulais déplacer les données en créant une autre partition puis supprimer l’ancienne partition mais comme tu m’as dit que ce n’est pas possible de créer une partition primaire à partir d’une logique, je ne tenterai même pas.

Exact !

Ok !

Je vais relire et mûrir tout ça avant de me lancer. Je reviendrai raconter mon épopée !
Merci pour ton aide ! :slightly_smiling_face:

Pas du tout. J’ai écrit et répété qu’il est parfaitement possible de convertir une partition logique en partition primaire avec sfdisk. C’est la partie redimensionnement et fusion que je ne comprends pas. D’autre part tu parles de créer une nouvelle partition (où ?) et de supprimer l’ancienne (laquelle ?) donc je ne vois pas le rapport avec la conversion d’une partition logique en primaire.

Je voulais créer une partition primaire pour transférer mes données dessus.
Puis supprimer l’ancienne partition étendue/logique.
Puis étendre la nouvelle partition partition primaire avec l’ancienne partition supprimée qui serait devenue un nouvel espace libre disponible.

Mais où ? Il n’y a pas la place sur le disque.

J’ai oublié de dire que je voulais réduire la taille de la partition logique
Puis créer avec ce nouvel espace, une partition primaire
etc.

C’est faisable si le système de fichier est occupé à moins de 50%, mais à mon avis ça ne vaut pas le coup de s’embêter avec une triple copie :

  • pour déplacer les données lors de la réduction
  • pour copier les données dans la nouvelle partition
  • pour agrandir la nouvelle partition

alors que la conversion avec sfdisk est instantanée.