Académique Documents
Professionnel Documents
Culture Documents
Administration Linux
● 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).
● 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.
/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
2. Installer sysstat
true
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.
(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
Smem -w
(time) :
-v : verbose
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.
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
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
● Z : zombie
(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
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 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.
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
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
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
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
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)
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.
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
(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
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
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
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)
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.
« 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
« 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.
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.
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
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 :
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)
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é.
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
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.
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
(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
!! 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
vi /etc/fstab
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.
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.