site sans réclame GNU/LinuxDebianÉcrireS'abonner

Partitions et système de fichier avec GNU/Linux

E

N Unix, les données, les périphériques et processus sont reliés à un unique système de fichier, dont le sommet ("/") est appelé racine, ou root. Tout se passe de façon de plus en plus automatique, mais il est parfois utile de savoir comment cela se passe.

1. Partitions

1.1 swap
1.2 root
1.3 boot
1.4 home
1.5 Autres

2. Montage

2.1 mount
2.2 fstab
2.3 hdparm
2.4 df
2.5 lsblk


2.6 dd

3. Récupération

3.1 testdisk
3.2 dvdisaster
3.3 foremost (pm)

Les fichiers et répertoires sont traités sur une autre page.

1. Partitions

Les clés USB, disques durs de type IDE/ATAPI et SCSI sont maintenant reconnus par le système sous les descripteurs /dev/sda pour le premier, /dev/sdb... Pour Debian, les lecteurs de CD ou DVD est néanmoins considéré comme sr0.

À cause du BIOS, les disques durs ne peuvent être partagés qu'en un maximum de quatre partitions primaires ou physiques (de sda1 à sda4), mais d'autres peuvent être désignées comme «logiques» (sda5, sda6...), ces dernières étant des sous-partitions de partitions primaires alos appelées «étendues».

Ces partitions sont formatées, c'est-à-dire que les données sont organisées selon un schéma, qui varie selon le système d'exploitation. ext2 est un format qui permet la restauration de fichiers effacés, mais ext3 est journalisé, ce qui permet la restauration des dernières modifications même en cas d'éteinte sauvage de l'ordinateur (plus fréquent que les plantages) ; ext4 est la norme de la deuxième décennie, mais sera remplacé à terme par btrfs. Je déconseille les formats exotiques tel que reiserfs: des transferts de fichiers moyens entre une partition reiser et une ext3 se sont révélés désastreux (gros fichiers mutilés).

Le système d'exploitation commence à perdre du temps lorsqu'une partition commence être saturée: l'analogie de l'entrepôt quasi-rempli permet d'imaginer les déplacements supplémentaires nécessaires à l'insertion de nouvelles marchandises. Cela dépend de la grosseur des fichiers manipulés, mais 90% semble être la limite à partir de laquelle les accès au disque prennent plus de temps.

Il m'est arrivé que la partition /home entièrement saturée ne permette plus au bureau de se lancer (KDE3 en l'occurrence). Il a fallu lancer le système en mode rescue et supprimer quelques gros fichiers (mc est alors très pratique) pour résoudre ce problème.

Contrairement à une croyance populaire, les partitions Unix sont capables de fragmenter les fichiers, mais le système GNU/Linux s'arrange pour les défragmenter en tâche de fonds.

1.1 Partition swap

Cette partition est utilisée à des sauvegardes temporaires pour décharger la RAM (mémoire vive, mémoire de travail du processeur). En ce sens, elle permet au système de ne pas trop ralentir en recréant ce qu'il a été obligé d'effacer faute de place. Cela dit, l'écriture et la relecture sur disque dur prennent également du temps (c'est moins vrai pour les disque SSD), ces processus sont en tout cas plus lents que la véritable RAM.

On réserve traditionnellement de une à deux fois la taille de la mémoire vive installée sur une machine, à concurrence de 2Go. Si vous disposez de 512Mo de RAM, 800Mo devraient suffire. Certains estiment pouvoir s'en passer à partir de 8Go (en 2018).

En cas de sauvegarde de l'état de la RAM vers le disque dur d'un portable (fonction suspend to hard disk), la swap doit contenir au moins une fois la grandeur de la mémoire RAM.

1.2 Partition racine /

