Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Black Friday: -25€ dès 75€ sur les livres en ligne, vidéos... avec le code BWEEK25. J'en profite !
  1. Livres et vidéos
  2. LINUX
  3. Les disques et le système de fichiers
Extrait - LINUX Maîtrisez l'administration du système (6e édition)
Extraits du livre
LINUX Maîtrisez l'administration du système (6e édition)
5 avis
Revenir à la page d'achat du livre

Les disques et le système de fichiers

Représentation des disques

Note préalable : les unités de mesure de stockage utilisées dans ce chapitre et dans l’ensemble de ce livre utilisent la représentation de l’usage traditionnel en kilo-octets, selon la règle 1 ko = 1024 octets (210), sauf indication contraire. Cette représentation se nomme théoriquement Kio (kibioctet).

1. Nomenclature

Ceci est un petit rappel des points déjà rencontrés dans le chapitre Présentation de Linux. Suivant le type de contrôleur et d’interface sur lesquels les disques sont connectés, Linux donne des noms différents aux fichiers spéciaux des périphériques disques.

Chaque disque est représenté par un fichier spécial de type bloc. Chaque partition aussi.

a. IDE

Cette section est conservée pour des raisons historiques, la norme SATA ayant remplacé la norme IDE sur la quasi-totalité des ordinateurs de bureau et portables depuis plus de dix ans. Les disques reliés à des contrôleurs IDE (appelés aussi PATA (Parallel ATA) ou ATAPI) se nomment hdX :

  • hda : IDE0, Master

  • hdb : IDE0, Slave

  • hdc : IDE1, Master

  • hdd : IDE1, Slave

  • etc.

Contrairement aux idées reçues, il n’y a pas de limites au nombre de contrôleurs IDE, sauf le nombre de ports d’extension de la machine (slots PCI). De nombreuses...

Manipulations de bas niveau

1. Informations

La commande hdparm permet d’effectuer un grand nombre de manipulations directement sur les périphériques disques gérés par la bibliothèque libata, c’est-à-dire tous les disques SATA, ATA (IDE) et SAS. La commande sdparm peut faire à peu près la même chose pour les disques SCSI. Notez que bien que les noms de périphériques de la libata soient identiques à ceux du SCSI, il est fort probable que de nombreuses options de configuration de hdparm ne fonctionnent pas sur des disques SCSI, la réciproque étant vraie pour sdparm avec les disques SATA ou IDE. La suite se base sur hdparm.

Pour obtenir des informations complètes sur un disque, utilisez les paramètres -i ou -I. Le premier récupère les informations depuis le noyau et obtenues au moment du boot, le second interroge directement le disque. Préférez le -I qui donne des informations très détaillées.

# hdparm -I /dev/sda 
 
/dev/sda: 
 
ATA device, with non-removable media 
    Model Number:       VBOX HARDDISK 
    Serial Number:      VB91a2e953-933cdc65 
    Firmware Revision:  1.0 
Standards: 
    Used: ATA/ATAPI-6 published, ANSI INCITS 361-2002 
    Supported:...

Choisir un système de fichiers

1. Principe

a. Définition

L’action de « formater » un disque, une clé ou tout support de données consiste uniquement à créer sur un support de mémoire secondaire (volume de stockage) l’organisation logique permettant d’y placer des données. Le mot « formatage » sous Linux est utilisé pour décrire la création d’un système de fichiers. On parle donc de système de fichiers qui est à la fois l’organisation logique des supports au niveau le plus bas comme au niveau de l’utilisateur.

Les informations ne sont pas écrites n’importe comment sur les disques. Une organisation est nécessaire pour y placer tant les informations sur les fichiers qui y sont stockés que les données. Ce sont le système de fichiers et les pilotes associés qui définissent cette organisation. Si les principes de base sont souvent les mêmes entre les divers systèmes présents sous Linux, les implémentations et les organisations logiques des données sur le disque varient fortement. Aussi il n’existe pas un type de système de fichiers, mais plusieurs, au choix de l’utilisateur ou de l’administrateur système.

