第3章 システム設定の構成

この章では、システムの構成設定を変更する際に使用できるファイルおよび仮想ファイル・システムについて説明します。

3.1 /etc/sysconfigファイルについて

/etc/sysconfigディレクトリには、システムの構成を制御するファイルが含まれています。このディレクトリの内容は、システムにインストールしたパッケージによって異なります。

/etc/sysconfigディレクトリには、次のようなファイルが含まれます。

atd

atdデーモンに対して追加のコマンドライン引数を指定します。

authconfig

様々な認証メカニズムおよびオプションを使用するかどうかを指定します。たとえば、エントリUSEMKHOMEDIR=noは、ユーザーが最初にログインしたときのユーザー用ホーム・ディレクトリの作成を無効にします。

autofs

デバイスを自動的にマウントしたり、自動マウンタの操作を制御するためのカスタム・オプションを定義します。

crond

ブート時に引数をcrondデーモンに渡します。

firewalld

起動時に引数をファイアウォール・デーモン(firewalld)に渡します。

grub

GRUB 2ブート・ローダーのデフォルト設定を指定します。このファイルは/etc/default/grubへのシンボリック・リンクです。詳細は、1.2項「GRUB 2ブート・ローダーの操作」を参照してください。

init

ブート・プロセス中のシステムの表示方法と機能を制御します。

keyboard

キーボードを指定します。

modules (ディレクトリ)

ブート時に追加モジュールをロードするためにカーネルで実行するスクリプトが含まれます。modulesディレクトリ内のスクリプトは、拡張子が.modulesで、実行可能権限755が必要です。例として、uinputモジュールをロードするbluez-uinput.modulesスクリプトを参照してください。詳細は、5.5項「ブート時にロードされるモジュールの指定」を参照してください。

named

ブート時に引数を名前サービス・デーモンに渡します。namedデーモンは、Berkeley Internet Name Domain (BIND)ディストリビューションに含まれるドメイン・ネーム・システム(DNS)サーバーです。このサーバーは、ネットワーク上でホスト名をIPアドレスに関連付ける表を保持します。

nfs

リモート・プロシージャ・コール(RPC)サービスがNFS v2およびv3で使用するポートを制御します。このファイルを使用して、NFS v2およびv3のファイアウォール・ルールを設定できます。NFS v4のファイアウォール構成では、このファイルを編集する必要はありません。

ntpd

ブート時に引数をネットワーク・タイム・プロトコル(NTP)デーモンに渡します。

samba

ブート時に引数をsmbdnmbdおよびwinbinddデーモンに渡して、Windowsクライアントのファイル共有接続、NetBIOS-over-IPネーミング・サービス、およびドメイン・コントローラへの接続管理をサポートします。

selinux

システム上でSELinuxの状態を制御します。このファイルは/etc/selinux/configへのシンボリック・リンクです。詳細は、Oracle® Linux: SELinuxの管理を参照してください。

snapper

snapperユーティリティによってコンテンツをスナップショットとして記録できる、btrfsファイル・システムおよびシンプロビジョニングされたLVMボリュームのリストを定義します。詳細は、Oracle® Linux 7: ファイル・システムの管理を参照してください。

sysstat

sadcなど、システム・アクティビティのデータ・コレクタ・ユーティリティのロギング・パラメータを構成します。

詳細は、/usr/share/doc/initscripts*/sysconfig.txtを参照してください。

ノート

Oracle Linuxの以前のリリースでは、システムのホスト名は/etc/sysconfig/networkで定義されていました。現在、ホスト名は/etc/hostnameで定義され、hostnamectlコマンドを使用して変更できます。ホスト名は、単純な短縮名ではなく、host20.mydomain.comなどの完全修飾ドメイン名(FQDN)である必要があります。

さらに、デフォルト言語、キーボード、コンソール・フォントなど、システム全体のデフォルトのローカリゼーション設定が/etc/sysconfig/i18nで定義されました。このような設定は、現在/etc/locale.confおよび/etc/vconsole.confで定義されます。

詳細は、hostname(5)hostnamectl(1)locale.conf(5)、およびvconsole.conf(5)の各マニュアル・ページを参照してください。

3.2 /proc仮想ファイル・システムについて

