カーネルパラメータとは、OSの挙動を制御するパラメータのことです。Red Hat Enterprise Linux 8、9でのカーネルパラメータの確認・設定方法をまとめました。
カーネルパラメータとは
カーネルパラメーターは、システムの実行中に調整できる調整可能な値です。
すべてのカーネルパラメータを確認する
下記のコマンドを実行して現在のすべてのカーネルパラメータを確認します。root権限での実行が必要です。
# sysctl -a
# sysctl --all
5.2. sysctl でカーネルパラメーターの一時的な設定 (RHEL8)
5.2. sysctl でカーネルパラメーターの一時的な設定 (RHEL9)
特定のカーネルパラメータを確認する
特定のカーネルパラメータを確認する方法をまとめました。
sysctl -aにgrepコマンドを使う
sysctl -a ですべてのカーネルパラメータを参照した後にgrepコマンドで確認したいカーネルパラメータを確認します。
sysctl -a | grep net.ipv4.tcp_keepalive_time
sysctl -n を実行すると、カーネルパラメータの値のみを確認することができます。
sysctl -n net.ipv4.tcp_keepalive_time
カーネルパラメータを反映するコマンド
以下のコマンドでカーネルパラメータを反映することができます。
sysctl -p
上記のコマンドを実行すると、以下の定義ファイルをOSが読み込みます。OSの再起動時にも以下のファイルは読み込まれます。
/etc/sysctl.conf
以下のコマンドでもsysctl -pと同じ処理が実施されます。
sysctl -p /etc/sysctl.conf
「/etc/sysctl.conf」は、OS起動時に/proc/sys/ディレクトリのファイルに設定する値を記述しておくファイルです。このファイル自体は/procディレクトリにあるファイルではありませんので、viエディタなどで編集することができます。
参照:https://linuc.org/study/knowledge/527
カーネルパラメータを一時的に設定する
カーネルパラメータを一時的に設定する方法は、コマンドでのやり方と、/proc/sys/ディレクトリのファイルの編集の二通りの方法があります。
コマンドで一時的にカーネルパラメータを設定する
カーネルパラメータを一時的に設定するには下記コマンドを実行します。このコマンドによるパラメータの適用はコマンド実行後すぐに適用されます。下記のコマンド実行で設定されたカーネルパラメータは再起動すると元の状態に戻ります。
# sysctl <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
コマンドを使用せず、/proc/sys/仮想ファイルシステムディレクトリ内のファイルを使用して、一時的にカーネルパラメーターを設定することもできます。以下がその手順です。
/proc/sys/ディレクトリ配下のファイルを編集して一時的にカーネルパラメータを設定する
まずはlsコマンドでパラメータファイルの特定をします。
# ls -l /proc/sys/<TUNABLE_CLASS>/
特定したファイルが書き込み権限のあるユーザーであれば特定したファイルを編集することで一時的なカーネルパラメータの変更が可能です。
適用したいカーネルパラメータを適用します。
# echo <TARGET_VALUE> > /proc/sys/<TUNABLE_CLASS>/<PARAMETER>
適用した一時的なカーネルパラメータを確認します。この手順で適用できるカーネルパラメータは再起動の実施によって消えます。
# cat /proc/sys/<TUNABLE_CLASS>/<PARAMETER>
5.5. /proc/sys/ でカーネルパラメーターの一時的な設定 (RHEL9)
カーネルパラメータを永続的に設定する
下記コマンドでカーネルパラメータの永続的な設定を行います。
# sysctl -w <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE> >> /etc/sysctl.conf
/etc/sysctl.conf ファイルのカーネルパラメーターのデフォルト値が上書きされます。変更は、再起動なしで即座に設定が永続的に反映されます。
コマンドからではなく、/etc/sysctl.d/ ディレクトリーの設定ファイルを手動で変更して、カーネルパラメーターを調整することも可能です。以下のコマンドを実行してカーネルパラメータを設定します。
# vim /etc/sysctl.d/<some_file.conf>
カーネルパラメータは1行に1つずつ記載します。
<TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
<TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
詳細はRHEL9についての公式ドキュメントを参照ください。