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 soientils, 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, rappelonsle, 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 sousarborescence 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 [fsckoptions] 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 quota3.065
• la gestion des quotas doit être activée dans le noyau : # grep i quota /boot/config2.4.1814 (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. Cidessous 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
rwrr 1 user user 1857516 mar 1 12:19 fic1
drwx 2 root root 12288 nov 28 12:59 lost+found
Nous sommes largement audessus 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. Cidessous, 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
rwrr 1 user user 1857516 mar 1 12:19 fic1
rwrr 1 user user 1857516 mar 1 13:18 fic2
rwrr 1 user user 1857516 mar 1 13:18 fic3
rwrr 1 user user 1857516 mar 1 13:18 fic4
rwrr 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 audessus 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 cidessous :
$ ls l passwd
rwrr 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 ceuxci 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