Cara Menukar Parameter Runtime Kernel dengan cara yang berterusan dan tidak berterusan

Cara Menukar Parameter Runtime Kernel dengan cara yang berterusan dan tidak berterusan

Dalam Bahagian 13 Siri LFCS (Linux Foundation Sertificied Sysadmin) ini kami menerangkan cara menggunakan grub untuk mengubah suai tingkah laku sistem dengan lulus pilihan ke kernel untuk proses boot yang berterusan.

Begitu juga, anda boleh menggunakan baris arahan dalam sistem linux yang sedang berjalan untuk mengubah parameter kernel runtime tertentu sebagai pengubahsuaian satu kali, atau secara kekal dengan mengedit fail konfigurasi.

Oleh itu, anda dibenarkan untuk mengaktifkan atau melumpuhkan parameter kernel secara on-the-fly tanpa banyak kesukaran apabila diperlukan kerana perubahan yang diperlukan dalam cara sistem dijangka beroperasi.

Memperkenalkan sistem fail /Proc

Spesifikasi terkini standard hierarki sistem fail menunjukkan bahawa /Proc mewakili kaedah lalai untuk pengendalian proses dan maklumat sistem serta maklumat kernel dan memori lain. Terutamanya, /Proc/Sys di mana anda dapat menemui semua maklumat mengenai peranti, pemandu, dan beberapa ciri kernel.

Struktur dalaman sebenar /Proc/Sys sangat bergantung pada kernel yang digunakan, tetapi anda mungkin dapat mencari direktori berikut di dalamnya. Sebaliknya, masing -masing akan mengandungi subdirektori lain di mana nilai bagi setiap kategori parameter dikekalkan:

  1. Dev: Parameter untuk peranti tertentu yang disambungkan ke mesin.
  2. fs: Konfigurasi sistem fail (kuota dan inod, sebagai contoh).
  3. Kernel: Konfigurasi khusus kernel.
  4. jaring: Konfigurasi rangkaian.
  5. VM: menggunakan memori maya kernel.

Untuk mengubah suai parameter runtime kernel kami akan menggunakan sysctl perintah. Bilangan parameter yang boleh diubahsuai boleh dilihat dengan:

# sysctl -a | WC -L 

Sekiranya anda ingin melihat senarai lengkap parameter kernel, lakukan saja:

# sysctl -a 

Oleh kerana output perintah di atas akan terdiri daripada banyak baris, kita boleh menggunakan saluran paip yang diikuti oleh kurang untuk memeriksa dengan lebih teliti:

# sysctl -a | kurang 

Mari kita lihat beberapa baris pertama. Sila ambil perhatian bahawa watak pertama dalam setiap baris sepadan dengan nama direktori di dalamnya /Proc/Sys:

Memahami sistem fail linux /proc

Sebagai contoh, garis yang diserlahkan:

Dev.cdrom.Maklumat = Nama Drive: SR0 

menunjukkan bahawa SR0 adalah alias untuk pemacu optik. Dengan kata lain, itulah bagaimana kernel "melihat"Itu memandu dan menggunakan nama itu untuk merujuknya.

Di bahagian berikut, kami akan menerangkan cara mengubah parameter runtime kernel lain yang lebih penting di Linux.

Cara menukar atau mengubah suai parameter runtime kernel Linux

Berdasarkan apa yang telah kami jelaskan setakat ini, mudah untuk melihat bahawa nama parameter sepadan dengan struktur direktori di dalamnya /Proc/Sys di mana ia dapat dijumpai.

Sebagai contoh:

Dev.cdrom.Autoclose →/proc/sys/dev/cdrom/autoclose net.IPv4.ip_forward →/proc/sys/net/ipv4/ip_forward 

Semak parameter kernel Linux

Yang mengatakan, kita dapat melihat nilai parameter kernel Linux tertentu menggunakan sama ada sysctl diikuti dengan nama parameter atau membaca fail yang berkaitan:

# sysctl dev.cdrom.Autoclose # CAT/PROC/SYS/DEV/CDROM/AUTOCLOSE # SYSCTL NET.IPv4.ip_forward # kucing/proc/sys/net/ipv4/ip_forward 
Semak parameter kernel Linux

Tetapkan atau ubah suai parameter kernel Linux

Untuk menetapkan nilai untuk parameter kernel, kami juga boleh menggunakan sysctl, tetapi menggunakan -w pilihan dan diikuti dengan nama parameter, tanda yang sama, dan nilai yang dikehendaki.

Kaedah lain terdiri daripada penggunaan echo Untuk menulis ganti fail yang berkaitan dengan parameter. Dalam erti kata lain, kaedah berikut bersamaan dengan melumpuhkan fungsi pemajuan paket dalam sistem kami (yang, dengan cara itu, harus menjadi nilai lalai apabila kotak tidak sepatutnya lulus lalu lintas antara rangkaian):

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

