Vous êtes sur la page 1sur 70

Compte-Rendu

Administration Linux

Préparé par : pdev115


Formateur : Mr Abdelhadi
Fait le : 31/03/2023
I. Aborder l’architecture
1. Découvrir le noyau
Le noyau (Kernel) est le centre de Linux. C’est le code qui permet de démarrer Linux, de nous adresser le
périphérique, de gérer de processus, mémoire… Une partie de Linux permet d’afficher les choses sur l’écran.
Un gros travail de noyau c’est de gérer les processus. Il les gère sous deux formes :
● Processes

● Threads

Processes sont les programmes qui s’exécutent. Parfois un process gère plusieurs trhreads. Ils pourront exécuter
de choses en parallèle s’il y a plusieurs processeurs, mais il faut faire une synchronisation de ces données.
Scheduler qui vont prendre des processes ou des trhreads et les placer sur différents processeurs pour les
exécuter. Linux c’est un système d’exploitation préemptif : il prend un processus et le met sur un processeur et il
va le gérer par lui-même l’exécution, sans que ça soit très collaboratif avec processus.

La mémoire virtuel (d’un processus). C’est son espace d’adressage. Mémoire peut être physique mais peut-être
swaper sur le disque s’il n’y a pas assez de mémoire pour tous les processus.
Mémoires :
Mémoire logique
Allocateur de page
Mémoire d’alocation physique (Physical memory operations.)
Cache
Swap

1) La mémoire vive (RAM) : c'est la mémoire principale du système, où les programmes sont chargés et exécutés.
Les données stockées en RAM sont temporaires et sont perdues lorsque le système est arrêté.
2) La mémoire swap : c'est de l'espace de stockage supplémentaire utilisé par le système pour stocker des données
qui ne sont pas actuellement utilisées en RAM. Les données stockées en swap sont également temporaires et
sont supprimées lorsque le système est arrêté.
3) La mémoire virtuelle : c'est une combinaison de la mémoire RAM et de la mémoire swap, qui permet au
système d'utiliser plus de mémoire que ce qui est disponible physiquement en RAM. Les données stockées en
mémoire virtuelle sont également temporaires.
4) La mémoire cache : c'est une mémoire temporaire utilisée par le système pour stocker des données récemment
utilisées afin d'accélérer les accès futurs. Les données stockées en cache peuvent être supprimées à tout
moment si le système a besoin de plus d'espace.
5) La mémoire morte (ROM) : c'est une mémoire permanente utilisée pour stocker des données importantes telles
que le BIOS et les firmwares. Les données stockées en ROM ne peuvent pas être modifiées et sont conservées
même lorsque le système est éteint.
Kernel space zone de mémoire. Les processus ont sa zone propre. Il y a plusieurs anneaux (pour la protection).

2. Examiner les sources du noyau


Kernel.org
Les pilotes (drivers) sont intégrés dans le noyau. C’est un noyau monolithique. Il y a deux façons de construire
un noyau :
● Faire un micro-noyau avec de morceaux de noyaux différents qui pourront collaborer ensemble.

● Noyau monolithique
A partir de noyau 2.0 ils ont fait un mix : modules qui peuvent être compiler séparément et puis être chargé sur
le noyau. Un noyau précompiler et ensuite on peut installer des modules pour le périphérique sans avoir
recompilé le noyau.

3. Utiliser pstree pour voir les processus


(pstree) : permet de voir l’arbre de processus.
-p : permet voir le PID
-h : highlite. Affiche en jeune les processes qui ont démarrés
-H : highlight un processus particulier. Pstree -H1478
-s : show parents.
Ex : psrtree – pdev115 je vais voir que mes branches. Systemd (racine) appartient à root.
Pstree -hs 1478 affiche le processus et des parents, surligne que des processus en cours et le
Init ??? et systemd. D à la fin (Daemon) est un process qui est lancé en arriere-plan
Dans l’arbre il y a des zones prises en crochets et accolades. Systemd lance des processus et les processus eux-
mêmes peuvent lancer les threads et les gérer. Lorsqu’un processus lance un autre processus il peut le faire de
deux manière : appeler/lancer un processus ou faire un fork de lui-même (sanpchot).
● Crochets il y a plusieurs processus avec le même nom. Toujours un numéro avant

● Accolades – il y a plusieurs threads


Chaque processus a un PID

4. Explorer le répertoire proc


Dev, Proc contient un système de fichiers virtuels. Proc contient l’info sur le noyau et le processeur. Dev des
infos sur les pilotes de périphérique, qui sont représentés comme des fichiers. Chaque pilote est un fichier.
Dans le proc presque tous les fichiers n’ont pas de taille.

5. Observer un processus dans proc


Proc s’est comporte le processus quel sont les fichiers qui sont ouvert et toutes les informations nécessaires
dont on a besoin pour connaitre toutes les détails de processus.
On a l’info sur :
Les permissions : cgroup
Ligne de commande : cmdline
Variable d’environnement : environ
Mémoire : mem
https://linux.die.net/man/5/proc
fd
fdinfo
II. Gérer l’exécution
1. Comprendre et agir sur le swap
Mémoire virtuelle. Partition de système dans
Fstab – fichier de configuration qui détermine ce que va être monté au démarrage. Deux partitions : ext4 et
swap.
Swap (partition d’échange)
Free –help
Free -h
S’il y a beacoup de swap on peut aller à /proc/sys/vm
/proc/sys -est une zone qui contient des infos liées à une commande sysctl (control) qui permet de changer des
option de lire et de modifier des option de système (kernel)

/proc/sys/vm /swapiness : détermine la tendance de kernel à swapper (0-on swap le moins possible, 100-on va
insister sur le swap).60 est bon pour le seveur.
Sudo sysctl vm.swappiness

etc/sysctl.d/ (peut.être . conf sur certaines machines)


ls etc/sysctl.d -montre les fichiers qui vont être réécrit au démarrage :

On peut modifié ces valeurs avec vim.

2. Installer sysstat

Contient l’info où les fichiers vont être stocker

Il faut activer cette commande d’abord.

Sudo vim /etc/default/sysstat


La fréquence la
commande va
récupérer l’info et
la stocker

true

Après les modification il faut redémarrer le service !


Sudo service restart

3. Comprendre ordonnancement

Ordonnanceur
RunQueue – fil d’attente. Peut avoir différents WaitQueue – quand ila fini de rester ici il va passer en
runQueue
Thread est pose dans
Nice – processus auquel on peut donner la priorité

