


Vous voulez comprendre comment fonctionne le système de fichiers Linux ?
Le système de fichiers Linux est un composant essentiel du système d'exploitation, et son mécanisme d'exploitation est ce que nous, les programmeurs, devons comprendre et maîtriser. Le disque fournit le stockage persistant le plus élémentaire pour le système, et le système de fichiers fournit tous les fichiers du système. La base du disque. Sous Linux, tout est un fichier. Non seulement les fichiers et répertoires ordinaires, mais également les périphériques de bloc, les sockets, les canaux, etc., doivent être gérés via un système de fichiers unifié. Aujourd'hui, nous allons parler ensemble : Comment fonctionnent les disques et les systèmes de fichiers ?
Nœuds d'indexation et entrées de répertoire
Dans le système de fichiers Linux, les métadonnées d'un fichier comprennent : les entrées de répertoire, les nœuds d'index et les blocs de données.
- Entrée de répertoire : appelée dentry, utilisée pour enregistrer le nom du fichier, le pointeur du nœud d'index et l'association avec d'autres entrées de répertoire. Plusieurs entrées de répertoire associées constituent la structure de répertoires du système de fichiers. Une entrée de répertoire est une structure de données en mémoire maintenue par le noyau, c'est pourquoi elle est souvent appelée cache d'entrées de répertoire (Cache).
- Nœud d'index : appelé inode, utilisé pour enregistrer les métadonnées du fichier, y compris le numéro d'inode, la taille du fichier, les autorisations d'accès, la date de modification, l'emplacement des données, le nombre de liens, etc. Les informations du nœud d'index seront conservées sur le disque pour le stockage, occupant l'espace disque.
- Bloc de données : appelé bloc, où les données du fichier sont stockées. La plus petite unité de stockage d'un disque s'appelle un secteur. Chaque secteur stocke 512 octets, ce qui équivaut à 0,5 Ko. Lorsque le système d'exploitation lit le disque dur, il ne le lit pas secteur par secteur, ce qui est trop inefficace, mais. lit plusieurs secteurs en continu à la fois, c'est-à-dire lit un « bloc » à la fois. Ce « bloc » composé de plusieurs secteurs est la plus petite unité d'accès aux fichiers. Taille du "bloc", la plus courante est de 4 Ko (huit secteurs).
Afin d'accélérer l'accès aux fichiers, les nœuds d'index sont généralement chargés en mémoire et le disque dur est divisé en trois zones de stockage : super bloc, zone de nœud d'index et zone de bloc de données une fois formaté.
- Le super bloc est utilisé pour stocker des informations détaillées sur le système de fichiers, telles que le nombre de blocs, la taille des blocs, les blocs libres, etc.
- Zone de nœud d'index, utilisée pour stocker les nœuds d'index.
- Zone de bloc de données, utilisée pour stocker les données d'un fichier ou d'un répertoire.
Système de fichiers virtuel
Le système de fichiers virtuel (VFS, Virtual File System) du système Linux est une couche d'abstraction clé qui fournit aux utilisateurs et aux applications une interface de système de fichiers cohérente, leur permettant d'accéder à différents types de systèmes de fichiers de manière unifiée. devez vous soucier des détails d’implémentation du système de fichiers sous-jacent.
Le programme utilisateur et la bibliothèque glibc appartiennent à l'espace utilisateur, et les opérations sur les fichiers sont effectuées en appelant des fonctions de la couche d'appel système (SCI). Ces fonctions sont des interfaces fournies par le noyau Linux permettant aux utilisateurs de demander des opérations au système. Par exemple, la commande cat du système appellera la fonction open() pour ouvrir le fichier, puis appellera la fonction read() pour lire le contenu du fichier, et enfin appellera la fonction write() pour afficher le contenu du fichier sur la console. . Les types de systèmes de fichiers courants peuvent être divisés en plusieurs grandes catégories.
- Basé sur le disque local : EXT3, EXT4, XFS, OverlayFS, etc. La caractéristique de ce type de système de fichiers est que les données sont directement stockées sur le disque monté localement sur l'ordinateur, avec de bonnes performances et aucune consommation d'accès aux E/S réseau.
- Basé sur les systèmes de fichiers réseau : NFS, CIFS/SMB, CephFS, GlusterFS, etc. La caractéristique de ce type de fichiers est qu'ils permettent aux utilisateurs d'accéder et de gérer des fichiers via le réseau. La distribution, la multiplateforme, la flexibilité et l'évolutivité sont leurs plus grands avantages.
- Systèmes de fichiers basés sur la mémoire : tmpfs, ramfs, /proc, etc. Ces systèmes de fichiers basés sur la mémoire sont généralement utilisés à des fins spécifiques, telles que le stockage de fichiers temporaires, la mise en cache, l'accès rapide aux données, etc. Ils fournissent une solution hautes performances pour lire et écrire des fichiers en mémoire, mais ils doivent également être conscients des limitations de la mémoire et de la volatilité des données.
E/S de fichier
Nous partitionnons et formatons le disque afin de créer différents types de systèmes de fichiers, qui doivent être montés dans des répertoires spécifiques sur le VFS de Linux avant de pouvoir être utilisés par le système. Il existe différents types d'E/S pour les opérations de lecture et d'écriture de fichiers, et le programme d'application choisit la méthode appropriée en fonction des besoins.
E/S tamponnées ou non tamponnées
- Ce qu'on appelle l'absence de mise en mémoire tampon ne signifie pas que le noyau ne fournit pas de mise en mémoire tampon, mais uniquement de simples appels système, pas des appels de bibliothèque de fonctions. Le noyau système fournit un tampon de bloc pour la lecture et l'écriture sur le disque. Lorsque vous utilisez la fonction d'écriture pour y écrire des données, l'appel système est directement appelé pour écrire les données dans le tampon de bloc et les mettre en file d'attente lorsque le tampon de bloc atteint un. certaine quantité, le tampon de bloc sera mis en file d'attente. Les données sont écrites sur le disque. Par conséquent, les E/S dites non tamponnées signifient que le processus ne fournit pas de fonction de mise en mémoire tampon. Chaque fois que la fonction d'écriture ou de lecture est appelée, elle est appelée directement par le système. (Tamponné par le noyau).
- E/S tamponnées signifie que le processus améliore les flux d'entrée et de sortie et fournit un tampon de flux. Lorsque vous utilisez la fonction d'écriture pour écrire des données, les données sont d'abord écrites dans le tampon de flux. Lorsque certaines conditions sont atteintes, telles que le tampon de flux étant plein, les données seront immédiatement envoyées au tampon de bloc fourni par le noyau, et. puis écrit via le tampon de bloc sur le disque. (double mise en mémoire tampon)
- Par conséquent, les E/S tamponnées nécessiteront moins d’appels système que les E/S non tamponnées lors de l’écriture de la même quantité de données sur le disque.
E/S directes et E/S indirectes
- E/S directes : le programme d'application accède directement aux données du disque sans passer par le tampon du noyau. Le but est de réduire la copie des données du tampon du noyau vers le cache du programme utilisateur.
- E/S indirectes : lorsque des fichiers sont lus ou écrits, ils doivent d'abord passer par le cache de pages du système, puis être écrits sur le disque par le noyau ou des appels système supplémentaires.
- Pour les E/S directes, si les données accédées ne sont pas dans le cache de l'application, alors les données seront chargées directement depuis le disque à chaque fois, et l'efficacité de ce chargement direct sera plus lente. Cependant, pour les applications telles que les systèmes de gestion de bases de données, ils sont plus susceptibles de choisir leur propre mécanisme de mise en cache, car les systèmes de gestion de bases de données connaissent souvent mieux les données stockées dans la base de données que le système d'exploitation et les E/S directes sont plus appropriées.
E/S bloquantes et E/S non bloquantes
- Blocage des E/S : le processus d'application se bloque lors de l'appel d'une opération d'E/S. Il ne revient qu'après avoir attendu que les données à opérer soient préparées et copiées dans le tampon du processus d'application. Les caractéristiques sont les suivantes : une faible difficulté de mise en œuvre, un développement d'applications facile et adapté au développement d'applications réseau avec une faible concurrence.
- E/S non bloquantes : signifie qu'une fois que l'application a effectué une opération d'E/S, elle ne bloquera pas le thread actuel et pourra continuer à effectuer d'autres tâches, puis obtenir le résultat de l'appel via une interrogation ou une notification d'événement. Les caractéristiques sont : relativement complexes. Convient au développement d'applications réseau qui ont une faible concurrence et ne nécessitent pas de réponse rapide
E/S synchrones et asynchrones
- E/S synchrones : signifie qu'une fois que l'application a effectué une opération d'E/S, elle doit attendre que l'intégralité de l'E/S soit terminée avant de pouvoir obtenir la réponse d'E/S.
- E/S asynchrones : signifie qu'une fois que l'application a effectué l'opération d'E/S, elle n'a pas besoin d'attendre la fin ni la réponse une fois terminée, mais peut continuer à s'exécuter. Une fois cette E/S terminée, la réponse sera notifiée à l'application sous la forme d'une notification d'événement.
Quelques connaissances générales sur les fichiers
Il reste encore beaucoup d'espace restant sur le disque et l'espace est insuffisant pour les nouveaux fichiers et répertoires.
- Idées de dépannage : il y a une forte probabilité qu'il y ait trop de petits fichiers et que les inodes soient épuisés. Vous pouvez utiliser df -i.
Les statistiques d'utilisation du disque dur entre du et df sont incohérentes.
- du compte la taille de chaque fichier enregistré par le système de fichiers, puis accumule la taille totale, obtenue via le système de fichiers. df lit principalement les informations sur l'utilisation du disque dur à partir du superbloc (superbloc). Ce que df obtient, c'est l'utilisation des blocs de disque. Cette situation est susceptible de se produire car un fichier a été supprimé, mais un autre processus l'utilise (possédant le handle), qui peut être trouvé via lsof | grep delete. Lorsque le processus s'arrête ou est interrompu, ces espaces seront libérés.
Lorsque nous interrogeons la capacité du disque, pourquoi la taille de Used+Avail est-elle toujours inférieure à la capacité totale (SIze).
- Afin d'éviter les situations d'urgence, le système de fichiers ext Linux réservera une partie de l'espace disque. La valeur réservée spécifique peut être consultée via tune2fs -l [dev_name] | grep "Reserved block count (dev_name)" est le nom du périphérique. , qui est réservé ici, l'espace sera calculé par df dans l'espace utilisé, ce qui entraînera des statistiques incohérentes entre df et du. Si vous devez ajuster la taille de l'espace réservé, nous pouvons utiliser tune2fs -m [size] [dev_name] pour effectuer des ajustements.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Vs Code Système Exigences: Système d'exploitation: Windows 10 et supérieur, MacOS 10.12 et supérieur, processeur de distribution Linux: minimum 1,6 GHz, recommandé 2,0 GHz et au-dessus de la mémoire: minimum 512 Mo, recommandée 4 Go et plus d'espace de stockage: Minimum 250 Mo, recommandée 1 Go et plus d'autres exigences: connexion du réseau stable, xorg / wayland (Linux) recommandé et recommandée et plus

