Les systèmes de fichiers

Computer Science - Operating Systems · lab

Voir tous les documents en systèmes d'exploitation et cloud

Séance 5 :  Les systèmes de fichiers

Objectifs :

Rappeler le rôle d'un système de fichiers

Appliquer les commandes de gestion des systèmes de fichiers sous GNU/Linux

Appliquer les commandes de gestion de quotas

Plan :

I.

Rôle d'un système de fichiers (Rappel)

II.

Le  montage/démontage d'un système de fichiers

III.

Commandes de création et de maintenance

IV.

Configuration et gestion des quotas

I. Rôle d'un système de fichiers (Rappel)  :

Les disques durs, aussi petits soient­ils, contiennent des millions de bits, il faut donc organiser les

données afin de pouvoir localiser les informations, c'est le but du système de fichiers. Un disque dur

est, rappelons­le, constitué de plusieurs plateaux circulaires tournant autour d'un axe. Les pistes

(zones concentriques écrites de part et d'autre d'un plateau) sont divisées en quartiers appelés

secteurs (d’une taille de 512 octets). Le formatage logique d’un disque permet de créer un système

de fichiers sur le disque, qui va permettre à un système d'exploitation (DOS, Windows 9x, UNIX,

GNU/Linux, ...) d'utiliser l'espace disque pour stocker et utiliser des fichiers. Le système de fichiers

est basé sur la gestion des clusters (en français « unité d’allocation »), c’est­à­dire la plus petite

unité de disque que le système d’exploitation est capable de gérer.

Un cluster est constitué d’un ou plusieurs secteurs, ainsi plus la taille d’un cluster est importante,

moins le système d’exploitation aura d’entités à gérer.

En contrepartie, étant donné qu’un système d’exploitation ne sait gérer que des unités d’allocation

entière, c’est­à­dire qu’un fichier occupe un nombre entier de cluster, le gaspillage est d’autant plus

grand qu’il y a de secteurs par cluster. On comprend alors toute l’importance du choix du système

de fichiers.

Rappelons aussi que chaque fichier dispose de ce qu'on appelle une inode. Il s'agit de la carte

d'identité du fichier qui contient notamment sa taille, sa date de dernière modification, les

emplacements du disque dur sur lesquels sont situés les données... et un numéro. Chaque fichier a

donc un numéro unique dans chaque système de fichiers. C'est ce numéro qui est utilisé par le

système lors d'opération sur les fichiers. Le nom que vous attribuez à un fichier n'est utilisé que par

vous. Pour obtenir ces numéros : ls ­i

II. Le  montage/démontage d'un système de fichiers

Tout fichier accessible par un système GNU/Linux est inséré dans une grande arborescence, la

hiérarchie des fichiers, commençant à la racine /. Ces fichiers peuvent résider sur différents

périphériques. La commande mount permet d'attacher un système de fichiers trouvé sur un

périphérique quelconque à la grande arborescence du système. A l'inverse umount(8) le détachera à

nouveau.

La forme standard de la commande mount est :

mount ­t type périphérique répertoire. Ceci indique au noyau d'attacher le système de fichiers se

trouvant sur le périphérique mentionné (dont on précise le type) dans le répertoire indiqué. Le

contenu, le propriétaire et le mode d'accès précédents du répertoire deviennent invisibles, et, tant

que le nouveau système de fichiers reste monté, le chemin d'accès du répertoire représente alors la

racine du système de fichiers se trouvant sur le périphérique.

Il y a trois façons d'invoquer mount sans qu'il ne monte quoique ce soit :

mount ­h : affiche un message d'aide ;

mount ­V : affiche un numéro de version ;

et mount [­l] [­t type] : fournit la liste des systèmes de fichiers actuellement montés (du type indiqué

uniquement). L'option ­l ajoute les étiquettes (ext2, ext3, ext4 et XFS).

III. Commandes de création et de maintenance

1. Installation d'une nouvelle partition

Dans certains cas, il peut s'avérer indispensable d'étendre le système de fichiers sur un nouveau

disque dur, ou une partition récupérée.

Publicité

L'objectif consiste à assigner à une sous­arborescence du système de fichiers, cette nouvelle