/procディレクトリ階層内のファイルには、システム・ハードウェアおよびシステムで実行中のプロセスに関する情報が含まれています。カーネルの構成を変更するには、書込み権限が設定されている特定のファイルに書き込みます。

procファイル・システムの名前はOracle Solarisオペレーティング・システムの元の目的に由来し、これは、実行プロセス内部のデータ構造へのデバッグ・ツールによるアクセスを可能にすることでした。このインタフェースはLinuxによって追加され、カーネル内のデータ構造にアクセスできるように拡張されました。時間の経過とともに、/procは完全に無秩序になり、これを整理しようとしてsysfsファイル・システムが作成されました。詳細は、第3.3項「/sys仮想ファイル・システムについて」を参照してください。

/procディレクトリの下のファイルは、基礎となるデータ構造およびシステム情報のブラウズ可能ビューを表示するために、要求に応じてカーネルによって作成される仮想ファイルです。このように、/procは仮想ファイル・システムの1つの例です。ほとんどの仮想ファイルはサイズが0バイトとしてリストされますが、表示すると、大量の情報が含まれています。

/proc/interrupts/proc/meminfo/proc/mounts/proc/partitionsなどの仮想ファイルでは、システムのハードウェアのビューが提供されます。その他の/proc/filesystems/proc/sysの下のファイルなどでは、システムの構成に関する情報が提供され、この構成を変更できます。

関連トピックに関する情報が含まれるファイルは、仮想ディレクトリにグループ化されます。たとえば、システムで現在実行中の各プロセスに対して、/procに別々のディレクトリが存在し、そのディレクトリの名前が数値のプロセスIDに対応する場合があります。/proc/1は、PIDが1であるsystemdプロセスに対応します。

catlessおよびviewなどのコマンドを使用すると、/proc内の仮想ファイルを調査できます。たとえば、/proc/cpuinfoにはシステムのCPUに関する情報が格納されています。

# cat /proc/cpuinfo
processor         : 0
vendor_id         : GenuineIntel
cpu family        : 6
model             : 42
model name        : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
stepping          : 7
cpu MHz           : 2393.714
cache size        : 6144 KB
physical id       : 0
siblings          : 2
core id           : 0
cpu cores         : 2
apicid            : 0
initial apicid    : 0
fpu               : yes
fpu_exception     : yes
cpuid level       : 5
wp                : yes
...

/procの下の特定のファイルには、アクセスするためにroot権限が必要であり、判読不可の情報が格納されます。lspcifreeおよびtopなどのユーティリティを使用すると、これらのファイルの情報にアクセスできます。たとえば、lspciでは、システム上のすべてのPCIデバイスがリストされます。

# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:0b.0 USB controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller
00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode]
        (rev 02)
...

3.2.1 /procの下の仮想ファイルおよびディレクトリ

次の表に、/procディレクトリ階層の下の最も有益な仮想ファイルとディレクトリを示します。

表3.1 /procの下の仮想ファイルおよびディレクトリ
仮想ファイルまたはディレクトリ 説明

PID (ディレクトリ)

プロセスID(PID)と一致するプロセスに関する情報を提供します。ディレクトリの所有者とグループは、プロセスの所有者とグループと同じです。ディレクトリの下の有益なファイルは、次のとおりです。

cmdline

コマンド・パス。

cwd

プロセスの現在の作業ディレクトリへのシンボリック・リンク。

environ

環境変数。

exe

コマンド実行可能ファイルへのシンボリック・リンク。

fd/N

ファイル・ディスクリプタ。

maps

実行可能ファイルおよびライブラリ・ファイルへのメモリー・マップ。

root

プロセスに対する有効なルート・ディレクトリへのシンボリック・リンク。

stack

カーネル・スタックの内容です。

status

実行状態およびメモリー使用量。

buddyinfo

メモリー・フラグメンテーションの診断に関する情報を提供します。

bus (ディレクトリ)

システムで使用可能な様々なバス(pciusbなど)に関する情報を格納します。lspcilspcmcialsusbなどのコマンドを使用すると、このようなデバイスの情報を表示できます。

cgroups

システムで使用中のリソース制御グループについての情報を提供します。

cmdline

ブート時にカーネルに渡されるパラメータをリストします。

cpuinfo

システムのCPUに関する情報を提供します。