Ordonnanceur permet de réaliser des multi tâches. Son travail est de gère des différentes tâches et les
positionner dans le fil d’attente, de leur donner le temps processeur avec un algorithme en tant que
possible.bien organiser. Wait si le processus ne peut pas s’executer correctement (attente la réponse
d’utilisateur, pour libérer le processeur.1.
Quantum – nombre millisecondes que le processus peut s’exécuter sur le processeur.
Si le travail est bien fait. Les methodes de scheduling.
Avant il y avait 15-20% de perte en performance due au problème de scheduling.
0 partir du noyau 2.6 scheduler par défaut implémente un principe : Completely Fair Scheduling(CFS)
https://svalaks.medium.com/linux-internals-completely-fair-scheduling-cfs-cpu-scheduler-algorithm-
7412c08d2e37
4. Utilisez la commande nice
Chaque processus a un degré de niceness (de -20 (le plus prioritaire) à +20()). Niceness s’hérite de parent.
Pour mettre niceness négative il faut être un SU.
(nice) : La commande nice est utilisée pour changer la priorité d'un processus en modifiant sa valeur de
"niceness". La valeur de niceness varie de -20 (la plus haute priorité) à +19 (la plus basse priorité). Par défaut,
tous les processus ont une valeur de niceness de 0. En utilisant la commande nice, vous pouvez modifier la
valeur de niceness pour rendre un processus plus ou moins prioritaire.
Par exemple, si vous voulez donner une priorité plus élevée à un processus de sauvegarde, vous pouvez utiliser
la commande nice -n -5 pour lui donner une valeur de niceness de -5. Cela signifie que le processus aura une
priorité plus élevée que les autres processus ayant une valeur de niceness plus élevée.

Ex :

(ionice) :ioneceness. La commande ionice est utilisée pour définir la priorité d'E/S (entrée/sortie) d'un
processus. Elle vous permet de limiter la quantité de bande passante que le processus peut utiliser pour les E/S.
Cela peut être utile pour empêcher un processus de ralentir le système en utilisant trop de ressources d'E/S.
Par exemple, vous pouvez utiliser la commande ionice -c 3 pour définir la priorité d'un processus en mode idle,
qui utilise très peu de ressources d'E/S. Vous pouvez également utiliser la commande ionice -n 7 pour définir la
priorité en mode utilisateur pour un processus qui nécessite des E/S plus importantes.
(renice) : change niceness
La commande renice est utilisée pour changer la valeur de niceness d'un processus en cours d'exécution. Cette
commande est utile si vous souhaitez modifier la priorité d'un processus existant plutôt que de définir la priorité
d'un nouveau processus.
Par exemple, si un processus en cours d'exécution utilise trop de ressources système, vous pouvez utiliser la
commande renice -n 10 pour lui donner une valeur de niceness plus élevée et donc une priorité plus basse. Cela
réduira la quantité de ressources système que le processus peut utiliser, libérant ainsi des ressources pour
d'autres processus.

Deux façons de changer


niceness par renice

Pour diminuer niceness


on fait en tant que SU
5. Voir l’activité des processeurs
Combien on a des processeurs :
1. nproc (nombre de processeseurs)
2. cat /proc/cpuinfo
3. lscpu
4. top et après 1

NUMA : non uniform memory access

(top) : permet de voir la charge actuel de système.


Appuyer sur H maj voir le nombre de threads au lieu de tâches.
Shift+i (irix mode): on passe de valeurs cumulés au moyennes
Us : user time
Sy: temps de kernel. system time
Ni : pourcentage d’activité CPU sur les processus qui était nicer.
Id : idle
Wa :wait
Hi : sur interruption. Si Hi est trop élevée c’est une interruption matérielle.
St : temps d’activité de CPU sur la virtualisation
En cliquant su 1 on voie les données pour chaque cpu.

III. Obtenir des infos


1. Utiliser vmstat
(vmstat) :virtual memory statistic. Retourne l’info sur mémoire virtuelle, processus, l’activité de CPU et sur l’IO.
vmstat 3 :l’information actualise toute les 3 secondes
delay The delay between updates in seconds. If no delay is specified, only one report is
printed with the average values since boot.
count Number of updates. In absence of count, when delay is defined, default is infinite.
-a, --active Display active and inactive memory, given a 2.5.41 kernel or newer.
-f, --forks The -f switch displays the number of forks since boot, which includes the fork, vfork,
and clone system calls, and is equivalent to the total number of tasks created. Each
process is represented by one or more tasks, depending on thread usage. This display
does not repeat.
-w Sortie large
-m, --slabs Displays the contents of /proc/slabinfo.
-n, --one-header Display the header only once rather than periodically.
-s, --stats Displays a table of various event counters and memory statistics. This display does not
repeat.
-d, --disk Report disk statistics (2.5.70 or above required).
-D, --disk-sum Report some summary statistics about disk activity.
-p, --partition device Detailed statistics about partition (kernel 2.5.70 or above required).
-S, --unit character Switches outputs between 1000 (k), 1024 (K), 1000000 (m), or 1048576 (M) bytes.
Note this does not change the swap (si/so) or block (bi/bo) fields.
-V, --version Display version information and exit.
-h, --help Display help and exit.
delay The delay between updates in seconds. If no delay is specified, only one report is
printed with the average values since boot.
count Number of updates. In absence of count, when delay is defined, default is infinite.
-a, --active Display active and inactive memory, given a 2.5.41 kernel or newer.
-f, --forks The -f switch displays the number of forks since boot, which includes the fork, vfork,
and clone system calls, and is equivalent to the total number of tasks created. Each
process is represented by one or more tasks, depending on thread usage. This display
does not repeat.
-m, --slabs Displays the contents of /proc/slabinfo.
-n, --one-header Display the header only once rather than periodically.
-s, --stats Displays a table of various event counters and memory statistics. This display does not
repeat.
-d, --disk Report disk statistics (2.5.70 or above required).
-D, --disk-sum Report some summary statistics about disk activity.
-p, --partition device Detailed statistics about partition (kernel 2.5.70 or above required).
-S, --unit character Switches outputs between 1000 (k), 1024 (K), 1000000 (m), or 1048576 (M) bytes.
Note this does not change the swap (si/so) or block (bi/bo) fields.
-V, --version Display version information and exit.
-h, --help Display help and exit.
r processus en cours.
procs
b ce qui peuvent être executer
swpd Mémoire swappé
free Mémoire libre
mémoire buff Mémoire tampon ( les applis en cours qui sont en trains d’utiliser ces fichiers avec des
info supplémentaire (les permissions…)
cache Mémoire cache totale des applications
si Swap in. Quantité de mémoire qui a été bougé de la mémoire vers le swap
so Swap out. Quantité de mémoire qui a été bougé du swap vers la mémoire
swap Page folds. L’application veut accéder à une de mémoire, mais l’application ne sait pas. Et
kernel

bi Block in. Nombres de blocks par seconde. lit


io
bo Block out. Nombres de blocks par seconde. écrit
in Interruption number.
cs Contexte switch. Lorsque scheduleur place ou déplace un processus sur un cpu il y a tout
system
un contexte de travail de processeur qu’il faut déplacer également. Si cs est élevée ça
vaut dire qu’il y baeacoup de processus et multi processing
us Temps utilisateur [%]
sy Temps passé sur kernel [%]
cpu id Idle [%]
wa Wait [%]
st Still time. Qu’avec des machines virtuelles [%]
structure/fichiers sur le disque qui ont été cacher par linux pour faciliter le travail des applications. Système de
Cache intégré au noyau qui utilise le system de memory mapped files (On prends les fichier du disque et les
mappe sur la mémoire comme s’ils étaient sur le disque, pour faciliter le travail des applications)
page folds
2. Analyser
l’utilisation
de la
mémoire
vmstat -a
Active – mémoire utilisée. Elle ne peut pas être
réutiliser
Inactive – mémoire qui vient d’être utilisé
(récemment) et qui peut être reprise

(free) :
Free -m
Buff/cache = tampon + cache
La diffenrce ent available(disponible) et
free(libre) est la mémoire inactive
Meminfo : le fichier qui conient l’info sur
l’utilisation de la ma mémoire
Swapcashed- mémoire qui est presente sur la mémoire libre, mais aussi daans le swap
Mémoire active/inactive decoupé en deux niveau : anonyme (de l’application), mémoire de fichier

Sawap libre

Pages qui ne sont pas de fichiers, qui sont en mémoire

Vmalloc : Fonction de linux qui permet d’allouer de la mémoire contigu

(smem) : nous donne un rapport su la mémoire qui est en cours d’utilisation


-w : wide
-m : rapport par mapping de mémoire

Swap quantité de mémoire qui est swappé


USS Unique set size. Mémoire privée utilisée par ce process
PSS Proportional set size. Mémoire total utilisé par le process y compris les bibliothèques (partagé). PSS
montre un pourcentage de la mémoire. Si on a 1 Mo de la bibliothèque utilisée par 10 process un
process va contenir 100 Ko.
RSS Residensy set size. Mémoire total utilisé par le process et les bibliotheques qui l’a chargé

Smem -w

3. Suivre l’exécution d’un process


Augmentation de
Cashe
Pour io bo est chargée
Cpu passe de idle à us cs
ssw
3 3.18

(time) :
-v : verbose

Il existe la commande time interne (shell) et externe :


Time -v

Real time

Set size
S’il y a eu de fluctuation en moyen
Page faults :quand l’appli demande
une page, mais kernel ne l’a pas, car
par exemple il l’a swappé et cette
mémoire n’est plus dans la mémoire
vive
Minor, c’est quand l’adresse n’est
pas bonne (les process partagent la
mémoire). Kernel recherche la
bonne.

4. Préparer l’analyse du multithreading


Comment on peut voir le nombre des CPU :
1. nproc
2. Cat /proc/cpuinfo
3. Top et après on tape sur 1

(gzip) compresser un fichier Ex : gzip fichier1.txt => fichier1.txt.gz


-k : keep. Grader le fichier et pas le remplacer
-9 : compression maximum
-f : forcer
(pigz) : compression plus rapide. multi-thread. Le temps total est nombre de CPU fois plus rapide que gzip

5. Suivre l’exécution de threads

(pidof) : récupère PID de process


(ps -T) permet de voir les threads

SPID : id de threads
ps -Tm -p `pidof pigs`
-m permet d’afficher les threads après le process (comme arborescence)
On peut également utilisez pstree pour voir l’arborescence

6. Aller plus loin dans l’analyse


(mpstat) : comme vmstat, mais affiche l’activité pour chaque CPU
-P : quel processeur
Ex : mpstat -P ALL 1 ; mpstat -P 0 1 affiche les résultat chaque seconde pour tout les CPU et pour 1 er
respectivement

Affiche les résulat de CPU 0 chaque 3 sec

SLAB – c’est un mécanisme qui va permettre au kernel de réserver de la mémoire et de placer là dont il l’a
besoin. Ce mécanisme permet au kernel de poser des objets en mémoire de façon très performante.
Slab – c’est une façon de
SLAB – gestionnaire de mémoire dans le noyau Linux appelé SLAB Allocator. Ce gestionnaire de mémoire est
utilisé pour allouer et libérer de la mémoire dans le système d'exploitation, et il est particulièrement efficace
pour les petits blocs de mémoire. Dans ce contexte, SLAB est donc un terme qui se rapporte à la gestion de la
mémoire dans le système d'exploitation Linux.
(slabtop) : s’utilise avec sudo
-d : delay. Chaque combien sec actualiser les résultats, par défaut chaque 3 sec.
7. Utiliser la commande ps
(ps) : sqd
-m permet d’afficher les threads après le process (comme arborescence)
aux : permet d’avoir tout avec un syntax long. Sans tiré !
-e : pour tout voir
-el : pour tout voir en version long
-ef :full. Pour voir tout en version full (détaillé)
-a:
-u
-x

Unix plusieurs variantes Linux et BSD. Quand on regarde man ps c’est ne syntaxe DSD
Unix a une syntaxe ps sans « - », donc le signification de différents lettres n’est pas la même avec ou sans tiré.
Stat : l’état de processus. Il eut avoir différentes valeurs :
● S :sleeping

● R : runable

● D : sommeil profond (interruptible)

● Z : zombie

8. Utiliser la commande sar


Sysstat on l’installe pour collecter la statistique
se trouve /var/log/sysstat
pour interroger cette information on utilise la commande sar
(sar) : la statistique
-u
-P : processeur. Ex : Sar -P ALL ; sar -P 0,2 ll’info pour le processeur 0 et 2
-r : visualisation historique de la mémoire
-S : toute l’activité de swapping
-B : quel sont les pagefolds par seconde. Information sur le paging.
-b information sur l’activité io éntrée sortie
Bread/s - bytes read by second
-w: avoir le nombre de switch de contexte par seconde
-R :voir l’activité en terme de cache par seconde
Ex : sar -u 2 5 montre les résultats de système chaque 2 secondes 5 fois
Sar -u -f /var/log/sysstat/sa15 Montre les résultat d’hier ou avant-hier

IV. Gérer les services


1. Découvrir l’arborescence des processus
Pstree
ps -ef | less permet de voir tous les processus page par page

2. Démarrer et arrêter les services


(service) :

service rsyslog status


Systemctl status rsyslog

Feu vert - service fonctionne bien


Loaded veut dire qu’il a trouvé un
configuration dans le carré rouge.

Signifie que syslog sera activé de la


bout de la machine.

Extrait des log qui permet de voir


qqs éléments qui sont mis dans les
logs liés au démarrage ou à l’arrêt
de ce service.

System logging service gère le logging des activité des services


Deouis quand il a été lancé
Main PID le processus qui a été démarré.
Cgroup – est une étiquette qui on a lié à un processus. Quand ce processus va lancer d’autres processus, ils vont
avoir cette étiquette également.

Systemctl start httpd lance le service.


Systemctl restart httpd
Systemctl enable httpd : active le service
stemctl disable httpd : désactive le service

(systemctl) : permet de démarrer, d’arrêter, ou activer/désactiver des services lors du démarrage. Elle va plus
loin que ça : elle permet de gérer sytemd et de gérer toutes les opérations réalisées par systemd. Systemctl
permet de configurer rsyslog pour que rsyslog soit démarré lors du bootage
3. Comprendre les processus targets et runlevels
(systemctl) : permet de démarrer, d’arrêter, ou activer/désactiver des services lors du démarrage. Elle va plus
loin que ça : elle permet de gérer sytemd et de gérer toutes les opérations réalisées par systemd. Systemctl
permet de configurer rsyslog pour que rsyslog soit démarré lors du bootage

Systemd s’occupe dans quel ordre les processus(operations) vont s’enchaîner pendant la phase de démarrage
(boot). Les premières opérations très visibles : montée le système de fichier, mettre en plcae swap… Pour
ordonner ses opérations Il y a différents « target » qui sont définis avec systemd. Une target est unité
Systemctl list-units –type=target : affiche differents targets

Interface sans graphique

Gére les volumes chifrées


Getty permet avoir la console
Graphical : permet d’avoir
interface graphique

sysinitUne de premier
commande 1.

Chaque fois que le système est démarré il a une nombre de points qu’il va devoir atteindre. Quand on terminer
sysinit on passe multi-user.target=>graphical.target… les étapes passent les unes après les autres.

Systemctl cat sysinit.taget : Pour connaitre la configuration de sysinit.taget


Conflicts – veut dire qu’il ne pourra pas tourner en même temps que emergency.targe …
Wants : les dépendances pour pouvoir activer sysinit. Si, par ex , local -fs.target n’a pas été fait, il va le faire.
After : sysinit.target va être lancer après … aura être appeler.

Systemctl cat sysinit.taget –all : affiche un peu plus des target

Systemctl list-units –type=swap : affiche differents swaps ( dans ce cas là qu’un seul)
4. Lancer services avec systemd
Systemd gère les services. La commande qui peut demander à systemd de faire ça est la commande systemctl.

Systemd est un système d'initialisation pour les systèmes d'exploitation Linux modernes. Il a été conçu pour
remplacer les anciens systèmes d'initialisation tels que SysV init et Upstart.
Systemd est responsable de la gestion du processus de démarrage du système d'exploitation, ainsi que de la
gestion des processus du système tout au long de son cycle de vie. Il utilise des fichiers de configuration pour
définir les unités système, qui sont des fichiers qui décrivent les services, les montages de systèmes de fichiers,
les périphériques, les sockets, les timers et autres objets système.
Systemd utilise également un système de journalisation centralisé appelé journalisation du système, qui permet
de stocker et d'accéder facilement aux journaux système, ce qui facilite le dépannage et la résolution des
problèmes.
En plus de la gestion des processus du système, systemd offre également des fonctionnalités avancées telles que
la gestion des conteneurs, la surveillance des processus, la gestion des services à distance et la gestion des
séances utilisateur.
Globalement, systemd est un système d'initialisation puissant et flexible qui offre de nombreuses fonctionnalités
pour la gestion des systèmes Linux modernes.
Systemctl status rsyslog : permet gerer les services

Rôle de fichier suivant est de decrir pour systemd comment démarrer rsyslog, c’est quoi comme service, quand
il doit être démarré, etc. fichier rsyslog.service est le cœur de la configuration de rsyslog systemd.

Pour regarder ce fichier à la main on utilise :


Systemctl cat rsyslog.service
decrit l’unité en question (ici service)

Comment on va gérer ce service


Notify il faut prevenir

Dans quel cas on le lance (installer


dans le fonctionnement de system).
Montre les dépendances

standardOutput=null affichera pas dans terminal


Systemctl status sshd ou sudo service ssh status

Pour aller plus loin :

Type=forking : si le processus lanceur va s’arrêter ce processus va continuer à fonctionner, il n’a pas besoin de
père.
ExecStart : donne la commande pour exécuter ce service
ExecReload : n’est pas restart (stop=>start). Il nous donne une commande qui permet de demander le processus
parent de relire sa configuration et de prendre en compte cette nouvelle configuration.
KillMode : si on veut killer le service il faut tuer le le processus.
Restartsec=42s : le temps à atteindre avant de rédemarrer le service.
5. S’initier aux services complexes
Comment personnaliser les fichiers de configuration

execReload=/bin/kill -HUP $MAINPID


recharge la configuration. Les modifications qui ne nécessitent pas le redémarrage de processus.
Systemctl cat sshd-keygen.service
Systemctl edit sshd-keygen.service

(edit) present le fichier vide. Il rajoute.


V. Manipuler les logs
1. Comprendre le principe des daemons
Ps -ef

Processus ps a deux sortie : standard (écran) et sortie d’erreur. Il est connecté au terminal en sortie.

Les processus qui ne sont pas rattaché aux terminaux ces sont les processus qui ont été lancé sous forme de
services. En tache de fond.
Ces processus ne reçoivent rien sur l’entrée std et ne sortent rien sur la sortie std. Il faut avoir des mécanismes
afin de pouvoir communiquer.
Daemon sous Unix est un programme qui tourne en tache de fond, complètement déconnecté de terminaux de
la machine. Il a pour rôle d’offrir un service à d’autres processus ou à utilisateur locaux ou à l’utilisateur distant.
Son fonctionnement est géré par le mécanisme init et par soit de script démarrage soit par programmes lancé
par systemd

Daemon :
● Détaché de terminal

● Géré par systemd

● Fonctionne en tache de fond


2. Découvrir le protocole syslog
Syslog est un protocole définissant un service de journaux d’événements d’un système informatique.
Syslog est un protocole de discussion entre des processus en arrière-plan (daemon) et syslog. Également c’est
un protocole réseaux. Syslog est un « psy » de deamon.
Syslog est un protocole utilisé pour envoyer des messages de journalisation (logs) entre des équipements
informatiques. Les messages de syslog contiennent des informations sur les événements système, les erreurs,
les avertissements, les activités de sécurité, etc.

Codes de catégorie
Code Mot-clé Description
0 kern messages du noyau
1 user messages de l'espace utilisateur
2 mail messages du système de messagerie
3 daemon messages des processus d'arrière plan
4 auth messages d'authentification
5 syslog messages générés par syslogd lui-même
6 lpr messages d'impressions
7 news messages d'actualités
8 uucp messages UUCP
9 cron Taches planifiées (at/cron)
10 authpriv sécurité / élévation de privilèges
11 ftp logiciel FTP
12 ntp Synchronisation du temps NTP
13 security log audit
14 console log alert
15 solaris-cron Taches planifiées (at/cron)
16 local0 Utilisation locale libre 0 (local0)
17 local1 Utilisation locale libre 1 (local1)
18 local2 Utilisation locale libre 2 (local2)
19 local3 Utilisation locale libre 3 (local3)
20 local4 Utilisation locale libre 4 (local4)
21 local5 Utilisation locale libre 5 (local5)
22 local6 Utilisation locale libre 6 (local6)
23 local7 Utilisation locale libre 7 (local7)

Codes de gravité
Code Gravité Mot-clé Description
0 Emergency emerg (panic) Système inutilisable.
1 Alert alert Une intervention
immédiate est
nécessaire.
2 Critical crit Erreur critique pour le
système.
3 Error err (error) Erreur de
fonctionnement.
4 Warning warn (warning) Avertissement (une
erreur peut intervenir
si aucune action n'est
prise).
5 Notice notice Événement normal
méritant d'être
signalé.
6 Informational info Pour information.
7 Debugging debug Message de mise au
point.
3. Connaitre les limites de syslog et de rsyslog
Rsyslog plus moderne permet d’aller plus loin. Notamment dans la sélection de messages et de qu’est-ce que je
vais faire de ces messages

Modules permet des recevoir des messages en UDP, TCP (deux grandes protocoles réseaux)
Global direction : comment représenter le datage.

Rules
La selction se fait En fonction de provenance, catégorie ou gravité de message
Dans rules on peut ajouter une ligne :
:msg, contains ‘’exemple’’ /var/log/logexemple
Il permet d’envoyer tout les messages contenants exemple dans le fichier logexemple
N’oublions pas prendre en compte les modifications :
systemctl restart rsyslog

on va envoyer le message contenant le mot-clé exemple :


logger -p user.info ‘’voici un message d’exemple’’
:msg, regexp, ‘’exemple$’’ /var/log/logexemple
Il permet d’envoyer tous les messages qui se termine par exemple.
Regexp active des expressions régulières.

Avec rsyslog on peut créer des fichiers dynamiques (nom n’est statique)
Pour cela il faut définir la template. On la met juste au-dessus de rules.
$template DynamicFile,’’/var/log/%$DAY%.log
le fichier va correspondre au nombre de jour.
Ensuite dans rules :
*.info ; mail.none;authpriv.none;c c ron.none ?DynamiqueFile
? vaut dire qu’on va appeler la Template
systemctl restart rsyslog
logger -p user.info “hello”

(logger) : est une commande du shell qui permet d'envoyer des messages vers le système de journalisation du
système d'exploitation. Ces messages sont stockés dans les fichiers journaux (logs) du système, qui sont utilisés
pour enregistrer les événements importants qui se produisent sur la machine.
-p : spécifier un niveau de priorité pour le message. logger "Hello world!" :Ce message sera enregistré dans le
journal du système avec le niveau de priorité par défaut.
Exemple : logger -p user.warning "Attention, une erreur s'est produite !"
-t : spécifier une source pour le message. Ex : logger -t monscript.sh "Le script est en cours d'exécution..."
4. Configurer le réseau avec rsyslog
On va voir comment récupérer les logs d’une machine distant en quasi temps réel
Machines Debian et CentOS

D’abord on active la réception des messages sur la machine locale.


/etc/rsylog.conf
On désactive la réception du syslog avec le protocole UDP et TCP un par un. On enlève # sur la ligne

Sur la machine distante :


vi /etc/rsylog.conf
vi /etc/rsyslog.d/50-default

dans rules on ajoute *.info @


@ :signifie que les messages sont pout tcp
@@ : pour UDP
restart
tail -f /var/log/syslog

sur l’ordi distant :


logger -p user.info « message depuis la machine distante »
à partir de ce moment les messages qui sont réçu par syslog de la machine distante qui correspondent à une
gravité .info ou superieur sont envoyé au syslog locale. Et syslog locale va filtrer ces fichiers à nouveau.
Il est également possible de filtrer les fichiers avant les envoyés sur la machine distant
vi /etc/rsyslog.d/50-default
:msg, contains, ‘’err’’ @10.0.2.4
systemctl restart rsyslog
tail -f /var/log/syslog : on regarde s’il n y a pas de message d’err
logger -p user.info « message d’erreur »

Il existe deux versions principales de syslog : syslog-UDP et syslog-TCP. UDP : intérêt si énormément des
messages il n’arrivera pas à enregistrer, en cas de TCP il peut être saturée. Sur TCP on peut mettre TLS
(chiffrement)
UDP (User Datagram Protocol) et TCP (Transmission Control Protocol) sont tous deux des protocoles de
transport utilisés pour la communication entre des équipements informatiques. Cependant, ils diffèrent sur
plusieurs aspects.
UDP est un protocole sans connexion, ce qui signifie qu'il ne nécessite pas l'établissement préalable d'une
connexion entre les deux équipements. Les paquets de données envoyés via UDP ne sont pas vérifiés pour leur
intégrité, leur ordre ou leur réception, et peuvent être perdus ou dupliqués en cours de route. UDP est souvent
utilisé pour les applications où une perte occasionnelle de données n'est pas critique, telles que les jeux en ligne
ou les flux audio/vidéo.
TCP, en revanche, est un protocole orienté connexion. Il nécessite l'établissement d'une connexion entre les
deux équipements avant de commencer à envoyer des données. Les paquets de données envoyés via TCP sont
vérifiés pour leur intégrité, leur ordre et leur réception, et le protocole garantit que toutes les données sont
livrées de manière fiable et dans l'ordre approprié. TCP est souvent utilisé pour les applications où une perte
de données est inacceptable, telles que les transactions financières en ligne ou les transferts de fichiers
volumineux.

En ce qui concerne syslog, la principale différence entre syslog-UDP et syslog-TCP réside dans leur fiabilité. Le
syslog-UDP est plus rapide car il n'a pas besoin d'établir une connexion, mais il peut perdre des messages s'ils
sont envoyés trop rapidement ou si le réseau est surchargé. Le syslog-TCP est plus fiable car il garantit que tous
les messages sont reçus dans l'ordre approprié, mais il peut être plus lent en raison de la nécessité d'établir une
connexion.

En conclusion, la différence entre TCP et UDP réside dans la fiabilité et la vitesse de transfert des données. UDP
est plus rapide mais moins fiable, tandis que TCP est plus fiable mais peut être plus lent. Pour syslog, la version
utilisée dépendra des besoins spécifiques de chaque application.
5. Créer des journaux système
Smart : mécanisme dans le disque dur et qui permet de remonter de statique. Log peut nous prévenir si le
disque dur a des soucis et qu’il faut le changer.
Des logues on regarde apostériori (après l’incident)

(logwatch)

Pour envoyer les rapports par mail on modifie le fichier de configuration :

L’un qui se trouve dans


6. Comprendre la synchronisation de l’heure
eurodater
Comment l’heure est géré sur une machine ?
Comment se synchronise sur l’horloge de référence ?
https://www.bipm.org/en/home
Network Time Protocol ou NTP est un protocole qui permet de synchroniser, via un réseau informatique,
l'horloge locale d'ordinateurs sur une référence d'heure. La première version v. 0 de NTP, formalisée dans la RFC
958, date de septembre 1985

7. Synchroniser l’heure
chronyd
Sur un serveur présent : client et serveur.
Pour lancer le client :
Systemctl status ntpd
Ntpdate : programme
Si le décalage entre l’heure de réf et de machine est trop important notre client de temps n’appliquera pas la
différence car il pense qu’il est volontaire.

(ntpdate pool.ntp.org) permet de faire la synchronisation

Maintenant on essaye de garder le décalage. Machine virtuelle ne voit pas passer le temps comme machine
physique.
chronyd
VI. Gérer les processus

1. Afficher les processus


Finalité de la machine avoir des programmes qui fonctionnent et qui tournent dans la mémoire.
(ps) : df
-ef : tous les processus

TTY à partir de quel terminal ( ? pas d’un terminal)


[] est un thread
Ou daemon
(top)

2. Interpréter les informations de la commande top


L’heure, temps depuis démarrage, utilisateur connectées (les terminaux graphiques), charge moyenne
288 processus, 1 running, sleeping (chargée en mémoire, mais il n’ont pas d’activité à réaliser dans le
processeur), stopped (suspendu. Reste en mémoire, mais on lui interdit d’accéder au processeur), zombie
(état transitoire d’un processus, quand les processus s’arrêtent. Le processus s’arrête (libère la mémoire=> il
prévient son père=> attend la réponse))
%CPU répartition de l’activité actuelle (somme ~100%)
sy : espace de noyau. Toutes les opérations réalisées par le noyau, mais également toutes les opérations que le
processus va demander à réaliser à un driver.
ni : nice
id : idle. % de temps dont le processus va passer à ne rien faire
wa : atteint pour les entrée/ sorties de disque
hi , si : des interruptions
st : virtualisation
KiB Mem : consommation mémoire

Par defaut classé par %CPU


Afin de classer par consommation %mem on tape sur M

3. Arrêter et démarrer un processus


Processus sont lancés soit par sytemd lors de boot de la machine ou avec la commande systemctl, pour les
daemons, soit par un utilisateur

(kill) :
-15 / -TERM / -SIGTERM : arrêter le processus correctement
-2 / -SIGINT : équivalent de ctrl+c. interrompre le processus. on l’utilise si -15 n’a pas fonctionné.
-9 / -SIGKILL : ne demande pas le processus. Supprime le processus de mémoire sans lui demander. Fonctionne
que pour les processus dont je suis propriétaire. Il peut conduire au données manquant, corrompre des
données.
Ctrl+z => on pourra plus afficher les pages, donc on met en bg.

q
Fg pour revenir à la rédaction vi

4. Contrôler les processus avec lsof


(lsof) : ls open file. Pas que des fichiers classiques.
-p : processus. Affiche les fichiers qu’ils ont été ouverts par ce processus. Ex : lsof -p 2262
-i : inet. Tout ce qui correspond au réseaux.

PID
TID
TASKCMD
1. Le nom du processus qui a ouvert le fichier
2. Le PID (identifiant de processus) du processus
3. Le nom de l'utilisateur qui a ouvert le fichier
4. FD. Le descripteur de fichier (par exemple, le numéro de fichier ouvert par le processus)
5. Le type de fichier (par exemple, répertoire, fichier ordinaire, socket, etc.)
6. Le chemin complet du fichier ouvert

FD : de quelle manière il l’a ouvert. (cwd current working directory)


(cwd pour le répertoire de travail actuel, rtd pour le répertoire racine du processus, txt pour le fichier
exécutable, mem pour la région mémoire, etc.). La colonne "TYPE" indique le type de fichier ouvert (DIR pour un
répertoire, REG pour un fichier régulier, etc.), et la colonne "NAME" affiche le nom complet du fichier ouvert.

Txt indique le fichier qui a ét utilisé et qui contient le données binaires qui sont présents dans la mémoire de la
machine. C’est l’exécutable
mem premiers 2 sont liés à systemd ; les autres corresponds à des bibliothèques partagés. /usr/lib64/*.so*
0r entrée std. En générale connectée au clavier. Donc le sortie est /dev/null
1w écran. C’est également un daemon donc /dev/null
3u IPv4 avec protocole UDP

5. Surveiller les ressources


top

Load average : charge moyenne durant dernière minute 5min et 15 min respectivement. Ces chiffres
démontrent nombre des processus en moyen en atteint pour accèdera au processus. Peu import si c’est
processus un paquet chips ou un caddy.
(vmstat) permet d’avoir une vision de ce que se passe sur la machine et de la consommation (ce que font les
processus sur la ressource de ma machine)

On mesure le statistique sur l’ensemble des processus sur la machine chaque 5 s.


1ère ligne correspond à un moyen depuis le démarrage de la machine.
2e ligne un moyen sur l’intervalle sélectionnée (5s dans ce cas)

r processus en cours.
procs
b ce qui peuvent être exécuter. Processus bloquées en IO.
Mémoire swpd Mémoire swappé
(compliqué free Mémoire libre
à analyser, buff Mémoire tampon ( les applis en cours qui sont en trains d’utiliser ces fichiers avec des
on regarde info supplémentaire (les permissions…)
swap cache Mémoire cache totale des applications
plutôt)
si Swap in. Quantité de mémoire qui a été bougé de la mémoire vers le swap
so Swap out. Quantité de mémoire qui a été bougé du swap vers la mémoire
swap
Page folds. L’application veut accéder à une de mémoire, mais l’application ne sait pas.
Et kernel
bi Block in. Nombres de blocks par seconde. lit
io
bo Block out. Nombres de blocks par seconde. écrit
in Interruption number.
cs Contexte switch. Lorsque scheduleur place ou déplace un processus sur un cpu il y a
system
tout un contexte de travail de processeur qu’il faut déplacer également. Si cs est élevée
ça vaut dire qu’il y baeacoup de processus et multi processing
us Temps utilisateur [%]
sy Temps passé sur kernel [%]
cpu id Idle [%]
wa Wait [%]
st Still time. Qu’avec des machines virtuelles [%]
6. Conclure sur les services système Linux

(Systemd) logiciel qui permet de gérer les services dans la machine. Lors du démarrage et qui permet d’arreter
les services. Désactiver un service lors du prochain boot de la machine. de rechargger les service dont la
configuration a été modifié.

Syslog
Rsyslog + selection de messages. Passer par réseau.
Gestion de temps. Synchronisation. Cron
at
top taille de queue
lsof
VII. Bases du stockage
1. Comprendre concept du ½ fichier et fichier
Linux représente beaucoup des choses sous forme de fichier. Il faut savoir manipuler des fichiers.

« - » signifie le fichier régulier


« d » dossier en bleu

« l » lien symbolique

Unalias ls pour enlever les couleurs. -> lien vers quel fichier par

/proc : c’est le noyau qui me représente son fonctionnement sous forme des fichiers. List de processus qui
fonctionnent.
ls -l cpuinfo : le fichier est vide mais si on l’ouvre le system va envoyer les données dans ce fichier

2. Apprendre les fichiers de communication


D’autres types des fichiers qui ne sont pas liés aux données de la disque, mais qui servent à d’autres choses.
Par exemple à la communication entre deux processus.

« p » signifie pipe
Un programme envoie les données dans ce fichier et un autre programme va pouvoir les lire.
On a besoin de cela car les processus ne peuvent pas écrire dans la mémoire d’un autre processus. Il peut écrire
que dans sa mémoire.
« s » socket est le même fonctionnement que pipe
3. Manipuler les fichiers de périphérique
/dev : les fichiers qui correspondent à des périphériques qui sont dans la machine.

« b » fichier périphérique de type block (périphérique de stockage uniquement)


Fichier sda périphérique de stockage. En faisant cat il va afficher tout ce qui est stocker sur le disque dur (2gb).

Le fichier contient le mdp de ces utilisateurs. Il commence par $y$


Grep dans le disque dur
cd input

« c » : fichier périphérique de type caractère.


fichier périphérique de type block est périphérique de stockage uniquement

Quand je bouge le souris.

4. Tester des disques


Disque dur est le brique de base de stockage. Disque de dur tombe en panne car il a une durée de vie.
Afficher la statistique de disque dur :

Smart support n‘est pas activée. Quand il est activé le disque dur est capable d’enregistrée la statistique.
Statistique TYPE :
● Pre-fail :
● Old_age (value worst,. Quand la Valeur attend THRESH on considere que le disque en état
pre-fail/Old_age) cela permet de prévenir certains pain de disque dur.

Si SMART n'est pas déjà activé, vous devez le faire dans le BIOS de votre ordinateur. Les étapes exactes
pour accéder au BIOS varient en fonction du fabricant de votre ordinateur, mais généralement, vous pouvez y
accéder en appuyant sur une touche spécifique (comme F2, F12 ou Del) au démarrage de l'ordinateur.

Dans le BIOS, recherchez une option pour activer SMART ou les fonctions de surveillance de disque dur. Activez
cette option et enregistrez les modifications avant de quitter le BIOS.

VIII. Organiser les disques et partitions


1. Partitionner un disque
Première chose à faire avec notre disque dur est de le partitionner. L’objectif est d’organiser l’espace de façon à
pouvoir facilement retrouver et gérer nos données

Deux partitions rouge et jaune à gauche appartiennent à Linux, jaune contient les données du système et rouge
d’utilisateurs. Cela permet de faire des sauvegardes qui prennent moins de place.
Certains types de données sont plus efficaces sur les partitions spécifiques. Ex : Swap. Swap permet d’étendre la
mémoire vive du système pour pouvoir de supporter les piques d’activités importants.
Il existe deux grandes familles de partitionnement :
● Au format MBR

● Au format GPT

La partition se fait en ajoutant le nombre au disque dur. (/dev/sda1, sda2 …)

2. S’initier au partitionnement MBR


Format Historique MBR

Limitation de MBR :
● Premier secteur contient la table de partition qui peut contenir jusqu’à 4 partitions. Mais on peut utiliser
des sous-partitions 5 6 7… tout ce qui est supérieur à 4 est sous-partition d’une partition. Il xiste des
partition primaires (sans sous-partitions) et étendue (avec).
● On ne peut pas avoir qu’une seule partition étendue su notre système.

● Les partitions peuvent avoir des limitent : les nombres de chaque borne se trouve entre 0 2Tb. Les
disques durs de >2Tb ne seront pas totalement exploité.
fdisk) : liste les tables de partition de tous les support de stockage
-l : liste les tables de partition de tous les supports de stockage

Sudo fdisk -l
Commande fdisk a également des options interactives :

Il enregistre les modifications avec l’option w


N ad new partition

P pour montrer un tableau de partitions.

W pour enregistré. Si on a modifié les partition de notre disque boot, le système ne va prendre en compte les
modification tout de suite. IL faut taper partprobe pour relire cette répartition.
3. Découvrir le partitionnement GPT
On l’utilise quand disque dure >2Tb ou quand on a un système qui se booter sur un disque GPT.
Pour faire ses tables de partition il y a plusieurs commandes :
● Parted

● Gdisk (préférable, car toutes les opérations de manipulation ne seront faites que dans la mémoire. On
peut nous permettre de faire des bêtises)

4. Utiliser les partitions de types raw et swap

Raw et swap c’est une espace qui va être directement être utilisé par des programmes qui ont besoin et qui sont
là pour les utilisés pour organisé par eux-mêmes la structure de données sur cet espace.
RAW on pourrait avoir un système de gestion de BDD va gérer lui-même l’espace sur la partition au format qu’il
souhaite avoir.
Dans le cas de swap le noyau va utiliser cet espace comme l’espace dans laquelle il pourra copier des pages de la
mémoire vive sur le disque dur.
La mémoire swap : c'est de l'espace de stockage supplémentaire utilisé par le système pour stocker des données
qui ne sont pas actuellement utilisées en RAM. Les données stockées en swap sont également temporaires et
sont supprimées lorsque le système est arrêté.

Création d’epace swap


Préparation de la partition à avoir les données de noyau : mkswap /dev/sda4

Pour activer : swapon

Avant :

Après

Il a ajouté 1000KiB à l’espace utilisable de swap. Mais pour que ça durera. Il faut monter le système de fichier
pour activer la partition lors du boot ?
swapoff /dev/sda4 :pour enlever cette partition
IX. Comprendre les fichiers et systèmes de fichiers
1. Assimiler les principes des fichiers
Répertoire est plus qu’un liste des fichiers. Le répertoire est un tableau qui va associer un numéro à chaque
fichier.
ls -i permet de voir numéros attribuées (inodes)
Chaque fichier a son propre numéro, qui correspond à une fiche qui contient les métadonnées de fichier.
(stat) : permet de voir Métadonnées de fichier

Blocks : numéro des blocks utilisé par le disque


IO BLOCKS
Type de fichier
Droit d’accès
UID
GiD
Les dates d’accès, modification, changement (quand on a changé qqch dans l’inode)
La date de création en générale n’est pas présente.
Device : périphérique sur laquelle se trouve le fichier. Sur quelle partition il se trouve.

Dans les métadonnées il n’y a pas de nom de fichier. Le nom est que dans le répertoire. A partir de numéros il
trouve le fichier et lire la fiche. Il va dire en fonction de droits si j’ai l’accès à la fiche.

Il y a plusieurs millions d’inodes, prêts à être utilisés. Le nombre d’inodes est statique et créé en moment quand
on va préparer la partition. On dit créer le système de fichiers. La nomenclature windows dirait on va formater
la partition cad créer un tableau avec un toutes les inodes et après un tableau avec toutes mes données. Donc
mon fichier est toujours associé à un inode. Quand je vais créer mon système de fichiers je vais créer les zones
qui vont mes permettre de recevoir ces inodes. Par conséquence on pourra manipuler ces fichiers.
2. Créer un système de fichiers
On a des partitions sur notre disque dur. Pour avoir des fichiers il faut avoir une structure.

(mkfs) : make file system. permet de créer un système de fichiers.


-t :type de fichier
Ex : mkfs -t ext4 /dev/sdb1 (ce commande va appeler mkfs.ext4)

Ext4 : type historique mais ne pas le plus performante quand on a accès concurrent. Quand il y beaucoup de
programmes qui vont lire et écrire sur le disque. Xfs est plus adopté dans ce cas.
Dans les systèmes de fichiers Unix, chaque fichier et chaque répertoire est associé à un inode unique qui
contient des informations importantes sur le fichier ou le répertoire. L'inode contient des métadonnées telles
que le propriétaire du fichier, les autorisations d'accès, la taille du fichier, la date de création et de modification,
et d'autres informations importantes.
Les blocs sont utilisés pour stocker les données réelles du fichier sur le disque dur. Chaque bloc est une unité de
stockage contiguë, généralement de taille fixe, qui peut être utilisée pour stocker des données. Les blocs sont
également appelés blocs de données ou blocs de disque.
Lorsqu'un fichier est créé, le système de fichiers alloue un certain nombre de blocs pour stocker ses données.
Les blocs sont ensuite liés à l'inode correspondant. Le nombre de blocs alloués pour un fichier dépend de sa
taille. Par exemple, si un fichier est très petit, il peut être stocké dans un seul bloc. Si un fichier est très grand, il
peut nécessiter de nombreux blocs pour stocker toutes ses données.
L'inode contient également un pointeur vers le premier bloc de données du fichier, appelé bloc direct. Si le
fichier est trop grand pour être stocké dans un seul bloc direct, il peut également contenir des pointeurs vers
des blocs indirects ou doubles indirects. Les blocs indirects contiennent des pointeurs vers d'autres blocs de
données, tandis que les blocs doubles indirects contiennent des pointeurs vers des blocs indirects.
En résumé, l'inode et les blocs sont liés dans le sens où l'inode contient des informations sur le fichier, y compris
des pointeurs vers les blocs de données qui stockent le contenu réel du fichier sur le disque dur.

Après avoir créer les systèmes de fichiers ext4 et sfx on supprimes les pages.

(tune2fs) est une commande sous Linux utilisée pour modifier les paramètres d'un système de fichiers ext2,
ext3 ou ext4. Cette commande permet à l'utilisateur de régler différents paramètres du système de fichiers pour
l'optimiser en fonction de ses besoins.
exemples d'utilisation courante de la commande tune2fs:
● Changer l'étiquette d'un système de fichiers: La commande tune2fs peut être utilisée pour changer
l'étiquette d'un système de fichiers. L'étiquette est une chaîne de caractères qui peut être utilisée pour
identifier facilement un système de fichiers.
● Modifier la taille des blocs: La taille des blocs est importante pour déterminer la taille maximale des
fichiers qui peuvent être stockés sur le système de fichiers. La commande tune2fs peut être utilisée pour
modifier la taille des blocs du système de fichiers.
● Activer ou désactiver la journalisation: La journalisation est une fonctionnalité qui permet de restaurer
un système de fichiers en cas de panne ou de corruption. La commande tune2fs peut être utilisée pour
activer ou désactiver la journalisation du système de fichiers.
● Modifier la fréquence de vérification du système de fichiers: La commande tune2fs peut être utilisée
pour modifier la fréquence à laquelle le système de fichiers doit être vérifié pour détecter les erreurs.
UUID est constant, tandis que le nom peut être changé. Ici il n’y a pas de nom pour le moment

Pour associer un nom à cette partition :


Tune2fs -L Ext4 /dev/sda1
C’est diffèrent pour xfs. On ne pourra pas changer UID pu label de xfs sur les partitions qui ne sont pas montées.
Alors que pour ext4 c’est possible.
Xfs_admin
-u :uid
3. Monter des partitions
Les partitions sont créées, les systèmes de fichiers sont créés sur ces partitions pour pouvoir y mettre des
fichiers. Même s’ils sont présents sur le disque dur le système ne peut pas les utiliser.
Il faut trouver un répertoire pour pouvoir accéder à ma partition.

(mount) : monte un système de fichiers sur un répertoire existant dans l'arborescence des fichiers.
mount [options] <dispositif> <point de montage>
-t : (spécifier le type de système de fichiers)
-o : (spécifier les options de montage),
Le dispositif est généralement un périphérique de stockage, tel qu'un disque dur, une clé USB, ou une image de
disque, qui contient le système de fichiers à monter.
Le point de montage est le répertoire dans l'arborescence des fichiers où le système de fichiers sera monté. Ce
répertoire doit exister et être vide.

Par exemple, pour monter un disque dur externe sur un répertoire nommé "backup" dans le répertoire racine
("/") du système de fichiers, la commande serait:
sudo mount /dev/sdb1 /backup

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.312.tar.xz : on recupere le code source de noyau


linux et de le mettre dans le partage. C’est pour avoir des fichiers, données.

(umount) : démonter le système de fichiers monté


sudo umount /partage.

!! Les données sont visible à partir du moment qu’on a monté la partition dans un répertoire.

Cette commande mount ne sera pas être persistant après redémarrage, car j’ai l’avait lancé depuis le terminal.
Elle est ponctuelle. Il faut noter cette commande dans /etc/fstab.
4. Résoudre les problèmes de nomenclature
Rien ne va me garantir que je vais avoir le même ordre de mes disques durs.
Qui va être détecté sda, sdb, sdc. L’ordre dépend de l’architecture de la carte mère et varie de paramètres
extérieurs (clé USB branchée). Les disques peuvent être inversés ou décalés.
UUID nous permet de régler ce problème
xfs_admin -u /dev/sdc1 permet de voir UUID pour les partitions en format xfs
tune2fs -l dev/sda2 pour les partitions en format ext3 ou ext4

5. Utiliser des partitions avec le fichier etcfstab


df on verra que des partitions montées.

vi /etc/fstab

<file system> <mount point>


<type> ext4, xfs,
<options> defaults,ro
ro:read only (même si on a les droits on ne pourra pas modifier le fichiert, car la partition est ro)
<dump> 0 historiquement
<pass>
X. Découvrir le système RAID
6. Regler les problemes de fiabilité
RAID (Redundant Array of Independent Disks) est une technologie qui permet de regrouper plusieurs disques
durs physiques en un seul système de stockage afin d'améliorer la performance, la fiabilité ou les deux à la fois.

(dmsg) : accéder à dernier message.


7. Utiliser un RAID logiciel

cat /proc/mdstat

raid md0
(blkid) : retrouves toutes les UUID
(mdadm) : mdadm is used for building, managing, and monitoring Linux md devices (aka RAID arrays)
Usage: mdadm --create device options… Create a new array from unused devices.
mdadm --assemble device options… Assemble a previously created array.
mdadm --build device options... Create or assemble an array without metadata.
mdadm --manage device options... make changes to an existing array.
mdadm --misc options... devices report on or modify various md related devices.
mdadm --grow options device resize/reshape an active array
mdadm --incremental device add/remove a device to/from an array as appropriate
mdadm --monitor options... Monitor one or more array for significant changes.
mdadm device options... Shorthand for --manage.
Any parameter that does not start with '-' is treated as a device name
or, for --examine-bitmap, a file name.
The first such name is often the name of an md device. Subsequent
names are often names of component devices.

ex: mdadm /dev/md0 --remove /dev/sdc3


mdadm /dev/md0 --remove detached supprime tous les disques qui sont détachés de la machine.
mdadm /dev/md0 --add /dev/sdd1
8. Apprendre les niveaux de RAID
RAID (Redundant Array of Independent Disks) est une technologie qui permet de regrouper plusieurs disques
durs physiques independants en un seul système de stockage afin d'améliorer la performance, la fiabilité ou les
deux à la fois.

Ubuntu est un système d'exploitation basé sur Linux qui supporte plusieurs types de RAID, notamment les
niveaux 0, 1, 5, 6 et 10.

● RAID 0: il divise les données en blocs et les stocke sur plusieurs disques, ce qui améliore les
performances (vitesse) de lecture et d'écriture, mais il ne fournit aucune redondance, ce qui signifie qu'il
n'y a pas de protection en cas de panne de disque.
● RAID 1: également appelé miroir, il utilise deux disques identiques pour stocker exactement les mêmes
données, fournissant ainsi une redondance de données en cas de défaillance d'un disque.
● RAID 5: il utilise trois disques ou plus et combine la performance de RAID 0 avec une certaine
redondance de données. Il utilise une parité pour stocker des informations de redondance sur les
disques et permet de reconstruire les données si un disque tombe en panne.
● RAID 6: c'est une version améliorée de RAID 5 qui utilise deux disques de parité pour fournir une
meilleure redondance de données en cas de défaillance simultanée de deux disques.
● RAID 10: également appelé RAID 1+0, il combine les avantages de RAID 1 et RAID 0. Il utilise au moins
quatre disques pour créer deux ensembles de RAID 1 et les combine en un ensemble RAID 0. Cela offre
une excellente performance et une redondance de données élevée.

Ubuntu fournit plusieurs outils pour configurer et gérer RAID, notamment mdadm, un outil en ligne de
commande pour la gestion de RAID logiciel, et dmraid, un outil pour la gestion de RAID matériel. Il est important
de noter que les disques doivent être configurés en RAID avant d'installer Ubuntu sur le système pour assurer
un fonctionnement optimal.

9. Mettre en place un RAID logiciel


Questions :
1) Différence entre niceness, ioniceness et renice
2) Systemctl cat sshd-keygen.service not found
3)

Vous aimerez peut-être aussi