Les raisons de l'installation des extensions de code vs peuvent être: l'instabilité du réseau, les autorisations insuffisantes, les problèmes de compatibilité système, la version de code vs est trop ancienne, un logiciel antivirus ou des interférences de pare-feu. En vérifiant les connexions réseau, les autorisations, les fichiers journaux, la mise à jour vs du code, la désactivation des logiciels de sécurité et le redémarrage du code ou des ordinateurs, vous pouvez progressivement dépanner et résoudre les problèmes.

Bien que le bloc-notes ne puisse pas exécuter directement le code Java, il peut être réalisé en utilisant d'autres outils: à l'aide du compilateur de ligne de commande (Javac) pour générer un fichier bytecode (filename.class). Utilisez l'interpréteur Java (Java) pour interpréter ByteCode, exécuter le code et sortir le résultat.

VS Code est le code Visual Studio Nom complet, qui est un éditeur de code multiplateforme gratuit et open source et un environnement de développement développé par Microsoft. Il prend en charge un large éventail de langages de programmation et fournit une mise en surbrillance de syntaxe, une complétion automatique du code, des extraits de code et des invites intelligentes pour améliorer l'efficacité de développement. Grâce à un écosystème d'extension riche, les utilisateurs peuvent ajouter des extensions à des besoins et des langues spécifiques, tels que les débogueurs, les outils de mise en forme de code et les intégrations GIT. VS Code comprend également un débogueur intuitif qui aide à trouver et à résoudre rapidement les bogues dans votre code.

