Cara Mengubah Parameter Runtime Kernel Secara Persisten dan Non-Persisten


Di Bagian 13 seri LFCS (Linux Foundation Certified Sysadmin) ini kami menjelaskan cara menggunakan GRUB untuk mengubah perilaku sistem dengan meneruskan opsi ke kernel untuk proses booting yang sedang berlangsung.

Demikian pula, Anda dapat menggunakan baris perintah di sistem Linux yang sedang berjalan untuk mengubah parameter kernel runtime tertentu sebagai modifikasi satu kali, atau secara permanen dengan mengedit file konfigurasi.

Dengan demikian, Anda diperbolehkan untuk mengaktifkan atau menonaktifkan parameter kernel saat itu juga tanpa banyak kesulitan ketika diperlukan karena adanya perubahan yang diperlukan dalam cara sistem diharapkan beroperasi.

Memperkenalkan Sistem File /proc

Spesifikasi terbaru dari Standar Hierarki Sistem File menunjukkan bahwa /proc mewakili metode default untuk menangani informasi proses dan sistem serta informasi kernel dan memori lainnya. Khususnya, /proc/sys adalah tempat Anda dapat menemukan semua informasi tentang perangkat, driver, dan beberapa fitur kernel.

Struktur internal sebenarnya dari /proc/sys sangat bergantung pada kernel yang digunakan, tetapi Anda mungkin akan menemukan direktori berikut di dalamnya. Pada gilirannya, masing-masing subdirektori akan berisi subdirektori lain di mana nilai untuk setiap kategori parameter dipertahankan:

  1. dev: parameter untuk perangkat tertentu yang terhubung ke mesin.
  2. fs: konfigurasi sistem file (kuota dan inode, misalnya).
  3. kernel: konfigurasi khusus kernel.
  4. net: konfigurasi jaringan.
  5. vm: penggunaan memori virtual kernel.

Untuk mengubah parameter runtime kernel kita akan menggunakan perintah sysctl. Jumlah pasti parameter yang dapat diubah dapat dilihat dengan:

sysctl -a | wc -l

Jika Anda ingin melihat daftar lengkap parameter Kernel, lakukan saja:

sysctl -a 

Karena output dari perintah di atas akan terdiri dari BANYAK baris, kita dapat menggunakan pipeline yang diikuti less untuk memeriksanya dengan lebih cermat:

sysctl -a | less

Mari kita lihat beberapa baris pertama. Harap dicatat bahwa karakter pertama di setiap baris cocok dengan nama direktori di dalam /proc/sys:

Misalnya, baris yang disorot:

dev.cdrom.info = drive name:        	sr0

menunjukkan bahwa sr0 adalah alias untuk drive optik. Dengan kata lain, begitulah cara kernel “melihat ” dan menggunakan nama tersebut untuk merujuk ke drive tersebut.

Di bagian berikut kami akan menjelaskan cara mengubah parameter runtime kernel yang “lebih penting” di Linux.

Cara Mengubah atau Memodifikasi Parameter Runtime Kernel Linux

Berdasarkan apa yang telah kami jelaskan sejauh ini, mudah untuk melihat bahwa nama parameter cocok dengan struktur direktori di dalam /proc/sys di mana parameter tersebut dapat ditemukan.

Misalnya:

dev.cdrom.autoclose → /proc/sys/dev/cdrom/autoclose
net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward

Periksa Parameter Kernel Linux

Meskipun demikian, kita dapat melihat nilai parameter kernel Linux tertentu menggunakan sysctl diikuti dengan nama parameter atau membaca file terkait:

sysctl dev.cdrom.autoclose
cat /proc/sys/dev/cdrom/autoclose
sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward

Setel atau Ubah Parameter Kernel Linux

Untuk menetapkan nilai parameter kernel kita juga dapat menggunakan sysctl, tetapi menggunakan opsi -w dan diikuti dengan nama parameter, tanda sama dengan, dan nilai yang diinginkan.

Metode lain terdiri dari penggunaan echo untuk menimpa file yang terkait dengan parameter. Dengan kata lain, metode berikut ini setara dengan menonaktifkan fungsionalitas penerusan paket di sistem kami (yang seharusnya menjadi nilai default ketika sebuah kotak tidak seharusnya meneruskan lalu lintas antar jaringan):

echo 0 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=0