crypto

インストールされているすべての暗号化方法に関する情報を提供します。

devices

現在構成されているすべてのキャラクタ・デバイスとブロック・デバイスの名前およびメジャー・デバイス番号をリストします。

dma

現在使用中のダイレクト・メモリー・アクセス(DMA)チャネルをリストします。

driver (ディレクトリ)

不揮発性RAM (nvram)、リアルタイム・クロック(rtc)、サウンド用のメモリー割当(snd-page-alloc)に対するドライバなど、カーネルによって使用されるドライバに関する情報を格納します。
execdomains

Oracle Linuxカーネルでサポートされるバイナリに対する実行ドメインをリストします。

filesystems

カーネルでサポートされるファイル・システム・タイプをリストします。nodevのマーク付きのエントリは使用中ではありません。

fs (ディレクトリ)

マウント済のファイル・システムに関する情報を、ファイル・システム・タイプで編成して格納します。

interrupts

システム起動時からの各CPUに対する割込み要求キュー(IRQ)ごとの割込み数を記録します。

iomem

各物理デバイスのシステム・メモリー・マップをリストします。

ioports

カーネルがデバイスに関して使用するI/Oポート・アドレスの範囲をリストします。

irq (ディレクトリ)

各IRQに関する情報を格納します。各IRQとシステムCPUの間のアフィニティを構成できます。

kcore

システムの物理メモリーを、crashまたはgdbなどのデバッガを使用して調査できるcoreファイル形式で提示します。このファイルは判読不可です。

kmsg

カーネル生成メッセージを記録し、これは、dmesgなどのプログラムによって取得されます。

loadavg

過去1分間、5分間および15分間のシステム・ロード平均(キューに入れられたプロセスの数)、実行中プロセスの数、プロセスの合計数、および実行中のプロセスのPIDを表示します。

locks

カーネルがプロセスのために現在保持しているファイル・ロックに関する情報を表示します。提供される情報は次のとおりです。

  • ロック・クラス(FLOCKまたはPOSIX)

  • ロック・タイプ(ADVISORYまたはMANDATORY)

  • アクセス・タイプ(READまたはWRITE)

  • プロセスID

  • メジャー・デバイス番号、マイナー・デバイス番号およびinode番号

  • ロックされた領域の境界

mdstat

複数ディスクRAIDデバイスに関する情報をリストします。

meminfo

システムのメモリーの使用量を、freeまたはtopコマンドを使用して利用できる情報より詳細にレポートします。

modules

カーネルに現在ロードされているモジュールに関する情報を表示します。lsmodコマンドは、モジュールのカーネル・メモリー・オフセットを除外して、同じ情報をフォーマットし、表示します。

mounts

マウントされているすべてのファイル・システムに関する情報をリストします。

net (ディレクトリ)

ネットワーキング・プロトコル、パラメータおよび統計に関する情報を提供します。各ディレクトリおよび仮想ファイルは、システムのネットワークの構成に関する部分を記述します。

partitions

メジャー・デバイス番号とマイナー・デバイス番号、ブロック数、およびシステムでマウントされているパーティション数をリストします。

scsi/device_info

サポートされているSCSIデバイスに関する情報を提供します。

scsi/scsi and