ressource périphérique, par le processus de montage.

Soit une nouvelle partition /dev/hda3, jusqu'ici "libre", à monter sur /home.

Étapes (cas d'un ajout d'une partition ext2) :

➢ Avec fdisk, lui affectez un système 83 linux ➢ Formatez la partition

mkfs -t ext2 -c -v /dev/hda3 formate en blocs de 1024 en vérifiant les blocs(­c), puis écrit la table des inodes.

➢ Effectuez une copie

cp -r /home /root le déplacement de /home, dans /root par exemple. En effet /home est présent actuellement sur

hda1, et il va être ensuite physiquement affecté sur hda3 Les rép. personnels sont actuellement dans /root/home

➢ monter la partition hda3 en /home mount /dev/hda3 /home

➢ récupérer le contenu de /home mv /root/home/* /home N.B: Pour automatiser le montage de /dev/hda3 lors d'un redémarrage du système, ajouter dans la table de montage /etc/fstab ( cas de la famille redhat, Pour ubuntu voir upstart) la ligne : /dev/hda3 /home ext2 defaults 1 2

L'activation de la mémoire swap se fait grâce à la commande : mkswap -c partition taille

Par exemple, pour une mémoire swap utilisant 10000 blocs, sur la seconde partition du deuxième disque (hdb2) la commande serait la suivante :

mkswap -c /dev/hdb2 11000

Puis la commande swapon permet d'activer cette partition.

2. Vérification des systèmes de fichiers

Pour vérifier la cohérence de systèmes de fichiers , utilisez fsck. Syntaxe : fsck [options] ­t [fstype] device [fsck­options] Options courantes: ­A: Parcoure le fichier /etc/fstab et essaye de vérifier tous les systèmes de fichiers. Utilisé typiquement au boot depuis un script. ­t fslist: Spécifier le type de système de fichiers qui doit être vérifié. Avec ­A, seuls les système de fichiers correspondant à fslist sont vérifiés. Exemples:

fsck -t msdos /dev/fd0 -a fsck -t reiserfs /dev/hda2 -r

3.  Déboguage des systèmes de fichiers étendus

Le programme debugfs est un débogueur de système de fichiers interactif. Il peut être utilisé pour examiner ou changer l'état d'un système de fichiers ext2.

Syntaxe : debugfs device

Commandes courantes:

Help: Donne de l'aide sur toutes les commandes disponibles. Stats: Affiche des statistiques du média. Stat file: Affiche des statistiques du fichier du média. 4. Affichage des informations d'un système de fichiers étendu

Pour afficher les informations sur le super bloc et les groupes de blocs d'un système de fichiers étendu, utilisez dumpe2fs.

Syntaxe : dumpe2fs [options] device

Commandes courantes:

­b: Afficher les blocs défectueux du système de fichiers. ­h: Afficher seulement les informations du super bloc.

5. Optimisation des systèmes de fichiers étendus

Pour optimiser un système de fichiers étendu, utilisez tune2fs.

Syntaxe : tune2fs [options] device

Commandes courantes:

­i#: Intervalle entre les vérifications du système de fichiers [d|m|w]. ­l: Lister le contenu du super bloc du système de fichiers. ­L: Renseigner le nom de volume du système de fichiers.

Exemples:

tune2fs -L floppy /dev/fd0 tune2fs -l /dev/fd0

IV. Configuration et gestion des quotas

1. Définition d'un quota

L'attribution de quotas dans un système de fichiers est un outil qui permet de maîtriser l'utilisation de l'espace disque. Les quotas consistent à fixer une limite d'espace pour un utilisateur ou un groupe d'utilisateurs.

Pour la création de ces quotas, on définit 2 types de limites :

• La limite douce (ou soft limit en bon français) : indique la quantité maximale d'espace qu'un utilisateur peut occuper sur le système de fichiers. Si cette limite est atteinte, l'utilisateur reçoit des messages d'avertissement quant au dépassement du quota qui lui a été attribué. Si son utilisation est combinée avec les délais (ou grace period ), lorsque l'utilisateur continue à dépasser la soft limite après que se soit écoulé le délai de grâce, alors il se retrouve dans le même cas que dans l'atteinte d'une limite dure.

• La limite dure (ou hard limit ) définie une limite absolue pour l'utilisation de l'espace. L'utilisateur ne peut pas dépasser cette limite. Passée cette limite, l'écriture sur ce système de fichiers lui est interdite.

De plus ces limites sont exprimées en blocs et en inodes. On a vu que le bloc étant une unité d'espace. Les quotas exprimés en nombre de blocs représentent donc une limite d'espace à ne pas dépasser. En ce qui concerne les quotas exprimés en nombre d'inodes, ils représentent le nombre maximum de fichiers et répertoires que l'utilisateur pourra créer.

Pour mémoire, les délais (ou grace period ) fixent une période de temps avant que la limite douce ne se transforme en limite dure. Elle est fixée dans les unités suivantes : second, minute, hour, day, week.

2. Ce qui est nécessaire pour activer les quotas

Généralement dans la plupart des distributions, les quotas sont utilisables d'office. Vous devez vérifier 2 choses pour pouvoir utiliser les quotas :

• vous devez disposer des outils de gestion des quotas  : # rpm ­qa|grep quota quota­3.06­5

• la gestion des quotas doit être activée dans le noyau : # grep ­i quota /boot/config­2.4.18­14 (noyau 2.4) CONFIG_QUOTA=y

3. Configuration des quotas

a. Configuration de /etc/fstab

Les quotas ont activés au démarrage grâce à la commande /sbin/quotaon lancée par le script /etc/rc.d/rc.sysinit . Les quotas sont désactivés à l'arrêt du système par la commande quotaoff .

Pour fixer les quotas sur un système de fichiers, il faut mettre à jour le fichier /etc/fstab . On va pour cela ajouter les options de montage pour le ou les systèmes de fichiers concernés. Deux options peuvent être utilisées (et combinées bien sûr) :

• usrquota : active les quotas utilisateurs

•  grpquota  : active les quotas groupes

Exemple : /dev/hdc1 /home ext3 defaults,usrquota 1 1 /dev/hdc2 /tmp ext3 defaults,usrquota 1 1

b. Création des structures nécessaires au fonctionnement des quotas

Un ou deux fichiers doivent être créés pour l'utilisation des quotas : aquota.user et aquota.group . C'est dans ces fichiers que l'on configurera les quotas attribués aux utilisateurs et/ou aux groupes. Ces fichiers doivent être créés à la racine des systèmes de fichiers qui comportent ces quotas.

Exemple : # touch /home/aquota.user # touch /tmp/aquota.group

Attention : ne pas oublier de modifier les droits sur ces fichiers. Ils doivent comporter les droits en écriture et lecture pour root uniquement.

Publicité

Exemple : # chmod 600 /home/aquota.user # chmod 600 /tmp/aquota.group

Remonter le ou les systèmes de fichiers concernés pour prendre en compte l'utilisation de quotas pour ce système de fichiers. # mount ­o remount /home # mount ­o remount /tmp

Après création de ces fichiers, il faut initialiser la base des quotas en exécutant la commande suivante : quotacheck ­auvg . Dans le cas contraire, la sanction est immédiate : edquota: Quota file not found or has wrong format. No filesystems with quota detected.

Activer les quotas  :

root@linuxbox# quotaon ­a

4. Attribution et vérification des quotas

a. Fixer des quotas

L'attribution des quotas se fait grâce à la commande edquota , utilisable quelque soit le type de quota (utilisateur ou groupe). La commande ouvre un éditeur (vi ou emacs selon le contenu de votre variable EDITOR), qui vous permet de modifier directement les fichiers aquota.user ou aquota.group.

Syntaxe : edquota [­u user] [­g group] [­t]

•  ­u user  définit les quotas pour un ou plusieurs utilisateurs

•  ­g group  définit les quotas pour un ou plusieurs groupes

•  ­t définit les délais

Exemple :

edquota ­u mohamed

Disk quotas for user anne (uid 500):

Filesystem blocks soft hard inodes soft hard

/dev/hdc1 0 9000 10000 0 90000 10000

Le fichier se compose de 6 colonnes :

•  Filesystem  : système de fichiers concerné par les quotas

•  blocks  : nombre de blocs occupés par l'utilisateur dans le système de fichiers. Ici aucun fichier n'a encore été créé.

•  soft  : limite soft en nombre de blocs. Ici elle est fixée à 9 000 blocs soit environ 9 Mo

•  hard  : limite hard en nombre de blocs (environ 10 Mo)

•  inodes  : nombre d'inodes occupées par l'utilisateur dans le système de fichiers

•  soft  : limite soft en nombre d'inodes

•  hard  : limite hard en nombre d'inodes

On procédera de la même façon pour l'attribution de quotas à un groupe. (Ne tentez pas d'éditer directement ces fichiers; ils ne sont pas en format texte.)

b. Fixer un délai

On a vu également qu'on pouvait moduler le délai fixé entre le moment où l'utilisateur atteint la limite soft et celui où on va lui interdire toute occupation supplémentaire dans le système de fichiers. On va donc fixer la durée de ce délai. elle sera la même quelque soit l'utilisateur et/ou le groupe.

Syntaxe : edquota ­t

Exemple :

edquota ­t

Grace period before enforcing soft limits for users:

Time units may be: days, hours, minutes, or seconds

Filesystem Block grace period Inode grace period

/dev/hdc1 7days 7days

il suffit donc de remplacer les valeurs par vos valeurs dans l'unité qui vous convient : second, minute, hour, day, week.

5. Dépassement de quotas :

Une fois n'est pas coutume, on se place du côté utilisateur. Nous allons décrire les principaux cas de figure de dépassement de quotas et les messages envoyés à l'utilisateur.

Prenons l'exemple suivant  : l'utilisateur user dispose de 9Mo en limite douce et 10 Mo en limite dure. Son délai de grâce est de 7 minutes. Ci­dessous le contenu du système de fichiers faisant l'objet de ces quotas :

$ ls ­l /home/anne

total 1842

­rw­­­­­­­ 1 root root 7168 fév 28 23:50 aquota.user

­rw­r­­r­­ 1 user user 1857516 mar 1 12:19 fic1

drwx­­­­­­ 2 root root 12288 nov 28 12:59 lost+found

Nous sommes largement au­dessus des quotas. Nous allons maintenant copier 4 fois le fichier fic1 . Les 3 premières copies se passent bien et nous avons fic2, fic3 et fic4. Ci­dessous, la dernière copie

user@linuxbox$ cp fic1 fic5 ide1(22,10): warning, user block quota exceeded.

user@linuxbox$ ls ­l

total 9134

­rw­­­­­­­ 1 root root 7168 fév 28 23:50 aquota.user

­rw­r­­r­­ 1 user user 1857516 mar 1 12:19 fic1

­rw­r­­r­­ 1 user user 1857516 mar 1 13:18 fic2

­rw­r­­r­­ 1 user user 1857516 mar 1 13:18 fic3

­rw­r­­r­­ 1 user user 1857516 mar 1 13:18 fic4

­rw­r­­r­­ 1 user user 1857516 mar 1 13:18 fic5

drwx­­­­­­ 2 root root 12288 nov 28 12:59 lost+found

La limite douce est dépassée. L'utilisateur reçoit un message mais l'écriture est réalisée car nous n'avons pas dépassé la limite dure.

2 cas de figures peuvent alors se présenter si l'utilisateur ne contacte pas l'administrateur ou s'il ne libère pas de l'espace pour repasser au­dessus de la limite douce.

Publicité

•  1er cas : l'utilisateur tente d'écrire dans le système de fichiers ce qui l'amène à dépasser la limite dure.

$ cp fic1 fic6 ide1(22,10): write failed, user block limit reached. cp: écriture de `fic6': Débordement du quota d'espace disque

L'opération échoue. Une partie du fichier seulement a été copiée. l'utilisateur de pourra plus écrire dans le système de fichiers.

•  2e cas : l'utilisateur laisse s'écouler le délai de grâce de 7 minutes fixé par l'administrateur. Il tente alors de copier le contenu du fichier /etc/passwd par exemple. Le total de l'espace occupé reste toutefois inférieur à la limite dure.

La sanction sera identique que dans le 1er cas. L'opération échoue.

$ cp /etc/passwd . ide1(22,10): write failed, user block quota exceeded too long. cp: écriture de `./passwd': Débordement du quota d'espace disque

L'opération a échoué comme en témoigne le listage ci­dessous :

$ ls ­l passwd

­rw­r­­r­­ 1 mohmed mohmed 0 mar 1 14:48 passwd

De même si vous essayez d'écrire dans le fichier passwd, vous obtiendrez le message suivant dans votre éditeur au moment de l'enregistrement : "passwd" erreur d'écriture (système de fichiers plein ?) Appuyez sur ENTRÉE ou tapez une commande pour continuer Il vous est impossible d'écrire.

6. Vérification et affichage des quotas

Les commandes suivantes vont vous permettre d'une part de vérifier les quotas affectés à chaque groupe et/ou utilisateur et éventuellement de synchroniser les informations nécessaires au système pour le suivi de ces quotas.

a. Edition des informations relatives aux quotas

La commande repquota permet d'afficher un résumé de l'utilisation des quotas et délais de grâce.

Syntaxe  : repquota [ ­vug ] ­a | filesystem

•  ­v  : mode verbeux, affiche des infos supplémentaires

•  ­u  : affiche des informations sur les quotas utilisateurs

•  ­g  : affiche des informations sur les quotas groupes

•  ­a  : affiche des informations sur tous les systèmes de fichiers disposant de quotas

•  filesystem  : affiche des informations sur les quotas du système de fichiers spécifié

Pour l'exemple, j'ai ajouté un utilisateur toto.

repquota ­avug

*** Report for user quotas on device /dev/hdc10

Block grace time: 00:07; Inode grace time: 00:07

Block limits File limits

User used soft hard grace used soft hard grace

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

root ­­ 19 0 0 2 0 0

user ­­ 7293 9000 10000 5 9000 10000

toto +­ 9000 8000 9000 00:07 5 8000 9000

+ ­­ 19 0 0 2 0 0

Statistics:

Total blocks: 7

Data blocks: 1

Entries: 3

Used average: 3,000000

On trouve ici les informations relatives au quota imposé aux utilisateurs. On trouvera autant de lignes que d'utilisateurs, groupes et systèmes de fichiers concernés.

Sont rappelés les quotas fixés en nombre de blocs et d'inodes. On trouve également le nombre de blocs et le nombre d'inodes utilisés. Quand un horodatage apparaît dans la colonne grace , cela signifie que l'utilisateur (ou le groupe) a dépassé la limite douce. Le délai de grâce est donc décompté.

Vous pouvez également utiliser la commande quota suivie du nom d'un utilisateur ou d'un groupe. Là encore vous obtiendrez toutes les informations relatives aux quotas et à l'utilisation de l'espace attribué.

Exemple : pour obtenir les informations liées aux quotas concernant User :

quota user

Disk quotas for user user (uid 500):

Filesystem blocks quota limit grace files quota limit grace

/dev/hdc10 7293 9000 10000 5 9000 10000

b. Vérifications et synchronisation des fichiers de quotas

Il peut arriver que les fichiers de quotas deviennent incohérents. La gestion de ceux­ci devient alors impossible. D'autre part, lorsque vous ajoutez un nouvel utilisateur ou un nouveau groupe à l'aide de la commande edquota , il faut là encore synchroniser les fichiers pour la prise en compte de ces nouvelles informations.

Syntaxe  : quotacheck [ ­vug ] ­a | filesystem

•  ­v  : mode verbeux, affiche des infos supplémentaires

•  ­u  : vérifie uniquement les fichiers de quotas utilisateurs

•  ­g  : vérifie uniquement les fichiers de quotas groupes

•  ­a  : vérifie les fichiers de quotas de tous les systèmes de fichiers en disposant

•  filesystem  : vérifie les fichiers de quotas du système de fichiers spécifié

Exemple : vérifier tous les fichiers de quotas, quelque soit le système de fichiers concerné # quotaoff ­a # quotacheck ­auvg quotacheck: Scanning /dev/hdc10 [/home/user/quota] done quotacheck: Checked 2 directories and 10 files