ランレベル(ランレベル)とは | 意味や読み方など丁寧でわかりやすい用語解説
ランレベル(ランレベル)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ランレベル (ランレベル)
英語表記
runlevel (ランレベル)
用語解説
ランレベルとは、LinuxやUnix系OSにおいて、システムがどの状態で動作するかを定義する概念である。これはシステム起動時や運用中に、どのサービスを起動させ、どのプロセスを動かすかをあらかじめ決めておくための設定の集まりと考えることができる。OSが起動すると、指定されたランレベルに基づき、必要なプログラムやサービスだけが開始され、システム全体の状態が確立される。この仕組みにより、システム管理者はシステムの利用目的や緊急性に応じて、柔軟に動作モードを切り替えることが可能となる。たとえば、通常の運用ではネットワークサービスを含む全ての機能を有効にする一方で、システムに問題が発生した際には、最小限の機能だけを起動してトラブルシューティングを行うといった使い分けができる。
詳細に説明すると、ランレベルは一般的に0から6までの7つの異なるレベルで定義されている。これらの各レベルには特定の役割が割り当てられており、システムがどのように振る舞うべきかを指示する。
まず、ランレベル0はシステムのシャットダウンを意味する。このレベルに移行すると、システムは安全に停止し、電源が切れる状態になる。データ破損を防ぐため、システムを停止する際には必ずこのランレベルを使用することが推奨される。
次に、ランレベル1はシングルユーザーモード、または保守モードと呼ばれる。このモードでは、管理者ユーザーのみがログインでき、ネットワークサービスを含むほとんどのサービスが起動しない。これは、システムのファイルシステムに問題が発生した場合や、起動設定に誤りがあり正常に起動できない場合など、システムのトラブルシューティングやメンテナンスを行う際に非常に重要となる。限られたプロセスしか動作しないため、安全にシステムの問題を特定し、修復作業を行うことができる。
ランレベル2は、多くのシステムにおいてマルチユーザーモードとして定義されるが、ネットワークサービスが動作しない点が特徴である。一部のディストリビューションでは、ランレベル3と同じ設定を持つ場合もある。デスクトップ環境がないサーバーなどで、ネットワークを利用せずに複数のユーザーが作業を行う場合に利用されることがある。
ランレベル3は、フルマルチユーザーモードであり、ネットワークサービスを含む全てのテキストベースのサービスが起動する。これは、一般的なサーバー環境で最もよく利用されるランレベルである。GUI(グラフィカルユーザーインターフェース)は起動せず、CUI(キャラクターユーザーインターフェース)ベースで運用されるため、リソース消費が少なく、安定した運用が可能である。
ランレベル4は、通常は予約されており、特定の用途には割り当てられていない。これはシステム管理者が独自のカスタムランレベルとして定義するために利用できる。特定のアプリケーションやサービス群だけを起動させたい場合など、自由な設定が可能である。
ランレベル5は、グラフィカルインターフェースを持つフルマルチユーザーモードである。ネットワークサービスも起動し、デスクトップ環境が提供されるため、通常のデスクトップPCやワークステーションで最も一般的に使用されるランレベルである。WindowsやmacOSのような操作感でシステムを利用できる。
最後に、ランレベル6はシステムの再起動を意味する。このレベルに移行すると、システムは安全に停止処理を行い、その後自動的に再起動する。カーネルのアップデートや重要なシステム設定の変更後など、システム全体を再起動する必要がある場合に利用される。
これらのランレベルの具体的な定義やデフォルトの割り当ては、Linuxディストリビューションによって異なる場合がある。特にCentOSやRHEL系と、DebianやUbuntu系では、ランレベル2や4の扱いに差異が見られることがあるため、自身の利用しているOSのドキュメントを確認することが重要である。
現在実行中のランレベルは、runlevelコマンドやwho -rコマンドを使用して確認できる。runlevelコマンドは、直前のランレベルと現在のランレベルを表示する。例えば、「N 3」と表示されれば、直前は不明(起動直後など)で現在はランレベル3で動作していることを示す。
システムの起動時にデフォルトでどのランレベルで起動するかは、従来のSysVinitシステムでは/etc/inittabファイルで設定されていた。しかし、近年主流となっているsystemdを採用するLinuxディストリビューションでは、このランレベルの概念が「ターゲットユニット」という形で抽象化されている。systemdにおいては、ランレベル0、1、3、5、6に対応するターゲットユニットとして、それぞれpoweroff.target、rescue.targetまたはmulti-user.target --unit=rescue、multi-user.target、graphical.target、reboot.targetなどが用意されている。これにより、システムは特定のサービス群(ターゲット)を起動するよう指示される。
ランレベルを一時的に変更したい場合は、initコマンドまたはtelinitコマンドの後に目的のランレベル番号を指定して実行する。例えば、init 1を実行すると、システムはシングルユーザーモードに移行する。ただし、このコマンドはシステムに大きな影響を与えるため、慎重に実行する必要がある。systemd環境では、systemctl isolateコマンドを使用してターゲットユニットを切り替えることで、同様の操作を行うことができる。例えば、systemctl isolate multi-user.targetとすることで、グラフィカル環境からCUI環境へ移行できる。
ランレベルの概念は、システムの柔軟な運用、トラブルシューティング、およびセキュリティ管理において非常に重要である。システム管理者は、各ランレベルの意味と、それらをどのように利用するかを理解することで、システムの安定性と信頼性を高めることができる。システムエンジニアを目指す初心者にとって、このランレベルの知識は、Linuxシステムの基本的な動作原理を理解するための第一歩となるだろう。