Parted : résoudre les problèmes de partionnnement sur gros filesystems

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search
Parted logo

Software version 2.1
Operating System Debian 6
Red Hat 6.3
Website
Last Update 13/02/2013
Others

1 Introduction

GNU Parted is a program for creating, destroying, resizing, checking, and copying partitions, and the file systems on them. This is useful for creating space for new operating systems, reorganising hard disk usage, copying data between hard disks, and disk imaging. It was written by Andrew Clausen and Lennert Buytenhek.

It consists of a library, libparted, and a command-line frontend, parted, that also serves as reference implementation.

Currently, Parted runs only under Linux, GNU/Hurd, FreeBSD and BeOS.

2 Problématique

Vous venez par exemple de faire l'aquisition d'une baie de disque (SATA, SAS...) et le partionnement se passe mal. Par exemple vous ne pouvez créer des partions au dela de 99Go ou 2To. C'est ce qui m'est arrivé. Et au niveau du boot (dmesg), vous avez ce type d'erreurs :

sdb : very big device. try to use READ CAPACITY(16).
Losing some ticks... checking if CPU frequency changed.
SCSI device sdb: 8784445440 512-byte hdwr sectors (4497636 MB)
sdb: Write Protect is off
sdb: Mode Sense: 1f 00 10 08
SCSI device sdb: drive cache: write through w/ FUA
sdb: sdb1
sdb : very big device. try to use READ CAPACITY(16).
SCSI device sdb: 8784445440 512-byte hdwr sectors (4497636 MB)
sdb: Write Protect is off
sdb: Mode Sense: 1f 00 10 08
SCSI device sdb: drive cache: write through w/ FUA
sdb:
sdb : very big device. try to use READ CAPACITY(16).
SCSI device sdb: 8784445440 512-byte hdwr sectors (4497636 MB)
sdb: Write Protect is off
sdb: Mode Sense: 1f 00 10 08
SCSI device sdb: drive cache: write through w/ FU

Vous avez là certainement partionner avec fdisk ou cfdisk. Et bien c'est là votre erreur ! Apparement, ils ont encore beaucoup de mal à gérer les grosses capacités. C'est pourquoi je vous propose parted :-)

3 Installation

Assez simple :

Command apt-get
apt-get install parted

4 Partitionnement

4.1 Wizard

Mon partitionnement est assez simple, je veux créer un disque entier de 4,5To. Je vérifie donc d'abord que je n'ai aucunes partitions de créer et je me lance :

Command parted
$ parted 
GNU Parted 1.7.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
 
Disk /dev/sda: 145GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
 
Number  Start   End     Size    Type     File system  Flags
 1      32,3kB  41,1MB  41,1MB  primary  fat16             
 2      41,1MB  173MB   132MB   primary  ext3         boot 
 3      173MB   145GB   145GB   primary               lvm

On peut voir ici que je suis sur mon premier disque (sda) et pas sur ma baie (sdb). On passe donc dessus :

Command parted
(parted) select /dev/sdb                                                  
Using /dev/sdb

Nous allons créer un label :

Command parted
(parted) mklabel
New disk label type?  [msdos]? gpt

Créer ensuite la partition :

Command parted
(parted) mkpart                                                           
Partition name?  []? san           # Donnez le nom que vous voulez
File system type?  [ext2]? ext3    # Le filesystem        
Start? 0                           # Le début de votre disque                        
End? -1                            # -1 correspond à la fin

Pour ceux qui souhaitent faire du LVM, il suffit d'ajouter un flag :

Command parted
set 1 lvm on

4.2 Command line

Si vous souhaitez tout faire en command line, pour automatiser par exemple, voici comment faire. J'ai fais un petit script permettant de créer une partition qui prends la totalité du disque et optimise (via l'alignement des disques) la partition pour obtenir les meilleurs performances :

Command
datas_device=/dev/sdb
parted -s -a optimal $datas_device mklabel gpt
parted -s -a optimal $datas_device mkpart primary ext4 0% 100%
parted -s $datas_device set 1 lvm on

  • ligne 1 : on créer un label de type gpt pour les grosses partitions (supérieures à 2Tb)
  • ligne 2 : on créer une partition qui prends la totalité du disque
  • ligne 3 : on lui indique que cette partition sera de type LVM

5 Validation

On peut constater le résultat :

Command parted
(parted) p                                                                
 
Disk /dev/sdb: 4498GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
 
Number  Start   End     Size    File system  Name  Flags
 1      17,4kB  4498GB  4498GB  ext3         san

Tout est bien rempli. Je peux quitter :

Command parted
(parted) q

Et encore vérifier via :

Command cat
$ cat /proc/partitions 
major minor  #blocks  name
 
   8     0  142082048 sda
   8     1      40131 sda1
   8     2     128520 sda2
   8     3  141910177 sda3
   8    16 4392222720 sdb
   8    17 4392222686 sdb1
 254     0    2097152 dm-0
 254     1   20971520 dm-1
 254     2   20971520 dm-2
 254     3   20971520 dm-3
 254     4   76894208 dm-4

6 Formatage

Il ne me reste plus qu'a formater dans le format souhaité (ici ext3) :

Command mkfs
mkfs.ext3 /dev/sdb1

7 Tailles maximum des filesystems

Filesystem Taille max par partition Taille max par fichier
ext2 8 To 2 Go
ext3 8 To 2 To
ext4 1024 Po
Resiser4 8 To
ZFS 16 Eo 16 Eo