scsi/sg/*

ベンダー、モデル、チャネル、ID、LUNデータなど、構成済SCSIデバイスに関する情報を提供します。

self

/procを調査しているプロセスへのシンボリック・リンク。

slabinfo

スラブ・メモリー使用量に関する詳細情報を提供します。

softirqs

ソフトウェア割込み(softirq)に関する情報を表示します。softirqはハードウェア割込み(hardirq)に類似しており、カーネルが、ハードウェア割込み時に非常に時間を要する非同期処理を実行できるようにします。

stat

システム起動時からのシステムに関する次の情報を記録します。

cpu

ユーザー・モード、低優先度ユーザー・モード、システム・モード、アイドル、I/O待機、hardirqイベント処理およびsoftirqイベント処理に費やした合計CPU時間(jiffiesで測定)。

cpuN

CPU Nに関する時間。

swaps

スワップ・デバイスに関する情報を提供します。サイズおよび使用量の単位はKBです。

sys (ディレクトリ)

システムに関する情報を提供し、カーネル機能の有効化、無効化または変更もできるようにします。書込み権限が設定されたファイルに新しい設定を書き込むことができます。第3.2.2項「カーネル・パラメータの変更」を参照してください。

次に示す/proc/sysのサブディレクトリ階層には、仮想ファイルが含まれており、その値の一部を使いやすく変更できます。

dev

デバイス・パラメータ。

fs

ファイル・システム・パラメータ。

kernel

カーネル構成パラメータ。

net

ネットワーキング・パラメータ。

sysvipc (ディレクトリ)

メッセージ(msg)、セマフォ(sem)および共有メモリー(shm)に対するSystem Vプロセス間通信(IPC)リソースの使用量に関する情報を提供します。

tty (ディレクトリ)

システム上にある使用可能で現在使用されている端末デバイスに関する情報を提供します。drivers仮想ファイルは、現在構成されているデバイスをリストします。

vmstat

仮想メモリーの使用量に関する情報を提供します。


詳細は、proc(5)マニュアル・ページを参照してください。

3.2.2 カーネル・パラメータの変更

/procの下、特に/proc/sysの下にある一部の仮想ファイルは書込み可能であり、それらを使用してカーネル内の設定を調整できます。たとえば、ホスト名を変更するには、/proc/sys/kernel/hostnameに新しい値を書き込むことができます。

# echo www.mydomain.com > /proc/sys/kernel/hostname

他のファイルでは、バイナリまたはブール値を使用する値が取得されます。たとえば、/proc/sys/net/ipv4/ip_forwardの値では、カーネルがIPv4ネットワーク・パケットを転送するかどうかが決定されます。

# cat /proc/sys/net/ipv4/ip_forward
0
# echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_forward
1

sysctlコマンドを使用すると、/proc/sysディレクトリの下にある値を表示または変更できます。

ノート

rootであっても、/proc下の仮想ファイル・エントリのファイル・アクセス権限は回避できません。/proc/partitionsなどの読取り専用エントリの値を変更しようとしても、write()システム・コールを処理するカーネル・コードはありません。

現在のカーネル設定をすべて表示するには:

# sysctl -a
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 2000000
kernel.sched_latency_ns = 10000000
kernel.sched_wakeup_granularity_ns = 2000000
kernel.sched_shares_ratelimit = 500000
...
ノート

設定の名前のデリミタ文字は、/proc/sysに相対的なパスにおいて、スラッシュ(/)ではなくピリオド(.)です。たとえば、net.ipv4.ip_forwardnet/ipv4/ip_forwardを表し、kernel.msgmaxkernel/msgmaxを表します。

個々の設定を表示するには、その名前をsysctlの引数として指定します。

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

設定の値を変更するには、次の形式のコマンドを使用します。

# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

この方法で行った変更が有効であるのは、システムが再起動されるまでです。システムの再起動後に構成変更を保存するには、構成ファイルとして/etc/sysctl.dディレクトリに追加する必要があります。このディレクトリのファイルに加えた変更は、システムの再起動時、または次の例のようにsysctl --systemコマンドを実行した場合に有効になります。

# echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/ip_forward.conf 
# grep -r ip_forward /etc/sysctl.d
/etc/sysctl.d/ip_forward.conf:net.ipv4.ip_forward=1
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
# sysctl --system
* Applying /usr/lib/sysctl.d/00-system.conf ...
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
* Applying /usr/lib/sysctl.d/50-default.conf ...
kernel.sysrq = 16
kernel.core_uses_pid = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.d/ip_forward.conf ...
net.ipv4.ip_forward = 1
* Applying /etc/sysctl.conf ...
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

詳細は、sysctl(8)およびsysctl.d(5)の各マニュアル・ページを参照してください。

3.2.3 システム・パフォーマンスを制御するパラメータ

次のパラメータは、システム・パフォーマンスの部分を制御します。

fs.file-max

すべてのプロセスに対するオープン・ファイルの最大数を指定します。ファイル・ハンドラ不足に関するメッセージが表示された場合は、このパラメータの値を増やします。

net.core.netdev_max_backlog

受信者のバックログ・キューのサイズを指定し、これは、カーネルでパケットが処理される速度より速くインタフェースでパケットが受信される場合に使用されます。このキューが小さすぎると、ネットワーク上ではなく、受信者側でパケットが失われます。

net.core.rmem_max

最大読取りソケット・バッファ・サイズを指定します。ネットワーク・パケットの喪失を最小限にするために、このバッファは受信ネットワーク・パケットを処理するのに十分な大きさにする必要があります。

net.core.wmem_max

最大書込みソケット・バッファ・サイズを指定します。ネットワーク・パケットの喪失を最小限にするために、このバッファは送信ネットワーク・パケットを処理するのに十分な大きさにする必要があります。

net.ipv4.tcp_available_congestion_control

使用可能なTCP輻輳回避アルゴリズムを表示します。htcpを実装するためにtcp_htcpなどの追加モジュールをロードする必要がある場合は、modprobeコマンドを使用します。

net.ipv4.tcp_congestion_control

使用するTCP輻輳回避アルゴリズムを指定します。

net.ipv4.tcp_max_syn_backlog

許可される未処理のSYNリクエスト数を指定します。ログにsynflood警告が表示され、調査で、正規接続試行によってサーバーがオーバーロードであるために発生していることが示された場合は、このパラメータの値を増やします。

net.ipv4.tcp_rmem

TCPソケットに使用される、最小、デフォルトおよび最大受信バッファ・サイズを指定します。最大値はnet.core.rmem_maxより大きい値にできません。

net.ipv4.tcp_wmem

TCPソケットに使用される、最小、デフォルトおよび最大送信バッファ・サイズを指定します。最大値はnet.core.wmem_maxより大きい値にできません。

vm.swappiness

カーネルが、ロードしたページをシステム・ページ・キャッシュから削除するかわりに、ページをスワップに書き込む頻度を指定します。0に設定すると、メモリー不足の状態を回避する目的でのみスワッピングが発生します。100に設定すると、カーネルは頻繁にスワップします。デスクトップ・システムの場合、低い値に設定すると、待機時間が短縮され、システム応答が改善する場合があります。デフォルト値は60です。

注意

このパラメータは、ハード・ディスクの電力消費を節約するために、ノートパソコンで使用します。サーバー・システム上でこの値を調整しないでください。

3.2.4 カーネル・パニックを制御するパラメータ

次のパラメータは、カーネル・パニックが発生する可能性がある状況を制御します。

kernel.hung_task_panic

(UEK R3のみ) 1に設定すると、カーネル・スレッドがTASK_UNINTERRUPTIBLE状態(D状態)でkernel.hung_task_timeout_secs秒より長くスリープしている場合にカーネル・パニックが発生します。I/Oの完了を待機している間、プロセスはD状態のままです。この状態のプロセスは、中断または割込みできません。

デフォルト値は0であり、この場合パニックは無効化されます。

ヒント

ハングしたスレッドを診断するには、カーネル・スレッドとユーザー・スレッドの両方のカーネル・スタックを表示する/proc/PID/stackを調べます。

kernel.hung_task_timeout_secs

(UEK R3のみ)警告メッセージが生成されるか、カーネル・パニックが発生する(kernel.hung_task_panicが1の場合)までに、ユーザーまたはカーネル・スレッドをD状態のままにできる期間を指定します。デフォルト値は120秒です。値を0に指定すると、タイムアウトを無効化できます。

kernel.nmi_watchdog

1 (デフォルト)に設定すると、カーネル内のマスク不可能な割込み(NMI)ウォッチドッグ・スレッドが有効になります。NMIスイッチまたはOProfileシステム・プロファイラを使用して未定義のNMIを生成する必要がある場合は、kernel.nmi_watchdogの値を0に設定します。

kernel.panic

パニック後、システムが自動的に自己リセットを行う前の秒数を指定します。

値が0の場合、システムはハングして、トラブルシューティングのためにパニックの詳細情報を収集できます。これはデフォルト値です。

自動リセットを有効にするには、0以外の値を設定します。メモリー・イメージ(vmcore)が必要な場合、Kdumpがこのイメージを作成するのに十分な時間を確保します。推奨値は30秒ですが、大規模システムの場合はより長い時間が必要です。

kernel.panic_on_io_nmi

0 (デフォルト)に設定すると、通常は修正不可能なハードウェア・エラーを示すI/Oチャネル・チェック(IOCHK) NMIをカーネルが検出した場合に操作の続行が試行されます。1に設定した場合は、システム・パニックが発生します。

kernel.panic_on_oops

0に設定すると、カーネルでoopsまたはBUG状態が発生した場合でも、システムは操作を続行しようとします。1 (デフォルト)に設定した場合は、パニックが発生する前にカーネル・ログ・デーモンklogdにoops出力を記録する時間を持たせるため、数秒遅延が発生します。

OCFS2クラスタで、値を1に設定して、カーネルoopsが発生した場合に、システムでパニックを起こす必要があることを指定します。クラスタ操作に必要とされるカーネル・スレッドがクラッシュした場合、システムは自己リセットを行う必要があります。それ以外の場合、他のノードはあるノードの応答が遅れているのか、応答できないのかを区別できず、その結果クラスタ操作がハングする可能性があります。

kernel.panic_on_stackoverflow

(RHCKのみ) 0 (デフォルト)に設定すると、カーネルがカーネル・スタック内のオーバーフローを検出した場合に操作の続行が試行されます。1に設定した場合は、システム・パニックが発生します。

kernel.panic_on_unrecovered_nmi

0 (デフォルト)に設定すると、通常は修正不可能パリティまたはECCメモリー・エラーを示すNMIをカーネルが検出した場合に操作の続行が試行されます。1に設定した場合は、システム・パニックが発生します。

kernel.softlockup_panic

0 (デフォルト)に設定すると、NMIウォッチドッグ・スレッドがタイム・スタンプの更新を、kernel.watchdog_threshで指定した秒数の2倍より長い時間にわたって失敗する原因となるsoft-lockupエラーをカーネルが検出した場合でも、操作の続行が試行されます。1に設定した場合は、システム・パニックが発生します。

kernel.unknown_nmi_panic

1に設定すると、カーネルが未定義のNMIを検出した場合にパニックが発生します。通常は、NMIスイッチを手動で押して未定義のNMIを生成します。NMIウォッチドッグ・スレッドでは未定義のNMIも使用されるため、kernel.nmi_watchdogを1に設定した場合はkernel.unknown_nmi_panicの値を0に設定します。

kernel.watchdog_thresh

カーネルがhard-lockupおよびsoft-lockupエラーのチェックに使用するNMIパフォーマンス監視割込みの生成の間隔を指定します。CPUが割込みに対してkernel.watchdog_threshで指定した秒数以上応答しない場合は、ハード・ロックアップ・エラーが考えられます。デフォルト値は10秒。値を0に指定すると、ロックアップ・エラーの検出を無効化できます。

vm.panic_on_oom

0 (デフォルト)に設定した場合、カーネルのOOM-killerによって、タスク・リスト全体がスキャンされ、パニックを回避するためにメモリー占有プロセスの中断が試行されます。1に設定すると、カーネル・パニックは発生しますが、特定の状況では存続できます。プロセスで、メモリー・ポリシーまたはcpusetを使用することによって特定のノードへの割当が制限され、これらのノードがメモリー不足の状態になった場合、OOM-killerによってあるプロセスを中断できます。他のノードのメモリーには空きがあり、システム全体としてはまだメモリー不足ではない可能性があるため、この場合パニックは発生しません。2に設定すると、OOM状態で常にカーネル・パニックが発生します。1および2の設定は、優先するフェイルオーバー・ポリシーに応じて、クラスタで使用することを目的としています。

3.3 /sys仮想ファイル・システムについて

カーネルは、/procに加えて/sys仮想ファイル・システム(sysfs)にも情報をエクスポートします。動的デバイス・マネージャudevなどのプログラムでは、/sysを使用してデバイスやデバイス・ドライバ情報にアクセスします。ほとんどのハードウェア情報が/sysに移動されたため、/sysの実装によって/procファイル・システムの整理に役立ちました。

ノート

/sysではカーネル・データ構造体と制御ポイントが公開されているので、ディレクトリが祖先ディレクトリにリンクしている状態の循環参照が含まれている可能性があります。その結果、/sysに対して使用されたfindコマンドが終了しない場合があります。

3.3.1 /sysディレクトリの仮想ディレクトリ

次の表に、/sysディレクトリ階層の下にある有益な仮想ディレクトリを示します。

表3.2 /sysの下の有益な仮想ディレクトリ
仮想ディレクトリ 説明

block

ブロック・デバイスのサブディレクトリが含まれます。例: /sys/block/sda

bus

サポート対象の各物理バス・タイプのサブディレクトリ(pcipcmciascsiusbなど)が含まれます。各バス・タイプの下にあるdevicesディレクトリには検出されたデバイスがリストされ、driversディレクトリには各デバイス・ドライバのディレクトリが含まれます。

class

カーネルに登録されているデバイスの全クラスのサブディレクトリが含まれます。

devices

システム上の全デバイスのグローバル・デバイス階層が含まれます。プラットフォーム・ディレクトリには、特定のプラットフォームに固有のデバイス・コントローラなどの周辺機器が含まれます。systemディレクトリには、CPUやAPICなど、周辺機器以外が含まれます。virtualディレクトリには、仮想および擬似デバイスが含まれます。第4章「デバイス管理」を参照してください。

firmware

ファームウェア・オブジェクトのサブディレクトリが含まれます。

module

カーネルにロードされた各モジュールのサブディレクトリが含まれます。ロードされたモジュールの一部のパラメータ値を変更できます。第5.4項「モジュール・パラメータについて」を参照してください。
power

システムの電源状態を制御する属性が含まれます。


詳細は、https://www.kernel.org/doc/Documentation/filesystems/sysfs.txtを参照してください。

3.4 システム日時設定の構成

システム時間はPOSIX時間標準に基づいています。この標準では、00:00:00座標世界時(UTC)、1970年1月1日木曜日以降に経過した秒数として時間が測定されます。1日は86400秒として定義され、うるう秒は自動的に減算されます。

システムの日時表現は、特定のタイムゾーンに一致するように設定できます。使用可能なすべてのタイムゾーンをリストするには、次を実行します。

# timedatectl list-timezones

使用可能なタイムゾーンから返された値に一致するようにシステム・タイムゾーンを設定するには、次のように実行できます。

# timedatectl set-timezone America/Los_Angeles

America/Los_Angelesを有効なタイムゾーン・エントリで置き換えます。

このコマンドは、/usr/share/zoneinfo/内の適切なゾーン情報ファイルを指すように、/etc/localtimeからのシンボリック・リンクを設定します。この設定は、即座に反映されます。/etc/localtimeを使用して現在のシステム・タイムゾーンを検出する可能性がある長時間実行プロセスの中には、プロセスが再起動されるまでシステム・タイムゾーンの後続の変更を検出できないものがあります。

タイムゾーンは、主に表示目的またはユーザー入力の処理に使用されることに注意してください。タイムゾーンを変更しても、システム・クロックの時間は変更されません。TZ環境変数を設定することで、任意のコンソールでシステム時間のプレゼンテーションを変更できます。たとえば、東京の現在の時間を確認するには、次のように実行できます。

# TZ="Asia/Tokyo" date

timedatectlコマンドを単独で実行することで、システムの現在の日時構成を確認できます。

# timedatectl
      Local time: Thu 2018-10-25 13:11:30 BST
  Universal time: Thu 2018-10-25 12:11:30 UTC
        RTC time: Thu 2018-10-25 12:11:17
       Time zone: Europe/London (BST, +0100)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  Sun 2018-03-25 00:59:59 GMT
                  Sun 2018-03-25 02:00:00 BST
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  Sun 2018-10-28 01:59:59 BST
                  Sun 2018-10-28 01:00:00 GMT

システム時間を手動で設定するには、timedatectl set-timeコマンドを使用します。たとえば、次のコマンドを実行できます。

# timedatectl set-time "2018-10-28 01:59:59"

このコマンドは、現在設定されているシステム・タイムゾーンを想定して指定された時間に基づいて現在のシステム時間を設定します。このコマンドは、システムのリアル・タイム・クロック(RTC)も更新します。

正確な時間管理のためにネットワーク時間の同期を使用するようにシステムを構成することを検討してください。これは、高可用性を設定する場合、またはネットワークベースのファイルシステムを使用するときに特に重要です。

NTPサービスを構成する場合、次のコマンドを実行してNTPを有効にできます。

# timedatectl set-ntp true

このコマンドは、chronydサービスを有効にし、起動します(使用可能な場合)。