Les notes de Joey : Guide pour ajouter une nouvelle partition ou un nouveau disque à un système existant

Version française de l'article Joey's Notes: Guide to adding a new partition or drive to an existing system, paru dans la Gazette Linux numéro 150 de mai 2008

Adaptation française: Renaud Flavigny

Relecture de la version française: Deny

Version : 1.0

Conditions de distribution : cet article est distribué selon les conditions de la licence Open Publication License, version 1.0, du 8 juin 1999. Pour plus d'informations, consultez : http://linuxgazette.net/copying.html.

20 septembre 2008

Historique des versions
Version 1.02008-09-21RF
Première traduction française.
2008-05JP
Version originale de l'article.

Résumé

L'article décrit la procédure pas à pas pour accroitre l'espace de stockage sur un système existant par ajout d'une partition ou d'un disque. À partir d'un scénario classique, les différentes alternatives sont exposées ainsi que les commandes à enchainer pour atteindre le but fixé.


Table des matières

Introduction
Scénario

Introduction

Le processus nécessite les étapes suivantes :

  1. Déterminer quelles partitions doivent être créées et où
  2. Créer les partitions (J'utilise fdisk ici mais n'importe quel outil de gestion des partitions Linux doit fonctionner)
  3. Relire la table des partitions soit avec partprobe soit par reboot
  4. Créer un système de fichier sur la partition, le nommer et créer les points de montage nécessaires
  5. Ajouter dans /etc/fstab les entrées appropriées pour que les partitions soient montées lors du reboot

Scénario

Imaginons que nous ayons un serveur sous RHEL 4 et que votre chef arrive et demande à ce qu'une partition de 10 Go soit créée pour le département informatique. Ceci vient en supplément de ce qui est actuellement alloué sur le serveur. Vous pouvez donc soit créer une partition sur la partie non partitionnée d'un disque existant s'il y en a (les administrateurs Linux expérimentés laissent toujours un espace non partitionné pour des extensions futures) ou vous pouvez ajouter un autre disque. Ce scénario se produit relativement souvent dans le monde de la production, c'est donc un savoir-faire précieux même si vous n'administrez que les machines de votre domicile.

Nous supposerons que votre chef vous a donné toute latitude pour choisir l'une ou l'autre des solutions ci-dessus. Votre première tâche est de vérifier s'il y a de l'espace disponible sur vos supports existants. Nous allons lancer fdisk -l pour voir la taille du disque. Les données dont nous avons besoin sont sur la première ligne de la sortie.

[root@station17 ~]# fdisk -l

Disk /dev/sda: 80.0 GB, 80000000000 bytes
255 heads, 63 sectors/track, 9726 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          38      305203+  83  Linux
/dev/sda2              39        7687    61440592+  83  Linux
/dev/sda3            7688        7942     2048287+  82  Linux swap
    