C'est la seule partition absolument nécessaire, puisqu'elle contient les répertoires nécessaires au système. Elle est d'ailleurs appelée root (racine) et a pour adresse / . En UNIX, les différents périphériques viennent s'accrocher à cette partition (il n'existe pas de «disques» A:, C:, D:...). Sont entre autres rattachés à la racine les répertoires suivants:

Rappel: la partition / doit être reformatée (c'est en tout cas recommandable) en cas de réinstallation de GNU/Linux, entraînant la disparition de tous les répertoires qu'elle contient. Il est donc conseillé de réserver une partition /home séparée de celle du système. Le fichier /etc/fstab contient les informations indiquant au système de l'emplacement des répertoires résidant sur d'autres partitions.

Si le répertoire /home est située dans une partition à part, une installation familiale (comprenant Gnome ou KDE et les petits jeux qui leur sont associés, ainsi que de nombreuses applications comme la suite OpenOffice, les applications FireFox, VLC, Gimp, Rosegarden, Audacity...) tient facilement dans une partition / de 5 à 7Go. Je n'ai jamais dépassé 10Go alors que j'essaie beaucoup de logiciels (mais très peu de jeux, que je désinstalle par après) et que je bricole beaucoup.

La meilleure politique est (en 2018) d'utiliser un disque SSD de 128Go: quelques 4Go pour la partition swap, 15 à 20Go pour le système (prenant en compte le téléchargement de jeux) et le reste de la place disponible (100Go pour les plus courants) pour la partition /home. Pour les photos et musiques d'utilisation moins courantes et les archives, un disque dur mécanique suffit.

1.3 Partition /boot

Le répertoire /boot contenant les fichiers permettant de lancer le système, il est fréquent de lui consacrer une partition: en cas de corruption du système de fichiers de la partition / , il sera possible, par l'option de boot «safe-mode» d'inspecter cette partition «de l'extérieur».

Son volume dépend du nombre de noyaux que le système utilise. Comptez 50Mo pour un seul noyau (ici, 28Mo pour le système amd64 4.9.0-4 et 9Mo pour le système de boot grub):

-rw-r--r-- 1 root root   186443 déc 23  2017 config-4.9.0-4-amd64
drwxr-xr-x 5 root root     4096 mar 12 22:50 grub
-rw-r--r-- 1 root root 18291800 aoû  9 20:54 initrd.img-4.9.0-4-amd64
-rw-r--r-- 1 root root  3183748 déc 23  2017 System.map-4.9.0-4-amd64
-rw-r--r-- 1 root root  4212512 déc 23  2017 vmlinuz-4.9.0-4-amd64

1.4 Partition /home

Cette partition contenant l'espace des utilisateurs du système, il est chaudement recommandé de lui réserver une partition, qui pourra être conservée lors d'une réinstallation du système. L'espace réservé à cette partition dépend du nombre d'utilisateurs et de leurs besoins. De qualité moyenne, une photo jpg de 2048x1536 ainsi qu'une minute de mp3 pèsent environ 1Mo; c'est 10 fois plus pour un fichier wav.

1.5 Autre partitions

On peut réserver une grosse partition /archives pour des fichiers de consultation peu courante; pour le répertoire /var si la machine est utilisée comme serveur...

2. Monter une partition

2.1 mount

Monte un périphérique à un endroit précis du système de fichiers.

suEn mode super-utilisateur: su [Enter] mount -t iso9660 /dev/sr0 /media/cdrom

... monte le CD (/dev/sr0 pour le premier lecteur) de données (iso9660) dans le répertoire /media/cdrom

suEn mode super-utilisateur: su [Enter] mount -o loop -t iso9660 image.iso /repertoire

... monte une image CD comme système de fichier visible en /repertoire

mount sans argument liste toutes les partitions actuellement montées, même celles du système, comme /proc (il s'agit du fichier /etc/mtab légèrement reformaté).

suEn mode super-utilisateur: su [Enter] umount /dev/sdb ou suEn mode super-utilisateur: su [Enter] umount /media/data démonte le second disque dur (ou la clé USB) identifié comme sdb et monté en /media/data.

La prochaine section explique comment simplifier le montage des périphériques.

2.2 /etc/fstab

Le fichier /etc/fstab contient les connexions entre périphériques et leur situation sur l'arborescence des fichiers. Il n'est modifiable que par le super-utilisateur. Avec Debian, il contient quelque chose qui ressemble à ça:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump> <pass>
proc            /proc           proc    defaults         0     0
/dev/sda1       none            swap    sw               0     0
/dev/sda2       /               ext4    defaults,errors=remount-ro  0  1
/dev/sda3       /home           ext3    rw,auto          0     0
/dev/sda4       /archives       ext3    rw,user,noauto   0     0
/dev/sr0        /media/cdrom    udf,iso9660 user,noauto  0     0
/dev/sdb1       /media/usbkey   auto    rw,user,noauto   0     0

Attention: une modification de la ligne consacrée à la partition / risque de rendre le système non bootable.

L'interface graphique reconnaît souvent automatiquement le branchement d'un disque USB ou l'insertion d'un CD ou DVD, qu'il monte dans le répertoire /media/... (sur Debian). Cependant, la ligne:

/dev/sdb1 /media/data auto user,noauto  0  0

dans /etc/fstab permet à un simple utilisateur de monter très simplement le périphérique avec mount /dev/sdb1 ou mount /media/data

2.3 hdparm

suEn mode super-utilisateur: su [Enter] hdparm /dev/sda affiche la géométrie (cylindres/têtes/secteurs) du premier disque dur.
suEn mode super-utilisateur: su [Enter] hdparm -t /dev/sda affichage la vitesse de lecture du disque (MB/sec)

2.4 df

liste l'utilisation des partitions montées, en kilo-octets.

Sys. de fichiers blocs de 1K  Utilisé Disponible Uti% Monté sur
udev                 1954264        0    1954264   0% /dev
tmpfs                 393104    30676     362428   8% /run
/dev/sda2           14352956  4747056    8857096  35% /
tmpfs                1965504        0    1965504   0% /dev/shm
tmpfs                   5120        4       5116   1% /run/lock
tmpfs                1965504        0    1965504   0% /sys/fs/cgroup
/dev/sda3           95990980 76501432   14606736  84% /home
tmpfs                 393100       48     393052   1% /run/user/1000

df -H permet un affichage plus compact (méga giga et tera-octets)

tmpfs              384M     30M  354M   8% /run
/dev/sda2           14G    4,6G  8,5G  35% /
tmpfs              1,9G       0  1,9G   0% /dev/shm
tmpfs              5,0M    4,0K  5,0M   1% /run/lock
tmpfs              1,9G       0  1,9G   0% /sys/fs/cgroup
/dev/sda3           92G     73G   14G  84% /home
tmpfs              384M     48K  384M   1% /run/user/1000

Il est possible de récupérer de la place avec suEn mode super-utilisateur: su [Enter] apt-get clean (pour la partition contenant le système: fichiers téléchargés .deb des paquetages installés) ou en supprimant les fichiers .png du répertoire caché ~/.bkl-thumbnails (Gnome); pour KDE, c'est dans le répertoire caché ~/.kde

2.5 lsblk

liste les périphériques de block même non montée, en indiquant leur taille et leur point de montage éventuel:

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 298,1G  0 disk
├─sda1   8:1    0   4,7G  0 part [SWAP]
├─sda2   8:2    0    14G  0 part /
├─sda3   8:3    0  93,1G  0 part /home
└─sda4   8:4    0 186,3G  0 part /grenier
sdb      8:16   1   3,8G  0 disk
└─sdb1   8:17   1   3,8G  0 part /media/toto/F009-64A5
sr0     11:0    1  1024M  0 rom

2.6 dd

Un périphérique contient des données mais également l'organisation de ces données sur le support. dd copie la structure et les données de façon linéaire d'un périphérique dans un fichier, ou l'inverse. Cela permet par exemple de fabriquer une clé bootable permettant d'installer un système GNU/Linux. if (input file) est ce qui est lu, of (output file) est ce qui est écrit.

Attention! cette manipulation vers un périphérique efface irrémédiablement sa structure et ses données.

suEn mode super-utilisateur: su [Enter] dd if=/dev/sdb1 of=/home/toto/cle-usb.img

... copie l'entièreté de la partition sdb1 (clé USB par exemple) dans le fichier cle-usb.img de la partition personnelle de l'utilisateur toto.

mount -o loop -t ext3 fichier.img /home/toto/data

... monte un fichier issu de la commande dd (s'il est issu d'un système de fichier ext3; si cela ne fonctionne pas, tentez avec -t auto) dans le répertoire existant /home/toto/data

3. Récupération

3.1 testdisk

Réparation de partition ou récupération des fichiers inaccessibles sur mémoire de masse, en mode console.

suEn mode super-utilisateur:
su [Enter] + mdp root
testdisk /dev/sdb

permet de travailler sur le disque sdb (second disque dur du système ou premier disque dur externe ou clé USB...

La suite n'est pas trop intuitive, cela dépend du problème rencontré. Si le boot-secteur ou la FAT est détruite, il faut impérativement lancer une analyse du périphérique, qui peut prendre quelques heures pour un téra-octet. Une fois le périphérique scanné, il faut décider des fichiers ou répertoires à copier et d'en endroit pour les recevoir.

Attention si vous utilisez l'option /log, qui nécessite plusieurs Go de place et peut saturer votre partition courante.

3.2 dvdisaster

dvdisaster est la seule application ayant permis de récupérer un dvd qui apparaissait comme vierge après plusieurs sessions de gravures non finalisées (la commande de bas niveau dd ne trouvait pas le media, non montable). Mais lorsque l'image ISO a pu être copiée sur un disque dur, il a fallu séparer les fichiers à la main un à un, n'ayant pu trouver de répertoire.

3.3 foremost (pm)

Pour mémoire, récupération des fichiers effacés (les systèmes de fichiers journalisés comme ext3 doivent être démontés; ne fonctionne pas avec ext4).

foremost /dev/sdb1 -t jpg

... recopie les fichiers effacés d'un périphérique de stockage dans un répertoire, sous certaines conditions: les fichiers effacés doivent être d'un seul tenant sur la partition, il ne doivent pas avoir été recouverts par d'autres fichiers...

-t pour préciser les types de fichiers (jpeg, mov, pdf, avi, etc.), tous par défaut
-o pour préciser le nom du répertoire de sortie (~/output/ par défaut)