Tous les systèmes de fichiers Linux doivent respecter les normes POSIX. Comme POSIX définit un ensemble de règles de base, un système de fichiers peut aller au-delà de cette norme en proposant des extensions. La plupart de celles-ci concernent des éléments de sécurité, comme les ACL ou selinux.

Le principe de base d’un système de fichiers est d’associer un nom de fichier à son contenu et d’y permettre l’accès : création, modification, suppression, déplacement, ouverture, lecture, écriture, fermeture. Suivant ce principe, le système de fichiers doit gérer ce qui en découle : mécanismes de protection des accès (les permissions, les propriétaires), les accès concurrents, etc.

b. Représentation

Outre l’organisation et le stockage des informations et des données sur les fichiers, le système de fichiers doit fournir à l’utilisateur...

Partitionnement

1. Découpage logique

Pour la suite, le support de stockage sera considéré comme un support magnétique ou mémoire de type disque dur, SSD, carte mémoire, etc., c’est-à-dire tout ce qui peut être apparenté à un disque dur selon la vision classique : un espace de données pouvant être découpé en plusieurs entités logiques et indépendantes disposant chacune de leur propre système de fichiers.

Un disque peut être vu comme une longue bande d’espace de stockage découpée en cases pouvant contenir une quantité donnée d’informations. Le disque peut être utilisé tel quel comme espace de stockage, rien n’empêche de créer un système de fichiers sur un disque sans passer par l’étape de partitionnement. Il est cependant important de donner une organisation logique à cet espace et aux systèmes de fichiers qu’il contiendra, ne serait-ce qu’au nom de la séparation des données (les fichiers de données) et des traitements (les programmes les utilisant et le système).

Le partitionnement consiste en un découpage logique du disque. Le disque physique, réel, est fractionné en plusieurs disques virtuels, logiques, les partitions. Chaque partition est vue comme un disque indépendant et contient son propre système de fichiers.

Il existe deux méthodes de partitionnement : MBR, prévu pour les machines à base de BIOS, et GPT, pour les machines à base de UEFI. Ces dernières sont aussi compatibles avec le partitionnement BIOS, la réciproque n’étant pas vraie.

2. Partitionnement MBR

a. MBR et BIOS

La méthode de partitionnement MBR s’appelle ainsi car la table de partition principale est située dans ce secteur particulier du disque. Le partitionnement MBR date du début des années 1980, à l’époque où les PC travaillaient sur 16 bits, et a subi des modifications qu’on pourrait qualifier de bricolages, pour travailler ensuite sur 32 bits. La position d’un bloc est codée sur 32 bits, et la taille d’un bloc est de 512 octets. On peut donc calculer la taille maximale d’un disque : 232*512 octets : 2 To. Vous...

Manipuler les systèmes de fichiers

1. Définitions de base

a. Bloc

Le bloc est l’unité de base, atomique, de stockage du système de fichiers. Un fichier occupe toujours un nombre entier de blocs. Ainsi, si un fichier ne contient qu’un seul octet et qu’un bloc a une taille de 4096 octets, 4095 octets sont gâchés. C’est ainsi qu’il est possible de remplir un système de fichiers avec n fichiers de 1 octets, n représentant le nombre de blocs, alors que le volume total des données n’est que de n octets !

Soit un disque contenant 102400 blocs de 4096 octets. Sa taille totale est de 400 Mo. Soient 102400 fichiers de 384 octets. La taille totale des données est de 37,5 Mo. Or le disque est plein, tous les blocs étant utilisés ! Il y a 362,5 Mo de perdus. Il est donc très important de faire attention à la taille de blocs surtout si les fichiers à stocker sont de petite taille.