De là nous voyons que la taille du disque est de 80 Go. maintenant, nous utilisons df -h pour calculer la taille des partitions qui sont sur notre système. Seules les lignes qui ont un nom de périphérique nous concernent, les autres (étiquettées none ne nous concernent pas. La colonne nommée Size contient les nombres que nous devons additionner pour obtenir la taille totale.

[root@station17 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              58G  6.5G   49G  12%   /
/dev/sda1             289M   17M  258M   6%   /boot
none                 1013M     0 1013M   0%   /dev/shm

[root@station17 ~]#
    

De là, nous voyons que la taille de /dev/sda2 est 58 Go et celle de /dev/sda1 de 289 Mo - pour un total de 58,3 Go. Maintenant, il faut ajouter la taille de notre zone d'échange (swap) ; cat /proc/swaps nous dira quelle est la taille de notre zone d'échange.

Si vous avez envie d'utiliser un utilitaire d'un système actuel, swapon -s fera la même chose. --Ben

[root@station17 ~]# cat /proc/swaps 
Filename                              Type            Size    Used    Priority
/dev/sda3                             partition       2048276    0       -1
[root@station17 ~]#
    

En ajoutant les 2 Go ci-dessus, cela signifie que nous avons 19,7 Go disponibles—bien plus que ce dont nous avons besoin. Maintenant, nous allons passer à la création de notre partition : fdisk /dev/sda ouvrira la table des partitions en modification. Puisque nous utilisons déjà trois partitions sur ce disque, nous devons créer la quatrième en tant que « partition étendue »—un container qui abritera toute nouvelle partition dont celle que nous sommes en train de créer. Nous allons accepter les valeurs par défaut pour la partition étendue, ce qui allouera la totalité de l'espace disponible sur le disque à notre nouvelle partition. Nous utiliserons un système de fichiers ext3 et nous devons garder à l'esprit que la commande mkfs réserve 5 % des blocs pour la racine. Ceci dit, nous allons tailler notre nouvelle partition à 11,5 Go pour compenser les blocs réservés pour la racine en prenant une petite marge.

[root@station17 ~]# fdisk /dev/sda

The number of cylinders for this disk is set to 9726.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Selected partition 4
First cylinder (7943-9726, default 7943): 
Using default value 7943
Last cylinder or +size or +sizeM or +sizeK (7943-9726, default 9726): 
Using default value 9726
    

Ici, nous pouvons voir que j'ai choisi n pour créer une nouvelle partition et e pour une partition étendue. J'ai ensuite accepté les valeurs par défaut pour les cylindres de départ et de fin.

Command (m for help): n
First cylinder (7943-9726, default 7943): 
Using default value 7943
Last cylinder or +size or +sizeM or +sizeK (7943-9726, default 9726):.+11500M
    

Ensuite, j'ai saisi n pour créer une nouvelle partition, à l'invite de saisir un cylindre de départ, j'ai saisi enter pour accepter la valeur par défaut. Pour le cylindre de fin, j'ai entré +11500M pour spécifier la taille. Le plus est important— sans lui vous aurez une erreur. C'est une bonne idée à ce stade de saisir p pour que fdisk affiche la table des partitions. Cela montre ce que nous avons fait avant de sauver nos modifications.

Command (m for help):.p

Disk /dev/sda: 80.0 GB, 80000000000 bytes
255 heads, 63 sectors/track, 9726 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          38      305203+  83  Linux
/dev/sda2              39        7687    61440592+  83  Linux
/dev/sda3            7688        7942     2048287+  82  Linux swap
/dev/sda4            7943        9726    14329980    5  Extended
/dev/sda5            7943        9341    11237436   83  Linux

S'il y a une erreur, quittez fdisk en tapant q et aucune modification ne sera sauvée. Ça parait correct - alors écrivons les modifications avec un « w ».

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@station17 ~]#
    

L'avertissement peut-être corrigé en utilisant la commande partprobe pour forcer le noyau à relire la table des partitions. Rappelez vous : si c'est une machine de production, nous ne voulons pas avoir à la rebooter.

[root@station17 ~]# partprobe
    

À ce stade, notre partition de 11,5 Go est /dev/sda5 est brute - elle n'a ni système de fichier, ni descripteur de nom (label descriptor). Nous allons donc la formater et lui donner un nom. Donner un nom à la partition peut être fait en même temps que la création du système de fichier avec l'option -L, mais je préfére le faire dans une étape séparée.

[root@station17 ~]# mkfs.ext3 /dev/sda5
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1406272 inodes, 2809359 blocks
140467 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2877292544
86 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@station17 ~]#
    

Maintenant, nous allons donner le nom (/data)

[root@station17 ~]# e2label /dev/sda5 /data
[root@station17 ~]#
    

Ensuite, nous devons créer un point de montage pour notre système de fichiers et nous assurer qu'il est monté lors du boot. Créons un répertoire dans notre système appelé /data

La méthode habituelle pour allouer un nouvel espace est souvent plus complexe que cela—au moins au stade de la planification. En fait, créer un répertoire non standard à la racine du système de fichiers comme suggéré ici est incorrect et viole le Standard de Hiérarchie du Système de fichiers (FileSystem Hierarchy Standard - FHS). Comme exemple d'une situation plus typique, si un administrateur découvre qu'un disque partagé n'a plus d'espace libre, il doit d'abord examiner la machine pour voir où est la plus grande activité ou consommation. Supposons que ce soit dans l'espace alloué aux utilisateurs (par exemple /home), il préférera sauvegarder les données de ce sous-répertoire, les restaurer dans la partition nouvellement créée, supprimer /home et monter la nouvelle partition en tant que /home. Ceci permet de récupérer tout l'espace utilisé par la partition /home originale et de la laisser disponible pour une utilisation par le reste du système. la plupart des utilisateurs ne réalisera pas qu'un changement a eu lieu. Cette approche ne nécessite pas non plus le reboot de la machine. --Ben

