Memori bersama adalah cara untuk berbagi status antar proses. Memori bersama, seperti namanya, adalah metode untuk "berbagi" data antar proses. Kedua proses mendefinisikan area memori yang sama sebagai "bersama", dan mereka kemudian dapat bertukar informasi hanya dengan menulis ke dalamnya. Ini (dulu, dan masih agak) lebih cepat daripada alternatif pengiriman pesan berbasis jaringan atau pipa antar proses.
Jika Anda melihat memori sebagai sarana untuk menyimpan data, file pada sistem file dapat dilihat sebagai memori bersama (yaitu file bersama). Sulit untuk memperhitungkan memori bersama. Apakah itu milik satu proses? Keduanya? Juga tidak? Jika kita secara naif menjumlahkan memori yang termasuk dalam beberapa proses, kita terlalu “berlebihan”.
Sesuai dengan namanya, Memori Bersama (Virtual) mengacu pada memori virtual yang digunakan bersama oleh lebih dari satu proses dan kemudian dapat digunakan oleh beberapa program secara bersamaan. Meskipun memori virtual memungkinkan proses untuk memiliki ruang alamat (virtual) yang terpisah, ada kalanya Anda membutuhkan proses untuk berbagi memori. Memori bersama (SHM) adalah metode lain dari komunikasi antarproses (IPC) di mana beberapa proses berbagi satu potongan memori untuk berkomunikasi.
Memori bersama menyediakan cara tercepat bagi proses untuk melewatkan sejumlah besar data satu sama lain. /dev/shm tidak lain adalah implementasi konsep memori bersama tradisional. Ini adalah cara yang efisien untuk melewatkan data antar program. Satu program akan membuat bagian memori, yang dapat diakses oleh proses lain (jika diizinkan). Hal ini akan mempercepat proses di Linux.
Masalahnya
Pada setiap reboot server, izin /dev/shm berubah:
$ ls -alrt /dev/ | grep shm drwxr-xr-t. 2 root root 60 jul 6 11:14 shm
Izin Asli (1777):
# ls -ld /dev/shm drwxrwxrwt. 2 root root 200 Aug 20 03:44 /dev/shm
Izin yang Ada(1754):
$ ls -alrt /dev/ | grep shm drwxr-xr-t. 2 root root 60 jul 6 11:14 shm
Solusinya
Penyebab masalah adalah dengan paket initscripts yang ada [initscripts-9.49.37-1.0.1.el7_3.1.x86_64].
Solusi
Langkah 1 :Menutupi layanan ( rhel-import-state):
# systemctl mask rhel-import-state
Langkah 2 :Periksa status layanan. Ini akan terlihat seperti di bawah ini:
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
Langkah 3 :Nyalakan ulang mesin dan konfirmasikan apakah masalah yang sama terulang kembali atau tidak.
Catatan :Ini adalah rencana aksi solusi. Untuk resolusi permanen, tingkatkan versi paket skrip init ke 9.49.39-1.0.1, yang disertakan dalam pembaruan CentOS/RHEL7 4.Mengembalikan Perubahan
Anda juga dapat mengembalikan perubahan dengan menjalankan perintah di bawah ini untuk membuka kedok layanan bertopeng.
# systemctl unmask rhel-import-state.service # systemctl status rhel-import-state.service