GNU/Linux >> LINUX-Kenntnisse >  >> Linux

/dev/shm-Berechtigungsänderung nach dem Neustart des Knotens

Shared Memory ist eine Möglichkeit, den Status zwischen Prozessen zu teilen. Shared Memory ist, wie der Name schon sagt, eine Methode zum „Teilen“ von Daten zwischen Prozessen. Beide Prozesse definieren denselben Speicherbereich als „shared“ und können dann Informationen austauschen, indem sie einfach hineinschreiben. Dies (früher und immer noch) ist etwas schneller als die Alternative, Netzwerk- oder Pipe-basierte Nachrichten zwischen Prozessen zu senden.

Wenn Sie den Speicher als Mittel zum Speichern von Daten sehen, kann eine Datei auf einem Dateisystem als gemeinsam genutzter Speicher (dh gemeinsam genutzte Datei) angesehen werden. Es ist schwierig, gemeinsames Gedächtnis zu berücksichtigen. Gehört es zu einem Prozess? Beide? Weder? Wenn wir den Speicher, der zu mehreren Prozessen gehört, naiv summieren, „überzählen“ wir grob.

Wie der Name schon sagt, bezieht sich Shared (Virtual) Memory auf virtuellen Speicher, der von mehr als einem Prozess gemeinsam genutzt wird und dann von mehreren Programmen gleichzeitig verwendet werden kann. Obwohl virtueller Speicher es Prozessen ermöglicht, separate (virtuelle) Adressräume zu haben, gibt es Zeiten, in denen Sie Prozesse benötigen, um Speicher gemeinsam zu nutzen. Shared Memory (SHM) ist eine weitere Methode der Interprozesskommunikation (IPC), bei der sich mehrere Prozesse einen einzigen Speicherblock zur Kommunikation teilen.

Shared Memory bietet Prozessen die schnellste Möglichkeit, große Datenmengen aneinander weiterzuleiten. /dev/shm ist nichts anderes als die Implementierung des traditionellen Shared-Memory-Konzepts. Es ist ein effizientes Mittel, um Daten zwischen Programmen zu übertragen. Ein Programm erstellt einen Speicherabschnitt, auf den andere Prozesse (falls zulässig) zugreifen können. Dies wird zu einer Beschleunigung der Dinge unter Linux führen.

Das Problem

Bei jedem Neustart des Servers ändert sich die /dev/shm-Berechtigung:

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

Ursprüngliche Genehmigung (1777):

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

Vorhandene Berechtigung(1754):

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

Die Lösung

Die Ursache des Problems liegt im vorhandenen Initscripts-Paket [initscripts-9.49.37-1.0.1.el7_3.1.x86_64].

Problemumgehung

Schritt 1 :Dienst maskieren (rhel-import-state):

# systemctl mask rhel-import-state

Schritt 2 :Überprüfen Sie den Status des Dienstes. Es sieht ähnlich aus wie unten:

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

Schritt 3 :Starten Sie den Computer neu und bestätigen Sie, ob das gleiche Problem erneut auftritt oder nicht.

Hinweis :Dies ist der Workaround-Aktionsplan. Aktualisieren Sie für eine dauerhafte Lösung die initscripts-Paketversion auf 9.49.39-1.0.1, die in CentOS/RHEL7 Update 4 enthalten ist.

Rückgängigmachen der Änderungen

Sie können die Änderungen auch rückgängig machen, indem Sie den folgenden Befehl ausführen, um den maskierten Dienst zu demaskieren.

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


Linux
  1. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

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

  3. So ordnen Sie /dev/sdX- und /dev/mapper/mpathY-Geräte vom /dev/dm-Z-Gerät zu

  4. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

  5. Wie kann ich die Anzahl und Größe von Linux-Ramdisks (/dev/ram0 - /dev/ram15) ändern?

Wie kann /dev/random oder /dev/urandom mit base64 codiert werden?

Was ist /dev/mem?

DD von /dev/zero nach /dev/null ... was eigentlich passiert

Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0

Kernel:/dev/kmem und /dev/mem deaktivieren

Warum wird auf einigen Linux-Systemen das Root-Dateisystem als /dev/root statt als /dev/<realer Geräteknoten> in mtab angezeigt?