Certaines commandes calculent la taille des fichiers en blocs comme du, df ou find. Or historiquement la taille d’un bloc est de 512 octets, 1024 pour d’autres. C’est une unité dont la valeur peut changer selon la commande, et souvent sans rapport avec la taille des blocs du système de fichiers sur lequel vous travaillez. La prudence s’impose.

b. Superbloc

Chaque système de fichiers dispose d’au moins un superbloc (superblock en anglais). Un superbloc est une zone de métadonnées qui contient plusieurs informations sur le système de fichiers :

  • son type

  • sa taille

  • son état

  • des informations (position) sur les autres zones de métadonnées (autres superblocs, table d’inodes, etc.)

Linux tente en premier lieu de lire le superbloc primaire, le premier du disque. Il peut arriver que celui-ci soit corrompu suite à de mauvaises manipulations, un crash, une panne. Dans ce cas les données du disque ne sont plus accessibles (impossible de savoir par exemple où se trouve les inodes). Un système de fichiers Linux dispose de copies (backups) des superblocs à plusieurs endroits du disque. Les écritures sur les divers superblocs étant synchrones, ils sont tous identiques. En dernier recours si l’un deux est supprimé, il peut être recopié depuis un autre.

Vous verrez...

Accéder aux systèmes de fichiers

1. mount

La commande mount permet d’accéder aux périphériques de type blocs (les partitions) sur lesquels un système de fichiers existe. La commande mount attache le répertoire racine du système de fichiers à un répertoire pré-existant appelé point de montage (mountpoint).

mount -t typefs -o options périphérique point_de_montage 

a. Montage par périphérique

La partition sdb1 disposant de nouveau d’un système de fichiers ext4, la commande suivante rattache la racine du système de fichiers contenu dans sdb1 au répertoire /mnt/DATA.

# mount -t ext4 /dev/sdb1 /mnt/DATA 

La commande mount utilisée seule donne tous les détails sur les systèmes de fichiers actuellement montés (périphériques, systèmes de fichiers, points de montage, options) :

# mount | grep '/dev/sd[a-z]' 
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,
logbufs=8,logbsize=32k,noquota) 
/dev/sdb1 on /mnt/DATA type ext4 (rw,relatime,seclabel) 

Les mêmes informations sont accessibles en affichant le contenu du fichier /etc/mtab.

# grep '/dev/sd[a-z]' /etc/mtab 
/dev/sda1 /boot xfs rw,seclabel,relatime,attr2,inode64,logbufs=8,
logbsize=32k,noquota 0 0 
/dev/sdb1 /mnt/DATA ext4 rw,seclabel,relatime 0 0 

Montage par label

On peut souligner l’intérêt pratique d’utiliser des labels pour ses systèmes de fichiers. En cas de réorganisation des disques (déplacement dans une chaîne SCSI par exemple), l’ordonnancement des périphériques est modifié. L’utilisation des noms de périphériques oblige dans ce cas à modifier le fichier /etc/fstab à chaque modification. Ce n’est pas le cas avec les labels. Utilisez le paramètre -L de mount, suivi du nom du volume.

# mount -t ext4 -L DATA /mnt/DATA 
# mount 
... 
/dev/sdb1 on /mnt/DATA type ext4 (rw,relatime,seclabel) 

La liste des labels actuellement connus de Linux peut être obtenue en listant le répertoire /dev/disk/by-label. Notez que le label est un lien symbolique vers le fichier périphérique correspondant :

# ls -l /dev/disk/by-label/ 
total 0  
lrwxrwxrwx. 1 root root 10 29 janv. 21:05 DATA...

Contrôler le système de fichiers

1. Statistiques d’occupation

a. Par système de fichiers

La commande df permet d’obtenir des statistiques d’occupation de chaque système de fichiers monté. Sans argument, df fournit des informations sur tous les systèmes de fichiers. Vous pouvez passer comme argument un périphérique monté ou un point de montage. Si vous passez un répertoire quelconque, df donne des informations sur le système de fichiers qui contient ce répertoire.

