Pseudo-systèmes de fichiers
procfs
1. Présentation
Le pseudo-système de fichiers procfs (process file system) est dynamiquement mis à jour par le noyau. Il est monté pour qu’il soit accessible sur le dossier /proc. Bien qu’il soit non vide, il affiche une taille de 0 Kio :
# ls -dl /proc
dr-xr-xr-x 110 root root 0 juil. 28 16:14 /proc
En effet, le concept de taille de fichier n’a pas de sens pour procfs puisqu’il occupe uniquement une quantité limitée de mémoire vive.
Le dossier /proc est utilisé pour accéder aux informations du noyau qui est en cours d’exécution. Vous pouvez ainsi consulter en temps réel des informations sur le matériel, le système, le réseau, les processus, etc. Il est possible de changer la configuration du noyau en écrivant dans certains fichiers stockés dans /proc.
2. Principaux fichiers de /proc
/proc est organisé en dossiers et sous-dossiers virtuels et rassemble les fichiers par thème similaire :
[root@system2 ~]# ls /proc
1 19 285 517 721 filesystems partitions
10 1927 286 59 725 fs sched_debug
11 1931 287 602 728 interrupts schedstat
1272 2 29 603 743 iomem scsi
1274 20 3 604 8 ioports self
1275 2002 30 606 846 irq slabinfo
1277 2003 31 631 9 kallsyms softirqs
13 2004 32 632 91 kcore stat
1338 2036 387 636 acpi keys swaps
1339 21 388 641 asound key-users sys ...
sysfs
1. Présentation
Introduit par le noyau Linux 2.6, le pseudo-système de fichiers sysfs est, comme procfs, un système de fichiers virtuel monté dans le dossier /sys. Il n’occupe donc pas d’espace disque et sa taille est de 0 Kio :
[root@system2 ~]# ls -ld /sys
drwxr-xr-x 13 root root 0 août 3 10:26 /sys
Du fait que procfs était encombré d’une multitude d’informations non liées aux processus, sysfs a été conçu pour exporter depuis l’espace noyau (anneau 0) vers l’espace utilisateur (anneau 3) des informations sur les périphériques et leurs pilotes.
2. Principaux fichiers de /sys
Le premier niveau /sys contient les dossiers suivants :
[root@system2 ~]# ls /sys
block bus class dev devices firmware
fs hypervisor kernel module power
a. /sys/block
Il contient les informations sur les périphériques de blocs :
[root@system2 ~]# ls /sys/block
dm-0 dm-1 dm-2 dm-3 sda sdb sdc sr0
Vous trouvez par exemple, dans chaque sous-dossier, un fichier /sys/block/<disque>/stat qui affiche les statistiques d’E/S (I/O) du disque :
[root@system2 ~]# cat /sys/block/dm-0/stat
24113 0 551642 249092 12764 0 263840
532832 0 88828 781920
/sys/block/<disque>/<partition>/stat affiche les statistiques E/S de la partition. Le format du fichier est identique à celui du disque.
b. /sys/bus
Il contient des dossiers qui représentent comment les périphériques sont connectés aux différents bus :
[root@system2 ~]# ls /sys/bus
ac97 cpu iio node pnp thunderbolt acpi edac ishtp nvmem scsi
usb clockevents event_source machinecheck pci serio usb-serial
clocksource hid mdio_bus pci_express snd_seq workqueue container
i2c memory platform spi xen
c. /sys/class
Il contient une liste de dossiers qui montrent les périphériques regroupés...
Exercice
L’objectif est de modifier de façon permanente la gestion du swap.
1. Ouvrez une session en tant que super-utilisateur sur la machine virutelle system1 (Debian 9) ou system2 (CentOS 7).
2. Quel est le paramètre du noyau Linux qui contrôle la quantité de données qui doit être conservée en mémoire vive ou mise dans le swap ? Affichez sa valeur.
3. Modifiez la valeur de ce paramètre à 10. Veillez à ce que cette modification soit permanente. Redémarrez le système et vérifiez.
4. Paramétrez le redémarrage automatique en cas de « kernel panic ». Le temps avant redémarrage de la machine doit être de 5 secondes.