Penting untuk dicatat bahwa parameter kernel yang diatur menggunakan sysctl hanya akan diterapkan selama sesi saat ini dan akan hilang ketika sistem di-boot ulang.

Untuk menyetel nilai ini secara permanen, edit /etc/sysctl.conf dengan nilai yang diinginkan. Misalnya, untuk menonaktifkan penerusan paket di /etc/sysctl.conf pastikan baris ini muncul di file:

net.ipv4.ip_forward=0

Kemudian jalankan perintah berikut untuk menerapkan perubahan pada konfigurasi yang sedang berjalan.

sysctl -p

Contoh lain dari parameter runtime kernel yang penting adalah:

fs.file-max menentukan jumlah maksimum penanganan file yang dapat dialokasikan oleh kernel untuk sistem. Tergantung pada tujuan penggunaan sistem Anda (web/database/server file, untuk menyebutkan beberapa contoh), Anda mungkin ingin mengubah nilai ini untuk memenuhi kebutuhan sistem.

Jika tidak, Anda akan menerima pesan kesalahan “Terlalu banyak file terbuka ”, dan kemungkinan terburuknya dapat mencegah sistem operasi melakukan booting.

Jika karena kesalahan yang tidak disengaja Anda mendapati diri Anda berada dalam situasi terakhir ini, bootlah dalam mode pengguna tunggal (seperti yang dijelaskan di Bagian 13 – Mengonfigurasi dan Memecahkan Masalah Linux Grub Boot Loader) dan edit /etc/sysctl.conf sebagai diinstruksikan sebelumnya. Untuk menetapkan batasan yang sama pada basis per pengguna, lihat Bagian 14 – Memantau dan Menetapkan Penggunaan Batas Proses Linux dari seri ini.

kernel.sysrq digunakan untuk mengaktifkan tombol SysRq di keyboard Anda (juga dikenal sebagai tombol layar cetak) sehingga memungkinkan kombinasi tombol tertentu untuk menjalankan tindakan darurat ketika sistem menjadi tidak responsif.

Nilai default (16) menunjukkan bahwa sistem akan mengikuti kombinasi Alt+SysRq+key dan melakukan tindakan yang tercantum di sysrq.c dokumentasi ditemukan di kernel.org (di mana kuncinya adalah satu huruf dalam rentang b-z). Misalnya, Alt+SysRq+b akan mem-boot ulang sistem secara paksa (gunakan ini sebagai upaya terakhir jika server Anda tidak responsif).

Peringatan! Jangan mencoba menekan kombinasi tombol ini pada mesin virtual karena dapat memaksa sistem host Anda untuk melakukan boot ulang!

Jika disetel ke 1, net.ipv4.icmp_echo_ignore_all akan mengabaikan permintaan ping dan menghapusnya di tingkat kernel. Ini ditunjukkan pada gambar di bawah – perhatikan bagaimana permintaan ping hilang setelah mengatur parameter kernel ini:

Cara yang lebih baik dan mudah untuk menyetel parameter runtime individual adalah dengan menggunakan file .conf di dalam /etc/sysctl.d, mengelompokkannya berdasarkan kategori.

Misalnya, daripada menyetel net.ipv4.ip_forward=0 dan net.ipv4.icmp_echo_ignore_all=1 di /etc/sysctl.conf, kita dapat membuat file baru bernama net.conf di dalam /etc/sysctl.d:

echo "net.ipv4.ip_forward=0" > /etc/sysctl.d/net.conf
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.d/net.conf

Jika Anda memilih untuk menggunakan pendekatan ini, jangan lupa untuk menghapus baris yang sama dari /etc/sysctl.conf.

Ringkasan

Pada artikel ini kami telah menjelaskan cara memodifikasi parameter runtime kernel, baik persisten maupun non persisten, menggunakan sysctl, /etc/sysctl.conf, dan file di dalam / dll/sysctl.d.

Dalam dokumen sysctl Anda dapat menemukan informasi lebih lanjut tentang arti dari lebih banyak variabel. File-file tersebut mewakili sumber dokumentasi terlengkap tentang parameter yang dapat diatur melalui sysctl.

Apakah menurut Anda artikel ini bermanfaat? Kami tentu berharap Anda melakukannya. Jangan ragu untuk memberi tahu kami jika Anda memiliki pertanyaan atau saran untuk ditingkatkan.