Redimensionner une partition avec GNU Parted

Contexte

C'est en voulant essayer une nouvelle distribution sur mon laptop que l'idée de redimensionner mes partition m'a pris. C'est une opération que j'ai souvent effectué par le passé mais toujours à partir d'un liveCD. En l'occurence, ce jour là, pour cause de déménagement qui approche, impossible de mettre la main sur un liveCD sans déballer les cartons si durement remplis...

L'idée est donc de quitter la session graphique, de démonter le système de fichier visé, et de lancer la manipulation à la main. Comme la manipulation n'a pas été évidente et m'a même donné quelques sueurs froides, je fais ce billet pour mémoen quelque sorte.

Présentation succinte de GNU Parted

GNU Parted est un outil en ligne de commande qui permet de créer, supprimer, modifier, copier les partitions d'un disque dur. Il est souvent utilisé avec une interface graphique telle que GParted ou QtParted.

Voyons un peu à quoi ressemble l'utilisation de cet outil :

user:/path/$ sudo parted
GNU Parted 1.8.8
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
  check NUMBER                             do a simple check on the file system
  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition
  help [COMMAND]                           prints general help, or help on
        COMMAND
  mklabel LABEL-TYPE                       create a new disklabel (partition
        table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on
        partititon NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  move NUMBER START END                    move partition NUMBER
  name NUMBER NAME                         name partition NUMBER as NAME
  print [free|NUMBER|all]                  display the partition table, a
        partition, or all devices
  quit                                     exit program
  rescue START END                         rescue a lost partition near START
        and END
  resize NUMBER START END                  resize partition NUMBER and its file
        system
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG] ]                   toggle the state of FLAG on partition
        NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  displays the current version of GNU
        Parted and copyright information
(parted)

Plus d'infos sur :

Les choses sérieuses

Je ne vais parler ici que d'une diminution de l'espace allouée à une partition pour en créer une nouvelle à la suite. Dans le cas inverse, les principes sont les mêmes, mais il faudra commencer les manipulation par un rm et ensuite faire le redimensionnement.

Voir l'état du disque

Rien de plus simple :

(parted) print all

Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
 1      32,3kB  8480MB  8480MB  primary   ext3         boot
 2      8480MB  160GB   152GB   extended
 5      8480MB  9015MB  535MB   logical   linux-swap
 6      9015MB  160GB   151GB   logical   ext3

On obtient plusieurs informations intéressantes :

  • Numéro de la partition
  • Déput et fin de la partition à XMB ou XGB
  • Type de partition et de sytème de fichier
  • Eventuellement la présence d'un flag de boot

C'est parti !

On lance le redimensionnement avec la commande resize de GNU Parted :

(parted) resize 6 9015MB 120GB

Une confirmation OK et le redimensionnement se lance.

Nouvelle partition

Nous avons à présent une partition redimensionnée et donc un espace vide qu'il faut utiliser. Ici nous allon créer une partion en ext3 qui commencera là où s'arrête celle qu'on vient de réduire et s'arrêtera au bout du disque.

mkpartfs logical ext3 120GB 160GB

On vérifie le résultat avec :

(parted) print all
(parted) check 7

Ensuite on s'échappe de parted avec un quit et il ne reste plus qu'à monter la nouvelle partition ou mieux, la vérifier avant avec :

user:/path/$ sudo fsck.ext3 /dev/sdXY
Vus : 2288
Publié par Creasy : 8