# df 
Sys. de fichiers        blocs de 1K Utilisé Disponible Uti% Monté sur 
/dev/mapper/fedora-root    15718400 6504544    9213856  42% /
/dev/sda1                   1038336  229732     808604  23% /boot 
/dev/sdb1                  10051792   36888    9484576   1% /mnt/DATA 

Le résultat est explicite. L’unité par défaut est le kilo-octet (identique au paramètre -k) bien que la norme POSIX définisse une unité de bloc à 512 octets. Vous pouvez modifier les paramètres pour demander le résultat en Mo (-m).

# df -m /mnt/DATA/ 
Sys. de fichiers blocs de 1M Utilisé Disponible Uti% Monté sur 
/dev/sdb1               9817      37       9263   1% /mnt/DATA 

Pour que ce soit plus lisible, rajoutez le paramètre -h (Human readable).

# df -h /mnt/DATA/ 
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur 
/dev/sdb1          9,6G     37M  9,1G   1% /mnt/DATA 

Ne confondez pas ce dernier paramètre avec -H qui affiche le résultat en unités SI (Système International).

# df -H /mnt/DATA/ 
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur 
/dev/sdb1           11G     38M  9,8G   1%...

Le swap

1. Pourquoi créer un swap ?

Dans un environnement 32 bits un processus peut théoriquement accéder à 4 Go d’espace mémoire. Il dispose de 4 Go de mémoire virtuelle, rien qu’à lui et à laquelle aucun autre processeur ne peut accéder. Dans la pratique il y a plusieurs freins à cette possibilité :

  • L’espace mémoire adressable d’un processus est partagé entre zone de code et zone de données dont la taille peut varier selon le noyau utilisé. 3 Go de cet espace sont réservés aux données du processus, et 1 Go est réservé au noyau.

  • Les ordinateurs ne disposent pas tous de 4 Go de mémoire (bien qu’il soit courant de trouver des serveurs Linux disposant de 16, 32, 64 Go et même plus de mémoire, grâce aux noyaux de type PAE).

  • Tous les processus doivent se partager la mémoire de l’ordinateur.

Sur un système 64 bits il n’y a plus de limite de 4 Go, mais la taille de la mémoire physique disponible reste limitée.

Que se passe-t-il si un processus n’a plus assez de mémoire pour traiter ses données ? Le système d’exploitation va décharger des segments de la mémoire physique dans une zone d’échange sur disque qui fera office de mémoire virtuelle tampon. Il y a donc un échange entre la mémoire physique et cette zone d’échange, appelé l’espace de swap. Ce processus permet d’utiliser plus de mémoire que l’ordinateur n’en dispose réellement, au prix d’un net ralentissement si le programme est très gourmand.

2. Taille optimale

Il n’y a pas de règles strictes sur la taille du swap. Cependant les quelques règles courantes suivantes sont valables dans la plupart des cas :

  • Moins de 512 Mo de RAM : deux fois la RAM.

  • 1 Go à 4 Go : la taille de la RAM.

  • Plus de 4 Go : 4 Go, plus ou moins, selon l’utilisation des processus. Vous conviendrez que mettre 256 Go de swap sur un serveur de 256 Go de RAM n’a aucun sens.

Certains serveurs ont besoin de bien plus d’espace, comme par exemple des swaps de 8 ou 16 Go, voire plus. Dans ce cas, il devient nécessaire de réfléchir à d’autres...

Les quotas disques

1. Définitions

Les quotas permettent de poser des limites à l’utilisation de systèmes de fichiers. Ces limites sont de deux types :

  • inodes : limite le nombre de fichiers.

  • blocs : limite la taille disque.

