FHSの「/sys」ディレクトリの概要

/sys

はじめに

Linuxシステムにおいて、FHS (Filesystem Hierarchy Standard) によって定められたディレクトリ構造は、システムの効率的な運用と管理に欠かせません。/sys ディレクトリは、その中でもシステムハードウェア情報やデバイス、ドライバに関する情報を提供する仮想ファイルシステムです。/sys は Linuxカーネルが提供するデバイスやシステムの状態を読み取り、ユーザやプロセスに対してリアルタイムで動的な情報を提供するために使われます。

/sys ディレクトリとは?

/sys は、2003年にLinuxカーネル 2.6で導入された、システムおよびハードウェア情報を提供する仮想ファイルシステムです。このディレクトリは、システムのハードウェアに関連するさまざまな情報を提供することを目的とし、Linuxのカーネルによって動的に生成されます。

/sys の主なサブディレクトリ

1. /sys/class

/sys/class ディレクトリには、さまざまなデバイスがそのクラス別に分類された情報が格納されています。クラスとは、デバイスのタイプに応じた分類で、例えばブロックデバイスやネットワークインターフェースなどが含まれます。

/sys/class/net/    # ネットワークインターフェースに関する情報
/sys/class/block/  # ブロックデバイスに関する情報

2. /sys/devices

/sys/devices ディレクトリには、システム上に接続されている物理デバイスに関する情報が格納されています。ここでは、CPU、メモリ、ディスク、USBデバイスなど、システム上の全デバイスが確認でき、デバイスの構造や接続状態が視覚的に分かるようになっています。

/sys/devices/system/cpu/     # CPUに関する情報
/sys/devices/pci0000:00/     # PCIバスに接続されているデバイス情報

3. /sys/bus

/sys/bus ディレクトリは、ハードウェアバスに関連する情報を格納しています。PCIバスやUSBバス、SCSIバスなどの情報がここに保存されており、各バスに接続されたデバイスの情報も確認できます。

/sys/bus/pci/
/sys/bus/usb/

4. /sys/module

/sys/module ディレクトリには、現在ロードされているカーネルモジュールに関する情報が保存されています。ここでは、カーネルモジュールの設定や、モジュールごとの詳細情報(パラメータやステータスなど)を確認できます。

/sys/module/usbcore/    # USB関連のカーネルモジュールの情報
/sys/module/nfs/        # NFS関連のカーネルモジュールの情報

5. /sys/kernel

/sys/kernel ディレクトリには、カーネルの設定や状態に関する情報が格納されています。カーネルパラメータやデバッグ情報などが含まれており、カーネルの調整や監視に利用できます。

/sys/kernel/debug/      # カーネルのデバッグ情報
/sys/kernel/slab/       # カーネルメモリ管理に関する情報

/sys の利用シーン

1. ハードウェア情報の取得

/sys ディレクトリは、システムのハードウェア構成に関する詳細情報を提供します。たとえば、システム上のCPUやメモリ、ストレージ、USBデバイスの状態を確認する際に利用されます。また、PCIバスに接続されたデバイスの詳細な情報も簡単に取得可能です。

2. デバイスドライバの設定変更

/sys では、デバイスドライバのパラメータをリアルタイムで変更することも可能です。たとえば、カーネルモジュールの設定やデバイスのパラメータを変更してシステムの動作を調整することができます。

3. システムデバッグやチューニング

/sys/kernel ディレクトリ内にあるカーネルの情報やデバッグオプションを使用して、システムのパフォーマンスや挙動を分析することが可能です。特にシステムのパフォーマンスを向上させたい場合や、異常動作の原因を追跡するために役立ちます。

/sys の利点

1. 動的な情報の提供

/sys ディレクトリは動的に情報を生成する仮想ファイルシステムであり、システムのハードウェア状態やカーネル情報をリアルタイムで確認できるため、システム管理者や開発者にとって非常に便利です。

2. カーネルとユーザ空間のインターフェース

/sys は、カーネルとユーザ空間の間のインターフェースを提供しており、ユーザは簡単にカーネルの設定やデバイス情報にアクセスし、操作することが可能です。これは、システムの監視や調整を素早く行う上で重要な役割を果たします。

3. 高い柔軟性

/sys ディレクトリは、デバイスドライバやハードウェアに関する設定変更を柔軟に行えるため、システムのパフォーマンスチューニングやトラブルシューティングに役立ちます。

/proc との違い

/sys と似た役割を持つディレクトリに /proc がありますが、/proc が主にプロセスやカーネルの動作に関する情報を提供するのに対し、/sys は主にハードウェアデバイスやそのドライバに関する情報を提供します。/proc はシステムの状態に関する動的な情報を提供する一方で、/sys はシステムのハードウェアとカーネルモジュールの設定に特化しています。

まとめ

/sys ディレクトリは、Linuxシステムにおいてハードウェアデバイスやカーネルモジュールの設定、情報提供において非常に重要な役割を果たしています。仮想ファイルシステムとして、システムの構成や動作にリアルタイムでアクセスできるため、システムの監視やパフォーマンスチューニング、デバイスドライバの設定変更に欠かせません。システム管理者や開発者にとって、/sys ディレクトリはカーネルとハードウェアとのインタラクションを理解するための強力なツールとなります。