Le Système de fichiers Linux
Un
système de fichiers est
une façon d'organiser et de stocker une arborescence sur un
support (disque dur, disquette, etc ...). Chaque OS a
développé sa propre organisation. Par exemple,
Windows a
utilisé le système FAT, FAT32 puis NTFS. On peut
faire
cohabiter plusieurs systèmes dans des partitions
séparées d'un même disque.
Linux propose par défaut le système ext3, mais il
est
capable de gérer une multitude de systèmes de
fichiers
différents (jfs, raiserfs, ntfs, etc..). Les
sytèmes de
fichiers supportés sont listés dans
/proc/filesystems.
L'utilisateur peut donc utiliser des systèmes de fichiers
issus
de différents OS comme Windows sous Linux.
Linux utilise un système de montage. Ce processus est le
moyen
de faire correspondre la partie de l'arborescence de l'OS
aux partitions physiques du disque. Vous pouvez donc faire
correspondre tout système extérieur (disquette,
CDrom, répertoire réseau, etc..)
à un
répertoire créé pour cela dans
l'arborescence de
votre Linux à l'endroit qui sera pour vous le plus pratique.
Vous pouvez à n'importe quel
moment, déplacer ce
point de montage, en fait un répertoire "d'accrochage", pour
accéder à ses fichiers.
Vous trouverez ici l'arborescence par défaut et les
commandes pour se déplacer dans cette arborescence :
ici
Les partitions sous linux
La notation des partitions et disques peut-être
déroutante
au début lorsque l'on vient du monde windows mais elle n'en
reste pas moins assez simple.
La lettre a b c d représente l'ordre des disque dur sur la
nappe (IDE ou SCSI). Le disque dur 1 sera donc noté :
hda,
le disque dur 2 sera noté
hdb
etc.
Chaque disque dur comporte une ou plusieurs partitions, il convient
donc de les noter. Elles seront notés par numéros
suivant
l'ordre des partitions. La première partition principale
prendra
le numéro 1, la seconde partition prendra le
numéro 2
etc...
Ce qui nous donne :
- Le premier disque dur physique (sur IDE1) est hda :
- /dev/hda1 = première partition principale.
Elle correspond au C:" sous Windows.
- /dev/hda2 = deuxième partition principale (si
elle existe, elle correspond alors au "D:" sous Windows)
- /dev/hda3 = troisième partition principale (si
elle existe)
- /dev/hda4 = quatrière et dernière
partition
principale (oui on en a droit à 4 maximum!) ou
première
partition étendue si l'on a fait une partition
étendue.
- /dev/hda5 = premiere partition étendue
- Le second disque dur physique (sur IDE2), s'il existe, est
hdb :
- /dev/hdb1 = première partition principale.
- /dev/hdb2 = seconde partition (si elle existe)
- /dev/hdb3 = troisième partition (si elle
existe)
- etc...
NOTE : ici
nous avons pris comme exemple, un disque dur IDE qui est
noté : hdX
Un disque dur SCSI/SATA sera noté lui : sdX soit donc
/dev/sda1 /dev/sda2 selon les partitions.
Supposons que sous Windows il n'y a qu'un disque dur qui ne contient
qu'une partition (c'est souvent le cas), le lecteur de CD est alors
"D:" sous Windows. Sous linux, on aura : /dev/hdc
- Le premier lecteur de disquette ("A:" sous Windows):
/dev/fd0
- Le second lecteur de disquette, s'il existe ("B:" sous
Windows): /dev/fd1
La commande mount
L'opération de montage et de démontage se fait
à
partir de la commande mount et umount. La syntaxe est la suivante :
mount -t <type > -o
options /dev/phériphériques /mnt/rep-montage
- <type>
sont les types de filesystem supportés par le
système
linux, il faut en fait qu'il soit supporté par le
noyau et
donc compilé dans celui-ci, si le type n'est pas
compilé
dans le noyau, mount vous retournera "wrong fs type, bad option, bad
superblock on /dev/XXXX"
. Si vous n'avez jamais touché au noyau, pas de panique, par
défaut, votre linux vous est fourni avec un noyau
précompilé qui permet de supporter tous les types
de
filesystem, cependant une opération est à
effectuer afin
de pouvoir utiliser le filesystem désiré, nous
verrons
cela plus tard.
- options
par défaut sont: rw
(droits en lectures/écritures --> accès
complet), suid
(les éventuels permissions SUID et SGID, ce qui permet de
définir le propriétaire et le groupe auquels les
fichiers
appartiendront), umask (qui permet de définir les droits
qu'un
fichier aura lorsqu'il sera créé) etc..
- /dev/phériphériques
est donc le périphérique/partition que l'on
désire
monter : dans le cas d'un disque dur IDE on aura par exemple /dev/hda2
/dev/hda3 dans le cas d'un disque dur SCSI/SATA on aura /dev/sda2
/dev/sda3 etc..
- /mnt/rep-montage est
donc le
répertoire où sera monté la partion :
le point de
montage. Cela peut-être /home /mnt/hda5 /home/download etc..
exemple:
mount -t ext3 /dev/hda5
/home/download
En règle général, vous
n'êtes pas obligé de spécifier le fs "
-t
ext3" mount se débrouille comme un
grand.
la commande mount tout seul, renvoie tous les points de montage. Ce
sont en fait, les valeurs contenues dans le fichier :
/etc/mtab
Pour démonter une partition :
umount
/mnt/rep-montage ou
umount /dev/phériphériques
exemple :
umount /home/download
ou
umount
/dev/hda5
Monter une partition Windows
Dans le cas où vous avez linux qui cohabite avec windows. Il
se
peut que vous désirez monter une de votre partition windows
sous
votre linux afin de pouvoir accéder à ces
fichiers.
Avant d'essayer de monter une partition, comme il a
été
évoqué plus haut, il faut s'assurer que votre
système supporte le système FAT ou NTFS sinon
mount sera
incapble de reconnaitre ce type de filesystem.
Dans le cas où vous n'avez jamais recompiler votre noyau. Un
simple :
modprobe vfat
(si vous désirez monter une partition FAT)
ou
modprobe
ntfs (si vous désirez monter une partition NTFS)
Nous avons tout simplement charger une partie d'une noyau, ici le
support FAT et NTFS, afin que votre système puisse monter
des
partitions FAT / NTFS. Pour plus d'informations, reportez-vous
ici
Ensuite, utilisez la syntaxe habituelle de mount, ce qui peut donner :
mount
-t vfat /dev/hda2 /home/download
Ici on monte la partition FAT sur
/home/download
mount
-t vfat -o uid=5001,gid=5000,umask=022 /dev/hda1 /home/download
ici on monte la partition Windows occupant la 1ère partition
/dev/hda1 dans le rép. /mnt/download, avec les options :
l'utilisateur d'uid 5001, et le groupe de gid 500, seront
propriétaires de tous les fichiers, la création
d'un
fichier s'effectuera avec le umask 022, c'est-à-dire les
permissions 755 (rwxr-xr-x).
NOTE : Attention, l'écriture sur les partitions NTFS n'est
encore qu'au stade expérimentale, ce qui peut vous donner
quelques mauvaises suprises. Préférez donc
l'utilisation
de partition FAT pour le partage de fichiers sur une même
machine
entre linux & windows.
Monter une partition NFS
voir le tutorial :
ici
Création d'une partition supplémentaire
Il se peut que lors de l'installation de votre linux, vous n'ailliez
pas allouer tout l'espace de votre disque dur. Or maintenant vous
désirez créer une nouvelle partition à
partir de
cet espace libre. Il existe plusieurs utilitaire pour gérer
ses
partitions sous linux : fdisk, cfdisk (en console graphique), plus
certainement des outils graphiques fournis avec votre distribution.
Voici comme créer une partition avec fdisk.
Avant toute chose, vous devez repérer comment sont
agencées vos partitions sur le disque dur, ceci se fait
à
partir de la commande :
fdisk -l
Disque /dev/hda: 30.0 Go, 30005821440 octets
255 têtes, 63 secteurs/piste, 3648 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Nous voyons ici que nous avons un seul disque dur : /dev/hda d'une
taille de 30 giga.
Nous avons un disque dur composés de 3648 cylindres chacun
ayant
une taille de 8225280 octets (16065*512) soit environ 8mo ce qui nous
donne les 30 Go.
Les partitions sont reparties sur les blocs qui équivaut aux
nombres de cylindres.
La partition /dev/hda1 démarre au bloc 1 et se termine au
bloc
973. Pour connaître sa taille, il suffit de multiplier le
nombre
de bloc par leurs tailles. Ce qui nous donne : 973*8225280 = 8003197440
environ 9Go.
De même la partition /dev/hda3 a comme taille :
(3560-974)*8225280 = 21270574080 soit environ 21Go.
Périphérique
Amorce
Début
Fin
Blocs Id
Système
/dev/hda1
*
1
973 7815591
83 Linux
/dev/hda2
3561
3648
706860 5
Extended
/dev/hda3
974
3560
20780077+ 83 Linux
/dev/hda5
3561
3648
706828+ 82 Linux swap /
Solaris
Obtenir la taille des partitions à
partir des
blocs n'est pas primordiales puisque vous pouvez connaître la
taille des partitions avec la commande df.
Le plus important à comprendre est que les blocs entre
partition
doivent se suivrent. Lorsque vous allez créer une partition,
fdisk vous demandera de quel bloc à quel bloc vous
désirez créer la partition, fort heuresement, il
vous
propose par défaut le bloc suivant libre, et vous
n'êtes
même pas obligé de lui donner le bloc de fin, en
effet,
vous pouvez lui spécifier la taille de votre partition.
Pour lancer fdisk :
fdisk
/dev/phériphérique -
par exemple si vous désirez créer une partition
sur le disque dur /dev/hda, saisir :
fdisk /dev/hda
Le
nombre de cylindres pour ce disque est initialisé
à 3648.
Il n'y a rien
d''incorrect avec cela, mais c'est plus grand que 1024,
et cela pourrait causer
des problèmes en fonction pour certaines configurations:
1) logiciels qui sont
exécutés à l'amorçage
(i.e., vieilles versions de LILO)
2) logiciels
d'amorçage et de partitionnement pour d'autres SE
(i.e., DOS FDISK, OS/2 FDISK)
Commande (m pour l'aide):
Les commandes se font à partir de
touches raccourcies, pour avoir la liste de ces commandes, tapez "m" :
- La touche raccourci "n" permet d'ajouter une partition,
vous
devez entrer le bloc de départ (fdisk vous propose alors le
bloc
de fin libre) puis ensuite vous pouvez spéficier soit : Le
bloc
de fin, ou la taille de votre partition en kilo/méga/giga
octets, par exemple 20G pour 20 giga 20M pour 20méga et 20k
pour
20kilo-octets
- Quand cette étape est terminée, la
partition est
créé virtuellement sur fdisk mais pas sur le
disque dur
(afin d'éviter les erreurs et aussi pour pouvoir faire
exécuter à fdisk plusieurs
tâches).
- Vous pouvez visualiser les partitions sur
fdisk avec la touche raccourci "p".
- Enfin pour créer véritablement la
partition et
l'ecriture sur le disque dur, vous devez utiliser la touche raccourci
"w".
- Lorsque votre partition est crée, vous devez la
formater, pour formater votre partition en ext3 :
mkfs
-j /dev/périphérique ou
mkfs.ext3
/dev/périphérique
exemple :
mkfs.ext3 /dev/hda5
Vous pouvez alors monter votre partition
nouvellement créée.
Automatiser le montage des partitions au démarrage
Vous en avez marre de remonter à chaque démarrage
votre partition Windows ? et bien vous avez raison !
Pour automatiser le montage des partitions au démarrage de
votre linux, il vous faut éditer le fichier
/etc/fstab
Pas de panique fstab reprend les options de
mount, vous ne devriez donc pas être perdu.
La structure est la suivante :
/dev/phériphérique /mnt/rep-montage
<type>
options
param_dump
param_verif_fichiers
- /dev/phériphérique
:
phériphérique /dev/hda1 /dev/hda2 ou /dev/swap
dans le
cas de la swap (ou du système distant dans le cas d'un
montage
NFS)
- /mnt/rep-montage
: nom du point de montage, répertoire
où sera monté /dev/phériphérique
- <type>
sont les types de filesystem supportés par le
système
linux : ext2 (Linux), msdos, vfat (Win9x), ntfs (NT), iso9660 (Cd-rom),
nfs, samba etc..
- options
:liste d'options de montage, séparés par des
virgules
- Les
options par défaut sont rw,suid, dev, exec, auto, nouser
- auto/noauto , pour demander/empêcher un montage
automatique au démarrage
- user/nouser, pour autoriser/interdire un user qq (pas le
"root") à effectuer le montage
- param_dump:
paramètre pour dump (commande de sauvegarde).
Une valeur 0 signifie que le système de fichiers ne sera pas
sauvegardé lors d'un dump (le dump étant la
sauvegarde
des valeurs qui sont mémoires dans un fichier du disque dur
lors
d'un crash de l'application par exemple).
- param_verif_fichiers
paramètre pour (commande de vérification des
fichiers).
Il indique l'ordre dans lequel fsck devra vérifier les
fichiers.
1 en priorité (c'est normalement la partition racine / ) 2
sinon, et 0 pour ne pas demander de vérification.
Exemple de fichiers fstab :
#
/etc/fstab: static file system information.
#
# <file
system> <mount
point> <type>
<options>
<dump>
<pass>
proc
/proc
proc
defaults
0 0
/dev/hda1
/
ext3 defaults,errors=remount-ro
0 1
/dev/hda3
/home
ext3
defaults
0 2
/dev/hda5
none
swap
sw
0 0
/dev/hdc
/media/cdrom0 udf,iso9660 ro,user,noauto
0 0
/dev/fd0
/media/floppy0 auto
rw,user,noauto
0 0
192.168.1.2:/home/ftpsite
/gateway/ftp nfs defaults 0 0
192.168.1.2:/var/www
/gateway/site nfs defaults 0 0
Vérifier l'état de votre filesystem
Vous avez la possibilité de vérifier
l'état de
votre filesystem avec l'utilitaire fsck. Cependant, je vous conseille
de démonter la partition avec d'utiliser fsck sur cette
dernière.
Pour démonter la partition, vous devez fermer tous les
programmes suceptibles d'utiliser des fichiers de cette partition,
sinon vous obtiendrez l'erreur "
périphérique
occupé" pour voir les fichiers
ouverts, utiliser le programme: lsof
Dans le cas de la partition / vous pouvez démarrer sur un CD
Live pour y faire les vérifications sur la partition
à
partir du système Live CD.
syntaxe :
fsck
/dev/phériphérique
exemple :
fsck /dev/hda5
Si vous désirez vérifier les blocs
défectueux,
utilisez l'option -c et -p pour réparation automatique.
Retour à la page
d'accueil