VS Code est disponible sur Mac. Il a des extensions puissantes, l'intégration GIT, le terminal et le débogueur, et offre également une multitude d'options de configuration. Cependant, pour des projets particulièrement importants ou un développement hautement professionnel, le code vs peut avoir des performances ou des limitations fonctionnelles.

Visual Studio Code (VSCODE) est un éditeur de code Open Source, Open Source et gratuit développé par Microsoft. Il est connu pour son léger, l'évolutivité et le support pour une large gamme de langages de programmation. Pour installer VScode, veuillez visiter le site officiel pour télécharger et exécuter l'installateur. Lorsque vous utilisez VSCODE, vous pouvez créer de nouveaux projets, modifier le code, déboguer le code, naviguer dans les projets, développer VSCODE et gérer les paramètres. VScode est disponible pour Windows, MacOS et Linux, prend en charge plusieurs langages de programmation et fournit diverses extensions via Marketplace. Ses avantages incluent le léger, l'évolutivité, le support linguistique étendu, les fonctionnalités riches et la version

Les principales utilisations de Linux comprennent: 1. Système d'exploitation du serveur, 2. Système intégré, 3. Système d'exploitation de bureau, 4. Environnement de développement et de test. Linux excelle dans ces domaines, offrant des outils de stabilité, de sécurité et de développement efficaces.

Pour afficher l'adresse du référentiel GIT, effectuez les étapes suivantes: 1. Ouvrez la ligne de commande et accédez au répertoire du référentiel; 2. Exécutez la commande "git Remote -v"; 3. Affichez le nom du référentiel dans la sortie et son adresse correspondante.
