2006年09月15日現在
Red Hat提供のudevルール設定に関する詳細情報

<目次>


■udevの概要 ↑UP

udevとは、Red Hat Enterprise Linux v.4(以下、RHEL4と記述します)で導入された、 システム上に実在する装置に対し動的なデバイス命名機能を提供するためのホットプラグサブシステムの一部です。

  • udevを利用する際には、udevルールの設定が必要です。このudevルールはユーザが自由に定義することが可能です。

  • udevによって作成されるデバイスファイルは、カーネルが作成するデバイスファイル (例:/dev/sda等)への単なるシンボリックリンクファイルです。 従って、udevのルール設定に関わらず、カーネルが作成するデバイスファイル名を直接使用することも可能です。

  • udevの機能の詳細については、以下を参照してください。
    • dev(8)、udevinfo(8)のオンラインマニュアル
      (udevinfo(8)はudev情報の検索・表示用のコマンドです。)
    • /usr/share/doc/udev-vvvディレクトリ内の各ドキュメント
      (vvvはインストールされているudevのバージョン番号)


■Red Hat提供のudevルールについての詳細 ↑UP

Red Hat提供のudevルールを利用する設定手順」 で説明したudevルールについての詳細は以下のとおりです。

デバイスファイルの命名規則

/dev/disk配下に以下のようなデバイスファイルが作成されます。 (説明の便宜上、色分けをしています。)

    /dev/disk/by-path/pci-0000:02:01.0-fc-0x20010000138402a0:0x0001000000000000
    /dev/disk/by-path/pci-0000:02:01.0-fc-0x20010000138402a0:0x0001000000000000-part1
    /dev/disk/by-path/pci-0000:02:01.0-fc-0x20010000138402a0:0x0001000000000000-part2
    /dev/disk/by-path/pci-0000:02:01.0-fc-0x20010000138402a0:0x0001000000000000-part3
           
これらのファイルの命名規則は以下のとおりです。

  • pci-0000:02:01.0
    ホストバスアダプタ(HBA)が接続されているPCIのパス番号です。内容は以下のとおりです。
    • 0000: PCIドメイン番号
    • 02 : PCIバス番号
    • 01 : PCIスロット番号
    • 0 : PCIファンクション番号
  • fc-0x20010000138402a0
    ディスク装置側のWWPN(World Wide Port Name)
  • 0x0001000000000000
    LUN(SCSI-3におけるアレイ装置用の8バイト形式のもの。ただし下位4バイトは常に0に設定される。)
  • part1
    パーティションのデバイスファイル(下線部はパーティション番号を示す)
    ※"-partx "が付与されていないデバイスファイルは、装置自体のデバイスファイルです。

上記ファイルは全て、カーネルが作成したデバイスファイル(/dev/sdxx)に対するシンボリックリンクファイルであり、 /dev/sdxxの代わりとして使用できます。 これらのシンボリックリンクファイルはシステムブート処理内での/etc/rc.sysinit 実行完了後から使用することができます。

<カーネルが作成したデバイスファイルへのリンク関係(例)>

     # cd /dev/disk/by-path
     # ls -l
     lrwxrwxrwx  1 root root  9  7月  8 00:29 pci-0000:02:01.0-fc-0x20010000138402a0:0x0001000000000000 -> ../../sdf
     lrwxrwxrwx  1 root root 10  7月  8 00:29 pci-0000:02:01.0-fc-0x20010000138402a0:0x0001000000000000-part1 -> ../../sdf1
     lrwxrwxrwx  1 root root 10  7月  8 00:29 pci-0000:02:01.0-fc-0x20010000138402a0:0x0001000000000000-part2 -> ../../sdf2
     lrwxrwxrwx  1 root root 10  7月  8 00:29 pci-0000:02:01.0-fc-0x20010000138402a0:0x0001000000000000-part3 -> ../../sdf3
           

補足事項


注意事項

  1. udevが作成したデバイスファイルは単なるシンボリックリンクファイルであるため、 カーネル内部では認識されません。
    このため、以下のファイルには、udevが作成したデバイスファイル名ではなく、 カーネルが作成したデバイスファイル名(/dev/sdxx)のみが格納されます。 (現在判明しているファイルについてのみ記載。)

    /proc/devices
    /proc/diskstats
    /proc/partitions
    /proc/swaps
    /etc/mtab

  2. udevが作成したデバイスファイルは、カーネルが作成したデバイスファイル(/dev/sdxx) の代わりに使用できます。 ただし、以下のコマンドでは、出力結果が意図するものとは異なる場合がありますのでご注意ください。

    • mount(8)コマンド
      mount(8)コマンドをオプション無しまたは"-l"オプション付きで実行した場合、 現在マウントされているファイルシステムの一覧が表示されますが、 デバイスファイル名はudevで作成した名前ではなく、カーネルが作成した名前で表示されます。
    • df(1)コマンド
      • df(1)コマンドの引数にデバイスファイルを指定せずに実行した場合、 出力結果におけるファイルシステム名はudevで作成した名前ではなく、 カーネルが作成した名前で表示されます。
      • df(1)コマンドの引数にudevで作成したデバイスファイルを指定した場合、 "df /dev"を実行した場合と同じ結果が表示され、正しい結果が表示されません。
        このため、udevで作成したデバイスファイルのシンボリックリンク先である、 カーネルが作成したデバイス名(/dev/sdxx)を "ls -l" コマンド等で特定し、 df(1)コマンドの引数に/dev/sdxxを指定して実行してください。
    • iostat(1)コマンド
      • iostat(1)コマンドの引数にデバイスファイル名を指定せずに実行した場合、 出力結果におけるデバイス名はudevで作成した名前ではなく、 カーネルが作成した名前で表示されます。
      • iostat(1)コマンドの引数にudevで作成したデバイスファイル名を指定した場合、 出力結果にデバイスの統計情報が表示されません。
        このため、 udevで作成したデバイスファイルのシンボリックリンク先である、 カーネルが作成したデバイス名(/dev/sdxx)を "ls -l" コマンド等で特定し、 iostat(1)コマンドの引数に/dev/sdxxを指定して実行してください。
  3. Red Hat提供のudevルールで生成されたデバイスファイル名は、":"(コロン)を含みます。このため、 以下の点にご注意ください。

    • mount(8)コマンド
      udevで作成したデバイスファイルを指定してファイルシステムのマウントを行う際に、 "-t"オプションを指定せずにmount(8)コマンドを実行した場合、 mount(8)コマンドはデバイスファイル名に含まれる":"(コロン)をNFSマウントの記述形式と認識するため、 マウントに失敗します。
      udevで作成したデバイスファイルを指定してファイルシステムのマウントを行う場合は、 必ず"-t"オプションにてマウントするファイルシステムタイプの指定を行ってください。
戻る ↑UP