この投稿の目的は、sysctl ユーティリティを使用して、Red Hat (RHEL/CentOS) および Oracle Linux (OL) システムでカーネル パラメータを設定する方法を説明することです。 sysctl ユーティリティ (/sbin/sysctl) を使用すると、(特権を持つ) ユーザーは実行時にカーネル パラメータを照会および変更できます。このユーティリティはほとんどの Linux ディストリビューションに共通ですが、ディストリビューション間で微妙な違いが存在する場合があります。 RHEL/OL および SuSE。表示/変更できるパラメーターは、procfs ファイルシステム /proc/sys を介して公開されるパラメーターです。設定ファイルで設定する場合は、ドット(「.」)表記を使用します。
特定のカーネル パラメータのクエリ
名前付きカーネル パラメータ値を照会するには、「-n」オプションを使用して sysctl ユーティリティを実行します。 ' または引数なし 例:
# sysctl kernel.shmmax kernel.shmmax = 68719476736
# sysctl -n kernel.shmmax 68719476736
上記の例では、パラメータ kernel.shmmax は /proc/sys/kernel/shmmax に関連しています。例:
# cat /proc/sys/kernel/shmmax 68719476736
すべてのカーネル パラメータのクエリ
すべてのカーネル パラメータ値を照会するには、「-a」を指定して systctl ユーティリティを実行します。 ‘ 引数例:
# sysctl -a | more kernel.sched_child_runs_first = 0 kernel.sched_min_granularity_ns = 4000000 kernel.sched_latency_ns = 20000000 kernel.sched_wakeup_granularity_ns = 4000000 kernel.sched_tunable_scaling = 1
上記の出力で特定のカーネル パラメーターを grep できます。カーネル パラメータのグループを除外するには、正規表現を使用します。たとえば、
# sysctl -a | grep ^kernel.s[h,e]m kernel.shmmax = 68719476736 kernel.shmall = 4294967296 kernel.shmmni = 4096 kernel.shm_rmid_forced = 0 kernel.sem = 250 32000 100 128
カーネル パラメータの即時設定 (永続的ではない)
sysctl パラメータ値をすぐに (永続的ではなく) 設定するには、sysctl -w を使用します。 指図。例:
# sysctl -w kernel.sysrq=0 kernel.sysrq = 0
複数の値を取るパラメータは、値を引用符で囲む必要があります。たとえば、net.ipv4.ip_local_port_range を 1025-65535 に設定するには:
# sysctl -w net.ipv4.ip_local_port_range="1025 65535"
または、sysctl パラメータを表す procfs ファイルに値を直接エコーすることもできます。例:
# echo 1 > /proc/sys/net/ipv4/ip_forward # echo "1025 65535" > /proc/sys/net/ipv4/ip_local_port_range
カーネル パラメータの永続的な設定
「systctl -w」メソッドを使用して変更されたカーネル パラメータ値は揮発性です。つまり、サーバーの再起動時に失われます。 sysctl ユーティリティの構成ファイル /etc/sysctl.conf を使用して、デフォルト以外のカーネル パラメータ値を永続的に保存する必要があります。このファイルはサーバーの起動時に解析され、その中の値がカーネルの構成に使用されます。 /etc/sysctl.conf ファイルを使用してカーネル パラメータを設定するために必要な構文は、component.parameter=value の表記に従います。 kernel.shmmax =33554432.
構文
# vi /etc/sysctl.conf [component].[parameter]=[value]
以下は /etc/sysctl.conf ファイルのサンプルです:
# grep -v ^# /etc/sysctl.conf net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 ....
「systctl -w」メソッドを使用してカーネル パラメータを変更するだけでなく、パラメータを /etc/sysctl.conf ファイルに追加して変更し、sysctl ユーティリティで「-p<」を使用してファイルを解析することもできます。 /強い> ‘ 引数例:
# sysctl -n kernel.ctrl-alt-del 0
# echo "kernel.ctrl-alt-del=1" >> /etc/sysctl.conf
# sysctl -p kernel.ctrl-alt-del = 1
カーネル パラメータを /etc/sysctl.conf ファイルに追加して変更すると、設定 (sysctl -p) されるだけでなく、変更された値がサーバーの再起動後も保持されます。
CentOS / RHEL 7 でカーネル パラメータを永続的に設定する
CentOS/RHEL 7 でカーネル パラメータを設定する方法は、以前のバージョンとは少し異なります。 /etc/sysctl.d/ の下に新しい conf ファイルを作成します。 ディレクトリ。ファイル名の形式は /etc/sysctl.d/[name].conf です。 /etc/sysctl.d/ ディレクトリ内のファイルは順番に解析されるため、ファイルを解析する順序を示す番号をファイル名の先頭に追加することをお勧めします。たとえば、/etc/sysctl.d/ 01-custom.conf:
# cat /etc/sysctl.d/01-custom.conf net.ipv4.ip_forward=1 net.ipv4.ip_local_port_range="1025 65535"
新しい/更新された /etc/sysctl.d ファイルの値をシステムにすぐに適用させるには、sysctl -p [ファイル名] を実行します。
# sysctl -p /etc/sysctl.d/01-custom.conf