


Pourquoi l'espace n'est-il pas libéré après la suppression d'un fichier ?
Avez-vous déjà rencontré une situation où des fichiers ont été supprimés mais l'espace n'a pas été libéré dans un environnement Linux ? Ce court article présentera un scénario de ce problème et la solution correspondante.
L'un de nos serveurs d'applications, le système d'exploitation est Red Hat Linux, l'alarme de surveillance, l'utilisation du système de fichiers /opt/applog dépasse le seuil, la capacité globale est de 50 Go, mais la capacité réelle du fichier est de 20 Go, quel est l'espace restant de 30 Go ?
Nous savons que dans l'environnement Linux, tout existe sous la forme d'un fichier. Le système attribue un descripteur de fichier à chaque application en arrière-plan. Il fournit un descripteur de fichier pour l'interaction entre l'application et le système d'exploitation. interface est un fichier, il prendra de la place. À ce stade, vous pouvez utiliser la commande lsof, qui peut lister les fichiers actuellement ouverts par le système.
>lsof COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ... filebeat 111442 app 1r REG 253,3 209715229 1040407 /opt/applog/E.20171016.info.012.log filebeat 111442 app 2r REG 253,3 209715254 385080 /opt/applog/E.20171015.info.001.log (deleted) ...
La signification de chaque champ dans l'en-tête est la suivante :
COMMANDE : le nom du processus
PID : identifiant du processus
UTILISATEUR : propriétaire du processus
FD : Descripteur de fichier, l'application identifie le fichier grâce au descripteur de fichier. Tels que cwd, txt, etc.
TYPE : type de fichier, tel que DIR, REG, etc.
DEVICE : Précisez le nom du disque
TAILLE : La taille du fichier
NODE : nœud d'index (identification du fichier sur le disque)
NOM : Le nom exact du fichier ouvert
On peut voir que dans certaines lignes, NOM est marqué (supprimé)
/opt/applog/E.20171015.info.001.log (supprimé)
Cela signifie que le fichier a été supprimé, mais que le handle du fichier ouvert n'a pas été fermé. Regardez le nom de la COMMANDE est filebeat et le propriétaire du processus USER est app. Il s'agit de notre processus de collecte de journaux. a activé le processus filebeat.
Présentation de la plateforme de collecte de logs
La plateforme de journalisation open source traditionnelle, ELK, se compose de trois outils open source : ElasticSearch, Logstash et Kiabana, parmi lesquels :
- Elasticsearch est un moteur de recherche distribué open source, distribué, sans configuration, découverte automatique, partage d'index automatique, mécanisme de copie d'index, interface de style reposant, sources de données multiples, chargement de recherche automatique, etc.
- Logstash est un outil de collecte open source qui peut collecter, filtrer les journaux et les stocker pour une utilisation ultérieure.
- Kibana est un outil Web graphique open source qui fournit une interface Web conviviale pour l'analyse des journaux pour Logstash et ElasticSearch, et peut regrouper, analyser et rechercher des journaux de données importants.
Schéma de déploiement commun, comme indiqué ci-dessous
Qu'est-ce que filebeat mentionné ci-dessus ? Quel est le lien avec ELK ?
Il y a une introduction du grand expert Rao Chenlin (auteur de "ELKstack Authoritative Guide") sur Zhihu, qui est très perspicace et citée sur https://www.zhihu.com/question/54058964/answer/137882919
Étant donné que logstash est géré par jvm et consomme beaucoup de ressources, l'auteur a ensuite utilisé golang pour écrire un transitaire de logstash léger avec moins de fonctions mais une faible consommation de ressources. Cependant, l'auteur n'est qu'une seule personne. Après avoir rejoint En termes simples, filebeat est l'agent de processus pour la collecte des journaux, responsable de la collecte des fichiers journaux des applications. Pour mon problème ci-dessus, la raison pour laquelle il existe un grand nombre de descripteurs de fichiers (supprimés) et non publiés est que, comme l'espace disque est très limité, une tâche a été temporairement ajoutée pour supprimer les journaux il y a 12 heures toutes les heures. En d'autres termes, la tâche planifiée supprimera automatiquement certains fichiers que filebeat ouvre à ce moment-là, de sorte que ces fichiers deviennent des fichiers non publiés, donc les fichiers réels sont supprimés, mais l'espace n'est pas libéré. Solution 1 : Afin de libérer rapidement l'espace occupé, la méthode la plus directe consiste à tuer le processus -9 filebeat, moment auquel l'espace sera libéré. Mais ce n'est pas une solution fondamentale. Les tâches planifiées supprimeront également ces fichiers ouverts par filebeat, provoquant ainsi une saturation de l'espace. Solution 2 : Autrement dit, si un fichier n'a pas été mis à jour dans un certain laps de temps, le descripteur de fichier surveillé sera fermé. La valeur par défaut est d'une heure. C'est-à-dire que lorsque le nom du fichier change, y compris le changement de nom et la suppression, un fichier sera automatiquement fermé. En combinant ces deux paramètres, selon les exigences de l'application, si un fichier n'est pas mis à jour dans les 30 minutes, le handle doit être fermé. Si le fichier est renommé ou supprimé, le handle doit être fermé close_older : 30 m Il peut répondre aux exigences de base de la collecte des journaux filebeat et de la suppression régulière des fichiers historiques.
Le fichier de configuration de Filebeat, filebeat.yml, a en fait deux paramètres :
Description : Close old ferme le gestionnaire de fichiers pour lequel n'a pas été modifié depuis plus longtemps que close_older. Des chaînes de temps telles que 2h (2 heures), 5m (5 minutes) peuvent être utilisées.
Remarque : Cette option ferme un fichier dès que le nom du fichier change. Cette option de configuration est recommandée sous Windows uniquement. Filebeat garde les fichiers qu'il lit ouverts. Cela peut entraîner des problèmes lorsque le fichier est supprimé, car le fichier ne le sera pas. être complètement supprimé jusqu'à ce que Filebeat ferme également la lecture. Filebeat ferme le gestionnaire de fichiers après ignore_older. Pendant ce temps, aucun nouveau fichier portant le même nom ne peut être créé. L'activation de cette fonctionnalité peut en revanche entraîner une perte de données lors de la rotation des fichiers. Il peut arriver qu'après la rotation du fichier, le début du nouveau fichier soit ignoré, car la lecture commence à la fin. Nous vous recommandons de laisser cette option sur false mais de réduire la valeur ignore_older pour libérer les fichiers plus rapidement.
force_close_files : vrai
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.
