GNU/Linux >> Tutoriels Linux >  >> Linux

Modification de l'autorisation /dev/shm après le redémarrage du nœud

La mémoire partagée est un moyen de partager l'état entre les processus. La mémoire partagée, comme son nom l'indique, est une méthode pour « partager » des données entre des processus. Les deux processus définissent la même zone mémoire comme "partagée", et ils peuvent alors échanger des informations simplement en y écrivant. Ceci (était, et est toujours un peu) plus rapide que l'alternative consistant à envoyer des messages réseau ou pipe entre les processus.

Si vous considérez la mémoire comme un moyen de stocker des données, un fichier sur un système de fichiers peut être considéré comme une mémoire partagée (c'est-à-dire un fichier partagé). Il est difficile de rendre compte de la mémoire partagée. Appartient-il à un processus ? Tous les deux? Ni? Si nous additionnons naïvement la mémoire appartenant à plusieurs processus, nous "surcomptons" grossièrement.

Comme son nom l'indique, la mémoire partagée (virtuelle) fait référence à la mémoire virtuelle qui est partagée par plusieurs processus et peut ensuite être utilisée par plusieurs programmes simultanément. Bien que la mémoire virtuelle permette aux processus d'avoir des espaces d'adressage (virtuels) séparés, il y a des moments où vous avez besoin de processus pour partager la mémoire. La mémoire partagée (SHM) est une autre méthode de communication interprocessus (IPC) dans laquelle plusieurs processus partagent un seul bloc de mémoire pour communiquer.

La mémoire partagée offre aux processus le moyen le plus rapide de se transmettre de grandes quantités de données. /dev/shm n'est rien d'autre qu'une implémentation du concept traditionnel de mémoire partagée. C'est un moyen efficace de transmettre des données entre les programmes. Un programme créera une portion de mémoire, à laquelle d'autres processus (si autorisés) peuvent accéder. Cela se traduira par une accélération des choses sur Linux.

Le problème

À chaque redémarrage du serveur, la permission /dev/shm change :

$ ls -alrt /dev/ | grep shm
drwxr-xr-t. 2 root root 60 jul 6 11:14 shm 

Autorisation d'origine (1777) :

# ls -ld /dev/shm
drwxrwxrwt. 2 root root 200 Aug 20 03:44 /dev/shm

Autorisation existante (1754) :

$ ls -alrt /dev/ | grep shm
drwxr-xr-t. 2 root root 60 jul 6 11:14 shm

La solution

La cause du problème est liée au package initscripts existant [initscripts-9.49.37-1.0.1.el7_3.1.x86_64].

Solution

Étape 1 :Masquez le service (rhel-import-state):

# systemctl mask rhel-import-state

Étape 2 :vérifier l'état du service. Il ressemblera à ci-dessous :

rhel-import-state.service
  Loaded: masked (/dev/null; bad) <<  Active: active (exited) since Fri 2017-07-21 18:28:05 EDT; 2 weeks 3 days ago
 Main PID: 600 (code=exited, status=0/SUCCESS)
  CGroup: /system.slice/rhel-import-state.service

Étape 3 :Redémarrez la machine et confirmez si le même problème se reproduit ou non.

Remarque :Il s'agit du plan d'action de contournement. Pour une résolution permanente, mettez à niveau la version du package initscripts vers 9.49.39-1.0.1, qui est incluse dans la mise à jour 4 de CentOS/RHEL7.

Annuler les modifications

Vous pouvez également annuler les modifications en exécutant la commande ci-dessous pour démasquer le service masqué.

# systemctl unmask rhel-import-state.service
# systemctl status rhel-import-state.service


Linux
  1. Linux :Différence entre /dev/console , /dev/tty et /dev/tty0 ?

  2. Conflits Node.js :/sbin/node Vs /usr/bin/node ?

  3. Comment encoder en base64 /dev/random ou /dev/urandom ?

  4. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

  5. Comment puis-je modifier la quantité et la taille des disques RAM Linux (/dev/ram0 - /dev/ram15) ?

Qu'est-ce que /dev/mem ?

Linux :Différence entre /dev/console , /dev/tty et /dev/tty0

Comment Linux utilise /dev/tty et /dev/tty0

Pourquoi sur certains systèmes Linux, le système de fichiers racine apparaît-il comme /dev/root au lieu de /dev/<real device node> dans mtab ?

Pourquoi < ou > sont-ils nécessaires pour utiliser /dev/tcp

Différences entre /dev/sda et /dev/sda1