Cours Filesystem
Cours Filesystem
Unix - GNU/Linux
Thierry Vaira
1 Notions de base
2 GNU/Linux
3 Manipulations
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 2 / 60
Notions de base
Sommaire
1 Notions de base
Système de fichiers
Notion de fichier
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 3 / 60
Notions de base Système de fichiers
Système de fichiers I
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 4 / 60
Notions de base Système de fichiers
Système de fichiers II
Le fichier est la plus petite entité logique de stockage. Un nom lui est
associé pour accéder à son contenu. Les données du fichier sont
stockées dans des suites de blocs (la plus petite unité du périphérique
de stockage).
Le formatage (action de formater c’est-à-dire créer un système de
fichiers) prépare un support de données de stockage en y inscrivant un
système de fichiers, de façon à ce qu’il soit reconnu par un système
d’exploitation.
Il existe de nombreux systèmes de fichiers différents : FAT, NTFS,
HFS, ext, UFS, ISO 9660, ReiserFS, APFS, NFS, etc.
+ Il existe d’autres façons d’organiser les données, par exemple les bases
de données.
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 5 / 60
Notions de base Système de fichiers
Besoins
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 6 / 60
Notions de base Système de fichiers
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 7 / 60
Notions de base Système de fichiers
Fonctionnalités supplémentaires
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 8 / 60
Notions de base Système de fichiers
Arborescence
Un système de fichiers est vu comme une arborescence : les fichiers sont
regroupés dans des répertoires (directory ) ou dossiers (concept utilisé par
la plupart des systèmes d’exploitation).
Ces répertoires contiennent soit des fichiers, soit d’autres répertoires.
Une telle organisation génère une hiérarchie de répertoires et de
fichiers organisés en arbre.
Il y a donc un répertoire racine et des sous-répertoires.
Sous Unix/Linux, les utilisateurs voient une
arborescence de fichiers unique (/). Cet arbre est en fait l’unification
de plusieurs systèmes de fichiers (cf. opérations de
montage/démontage).
Dans un système Windows, les périphériques de stockage de données
et les partitions sont affichés comme des lecteurs indépendants (C:, D:,
...) possédant leur propre arborescence (\).
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 9 / 60
Notions de base Notion de fichier
Notion de fichier
Un fichier est une suite d’octets portant un nom et conservé dans une
mémoire.
Le nom d’un fichier est une chaîne de caractères (généralement en
Unicode) souvent de taille limitée. Certains caractères spécifiques
peuvent être interdits ou déconseillés.
Le contenu du fichier peut représenter n’importe quelle donnée
binaire : un programme, une image, un texte, etc.
Les fichiers sont classés dans des groupes appelés répertoires, chaque
répertoire peut contenir d’autres répertoires formant ainsi une
organisation arborescente.
Les fichiers sont la plupart du temps conservés (stockés) sur des
mémoires de masse tels que les disques durs.
Dans un système d’exploitation multi-utilisateurs, les programmes qui
manipulent le système de fichier effectuent des contrôles d’accès
(notion de droits).
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 10 / 60
Notions de base Notion de fichier
Extension
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 11 / 60
Notions de base Notion de fichier
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 12 / 60
GNU/Linux
Sommaire
2 GNU/Linux
Système de fichiers
La gestion des fichiers
Montage et démontage
Systèmes de fichiers en mémoire : ramfs et tmpfs
Les volumes logiques
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 13 / 60
GNU/Linux Système de fichiers
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 14 / 60
GNU/Linux Système de fichiers
ext2
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 15 / 60
GNU/Linux Système de fichiers
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 16 / 60
GNU/Linux Système de fichiers
La table d’allocation des blocs (block bitmap) est une table de bits où
chaque bit indique si le bloc correspondant est alloué (bit à 1) ou
disponible (à 0).
La table d’allocation des inodes (inode bitmap) est une table de bits
où chaque bit indique si l’inode correspondant est alloué (bit à 1) ou
disponible (à 0).
La table des inodes (inode table) contient la table des descripteurs de
fichiers. Chaque fichier est identifié par un numéro unique. La table
des inodes a une taille fixée statiquement à la création du système de
fichiers qui détermine donc le nombre maximal de fichiers qu’elle
pourra contenir. Cette table contient plusieurs entrées réservées (le
premier inode disponible est réellement le 11).
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 17 / 60
GNU/Linux Système de fichiers
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 18 / 60
GNU/Linux Système de fichiers
inode
Métadonnées
Les métadonnées les plus courantes sous UNIX sont :
type de fichier : fichier simple, lien symbolique, répertoire,
périphérique, etc.
droits d’accès en lecture, écriture et exécution selon l’utilisateur, le
groupe, ou les autres
propriétaire et groupe propriétaire du fichier
horodatages de dernier accès, de modification des métadonnées
(inode), de modification des données (bloc)
nombre de noms de fichiers (liens) pointant vers l’inode
nombre et numéro de blocs utilisés par le fichier
taille du fichier
+ Les inodes des fichiers ne contiennent pas les noms des fichiers.
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 20 / 60
GNU/Linux Système de fichiers
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 21 / 60
GNU/Linux Système de fichiers
/*
* Structure of an inode on the disk
*/
struct ext4_inode {
__le16 i_mode; /* File mode */
__le16 i_uid; /* Low 16 bits of Owner Uid */
__le32 i_size_lo; /* Size in bytes */
__le32 i_atime; /* Access time */
__le32 i_ctime; /* Inode Change time */
__le32 i_mtime; /* Modification time */
__le32 i_dtime; /* Deletion Time */
__le16 i_gid; /* Low 16 bits of Group Id */
__le16 i_links_count; /* Links count */
__le32 i_blocks_lo; /* Blocks count */
__le32 i_flags; /* File flags */
...
__le32 i_ctime_extra; /* extra Change time (nsec << 2 | epoch) */
__le32 i_mtime_extra; /* extra Modification time(nsec << 2 | epoch) */
__le32 i_atime_extra; /* extra Access time (nsec << 2 | epoch) */
__le32 i_crtime; /* File Creation time */
__le32 i_crtime_extra; /* extra FileCreationtime (nsec << 2 | epoch) */
__le32 i_version_hi; /* high 32 bits for 64-bit version */
};
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 22 / 60
GNU/Linux Système de fichiers
Exemple
$ ls -il Makefile
13107382 -rw-r--r-- 1 tvaira tvaira 22074 mai 22 18:06 Makefile
^
Numéro d’inode
$ stat Makefile
Fichier : « Makefile »
Taille : 22074 Blocs : 48 Blocs d’E/S : 4096 fichier
Périphérique : 805h/2053d Inoeud : 13107382 Liens : 1
Accès : (0644/-rw-r--r--) UID : ( 1029/ tvaira) GID : ( 1000/ tvaira)
Accès : 2017-05-09 [Link].725487886 +0200
Modif. : 2017-05-22 [Link].921242241 +0200
Changt : 2017-05-22 [Link].921242241 +0200
Créé : -
// Attention :
$ stat Makefile --printf="Nb blocs = %b (avec taille bloc : %B octets)\n"
Nb blocs = 48 (avec taille bloc : 512 octets)
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 23 / 60
GNU/Linux Système de fichiers
Entrées de répertoire
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 24 / 60
GNU/Linux Système de fichiers
struct ext4_dir_entry {
__le32 inode; /* Inode number */
__le16 rec_len; /* Directory entry length */
__le16 name_len; /* Name length */
char name[EXT4_NAME_LEN]; /* File name */
};
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 25 / 60
GNU/Linux Système de fichiers
Type de fichiers
/*
* Ext4 directory file types. Only the low 3 bits are used. The
* other bits are reserved for now.
*/
#define EXT4_FT_UNKNOWN 0
#define EXT4_FT_REG_FILE 1
#define EXT4_FT_DIR 2
#define EXT4_FT_CHRDEV 3
#define EXT4_FT_BLKDEV 4
#define EXT4_FT_FIFO 5
#define EXT4_FT_SOCK 6
#define EXT4_FT_SYMLINK 7
#define EXT4_FT_MAX 8
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 26 / 60
GNU/Linux Système de fichiers
Remarques
Depuis ext4, les données sont stockées dans l’ordre des octets Intel,
c’est-à-dire en little endian.
Pour assurer une optimisation, la taille des « entrées » de répertoire
sera alignée sur une architecture 32 bits (soit un multiple de 4 octets).
Il y aura donc un bourrage avec des valeurs 0x00 pour assurer cet
alignement.
Une structure factice ext4_dir_entry est placée à la fin de chaque
bloc pour contenir une somme de contrôle (checksum). Cette entrée
de répertoire a une taille de 12 octets. Les champs inode et
name_len sont mis à zéro pour permettre une compatibilité avec les
anciennes version d’ext. La somme de contrôle est stockée à
l’emplacement où se trouve normalement le nom.
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 27 / 60
GNU/Linux Système de fichiers
Exemple de décodage
9c 00 84 01 0c 00 01 02 2e 00 00 00
+ Ici, il y a 3 octets (0x00) qui ont été ajoutés pour assurer un alignement
32 bits.
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 28 / 60
GNU/Linux Système de fichiers
L’arborescence
Le système de fichiers sous Linux se compose d’une hiérarchie de
répertoires, sous-répertoires et fichiers. Le répertoire le plus élevé dans
l’arborescence est nommé la racine (root) symbolisé par /. L’arborescence
est unique. Quelques répertoires importants :
/etc : contient les fichiers de configuration du système et des applications
/dev : contient les fichiers spéciaux de périphériques qui représente les
points d’accès au matériel
/bin : contient les commandes de base du système
/sbin : contient les outils systèmes pour l’administration
/usr : contient les commandes et applications pour les utilisateurs, dont les
environnements graphiques
/home : contient les répertoires personnels des utilisateurs
/var : contient les fichiers dont le contenu varie en fonction de l’utilisation
du système (bases de données, fichiers de logs, . . . )
/proc : représente le point d’accès aux informations (variables, tables, liste,
...) du noyau et des processus
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 30 / 60
GNU/Linux La gestion des fichiers
Type de fichiers
Sous Unix, un fichier n’est pas structuré : c’est une suite d’octets. On
distingue en général deux types de fichiers : texte et binaire.
Les fichiers textes ont un contenu pouvant être interprété comme du
texte (des caractères la plupart du temps codés en ASCII). On utilise
habituellement un éditeur de texte pour manipuler ce type de fichiers.
Exemples de fichiers textes : code source d’un programme, scripts,
fichiers de configuration, etc .
Les fichiers binaires sont tous les fichiers autres que des fichiers
textes. Le contenu d’un fichier binaire correspond souvent à un format
précis lié à l’usage d’un logiciel applicatif spécifique. Exemples de
formats binaires usuels : fichiers exécutable (code machine), fichiers de
base de données, fichiers multimédias : images, sons, vidéos,
documents textes (traitement de texte), etc.
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 31 / 60
GNU/Linux La gestion des fichiers
Autres fichiers
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 32 / 60
GNU/Linux La gestion des fichiers
Philosophie
Notions de chemin
Chemins relatifs :
. : répertoire courant ("ici")
.. : répertoire parent ("au dessus")
~ ou $HOME : répertoire personnel ("chez moi")
Chemin absolu :
/ : la racine (root)
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 34 / 60
GNU/Linux La gestion des fichiers
Sous UNIX, il existe deux types de sécurité pour les fichiers et répertoires :
les droits et permissions UNIX et les ACL (Access Control List).
Il y a trois types de permissions :
r : accès en lecture
w : accès en écriture
x : exécution (fichier), traversée (répertoire)
Chacune de ces permissions peuvent être attribuée à :
u : l’utilisateur (propriétaire)
g : le groupe (propriétaire)
o : les autres
a : tout le monde
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 36 / 60
GNU/Linux La gestion des fichiers
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 37 / 60
GNU/Linux La gestion des fichiers
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 39 / 60
GNU/Linux La gestion des fichiers
Remarques :
droits par défaut : ajout d’un attribut default (d:) aux répertoires
seulement et qui se transmet à tous les fichiers créés dans le
répertoire.
masque : son intérêt est de pouvoir limiter toutes les permissions d’un
fichier sauf celles du propriétaire
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 40 / 60
GNU/Linux Montage et démontage
Commande mount
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 42 / 60
GNU/Linux Montage et démontage
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 43 / 60
GNU/Linux Montage et démontage
Commande umount
- Exemple :
$ umount /media/cdrom
Lorsque le démontage a eu lieu, le fichier /etc/mtab est mis à jour.
Si le démontage est refusé, on peut utiliser la commande fuser pour savoir
quels processus l’utilisent : $ fuser -v -m /media/cdrom
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 44 / 60
GNU/Linux Systèmes de fichiers en mémoire : ramfs et tmpfs
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 45 / 60
GNU/Linux Systèmes de fichiers en mémoire : ramfs et tmpfs
ramdisk
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 46 / 60
GNU/Linux Les volumes logiques
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 47 / 60
GNU/Linux Les volumes logiques
Principe
Le principe de base est la distribution des données sur plusieurs disques
d’un même ensemble (disk array ), les disques étant regroupés en un seul
volume logique. Les données sont découpées en blocs de taille fixe
(chunks), puis ces blocs sont distribués sur les différents disques du volume
logique suivant un algorithme déterminé par le niveau RAID.
Level 0 : est utilisé pour améliorer la performance en distribuant la charge
de lecture/écriture de façon équitable sur tous les disques de l’ensemble.
Configuration
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 49 / 60
GNU/Linux Les volumes logiques
LVM
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 50 / 60
Manipulations
Sommaire
3 Manipulations
Disques, partitions et systèmes de fichiers
Administration
Les fichiers
Les inodes
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 51 / 60
Manipulations Disques, partitions et systèmes de fichiers
$ lsblk
$ blkid
$ df -hT
$ mount
$ findmnt
les fichiers
$ cat /etc/fstab
$ cat /etc/mtab
$ cat /proc/partitions
$ cat /proc/mounts
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 52 / 60
Manipulations Administration
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 53 / 60
Manipulations Les fichiers
$ cd /tmp
$ stat [Link]
Fichier : [Link]
Taille : 0 Blocs : 0 Blocs d’E/S : 4096 fichier vide
Périphérique : 801h/2049d Inoeud : 7608079 Liens : 1
Accès : (0644/-rw-r--r--) UID : ( 1026/ tv) GID : (65536/ tv)
Accès : 2020-12-06 [Link].015502168 +0100
Modif. : 2020-12-06 [Link].015502168 +0100
Changt : 2020-12-06 [Link].015502168 +0100
Créé : -
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 54 / 60
Manipulations Les fichiers
// Type de fichier
$ file [Link]
[Link]: empty
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 55 / 60
Manipulations Les fichiers
$ file [Link]
[Link]: ASCII text
// Le point de montage
$ stat --printf="%m\n" [Link]
/
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 56 / 60
Manipulations Les inodes
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 57 / 60
Manipulations Les inodes
// Affichage du texte
$ strings [Link]
Hello world!
// Affichage en hexédécimal
$ hexdump -C [Link]
00000000 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 0a |Hello world!.|
0000000d
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 58 / 60
Manipulations Les inodes
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 59 / 60
Manipulations Les inodes
740001
// Affichage du texte
$ strings [Link]
Hello world!
// Affichage en hexédécimal
$ hexdump -C [Link]
00000000 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 0a |Hello world!.|
0000000d
Thierry Vaira (BTS SN La Salle Avignon) Système de fichiers (file system) v1.0 - 7 décembre 2020 60 / 60