Les quotas sont implémentés par système de fichiers individuel et pas pour l’ensemble des systèmes de fichiers. Chaque utilisateur peut être géré de manière totalement indépendante. Il en est de même pour les groupes. Le système de fichiers XFS va plus loin et permet de gérer les quotas par répertoire, ou plus exactement appelé projet. Pour chaque utilisation (inode ou bloc), vous pouvez mettre en place deux limites dans le temps :

  • Limite dure (hard) : quantité maximale d’inodes ou de blocs utilisés que l’utilisateur ou le groupe ne peuvent absolument pas dépasser. Dans ce cas, plus rien ne sera possible (création de fichier ou fichier dont la taille dépasse la limite).

  • Limite douce (soft) : quantité maximale d’inodes ou de blocs utilisés que l’utilisateur ou le groupe peuvent temporairement dépasser. Dans ce cas, les créations et modifications seront possibles jusqu’à un certain point : limite dure et délai de grâce.

  • Un délai de grâce est mis en place. Durant ce temps, l’utilisateur peut continuer à travailler sur le système de fichiers. Le but est qu’il revienne à terme sous la limite douce. Le délai dépassé, la limite douce devient la limite dure. Quoi qu’il arrive, l’utilisateur ne pourra jamais dépasser la limite dure.

Les quotas sont implémentés dans le noyau Linux et au sein des systèmes de fichiers. Pour les utiliser, les outils de quotas (packages quota) doivent être installés. Les manipulations suivantes sont effectuées sur un système de fichiers ext4.

Les quotas sont supportés sur un système de fichiers BTRFS mais pas par les commandes présentées ici. Vous pouvez vous rendre sur https://btrfs.wiki.kernel.org/index.php/Quota_support pour étudier le fonctionnement des quotas sur BTRFS, différent de celui, classique, présenté ici. Il n’y a pas par exemple de quotas par utilisateur. On peut cependant...

Les droits d’accès

1. Les droits de base

a. Droits et utilisateurs

Le rôle d’un système d’exploitation est aussi d’assurer la sécurité et l’accès aux données, ce qui est possible grâce au mécanisme des droits. Chaque fichier ou répertoire se voit attribuer des droits qui lui sont propres, des autorisations d’accès individuelles. Lors d’un accès le système vérifie si celui-ci est permis.

À sa création par l’administrateur, un utilisateur se voit affecter un UID (User Identification) unique. Les utilisateurs sont définis dans le fichier /etc/passwd. De même chaque utilisateur est rattaché à un groupe au moins (groupe principal), chaque groupe possédant un identifiant unique, le GID (Group Identification). Les groupes sont définis dans /etc/group.

La commande id permet d’obtenir ces informations. En interne, le système travaille uniquement avec les UID et GID, et pas avec les noms eux-mêmes.

$ id 
uid=1000(seb) gid=100(users) groupes=7(lp),16(dialout),33(video), 
100(users) 

À chaque fichier (inode) sont associés un UID et un GID définissant son propriétaire et son groupe d’appartenance. Vous affectez des droits pour le propriétaire, pour le groupe d’appartenance et pour le reste du monde. On distingue trois cas de figure :

  • UID de l’utilisateur identique à l’UID défini pour le fichier. Cet utilisateur est propriétaire du fichier.

  • Les UID sont différents : le système vérifie si le GID de l’utilisateur est identique au GID du fichier. Si oui l’utilisateur appartient au groupe associé au fichier.

  • Dans les autres cas (aucune correspondance) : il s’agit du reste du monde (others), ni le propriétaire, ni un membre du groupe.

d

rwxr-xr-x

29

seb

users

4096

Mar 15 22:13

Documents

Sur cette ligne du tableau, le répertoire Documents appartient à l’utilisateur seb et au groupe users, et possède les droits rwxr-xr-x.

b. Signification

Droit

Signification

Général

r

Readable (lecture).

w

Writable (écriture).

x

Executable (exécutable comme programme).

Fichier normal

r

Le contenu du fichier peut être lu, chargé en mémoire, visualisé...