Jean-Francois Bouchaudy Gilles Goubet

Transcription

Jean-Francois Bouchaudy Gilles Goubet
,).58
!DMINISTRATION
Jean-Francois Bouchaudy
Gilles Goubet
© Tsoft et Groupe Eyrolles, 2000, 2004, ISBN : 2-212-11505-9
faux-titre.indd 1
17/05/04 20:15:11
• « File System »
• mount, umount
• inode
• ext2, iso9660
• mkfs,mke2fs,e2fsck
• /etc/fstab
Module 4 :
Gestion de
l’espace disque
Objectifs
Après l’étude du chapitre, le lecteur connaît la structure des systèmes de fichiers, leur
gestion. Il est capable de créer, monter, démonter un système de fichiers. Il peut en
automatiser le montage.
Contenu
Les disques
Le partitionnement
Arborescence et systèmes de fichiers
La gestion de l’espace disque, la commande df
Montage et démontage des systèmes de fichiers
Les différents types de systèmes de fichiers
Panorama des commandes de gestion des systèmes de fichiers
L’automatisation du montage des systèmes de fichiers
Références
HOWTO : filesystems-HOWTO
Le manuel : mke2fs(8), mount(8), fstab(5), debugfs(8), e2fsck(8)
© TSOFT – Linux Administration
4-1
Module 4 : Gestion de l’espace disque
Les disques
Les disques de Linux
Le MBR
Le disque
physique :
/dev/hda
Une partition
primaire /dev/hda1
Une partition
primaire /dev/hda2
Utilisation
Utilisation::
••FS
FS
••swap
swap
••Disque
Disquedédié
dédié
Une partition logique
/dev/hda5
Une partition logique
/dev/hda6
Une partition étendue
/dev/hda3
Module 4 : Les systèmes de fichiers - 4.2
TSOFT - Linux Administration
Introduction
Dans Linux, comme dans tous les systèmes UNIX, il faut distinguer le fond et la
forme. Un disque Linux est un périphérique qui possède un nom dans le répertoire
/dev et qui est vu comme une suite logiquement contiguë de secteurs. Sa forme est
diverse : une partition d’un disque dur, un disque en RAM, un fichier, une disquette,
un CD-ROM, une clé USB ou encore un volume logique (cf. Module 5 :L’espace
disque, aspects avancés).
Le chapitre s’attache à décrire les partitions d’un disque IDE d’un système Linux
installé sur un PC.
Les noms des disques physiques de Linux
Les noms des disques SCSI sont de la forme /dev/sdx, où x est une lettre identifiant le
lecteur de disque. Ainsi, /dev/sda désigne le premier lecteur de disque SCSI, /dev/sdb
le second et ainsi de suite.
Les noms des disques IDE sont de la forme /dev/hdx, où x est une lettre identifiant le
lecteur de disque. Les disques vont par paires, /dev/hda désigne le disque maître et
/dev/hdb le disque esclave associés au premier contrôleur, /dev/hdc désigne le disque
maître et /dev/hdd le disque esclave associées au deuxième contrôleur, et ainsi de
suite.
# ls –l /dev/hd?
brw-rw---1 root
brw-rw---1 root
brw-rw---1 root
brw-rw---1 root
brw-rw---1 root
brw-rw---1 root
brw-rw---1 root
4-2
disk
disk
disk
disk
disk
disk
disk
3,
3,
22,
22,
33,
33,
34,
0
64
0
64
0
64
0
jan
jan
jan
jan
jan
jan
jan
30
30
30
30
30
30
30
2003
2003
2003
2003
2003
2003
2003
/dev/hda
/dev/hdb
/dev/hdc
/dev/hdd
/dev/hde
/dev/hdf
/dev/hdg…
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Le nom du disque n’est normalement utilisé que dans les commandes de
partitionnement qui vont nous permettre de créer les partitions qui sont les disques
utilisés par Linux (cf. Chapitre partitionnement).
Structure des disques physiques
Le MBR (Master Boot Record)
Le premier secteur du disque s’appelle le MBR (Master Boot Record). Il contient la
table des partitions et est à l’origine du chargement, on dit aussi amorce ou boot du
système actif, quel qu’il soit.
La structure du MBR est la suivante :
• Les 446 premiers octets contiennent un programme de chargement, loader en
anglais, qui va démarrer l’exécution du programme de chargement propre au
système d’exploitation actif.
• Les 64 octets qui suivent décrivent les partitions : taille, localisation, type et statut.
• Les deux derniers octets du MBR constituent le magic number, une valeur
numérique que certains systèmes utilisent pour vérifier la signature du secteur.
Partitions primaires et partition étendue
La table des partitions du MBR ne contient que quatre entrées. Il en résulte qu’un
disque ne peut contenir que quatre partitions principales. Pour dépasser cette limite,
qui existe aussi dans Windows, une des partitions principales peut être définie comme
partition étendue. Cette dernière contiendra des partitions logiques. On a coutume
d’appeler primaire les partitions principales autres que l’étendue. Les disques qui sont
utilisés dans Linux sont les partitions primaires ou les partitions logiques créées dans
l’étendue.
Les noms des partitions sont de la forme /dev/hdxnn, où x identifie le disque physique
et nn le numéro de la partition. Les valeurs comprises entre 1 et 4 sont réservées aux
partitions primaires et à la partition étendue. Les valeurs attribuées aux partitions
logiques créées dans l’étendue commencent à toujours à 5, quelque soit le nombre de
partitions principales.
# ls /dev/hda*
/dev/hda
/dev/hda14 /dev/hda2
/dev/hda1
/dev/hda15 /dev/hda20
/dev/hda10 /dev/hda16 /dev/hda21
/dev/hda25
/dev/hda26
/dev/hda27
/dev/hda30
/dev/hda31
/dev/hda32
/dev/hda7
/dev/hda8
/dev/hda9
L’exemple du transparent représente un disque qui contient trois partitions
principales : deux primaires hda1 et hda2 et une étendue hda3. La partition étendue
hda3 contient deux partitions logiques hda5 et hda6.
Remarques
Un système Linux peut résider dans sa totalité dans des partitions logiques de la
partition étendue.
A la différence de Windows, la partition étendue possède un nom de disque qui,
comme le nom du disque physique, n’est généralement utilisé que dans les
commandes de partitionnement. Les disques effectivement utilisés sont ceux des
partitions logiques.
Les noms /dev/hdxnn ne s’appliquent pas seulement aux disques Linux mais servent
aussi à nommer les lecteurs Windows.
© TSOFT – Linux Administration
4-3
Module 4 : Gestion de l’espace disque
Utilisation d’un disque Linux
Un disque Linux peut avoir trois utilisations :
1. Contenir un système de fichiers. C’est l’usage le plus courant.
2. Contenir un espace de swap.
3. Etre géré directement par une application. On retrouve là un équivalent des
disques « raw device » d’UNIX. Les données qu’il contient ne sont pas vues
en terme de fichiers Linux et c’est le logiciel qui doit prendre en charge les
opérations de sauvegarde ou de restauration. La commande Linux dd (cf .
Module 6 : La sauvegarde) permet d’en faire une image physique.
4-4
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Le partitionnement
Le partitionnement
Les commandes de
Partitionnement :
fdisk
cfdisk
sfdisk
parted
Module 4 : Les systèmes de fichiers - 4.3
TSOFT - Linux Administration
Introduction
Il existe de nombreux outils de partitionnement des disques d’un PC. Tous ne sont pas
liés au monde Linux et ont été élaborés pour Windows. Le chapitre retient les
commandes que l’on peut utiliser dans un environnement Linux
Panorama des commandes de partitionnement
fdisk
La commande interactive de partitionnement, en mode
commande.
cfdisk
La commande de partitionnement qui fonctionne avec des menus
en mode texte.
sfdisk
Une commande de partitionnement proche de fdisk. Les
commandes de partitionnement sont passées en argument et les
données sont lues sur l’entrée standard. Cette commande est utile
quand elle est utilisée dans un script.
drakConf
Outil graphique de Mandrake qui permet le partitionnement.
fips
Outil rudimentaire pour redimensionner les partitions Windows.
partitionmagic
Outil commercial qui permet de redimensionner les partitions sans
perte de données.
GNU parted
Outil du monde libre qui permet de redimensionner les partitions
sans pertes de données.
La commande fdisk
La commande fdisk, bien connue des utilisateurs de PC, permet de gérer le
partitionnement d’un disque.
© TSOFT – Linux Administration
4-5
Module 4 : Gestion de l’espace disque
Syntaxe
fdisk [Nom_du_lecteur]
En l’absence du nom du lecteur, la commande fdisk utilise le premier lecteur IDE
/dev/hda. L’utilisateur dispose de plusieurs commandes dont les principales sont
résumées dans le tableau qui suit :
Commandes
Description
p
Affiche la liste des partitions. La commande fdisk –l est
équivalente.
m
Affiche la liste des commandes.
n
Ajout d’une nouvelle partition. Il faut en préciser le type primaire ou
logique, le cylindre de début et la taille que l’on peut exprimer en
méga-octets.
a
Définit la partition de boot. La commande a active ou désactive la
partition concernée comme partition de boot selon qu’elle l’était déjà
ou pas.
d
Supprime une partition.
l
Affiche la liste des types de partitions reconnues par Linux (Linux
native, swap, FAT, …).
t
Attribue un type à une partition, tel que défini précédemment (Linux
native, swap, …).
w
Enregistre les modifications et quitte.
q
Quitte sans enregistrer les modifications.
Exemples
# fdisk
Using /dev/hda as default device!
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot
Start
End
Blocks
Id System
/dev/hda1
*
1
319 2562336
b Win95 FAT32
/dev/hda2
320
524 1646662+
5 Extended
/dev/hda5
320
447 1028128+ 83 Linux native
/dev/hda6
448
452
40131
82 Linux swap
Command (m for help): m
Command action
a
toggle a bootable flag
b
edit bsd disklabel
c
toggle the dos compatibility flag
d
delete a partition
l
list known partition types
m
print this menu
n
add a new partition
o
create a new empty DOS partition table
p
print the partition table
q
quit without saving changes
t
change a partition's system id
u
change display/entry units
v
verify the partition table
4-6
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
w
x
write table to disk and exit
extra functionality (experts only)
Command (m for help): n
Command action
l
logical (5 or over)
p
primary partition (1-4)
l
First cylinder (453-524): 453
Last cylinder or +size or +sizeM or +sizeK ([453]-524): +200M
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot
Start
End
Blocks
Id System
/dev/hda1
*
1
319 2562336
b Win95 FAT32
/dev/hda2
320
524 1646662+
5 Extended
/dev/hda5
320
447 1028128+ 83 Linux native
/dev/hda6
448
452
40131
82 Linux swap
/dev/hda7
453
478
208813+ 83 Linux native
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Re-read table failed with error 16: Périphérique ou ressource
occupé..
Reboot your system to ensure the partition table is updated.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
La commande cfdisk
La commande cfdisk (curses fdsik) est une alternative, plus simple d’emploi, à la
commande fdisk. Elle fonctionne avec des menus déroulants. Pour répondre à la
curiosité de son nom, il faut se souvenir que la bibliothèque curses est la
bibliothèque standard du système UNIX, pour développer des programmes semigraphiques pour des terminaux de type texte. Elle fonctionne donc avec telnet.
Exemple
# cfdisk
cfdisk 0.8l
Disk Drive: /dev/hda
Heads: 255 Sectors per Track: 63 Cylinders: 524
Name
Flags Part Type
FS Type
[Label] Size (MB)
-------------------------------------------------------------------------------hda1
hda5
hda6
hda7
Boot
Primary
Logical
Logical
Logical
Pri/Log
Win95 FAT32
Linux ext2
Linux Swap
Linux
Free Space
2502.32
1004.07
39.23
203.96
360.84
[ Help ] [ New ] [ Print ] [ Quit ] [ Units ] [ Write ]
Create a new logical partition
© TSOFT – Linux Administration
4-7
Module 4 : Gestion de l’espace disque
[Primary] [Logical] [Cancel ]
Size (in MB): 360.84
cfdisk 0.8l
Disk Drive: /dev/hda
Heads: 255 Sectors per Track: 63 Cylinders: 524
Name
Flags Part Type
FS Type
[Label] Size (MB)
-------------------------------------------------------------------------------hda1
Boot Primary Win95 FAT32
2502.32
hda5
Logical Linux ext2
1004.07
hda6
Logical Linux Swap
39.23
hda7
Logical Linux
203.96
hda8
Logical Linux
360.84
[Bootable] [ Delete ] [ Help ] [Maximize] [ Print ] [ Quit ] [ Type ] [
Units ] [ Write ]
Write partition table to disk (this might destroy data)
Are you sure you want write the partition table to disk? (yes or no): yes
Warning!! This may destroy data on your disk!
Wrote partition table, but re-read table failed. Reboot to update table.
La commande sfdisk
La commande sfdisk, bien que moins conviviale, offre l’intérêt de pouvoir être
utilisée dans un script. Les commandes de partitionnement sont passées en argument
et les données sont saisies depuis l’entrée standard, donc redirigeables depuis un
fichier. On peut regretter que la sortie standard produite par l’affichage soit d’une
forme différente de l’entrée standard qui définit la table des partitions.
Affichage de la table des partitions.
# sfdisk -d /dev/hda
N° table de partition de /dev/hda
unit: sectors
/dev/hda1 : start=
63, size=
211617,
/dev/hda2 : start=
211680, size= 6138720,
/dev/hda3 : start= 6350400, size= 3069360,
/dev/hda4 : start= 9419760, size= 14152320,
…
Id=83, bootable
Id=83
Id=83
Id= 5
Modification de la table des partitions. On utilise les paramètres précédents.
# cat fichier
63,211617,83,*
211680,6138720,83
6350400,3069360,83
9419760,14152320,5
…
# sfdisk -uS --force --no-reread /dev/hda < fichier
4-8
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Le logiciel GNU parted
Introduction
Gnu-Parted est un logiciel libre, sous licence GPL, qui gère les partitions d’un disque
dur. Avec Gnu-Parted, on peut :
• Créer une table de partitions.
• Créer ou détruire une partition.
• Copier ou déplacer le contenu d’une partition.
• Créer un système de fichiers.
• Modifier la taille d’une partition et le système de fichiers qu’elle contient.
L’objectif des concepteurs du produit est de proposer un outil valable pour toutes les
architectures, tous les systèmes d’exploitation et tous les types de systèmes de fichiers.
Actuellement, le résultat est plus modeste. Linux est le seul à exécuter parted. Parted
ne supporte pleinement que ext2 et fat (16 et 32) ainsi que la swap Linux.
Parted est un outil en mode texte que l’on utilise en mode commande ou de manière
interactive. Il agit seulement sur des systèmes de fichiers démontés. Si on modifie un
disque en cours d’utilisation, une des partitions est par exemple montée, il faut
rebooter. Cela induit deux logiques d’utilisation du produit :
• On démarre le système à partir d’une disquette ou d’un cdrom bootable sous Linux,
ce qui permet d’utiliser parted y compris sur le FS-root.
• On utilise parted sous Linux pour gérer les partitions d’un disque non système.
Dans ce cas, on n’a pas besoin de rebooter ou d’utiliser un système de secours.
Obtenir GNU parted
On peut télécharger les sources de parted depuis le site du GNU, www.gnu.org. Il est
normalement présent, sous forme de paquetage, dans les distributions récentes (parted*.rpm). Il existe également sur des distributions de maintenance comme System
Rescue CD (http://www.sysresccd.org). Enfin, on peut télécharger depuis le site du
GNU l’image d’une disquette bootable contenant un mini-système Linux avec
notamment tar, dd et parted. Voici l’url de ce fichier :
ftp://ftp.gnu.org/gnu/parted/bootdisk/partboot.img. Après l’avoir récupéré, on le copie
sur une disquette avec dd :
# dd if=partboot.img
of=/dev/fd0
Les commandes de GNU parted
Syntaxe :
parted [option...] [disque [commande [arg ... ] ...]]
Si on active parted sans argument, on passe en mode interactif, parted affiche
l’invite « (parted) » et attend une commande.
Les commandes :
• check PART
Vérifie sommairement le système de fichiers contenu dans la partition PART.
• cp [DSQ-ORIG] PART-ORIG PART-DST
Copie le système de fichiers de la partition PART-ORIG du disque DSQ-ORIG,
par défaut, le disque courant, dans la partition PART-DST du disque courant. La
partition de destination doit être aussi grande ou plus grande que celle d’origine.
© TSOFT – Linux Administration
4-9
Module 4 : Gestion de l’espace disque
• help [CMD]
Affiche la liste des commandes ou l’aide sur la commande CMD.
• mklabel TYPE
Crée une table de partitions. Il faut indiquer son type : bsd, mac, loop, pc98, msdos.
Sur un PC ordinaire, on utilise le type msdos.
• mkfs PART TYPE-FS
Créer un système de fichiers de type TYPE-FS (ext2, fat, hfs, ntfs, reiserfs) dans la
partition PART.
• mkpart TYPE-PART [TYPE-FS] DEBUT FIN
Crée une partition. TYPE-PART indique si il s’agit d’une partition principale
(primary), étendue (extended) ou logique (logical). DEBUT et FIN sont exprimées
en méga octets. On peut utiliser des valeurs décimales.
• mkpartfs TYPE-PART TYPE-FS DEBUT FIN
Crée une partition et y installe un système de fichiers en une seule opération.
• move PART DEBUT FIN
Déplace une partition (cf. cp).
• name PART NAME
Nomme à une partition.
• print
Affiche la table des partitions.
• quit
Quitte parted.
• Resize PART DEBUT FIN
Modifie la taille d’une partition et du système de fichiers qui l’occupe. On peut
aussi bien agrandir que réduire la taille. Cette commande ne s’applique pour le
moment qu’aux systèmes de fichiers ext2, FAT et à une partition de swap Linux.
En ce qui concerne la FAT, la diminution fonctionne correctement, mais
l’agrandissement n’est pas encore garanti.
• rm PART
Détruit la partition PART.
• select DSK
Sélectionne le disque DSK comme disque par défaut.
• set PART DRAP {on|off}
Positionne ou enlève le drapeau DRAP de la partition PART. Les principaux
drapeaux : boot, raid, lvm.
Exemples
Rétrécir la partition numéro un et créer ensuite une FAT dans la partition deux. Deux
solutions sont présentées, en mode commande et en mode interactif :
# parted /dev/hda resize 1 52 1004 mkfs 2 fat
# parted
(parted) select /dev/had
(parted) resize 1 52 1004
(parted) mkfs 2 fat
(parted) quit
#
Vérifier le système de fichiers de la partition numéro un.
(parted) check 1
4-10
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Détruire la partition numéro trois.
(parted) rm
3
Visualiser la table des partitions.
(parted) print
Disk geometry for /dev/hda: 0.000-5729.062 megabytes
Disk label type: msdos
Minor
Start
End
Type
Filesystem Flags
1
0.031
2000.742 primary
FAT
boot
2
2000.742
5729.062 extended
5
2000.773
2200.078 logical
ext2
7
2200.109
2318.203 logical
linux-swap
8
2318.234
4326.328 logical
ext2
6
4326.359
5729.062 logical
FAT
Positionner le drapeau « partition active » sur la partition numéro trois.
(parted) set
3
boot on
Créer une partition logique avec un système de fichiers ext2.
(parted) mkpartfs
logical
ext2
0.0
692.1
Problèmes
• On ne peut manipuler que des partitions non utilisées.
• Si on veut, par exemple, changer la taille d’un système de fichiers, il faut au
préalable le démonter.
• Modifier, changer ou déplacer la partition qui abrite le FS-root
• Cette opération oblige à utiliser un système de maintenance bootable. Il faut
également modifier le boot primaire qui se trouve dans le MBR. Si l’on utilise lilo,
il faut relancer la commande lilo. Si on utilise la disquette bootable du GNU :
# mount /dev/hda1 /mnt # hda1 abrite le FS-root
# chroot /mnt /sbin/lilo
# umount /dev/hda1
• La limite des 1024 cylindres
Si l’on utilise un bios ancien ou une ancienne version de lilo, le boot secondaire,
qui se trouve en tête de la partition abritant le FS-root doit se trouver dans la limite
des 1024 cylindres du disque.
• L’insertion de partitions logiques
Si le rétrécissement d’une partition logique permet de créer de nouvelles partitions
logiques, les partitions logiques qui suivent ont leur numéro décalé du nombre
partitions insérées. Il faut en tenir compte dans l’administration du système. Il faut
modifier le fichier /etc/fstab.
• Vérifier la géométrie
Dans le cas d’un disque qui ne possède aucune partition, parted peut se tromper
dans l’estimation de sa géométrie (cylindres, têtes, secteurs). Il faut impérativement
la vérifier.
• Le mode LBA et les partitions FAT
Si l’on veut modifier une partition FAT, il faut activer le mode LBA au niveau du
bios si ce n’est pas déjà fait et ajouter le drapeau lba à la partition.
© TSOFT – Linux Administration
4-11
Module 4 : Gestion de l’espace disque
La commande qtparted
La commande qtparted est une interface graphique à la commande parted.
La commande DiskDruid
La commande DiskDruid est incluse dans la procédure d’installation des
distributions RedHat et Mandrake. La version Mandrake est plus agréable à utiliser.
On démarre avec le 1er cdrom de la distribution Mandrake et on commence
l’installation pour accéder au menu de partitionnement. Après écriture sur disque des
modifications des partitions, on peut redémarrer le système sans poursuivre la
procédure d’installation. Comme parted, DiskDruid peut modifier la taille d’une
partition sans détruire le système de fichiers qu’il contient, y compris NTFS.
Références
Man : parted(8)
La documentation du paquetage, notamment le fichier USER qui contient le guide
d’utilisation et deux exemples complets d’utilisation.
Internet :
4-12
http://www.gnu.org
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Arborescence et système de fichiers
Arborescence et système de fichiers
/
/
(root)
bin
etc
/home
home
usr
/usr
TSOFT - Linux Administration
Module 4 : Les systèmes de fichiers - 4.4
L’arborescence (rappel)
Les utilisateurs voient une arborescence de fichiers unique. Cette arborescence est en
fait l’unification de plusieurs arbres. Chaque arbre est stocké sur un disque local du
système Linux ou bien est un arbre distant. La structure d’accueil des fichiers d’un
arbre d’un disque du système Linux s’appelle un système de fichiers (File system). Un
disque Linux, généralement une partition primaire ou logique, ne peut contenir qu’un
seul système de fichiers. Au cours du temps, la structure interne des systèmes de
fichiers a évolué pour s’adapter à l’augmentation de la capacité des disques et des
fichiers.
La procédure d’installation de chaque système Linux effectue la création et le
peuplement des systèmes de fichiers initiaux. L’administrateur réalise ensuite la
création et la gestion des « systèmes de fichiers » supplémentaires. L’unification des
arborescences se fait en attachant la racine d’un arbre d’un disque à un répertoire d’un
système de fichiers déjà actif : on dit que l’on procède au montage du système de
fichiers (cf. Le montage des systèmes de fichiers). A défaut d’avoir réalisé cette
opération, les fichiers d’un système de fichiers sont inaccessibles. Comme il n’existe
qu’un seul attachement possible entre la racine d’un arbre d’un système de fichiers et
un répertoire, et qu’un disque ne peut contenir qu’un système de fichiers, on confond
parfois, dans l’expression, le chemin d’accès au système de fichiers (le chemin de
montage) et le disque qui le contient.
Pourquoi créer un système de fichiers ?
Sachant qu’il n’y a pas de difficulté à créer et à monter un système de fichiers, la
question essentielle que se posent les administrateurs est de savoir pourquoi créer des
systèmes de fichiers et quel intérêt peut-on en retirer ?
© TSOFT – Linux Administration
4-13
Module 4 : Gestion de l’espace disque
L’organisation physique du système informatique
• On est obligé d’avoir plusieurs systèmes de fichiers si on dispose de plusieurs
disques physiques, sachant qu’un disque ne peut contenir qu’un système de fichiers
et qu’un système de fichiers ne peut pas s’étendre sur plusieurs disques. Le concept
de LVM (cf. Module suivant) modifie cette affirmation.
• Les disques amovibles font naturellement l’objet d’une création d’un système de
fichiers.
Des critères liés à des choix de gestion
• La sécurité de fonctionnement est améliorée quand on dispose de plusieurs
systèmes de fichiers. Si un système de fichiers est endommagé, les dégâts sont
limités au disque qui le contient.
• Les performances sont améliorées par la diminution du temps d’accès aux fichiers.
Le morcellement des fichiers est réduit à l’espace du disque où il est stocké.
• La division de l’espace en plusieurs systèmes de fichiers permet de cloisonner
l’espace pour les utilisateurs ou les applications. Comme les utilisateurs ou les
applications n’ont le droit de création de fichiers que dans certains répertoires,
l’administrateur est certain qu’ils ne pourront pas créer de fichiers de taille
supérieure à l’espace disponible du disque où se trouvent leurs répertoires.
• Les administrateurs qui font le choix d’effectuer des sauvegardes physiques
peuvent ainsi créer des systèmes de fichiers de même taille que les unités
d’archivage.
• Certaines arborescences sont par nature d’excellentes candidates pour être des
systèmes de fichiers (beaucoup de systèmes UNIX le réalisent dès l’installation).
Citons entre autres : root (/), /boot, /usr, /home, /var, /tmp, /usr/man, /usr/local.
4-14
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
La gestion de l’espace disque, la commande df
La gestion de l’espace disque: df
# df
Filesystem
/dev/hda1
/dev/hda6
/dev/hda5
# df -i
Filesystem
/dev/hda1
/dev/hda6
/dev/hda5
1k-blocks
Used Available Use% Mounted on
796033 318675 436234 42% /
101471
454
95777 0% /home
101471
28
96203 0% /tmp
Inodes IUsed
206040 28565
26208
215
26208
40
IFree IUse%
177475 14%
25993 1%
26168 0%
Mounted on
/
/home
/tmp
Module 4 : Les systèmes de fichiers - 4.7
TSOFT - Linux Administration
Introduction
L’espace disque est une ressource précieuse, même si les capacités des disques ont
considérablement évolué ces dernières années. L’administrateur doit en contrôler
l’usage.
Il dispose pour cela de commandes simples et pratiques dont nous ne faisons ici que
rappeler la signification et donner quelques options significatives.
La commande df indique l’espace libre des disques contenant des systèmes de
fichiers montés. Les tailles sont affichées en kilo-octets. Les principales options sont :
-i
Affiche les informations sur l’utilisation des inodes et non des blocs.
-k
Affiche les tailles en kilo-octets. L’option est significative dans le cas où
la variable POSIXLY_CORRECT est définie (cf. Remarque).
-T
Affiche également le type de système de fichiers.
La commande du affiche le nombre de blocs d’un kilo-octet utilisés par une
arborescence qui peut coïncider avec celle d’un système de fichiers.
Les principales options sont :
-s
Affiche le total seulement.
-k
Affiche les tailles en kilo-octets (cf. Remarque).
Remarque
Si la variable d’environnement POSIXLY_CORRECT est définie, les commandes du
et df affichent le nombre de blocs de 512 octets.
# df
SysFichier
© TSOFT – Linux Administration
1K-blocs
Utilisé Dispo.
Util% Monté sur
4-15
Module 4 : Gestion de l’espace disque
/dev/hda6
/dev/hda1
/dev/hda9
# df –h
SysFichier
/dev/hda6
/dev/hda1
/dev/hda9
602684
102454
252208
112268
6114
1096
459800
91050
251112
20% /
7% /boot
1% /home
Tail. Util.Disp. Uti% Monté sur
589M 113M 447M 21% /
101M 6.0M
89M
7% /boot
247M
33M 214M 14% /home
La commande find
La commande find permet de rechercher des fichiers selon différents critères dont
celui de la taille et de la date du dernier accès.
A titre d’exemple, recherchons les fichiers des utilisateurs dont la taille est supérieure
à 100 Ko et dont le dernier accès remonte à plus de 90 jours :
# find /home –size +100k –atime +90 –print
Purger des fichiers
Il existe, en sus, des fichiers qui peuvent être détruits ou purgés, avec une périodicité
qui varie selon les cas :
Les fichiers créés par les applications dans les répertoires /tmp et /var/tmp.
Les fichiers core qui sont générés quand un processus meurt sur réception de certains
signaux, souvent émis par le noyau à la suite d’une anomalie de fonctionnement. Ils
contiennent l’image du processus quand il est mort et sont destinés aux programmeurs
qui veulent effectuer, à chaud, une analyse post-mortem de l’application. Ils peuvent
être détruits sinon sans remord.
Les fichiers log qui enregistrent des informations relatives au suivi d’un service, d’un
logiciel. Ils peuvent être purgés dès que l’administrateur a analysé leur contenu et les a
archivés si nécessaire.
Remarque
En général, les fichiers core ne sont plus créés, car leur taille maximum est nulle par
défaut. Pour qu’ils le soient, il faut fixer leur taille limite grâce à la commande ulimit.
Le nom est alors core.15370, où 15370 est le PID du process dumpé.
$ ulimit -c unlimited
$ kill -3 15370
$ ls core*
core.15370
Pour vider un fichier, il suffit d’exécuter la commande :
$ cp /dev/null fichier
# ou > fichier
Les principaux fichiers log sont contenus dans le répertoire /var/log, en voici quelques
uns :
/var/log/*acct
/var/log/messages
syslogd.
/var/log/secure
/var/log/maillog
/var/log/news/*
/var/log/uucp/*
/var/log/cron
4-16
Fichiers log du service acct (comptabilité).
Principal fichier log du système de log du démon
Fichier log des tentatives de connexions
infructueuses.
Fichier log de la messagerie.
Fichier log du service news (Internet).
Fichier log du service UUCP.
Fichier log du service cron.
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
/var/run/wtmp
/var/log/httpd/*
/var/log/samba/*
/var/log/lastlog
Fichier log, en binaire, des commandes init et
login. Ce Fichier est exploité par la commande
last.
Fichiers log du service Web.
Fichiers log du service Samba (accès aux disques
Windows).
Fichier log des dernières connexions des
utilisateurs fichier binaire), utilisé par la
commande lastlog.
Pour aller plus loin avec la commande logrotate
La commande logrotate facilite l'administration des fichiers log. Périodiquement,
elle en effectue la rotation, d'où son nom, la compression, la suppression ou encore
l'envoi par courrier. Elle est normalement exécutée via cron, souvent
quotidiennement. Outre la périodicité, elle peut agir selon la taille.
En argument, on indique d’un à plusieurs fichiers de configuration. Ils sont pris en
compte dans l'ordre où ils ont été mentionnés. L’ordre est donc important si l'un deux
contredit une option déjà fournie dans l'un des fichiers précédents.
Si la commande logrotate est opérationnelle dès l’installation de votre système,
elle utilise certainement le fichier de configuration /etc/logrotate.conf.
Voici un contenu type :
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
/var/log/messages {
rotate 5
weekly
postrotate
/sbin/killall -HUP syslogd
endscript
}
La balise weekly indique que la base de rotation est la semaine.
La balise rotate 4 indique que quatre versions des logs antérieurs sont conservées.
Prenons comme exemple le log /var/log/messages. Quatre versions antérieures sont
conservées messages.1, messages.2, messages.3 et messages.4. La version 4 est la plus
ancienne. A la prochaine rotation messages.3 deviendra messages.4, messages.2
messages.3 et messages sera copié dans messages.1 avant d'être réinitialisé, grâce à la
balise create. Si la balise rotation vaut 0, les fichiers ne sont pas conservés.
© TSOFT – Linux Administration
4-17
Module 4 : Gestion de l’espace disque
# ls -l messages*
-rw------1 root
-rw------1 root
-rw------1 root
-rw------1 root
-rw------1 root
root
root
root
root
root
44045
130706
209111
243243
197652
mar 9 08:40 messages
mar 7 04:02 messages.1
fév 29 17:41 messages.2
fév 22 09:38 messages.3
fév 15 08:54 messages.4
La balise compress, en commentaire, permet de compresser les logs.
La directive postrotate contient souvent la commande qui demande au démon de
réouvrir le fichier log après le renommage du fichier par logrotate. Cette stratégie
est obligatoire pour tout fichier log ouvert en permanence.
La requête include inclut les fichiers de configuration des services définis dans le
répertoire /etc/logrorate.d.
# ls
cups
httpd
named
rpm
samba
snmpd
squid
syslog
tux
up2date
vsftpd.log
yum
A titre d’exemple, le contenu du fichier /etc/logrotate.d/cups
/var/log/cups/*_log {
missingok
notifempty
sharedscripts
postrotate
/etc/init.d/cups condrestart >/dev/null 2>&1 || true
endscript
}
La rotation du fichier /var/log/wtmp fait l'objet d'une rotation spécifique mensuelle.
Le fichier nous montre, qu'outre les balises globales, il est possible de définir dans
/etc/logrotate.conf ou dans un autre fichier de configuration une strophe spécifique
pour un ou plusieurs logs du système.
Quelques balises
compress
Compression des fichiers log avec gzip.
create mode propriétaire group
Les droits, le nom du propriétaire et le groupe du fichier log
ifempty
Procède à la rotation même si le log est vide (notifempty).
mail addresse
Adresse de mail où envoyer un log qui doit disparaître au
cours d'une rotation, le plus ancien.
missingok
Ne pas générer de message d'erreur si un log est absent.
postrotate/endscript
Les commandes comprises entre postrotate et endscript sont
exécutées après que la rotation ait été effectuée.
pretrotate/endscript
Les commandes comprises entre prerotate et endscript sont
exécutées avant que la rotation ait été effectuée.
Référence
Man logrotate(8)
4-18
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Le montage des systèmes de fichiers
Le montage de FS
/
/
usr
home
umount
/
/dev/hda2
/dev/hda2
pierre
mount
usr
home
pierre
cathy
cathy
# mount /dev/hda2 /home
# umount /home
TSOFT - Linux Administration
Module 4 : Les systèmes de fichiers - 4.5
Introduction
Dans le système Linux, les fichiers d’un disque, ne sont accessibles que si le disque a
été monté. Le montage d’un système de fichiers consiste à attacher la racine de l’arbre
du système de fichiers à un répertoire d’un système de fichiers déjà actif. Cette
opération, qui s’appelle le montage du système de fichiers, est réalisée par la
commande mount. Le démontage, c’est à dire la suppression du lien entre le
répertoire de montage et le système de fichiers est effectué par la commande umount.
Les fichiers d’un système de fichiers ne sont accessibles, par les commandes usuelles
(cp, rm, mv, cat,…), que s’il est monté.
Le disque /dev/hda2 contient les répertoires de connexion des utilisateurs. Le
répertoire /home est un répertoire vide de l’arborescence active constituée des
systèmes de fichiers déjà montés. La commande mount /dev/hda2 /home
attache la racine du système de fichiers de /dev/hda2 au répertoire /home. La racine du
système de fichiers coïncide maintenant avec le chemin d’accès au répertoire de
montage /home. Quand l’opération de démontage umount /dev/hda2 a été
réalisée, les fichiers des répertoires pierre et cathy sont de nouveau inaccessibles, le
répertoire /home est vide.
Remarque
Si le répertoire de montage n’est pas vide au moment de l’exécution de la commande
mount, les fichiers qu’il contient sont cachés jusqu’au démontage.
Lors du démarrage du système, le disque qui contient le système de fichiers principal,
celui où se trouve le fichier racine /, doit être connu pour être automatiquement
monté. Ce disque est un paramètre du démarrage du système. Il est défini par la
variable root dans le fichier /etc/lilo.conf, le fichier de configuration du chargeur lilo.
En l’absence de cette variable, c’est le disque indiqué dans l’image même du noyau
© TSOFT – Linux Administration
4-19
Module 4 : Gestion de l’espace disque
qui sera monté comme système de fichier racine (cf. Module 15 : Noyau et
périphériques).
La commande mount, qui est développée plus loin, est simple d’emploi. Utilisée sans
argument, elle affiche les systèmes de fichiers montés, en fait le contenu du fichier
/etc/mtab où Linux mémorise les systèmes de fichiers actuellement montés.
On peut sinon, comme présenté dans le transparent, réaliser un montage simple en
indiquant le nom du disque à monter, le répertoire de montage et parfois le type de
système de fichiers du disque.
# mount
/dev/hda6 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext2 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda9 on /home type xfs (rw)
none on /dev/shm type tmpfs (rw)
# mount /dev/hda10 /mnt/travail/
# mount | grep /dev/hda10
/dev/hda10 on /mnt/travail type jfs (rw)
Remarque
Les lignes produites par la commande mount qui ne commencent pas par /dev/xxx
correspondent à des pseudos systèmes de fichiers qui ne nous concernent pas
actuellement, tel none on /proc type proc (rw)qui nous permettra de voir
les tables du système comme des fichiers.
Rappelons que les supports amovibles disquettes, CD-ROM et clé USB doivent eux
aussi, comme n’importe quel disque, être montés pour que l’on puisse accéder à leurs
fichiers.
# mount /dev/cdrom /mnt/cdrom/
mount : Périphérique de bloc/dev/cdrom est protégé en écriture.
Montage en lecture seule.
# mount -t msdos /dev/sda1 /mnt/cle_usb/
# mount | grep sda1
/dev/sda1 on /mnt/cle_usb type msdos (rw)
4-20
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Les différents types de systèmes de fichiers
Les différents types de FS
„
ext2
Le FS standard du système Linux
„
nfs
Le FS réseau de Sun (Network FS)
„
iso9660
Le FS utilisé par les CD-ROM
„
msdos
vfat
Les FS FAT16 et FAT32 de MS-DOS et Windows
„
smb
Le FS réseau avec le protocole SMB de Microsoft
„
ext3
La version journalisée de ext2
„
reiserfs
jfs
xfs
D’autres systèmes de fichiers journalisés
TSOFT - Linux Administration
Module 4 : Les systèmes de fichiers - 4.6
Introduction
Le système UNIX a dû s’adapter aux évolutions technologiques des disques
magnétiques et principalement à l’accroissement des capacités. L’organisation du
système de fichiers défini par AT&T, pour le système UNIX system V, date des
années 1980. Il est connu sous le nom de s5 et reconnu dans la plupart des systèmes
UNIX.
Le type s5 présente aujourd’hui deux inconvénients :
- La taille du bloc qui sert d’unité d’allocation d’espaces aux fichiers est de 1 kilooctet. Elle favorise le morcellement de gros fichiers.
- Le regroupement de tous les blocs de gestion du système de fichiers en tête du disque
peut générer des déplacements importants des têtes de lecture et d’écriture.
Pour pallier cet inconvénient, le système UNIX BSD a introduit le type FFS (Fast File
System) qui propose des granules d’allocation de 4, 8 Ko ou plus, fragmentables en
blocs de 1 Ko pour les petits fichiers. Il éclate aussi le disque en groupes de cylindres.
Chaque groupe de cylindres contient des blocs de données de gestion du « FFS ».
Le système Linux est le descendant direct du système d’exploitation Minix. Dans les
premières versions, Linus Torvald a préféré implémenter le système de fichiers Minix,
plutôt que d’en créer un nouveau.
Les limitations du système de fichiers « Minix », principalement la taille maximale de
64 Mo et les noms de fichiers courts, ont poussé la communauté Linux, en 1992, à
créer une interface, la VFS (Virtual File System). Elle permet au noyau Linux de
s’adapter à n’importe quel type de système de fichiers. A cette occasion, un nouveau
système de fichiers, appelé ext (Extended File System), a été développé pour le
système Linux. Le système ext remédie aux deux insuffisances de Minix. Il permet
aux partitions d’atteindre une taille de deux Go et les noms de fichiers longs (255
caractères).
© TSOFT – Linux Administration
4-21
Module 4 : Gestion de l’espace disque
Le système ext possédait lui aussi quelques imperfections qui amenaient à une
dégradation des performances dans le cas de partitions de grande taille. On aboutit
ainsi au système de fichiers baptisé ext2 (Second Extended File System), qui a
longtemps été le standard de fait des systèmes de fichiers de Linux.
Il existe des types de système de fichiers dont le choix n’incombe pas à
l’administrateur mais relève d’utilisations particulières. Parmi ceux-ci, on peut noter le
système de fichiers des CD-ROM qui est ISO.
Les principaux types de systèmes de fichiers
L’interface VFS du noyau fait de Linux un système d’exploitation capable de
supporter n’importe quel système de fichiers pour peu que la société qui l’a créé mette
sa technologie en Open Source et développe le module adéquat. Il serait donc vain et
inutile de vouloir citer tous les systèmes de fichiers supportés par Linux. A peine
établie, la liste serait obsolète.
C’est pourquoi nous nous sommes limités aux plus significatifs ou au plus pérennes.
Les premiers systèmes de fichiers de Linux
Système de fichiers
Description
minix
Le premier système de fichiers de Linux. Bien que
limité, il est pratique pour les systèmes de fichiers sur
disquette ou en RAM. On peut cependant le considérer
comme obsolète.
ext
La version améliorée de Minix. Il est aujourd’hui
également obsolète et remplacé par ext2.
ext2
C’était jusqu’à il y a peu le standard des systèmes de
fichiers sous Linux. Bien que son usage tende
fortement à diminuer, il reste incontournable. Il est
reconnu par toutes les distributions
Les systèmes de fichiers journalisés
Les systèmes de fichiers journalisés sont plus performants et plus sûrs. Ils sont plus
performants de par leur organisation interne, par exemple l’organisation des
répertoires, et plus sûrs en supprimant de nombreux risques d’incohérences en cas de
problème (cf. Module 5 : Les systèmes de fichiers journalisés).
Système de fichiers
journalisés
4-22
Description
ext3
C’est la version journalisée de ext2. Son intérêt majeur,
au delà de toutes considérations de performance réside
dans sa compatibilité montante et ascendante avec ext2
reiserfs
Un système de fichiers journalisé créé pour Linux par
Monsieur Reiser.
jfs
Un système de fichiers journalisés issu de la
technologie IBM pour AIX.
xfs
Un système de fichiers journalisés issu de la
technologie de Silicon Graphics.
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Les systèmes de fichiers de MSDOS et de Windows
Linux supporte tous les systèmes de fichiers de Microsoft. Il faut simplement noter
que le module nécessaire à NTFS n’est généralement pas pris en charge par le noyau
qui vous est fourni. Cela implique de recompiler le noyau en cochant la case
demandant le support de NTFS.
Système
Description
msdos
Le système de fichiers FAT16 de MS-DOS. Il permet
le montage de systèmes de fichiers MS-DOS dans
l’arborescence Linux.
umsdos
C’est un système de fichiers MS-DOS étendu. Il
implémente les noms de fichiers longs, les « UID » et
les « GID », les fichiers spéciaux, les droits POSIX sur
un système de fichiers DOS.
vfat
Le système FAT32 de Windows. Il permet le montage
des systèmes de fichiers de Windows dans Linux.
ntfs
Le système de fichiers de Windows NT.
Les systèmes de fichiers distribués
Système de fichiers
Description
nfs
Le système de fichiers distribués mis par la société
SUN dans le domaine public. Il permet d’accéder, de
façon transparente, à des disques d’ordinateurs
distants.
smb
Le système de fichiers qui implémente le protocole
SMB de Microsoft pour accéder à des disques partagés
d’ordinateurs distants fonctionnant avec Windows.
D’autres systèmes de fichiers
Système de fichiers
Description
iso9660
Le système de fichiers pour CD-ROM, conforme à la
norme ISO 9660. Il intègre les formats « High Sierra »
et « RockRidge » qui décrit les fichiers ISO 9660 au
format d’un hôte UNIX.
proc
Le pseudo système de fichiers qui permet d’accéder à
la mémoire du noyau (cf. Module 15 : Noyau et
périphérique).
ramfs
Le système de fichiers ramfs est utilisé pour créer des
systèmes de fichiers en mémoire vive. La taille du
système de fichiers croît ou décroît selon la place
mémoire disponible.
Cela diffère de la création d’un disque en RAM
(« Ram Disk ») sur lequel on peut créer un système de
fichiers d’un type quelconque.
cramfs
© TSOFT – Linux Administration
Un système de fichiers compressé en lecture seulement
qui peut être flashé en mémoire morte.
4-23
Module 4 : Gestion de l’espace disque
ncpfs
Le système de fichiers qui implémente le protocole
réseau utilisé par Netware de Novell.
hfs
Le système de fichiers du Macintosh d’Apple.
sysv
Le système de fichiers d’UNIX System V (« s5 »
d’UNIX).
ufs
Le système de fichiers d’UNIX BSD.
Remarque
Le montage d’un système de fichiers sur un système de fichiers d’un type différent est
possible et complètement transparent pour l’administrateur.
Quel système de fichiers et quels paramètres de construction
choisir ?
Critères de choix
Les utilisateurs de Linux sont très partagés et il n’est pas rare d’entendre des
affirmations péremptoires que leurs auteurs auraient bien du mal à justifier. Nous
allons essayer de dégager quelques critères objectifs.
1. La taille du système de fichiers. Un petit système de fichiers dont le contenu
évolue peu peut être créée de type ext2. En cas de problème, son contrôle et sa
réparation seront rapides, même sans journalisation. Si c’est un système de
fichiers fondamental pour le démarrage du système, tel que /boot, il est utile
qu’il soit reconnu par n’importe quel disque de secours, y compris le disque
d’installation de votre système. A l’inverse, on privilégie les systèmes de
fichiers journalisés pour les disques de grande capacité.
2. La visibilité du système de fichiers par plusieurs systèmes d’exploitation. Si
vous souhaitez utiliser votre clé USB à la fois sous Windows et sous Linux, il
est nécessaire de la conserver en msdos ou vfat, car Linux connaît ses
systèmes de fichiers alors que l’inverse n’est pas vrai.
3. Les paramètres possibles du système de fichiers : taille des blocs, nombre
d’inodes statiques ou dynamiques…
4. Les outils complémentaires qui sont fournis avec le système de fichiers,
principalement les commandes de sauvegarde incrémentales ou les ACL’s.
5. Les benchmarks que vous pouvez vous procurer sur Internet.
6. Les tests que vous aurez réalisés.
Les paramètres des systèmes de fichiers
Les paramètres fondamentaux de création d’un système de fichiers sont :
1. La taille, souvent par défaut, celle du disque où l’on crée le système de
fichiers.
2. Le nombre d’inodes, c’est à dire le nombre de fichiers que l’on pourra y créer
au maximum.
3. La taille d’un bloc.
4-24
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Panorama des commandes de gestion des
systèmes de fichiers
Panorama des commandes de gestion de FS
Commandes génériques
Commandes spécifiques
„
mkfs
Crée un FS
„
mkfs.type_fs
Crée un FStype_fs (ext2…)
„
fsck
Vérifie un FS
„
fsck.type_fs
Vérifie un FS
„
mount Monte un FS
Autres commandes
„
umount Démonte un FS
„
„
df
Espace libre
ext2 : tune2fs, dumpe2fs, debugfs
dump, restore
„
du
Espace occupé
„
xfs : xfs_growfs, xfs_admin
„
lsof, fuser
Identifie les
processus
„
reiserfs : reiserfstune, resize_reiserfs
Module 4 : Les systèmes de fichiers - 4.8
TSOFT - Linux Administration
Introduction
Les commandes de gestion de systèmes de fichiers sont nombreuses. Dans Linux, on
trouve deux familles de commandes :
• Les commandes génériques héritées du système UNIX, comme mkfs et fsck.
• Les commandes propres à un système de fichiers.
Il existe deux familles de commandes :
Les commandes génériques qui peuvent s’appliquer à tous les systèmes de fichiers. La
commande mkfs et la commande fsck ne sont presque jamais utilisées. Elles
obligent à indiquer le type du système de fichiers, via l’option –t suivie du type du
système de fichier. La commande mount s’applique à tous les systèmes de fichiers.
Elle possède l’option –o pour préciser les options propres à un système de fichiers (cf.
commande mount). Les autres commandes, telles df, du ou lsof ne nécessitent pas
d’options particulières pour s’appliquer à un système de fichiers particulier.
Les commandes propres à un système de fichiers sont souvent plus simples à utiliser.
Pour créer ou réparer un système de fichiers, on privilégie la commande spécifique.
Son nom est souvent mkfs.type_fs ou fsck.type_fs.
# ls mkfs* fsck*
fsck
fsck.ext3
mkfs.reiserfs
fsck.cramfs fsck.jfs
mkfs.vfat
fsck.ext2
fsck.msdos
mkfs.xfs
© TSOFT – Linux Administration
fsck.reiserfs
mkfs
mkfs.ext3
fsck.vfat
mkfs.cramfs
mkfs.jfs
fsck.xfs
mkfs.ext2
mkfs.msdos
4-25
Module 4 : Gestion de l’espace disque
Au cas où le nom attendu n’existe pas, il est possible de créer un lien symbolique.
# ls -l mkfs.reiserfs
lrwxrwxrwx
1 root
root
mkfs.reiserfs -> mkreiserfs
10 aoû 29 17:00
Précision sur la suite du module
Le module a pour objectif d’apprendre aux novices à mettre en œuvre, de manière
élémentaire, les systèmes de fichiers. Pour cela, nous avons choisi d’utiliser le système
de fichiers ext2, non pas pour le valoriser, mais parce qu’il est simple. Les lecteurs qui
ont déjà une première expérience des systèmes de fichiers peuvent passer directement
au module suivant, le module 6, qui donne aux lecteurs les moyens de mettre en œuvre
les autres systèmes de fichiers.
mkfs, mke2fs
Parmi les commandes standard d’UNIX, la commande mkfs est bien sûr la plus
importante. C’est elle qui crée un système de fichiers sur un disque. Elle comporte les
trois paramètres fondamentaux d’un système de fichiers :
• Le nom du disque où le système de fichiers doit être créé.
• Le type du système de fichiers à créer, pour mkfs.
• La taille du système de fichiers à créer, si l’on ne veut pas utiliser tout le disque.
mount
La commande mount réalise l’attachement d’un système de fichiers d’un disque
Linux à un répertoire d’un système de fichiers déjà monté. Elle comporte
principalement le nom du disque et le chemin absolu du répertoire de montage. Sa
syntaxe est la suivante :
mount [-hV]
mount -a [-fnrvw] [-t type]
mount [-fnrvw] [-o options [,...]] périph | rép
mount [-fnrvw] [-t type] [-o options] périph rép
4-26
-h
Affiche un message d’aide.
-V
Affiche le numéro de version.
-a
Procède au montage de tous les systèmes de fichiers décrits dans le
fichier /etc/fstab (cf. Automatiser le montage des systèmes de
fichiers).
-t type
Le type indique le type de système de fichiers qui réside sur le disque
à monter. Il est obligatoire si ce n’est pas ext2.
-f
L’exécution de la commande est simulée mais elle n’est pas exécutée.
-n
Le système de fichiers monté n’est pas mémorisé dans /etc/mtab.
C’est obligatoire si l’on souhaite que /etc soit sur un disque différent
de /.
-r
Le système de fichiers est monté en lecture seulement.
-w
Le système de fichiers est monté en lecture et en écriture. C’est la
valeur par défaut.
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
-v
Le mode bavard.
-o options
Les options qui suivent « -o » sont séparées par des virgules.
Certaines sont communes à tous les types de systèmes de fichiers,
d’autres sont spécifiques.
Communes
suid/nosuid
Prendre en compte, ou non, les bits « s » des
fichiers.
async/sync
Les entrées/sorties sont asynchrones ou
synchrones.
ro/rw
Equivalent à « -r » et « -w ».
remount
Remonter un système de fichiers déjà monté.
Cette possibilité est intéressante quand on
souhaite modifier les attributs de montage
dynamiquement.
loop=[/dev/loop<n>]
Monte un fichier ordinaire contenant l’image
d’un système de fichiers, par exemple créé
par dd. Le système de fichiers est associé à
un périphérique /dev/loop<n>, où <n> est
compris entre 0 et 7. A défaut, c’est le
premier disponible qui est utilisé.
Valides pour
ext2 et ext3
noatime
Dans l’inode, la date de dernière consultation
du fichier n’est pas modifiée.
Quand cette information a peu d’importance
et qu’il existe de nombreux fichiers, souvent
lus, cette option peut améliorer les
performances. Cela peut être le disque
contenant le courrier des utilisateurs.
Spécifiques à
nfs
rsize=8192
wsize=8192
Fixe la taille des buffers utilisés pour les
opérations de lecture et d’écriture à 8192
octets au lieu de 1024 par défaut. Ceci
améliore la vitesse du système nfs.
Montage d’un système de fichiers.
# mount /dev/hda3 /opt/appli
La commande mount, exécutée sans argument, affiche les systèmes de fichiers et les
attributs de montage.
# mount
/dev/hda5 on / type ext2 (rw)
none on /proc type proc (rw)
localhost:(pid264) on /net type nfs
(intr,rw,port=1023,timeo=8,retrans=110,indirect,map=/etc/amd.conf,de
v=00000002)
/dev/fd0 on /mnt/floppy type ext2 (rw)
/dev/hda1 on /win98 type vfat (rw)
Remarques
• Si un système de fichiers est monté sur un répertoire non vide, les fichiers du
répertoire sont cachés pendant toute la durée du montage.
• Il existe une arborescence dédiée au montage des systèmes de fichiers : /mnt,
/mnt/floppy, /mnt/cdrom. L’utilisation de /mnt n’est pas une obligation.
© TSOFT – Linux Administration
4-27
Module 4 : Gestion de l’espace disque
umount
La commande umount, qui démonte un système de fichiers, rompt le lien qui existe
entre le répertoire de montage et le système de fichiers. Les fichiers du disque sont à
nouveau inaccessibles jusqu’au prochain montage.
# umount /dev/hda3
ou
# umount /mnt
L’argument de la commande umount est indifféremment le nom du disque ou le
répertoire de montage (le lien est unique).
du et df
Les commandes du et df permettent de gérer l’espace disque (cf. Gestion de l’espace
disque).
lsof et fuser
Les commandes lsof et fuser permettent de lister les fichiers ouverts et de
connaître les applications qui y accèdent. La commande lsof donne plus
d’informations que la commande fuser, la commande standard du monde UNIX.
# lsof
# lsof
/dev/hda5
de fichiers de la
# liste des fichiers ouverts
# liste les processus qui accèdent au système
# kill
$(lsof -t /dev/hda5)
précédemment
# fuser -k /dev/hda5
# partition /dev/hda5
# tue les processus identifiés
e2label
La commande e2label affiche ou modifie le label d’un disque. Dans les
distributions, comme RedHat ou Fedora, il faut penser à modifier le fichier /etc/fstab
quand on modifie le label d’un disque.
# e2label /dev/hda1
/boot
# e2label /dev/hda1 demarre
# e2label /dev/hda1
demarre
Ce qu’il faut retenir
Création d’un système de fichiers
La commande mke2fs est utilisée avec les options par défaut. C’est d’ailleurs
souvent suffisant, y compris pour les autres types de systèmes de fichiers étudiés dans
le module suivant.
# mke2fs /dev/hda10
# mkfs.ext2 /dev/hda10
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
92736 inodes, 185212 blocks
9260 blocks (5.00%) reserved for the super user
4-28
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
First data block=0
6 block groups
32768 blocks per group, 32768 fragments per group
15456 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
#
Des informations produites par la commande, nous retiendrons dans l’immédiat les
éléments suivants :
• l’unité d’allocation, le bloc, a une taille de 4096 octets. Un fichier occupe un
espace disque qui est un nombre entier de blocs.
• il y a 185212 blocs ainsi 92736 inodes. Cette valeur précise le nombre maximum
de fichiers que l’on peut créer sur le disque.
Création du répertoire de montage
Rappelons qu’il faut obligatoirement monter un disque pour rendre possible l’accès
aux fichiers. Le répertoire est de fait dédié à cet usage.
# mkdir /mnt/travail
Montage du disque
Le montage est réalisé par la commande mount. Le chapitre suivant nous explique
comment rendre ce montage permanent.
# mount /dev/hda10 /mnt/travail
# mount | grep hda10
/dev/hda10 on /mnt/travail type ext2 (rw)
# df /mnt/travail
SysFichier
1K-blocs
Utilisé Dispo.
Util% Monté sur
/dev/hda10
729176
20
692116
1% /mnt/travail
Les nombres produits par les commandes mke2fs et df nous permettent de calculer,
en kilo octets, les valeurs suivantes :
Taille totale du disque : 185.212 x 4 = 740848 Ko
Espace disponible pour les fichiers :
729176 Ko
Espace utilisé pour les blocs de gestion : 11672 Ko
L’espace utilisé pour la gestion du système de fichiers est principalement occupé par
les inodes. Un inode ext2 occupe 128 octets.
On obtient 92736 x128 / 1024 = 11592 Ko.
Le système de fichiers est disponible. Ce n’est plus maintenant qu’une affaire de
droits. A chaque fois qu’il est fait mention de la racine du système de fichiers, il faut
entendre le répertoire de montage auquel elle a été associée.
Utilisation transparente du système de fichiers
# cd /mnt/travail
# cp /etc/group .
# cp /bin/bash .
# echo "Nouveau fichier" > fichier
# ls –l
total 640
-rwxr-xr-x
1 root
root
© TSOFT – Linux Administration
626028 mar
1 09:11 bash
4-29
Module 4 : Gestion de l’espace disque
-rw-r--r-1 root
root
-rw-r--r-1 root
root
drwx-----2 root
root
# df /mnt/travail
SysFichier
1K-blocs
/dev/hda10
729176
16 mar
719 mar
16384 mar
1 09:12 fichier
1 09:11 group
1 08:10 lost+found
Utilisé Dispo.
Util% Monté sur
644
691492
1% /mnt/travail
Démontage du système de fichiers
Le démontage d’un disque rend inaccessibles les fichiers qu’il contient. Le démontage
ne peut se faire que si le système de fichiers est inutilisé.
# pwd
/mnt/travail
# umount /dev/hda10
umount : /mnt/travail : périphérique occupé
# lsof /dev/hda10
COMMAND PID USER
FD
TYPE DEVICE SIZE NODE
bash
1072 root cwd
DIR
3,10 4096
2
lsof
9667 root cwd
DIR
3,10 4096
2
lsof
9668 root cwd
DIR
3,10 4096
2
# cd
# lsof /dev/hda10
# umount /dev/hda10
# ls /mnt/travail/
NAME
/mnt/travail
/mnt/travail
/mnt/travail
Le répertoire de montage est vide, le lien a été rompu avec la racine du système de
fichiers de /dev/hda10.
Nouveau montage
# mount /dev/hda10 /mnt/travail
# ls /mnt/travail
bash fichier group lost+found
Les fichiers sont de nouveau accessibles par le chemin de montage /mnt/travail.
4-30
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Automatiser le montage des systèmes de
fichiers
Automatiser le montage de FS
# more /etc/fstab
/dev/hda5 /
ext2
defaults
/dev/hda6 swap
swap
defaults
/dev/cdrom /mnt/cdrom iso9660 noauto,ro
1
Fichier
spécial
bloc
abritant
le FS
6
4
2
Répertoire
de montage
1 1
0 0
0 0
3
Options
de
montage
Type de FS
(minix,ext2,
nfs,...)
Ordre de
contrôle
pour fsck
5
Système de
fichiers à sauver
pour dump
Module 4 : Les systèmes de fichiers - 4.9
TSOFT - Linux Administration
Prédéfinition des paramètres de montage
Les disques qui contiennent des systèmes de fichiers doivent, en général, être montés à
chaque démarrage du système et démontés à chaque arrêt, le montage étant toujours
réalisé sur le même répertoire.
Pour automatiser ces opérations, l’administrateur d’un système Linux doit modifier le
fichier /etc/fstab qui contient la liste des disques à monter automatiquement. La prise
en compte sera réalisée dès le prochain démarrage du système. C’est la seule opération
à réaliser !
C’est la commande mount –a, exécutée par les scripts de démarrage, qui prend en
compte le contenu du fichier /etc/fstab. Ce fichier contient une ligne par système de
fichiers. Les champs sont respectivement :
• Le nom du disque en mode bloc (le fichier spécial de type b). Dans certaines
distributions, comme RedHat ou Fedora, on trouve la mention de l’étiquette, c’est à
dire du nom que l’administrateur a attribué au disque à la création du système de
fichiers. Lors de l’installation c’est le répertoire de montage qui est utilisé comme
étiquette. Cette solution est pratique si l’on est amené à changer le disque
d’emplacement (de /dev/hda en /dev/hdb), il n’y a pas à modifier le fichier
/etc/fstab.
# cat /etc/fstab
LABEL=/boot
/boot
LABEL=/home
/home
ext2
xfs
defaults
defaults
1 2
1 2
• Le chemin d’accès absolu au répertoire de montage.
• Le type du système de fichiers.
• Les attributs de montage. L’attribut le plus fréquent est rw (read/write) qui donne
un accès complet au système de fichiers. L’accès aux fichiers dépend, quant à lui,
© TSOFT – Linux Administration
4-31
Module 4 : Gestion de l’espace disque
des droits dont on dispose sur eux. L’attribut ro limite l’accès à la lecture
seulement. L’attribut noauto indique que le système de fichiers ne doit pas être
pris en compte par l’exécution de la commande mount –a. L’existence d’une ligne
de montage d’un système de fichiers avec l’attribut noauto permet de simplifier
l’exécution de la commande mount à laquelle il suffit de fournir en argument le
nom du disque ou le chemin de montage.
# more /etc/fstab
/dev/cdrom /mnt/cdrom iso9660 noauto,ro
00
# mount /dev/cdrom
ou
# mount /mnt/cdrom
Il est possible de mentionner d’autres attributs :
suid, nosuid qui indiquent la prise en compte (suid) ou non (nosuid) du bit s des
fichiers exécutables (cf. Module 3 : Les fichiers). Par défaut l’attribut est suid.
usrquota et grpquota qui signifient que la gestion des quotas (cf. Module 5 : Les
quotas) est active pour ce système de fichiers.
Remarques
Les attributs de montage peuvent être précisés dans la ligne de commande mount.
Le choix des attributs de montage et l’automatisation peuvent être facilement réalisés
par l’outil intégré d’administration, ce qui évite de mémoriser la forme du fichier
d’automatisation.
• L’indication pour la commande de sauvegarde dump si le système de fichiers doit
être sauvegardé. Si le champ est à 0, le système de fichiers ne sera pas sauvegardé.
• L’indication pour la commande fsck de l’ordre dans lequel elle doit contrôler les
systèmes de fichiers. Il est ignoré si la valeur est 0.
# echo "/dev/hda10 /mnt/travail ext2
defaults 1 2" >> /etc/fstab
# mount -a
# mount
…
/dev/hda9 on /home type xfs (rw)
…
/dev/hda10 on /mnt/travail type ext2 (rw)
# df /mnt/travail/
SysFichier
1K-blocs
Utilisé Dispo.
Util% Monté sur
/dev/hda10
729176
644
691492
1% /mnt/travail
Pour aller plus loin
Déplacer une arborescence dans un système de fichiers
A titre d’exemple, nous présentons le déplacement d’une arborescence, ici /usr/local,
dans un système de fichiers créé à cet effet. Il est fréquent d’avoir oublié, à
l’installation, de créer un système de fichiers, pour une arborescence. Après avoir
éventuellement libéré de la place sur un disque, il est possible de transférer l’arbre sur
le nouveau système de fichiers créé sur la nouvelle partition.
Visualisation des systèmes de fichiers montés.
# df
Sys. de fich.
sur
/dev/hda3
4-32
1K-blocs
497861
Occupé Disponible Capacité Monté
110135
362022
24% /
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
/dev/hda1
none
/dev/hda6
/dev/hda2
/dev/hda5
/dev/hda8
102454
58940
256194
4128320
300137
102454
8542
0
8820
2683412
68734
4127
88622
58940
234146
1235120
215907
93037
9%
0%
4%
69%
25%
5%
/boot
/dev/shm
/tmp
/usr
/var
/home
Visualisation des partitions.
# fdisk –l
Disk /dev/hda: 6007 MB, 6007357440 bytes
240 heads, 63 sectors/track, 776 cylinders
Units = cylindres of 15120 * 512 = 7741440 bytes
Périphérique Amorce
Début
Fin
Blocs
/dev/hda1
*
1
14
105808+ 83
/dev/hda2
15
569
4195800
83
/dev/hda3
570
637
514080
83
/dev/hda4
638
776
1050840
5
/dev/hda5
638
678
309928+ 83
/dev/hda6
679
713
264568+ 83
/dev/hda7
714
748
264568+ 82
/dev/hda8
749
762
105808+ 83
Id Système
Linux
Linux
Linux
Etendue
Linux
Linux
Echange Linux
Linux
Création d’une nouvelle partition.
# fdisk /dev/hda
Commande (m pour aide) : n
Premier cylindre (763-776, 763 par défaut) :
Utilisation de la valeur par défaut 763
Dernier cylindre ou +size ou +sizeM ou +sizeK (763-776, 776 par
défaut) :
Utilisation de la valeur par défaut 776
Commande (m pour aide) : w
La table de partition a été modifiée !
Appel de ioctl() pour relire la table de partition.
WARNING: Re-reading the partition table failed with error 16:
Périphérique ou ressource occupé.
The kernel still uses the old table.
The new table will be used at the next reboot.
Synchronisation des disques.
Après avoir rebooté.
# fdisk –l
…
/dev/hda9
763
776
105808+
83
Linux
Création d’un répertoire de montage et du système de fichiers.
# mkdir /usr/local2
Création du système de fichiers.
# mkfs.ext3 /dev/hda9
mke2fs 1.34 (25-Jul-2003)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
…
180 days, whichever comes first.
#
Use tune2fs -c or -i to override.
Montage et transfert des fichiers (nous savons qu’il n’y a pas de fichiers de nom .xxx).
# mount /dev/hda9 /usr/local2
# mv /usr/local/* /usr/local2
# ls /usr/local
© TSOFT – Linux Administration
4-33
Module 4 : Gestion de l’espace disque
# ls /usr/local2
bin etc games include
lib
libexec
lost+found
sbin
share
src
Démontage et renommage de /usr/local2 en /usr/local.
# umount /dev/hda9
# mv /usr/local2 /usr/local
# ls -d /usr/local*
/usr/local
Modification du fichier /etc/fstab et montage du système de fichiers.
# vi /etc/fstab
# tail -1 /etc/fstab
/dev/hda9
/usr/local
1 2
# mount –a
# mount
…
/dev/hda5 on /var type ext3 (rw)
/dev/hda9 on /usr/local type ext3 (rw)
# ls /usr/local
bin etc games include lib libexec
4-34
ext3
lost+found
defaults
sbin
share
src
©TSOFT – Linux Administration
Module 4 : Gestion de l’espace disque
Atelier 4 : Les systèmes de fichiers
Atelier 4 : Les systèmes de fichiers
Objectifs :
„
Savoir monter et démonter un FS
„
Savoir surveiller l’espace disque
„
Savoir gérer l’arborescence des
fichiers en tenant compte des FS
Durée : 60 minutes.
TSOFT - Linux Administration
Module 4 : Les systèmes de fichiers - 4.10
Exercice n°1
A l’aide de la commande fdisk, visualisez les partitions des disques durs de votre
ordinateur. Décrivez le résultat.
Exercice n°2
A l’aide de la commande parted, réduisez la taille d’une partition pour libérer de
l’espace disque. Une fois cette espace libéré, créez une nouvelle partition. Visualisez
les partitions. Supprimez la partition.
Exercice n°3
Recréez la partition précédente en utilisant la commande fdisk.
Exercice n°4
Quels sont les différents FS montés, à quels fichiers spéciaux sont-ils associés, quels
sont leurs répertoires de montage ?
Exercice n°5
Quelle est la place libre, en blocs de 512 octets, restant sur chaque FS ?
Exercice n°6
Prenez un CD-ROM ayant un format compatible ISO 9660 (la plupart le sont).
Montez-le, listez son arborescence et démontez-le.
© TSOFT – Linux Administration
4-35
Module 4 : Gestion de l’espace disque
Exercice n°7
Les systèmes de fichiers NFS et SMB sont des systèmes de fichiers distribués sur un
réseau, en quoi diffèrent-ils ?
Exercice n°8
Résumez brièvement le rôle des principales commandes de gestion de système de
fichiers de Linux.
Exercice n°9
On désire installer un logiciel pour jouer au blackjack qui fait 6 Mo dans le répertoire
/home/pierre/games/blackjack. En utilisant le résultat de la commande df, donnée ciaprès, est-ce que l’opération est réalisable ? Si non, est-ce qu’il y a une autre solution ?
# df
Filesystem
/dev/hda1
/dev/hda6
/dev/hda5
1k-blocks
Used Available Use% Mounted on
796033 318675 436234 42% /
101471
95777
454 100% /home
101471
28
96203
0% /usr
Exercice n°10
L’utilisateur pierre visualise son fichier .profile (/home/pierre/.profile) grâce à la
commande more. L’administrateur peut-il démonter le FS /home ? Si non, pourquoi ?
Que doit-il faire pour y arriver ?
Exercice n°11
Le FS /dev/hda8 est monté sur le répertoire /games. Que doit-on faire pour que ce FS
ne soit accessible qu’à l’utilisateur pierre ?
Exercice n°12
Sans utiliser la commande debugfs, comment l’administrateur peut-il retrouver tous
les fichiers liés à un fichier dont on connaît le chemin, exemple :
/home/pierre/.profile ?
Exercice n°13
Détruisez tous les fichiers de nom core*.
Exercice n°14
Quels sont les gros fichiers (taille supérieure à 1 Mo) modifiés il y a peu de temps
(dans la journée) ?
Exercice n°15 (exercice long, environ 30 minutes)
Transférez l’utilisateur pierre sur une disquette. Au préalable, écrivez les opérations à
réaliser.
4-36
©TSOFT – Linux Administration