Je comprend que ce partionnement est incohérent avec le FHS, mais notre matériel de cours RedHat nous prescrit la création de répertoires sous / pour faciliter et simplifier les sauvegardes. Nous sommes aussi conduits par les instructions à faire des choses comme des schémas de partition spécialisées pour différentes choses de cette façon ici à l'académie RedHat. -- Joey

[root@station17 ~]# mkdir /data
[root@station17 ~]# 
    

Maintenant, nous le mettons dans la table système /etc/fstab afin qu'il soit monté à chaque démarrage.

[root@station17 ~]# vi /etc/fstab

# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/                /                       ext3    defaults        1 1
LABEL=/data            /data                   ext3    defaults        1 1
LABEL=/boot            /boot                   ext3    defaults        1 2
none                   /dev/pts                devpts  gid=5,mode=620  0 0
none                   /dev/shm                tmpfs   defaults        0 0
none                   /proc                   proc    defaults        0 0
none                   /sys                    sysfs   defaults        0 0
LABEL=SWAP-sda3         swap                   swap    defaults        0 0
/dev/scd0   /media/cdrecorder   auto    pamconsole,exec,noauto,managed 0 0
    

J'ai utilisé la partition racine comme guide dans cet exemple. Le nom est dans la première colonne, le point de montage est dans la deuxième, puis nous avons le type de système de fichiers et les options de montage. les deux derniers nombres sont l'indicateur de dump et l'indicateur fsck ; ils déterminent quand le systéme doit être sauvegardé si vous utilisez dump et quand le système doit être contrôlé. Fondamentalement, vous pouvez copier ces options et ces nombres comme je l'ai fait. Enregistrez vos modifications et sortez de l'éditeur. Ensuite, pour être sûr qu'il n'y a pas d'erreurs, lancez mount -a pour monter toutes les partitions listées dans /etc/fstab. Les éventuelles erreurs seront affichées à ce moment.

[root@station17 ~]# mount -a
    

Puisque nous n'avons pas d'erreurs, lançons df -h et voyons comment ça se présente.

[root@station17 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              58G  6.6G   49G  12% /
/dev/sda1             289M   17M  258M   6% /boot
none                 1013M     0 1013M   0% /dev/shm
/dev/sda5              11G   59M   10G   1% /data

[root@station17 ~]#
    

Ça y est— nous sommes prêts à utiliser cette nouvelle partition en gardant à l'esprit que nous pourrons être amenés à modifer les permissions pour les besoins des utilisateurs et des groupes. C'est une tâche trés commune, avec laquelle tous les utilisateurs de Linux doivent être familiers car vous serez presque certainement confronté au besoin de plus d'espace. Le processus est tout à fait similaire pour ajouter un autre disque— vous devez simplement substituer les noms de périphérique quand c'est nécessaire.

Joey est né à Phoenix et a commencé à programmer à l'âge de quatorze ans sur un Timex Sinclair 1000©. Il espérait pouvoir tirer quelque chose de ce modèle d'ordinateur ancien. Maîtrisant rapidement le BASIC et l'Assembleur, Joey est devenu programmeur en 1990 et a ajouté le COBOL, le Fortran et le Pascal à son répertoire de langages de programmation. Depuis lors, il se passionne pour presque tous les aspects de l'informatique. Il s'est perfectionné et a découvert RedHat Linux© en 2002, quand on lui a donné une version six de RedHat©. Ce fut le début d'une nouvelle passion centrée sur Linux. Actuellement, Joey termine sa formation en gestion de réseau sous Linux et travaille sur le campus pour la RedHat Academy de l'université, en Arizona. Il fait aussi partie de l'équipe de la Linux Gazette comme coordinateur de miroir.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.