Penting untuk diperhatikan bahawa parameter kernel yang ditetapkan menggunakan sysctl hanya akan dikuatkuasakan semasa sesi semasa dan akan hilang apabila sistem reboot.

Untuk menetapkan nilai -nilai ini secara kekal, edit /etc/sysctl.Conf dengan nilai yang dikehendaki. Contohnya, untuk melumpuhkan penghantaran paket di /etc/sysctl.Conf Pastikan baris ini muncul dalam fail:

jaring.IPv4.ip_forward = 0 

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

# sysctl -p 

Contoh lain parameter runtime kernel penting ialah:

fs.fail-max Menentukan bilangan maksimum fail yang mengendalikan kernel yang boleh diperuntukkan untuk sistem. Bergantung pada penggunaan sistem anda (web / pangkalan data / pelayan fail, untuk menamakan beberapa contoh), anda mungkin mahu mengubah nilai ini untuk memenuhi keperluan sistem.

Jika tidak, anda akan menerima "Terlalu banyak fail terbuka"Mesej ralat paling baik, dan mungkin menghalang sistem pengendalian boot yang paling teruk.

Sekiranya disebabkan oleh kesilapan yang tidak bersalah, anda mendapati diri anda dalam keadaan terakhir ini, boot dalam mod pengguna tunggal (seperti yang dijelaskan dalam Bahagian 13 - Konfigurasi dan Selesaikan Linux Grub Boot Loader) dan edit /etc/sysctl.Conf seperti yang diarahkan sebelum ini. Untuk menetapkan sekatan yang sama pada dasar per -pengguna, rujuk Bahagian 14 - Memantau dan menetapkan Penggunaan Had Proses Linux Siri ini.

kernel.Sysrq digunakan untuk membolehkan Sysrq kunci dalam papan kekunci anda (juga dikenali sebagai kunci skrin cetak) untuk membolehkan kombinasi utama tertentu untuk menggunakan tindakan kecemasan apabila sistem telah menjadi tidak bertindak balas.

Nilai lalai (16) menunjukkan bahawa sistem akan menghormati Alt+sysrq+kekunci gabungan dan melaksanakan tindakan yang disenaraikan di Sysrq.c Dokumentasi yang terdapat di kernel.org (di mana kunci adalah satu huruf dalam julat b-z). Sebagai contoh, Alt+sysrq+b akan reboot sistem dengan kuat (gunakan ini sebagai usaha terakhir jika pelayan anda tidak bertindak balas).

Amaran! Jangan cuba menekan gabungan kunci ini pada mesin maya kerana ia boleh memaksa sistem tuan rumah anda untuk reboot!

Apabila ditetapkan ke 1, jaring.IPv4.ICMP_ECHO_IGNORE_ALL akan mengabaikan permintaan ping dan menjatuhkannya di peringkat kernel. Ini ditunjukkan dalam imej di bawah - Perhatikan bagaimana permintaan ping hilang selepas menetapkan parameter kernel ini:

Permintaan ping blok di linux

Cara yang lebih baik dan lebih mudah untuk menetapkan parameter runtime individu menggunakan .Conf fail di dalam /etc/sysctl.d, mengumpulkannya mengikut kategori.

Contohnya, bukannya menetapkan jaring.IPv4.ip_forward = 0 dan jaring.IPv4.ICMP_ECHO_IGNORE_ALL = 1 dalam /etc/sysctl.Conf, kita boleh membuat fail baru bernama jaring.Conf dalam /etc/sysctl.d:

# echo "bersih.IPv4.ip_forward = 0 "> /etc /sysctl.d/bersih.conf # echo "bersih.IPv4.icmp_echo_ignore_all = 1 ">> /etc /sysctl.d/bersih.Conf 

Sekiranya anda memilih untuk menggunakan pendekatan ini, jangan lupa untuk mengeluarkan garis yang sama dari /etc/sysctl.Conf.

Ringkasan

Dalam artikel ini, kami telah menjelaskan cara mengubah suai parameter runtime kernel, baik berterusan dan tidak berterusan, menggunakan sysctl, /etc/sysctl.Conf, dan fail di dalamnya /etc/sysctl.d.

Di dalam sysctl Dokumen Anda boleh mendapatkan lebih banyak maklumat mengenai makna lebih banyak pembolehubah. Fail tersebut mewakili sumber dokumentasi yang paling lengkap mengenai parameter yang boleh ditetapkan melalui SYSCTL.

Adakah anda mendapati artikel ini berguna? Kami pasti berharap anda berjaya. Jangan teragak -agak untuk memberitahu kami jika anda mempunyai sebarang pertanyaan atau cadangan untuk memperbaiki diri.

Menjadi Pentadbir Sistem Bersertifikat Linux