2006年09月15日現在
NEC提供udevルール設定に関する詳細情報 (Red Hat Enterprise Linux v.4 版)

<目次>


■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のバージョン番号)


■NEC提供のudevルール サンプルについての詳細 ↑UP

参考:NEC提供udevルール設定手順(Red Hat Enterprise Linux v.4 版)」 で説明したudevルール サンプル(以下、「本サンプル」と記述します)の設定についての詳細は以下のとおりです。

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

本サンプルを設定することにより、/dev/scsi配下に以下のようなデバイスファイルが作成されます。 (説明の便宜上、色分けをしています。)

    /dev/scsi/0000b02s01f0/bus0/20010000138402a0/lun0/disc
    /dev/scsi/0000b02s01f0/bus0/20010000138402a0/lun0/part1
    /dev/scsi/0000b02s01f0/bus0/20010000138402a0/lun0/part2
    /dev/scsi/0000b02s01f0/bus0/20010000138402a0/lun0/part3
           
これらのファイルの命名規則は以下のとおりです。

  • 0000b02s01f0
    ホストバスアダプタ(HBA)が接続されているPCIのパス番号です。内容は以下の とおりです。
    • 0000: PCIドメイン番号
    • b02 : PCIバス番号(bはPCIバス番号を示す区切り用文字)
    • s01 : PCIスロット番号(sはPCIスロット番号を示す区切り用文字)
    • f0 : PCIファンクション番号(fはPCIファンクション番号を示す区切り用文字)
  • bus0
    ホストバスアダプタ(HBA)内バス(=チャネル)番号
  • 20010000138402a0
    ディスク装置側のWWPN(World Wide Port Name)
  • lun0
    LUN
  • disc
    装置自体のデバイスファイル
  • part1
    パーティションのデバイスファイル(下線部はパーティション番号を示す)

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

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

     # cd /dev/scsi/0000b02s01f0/bus0/20010000138402a0/lun0
     # ls -l
     lrwxrwxrwx  1 root root 18 11月 29 15:49 disc -> ../../../../../sdc
     lrwxrwxrwx  1 root root 19 11月 30 10:17 part1 -> ../../../../../sdc1
     lrwxrwxrwx  1 root root 19 11月 30 10:17 part2 -> ../../../../../sdc2
     lrwxrwxrwx  1 root root 19 11月 30 10:17 part3 -> ../../../../../sdc3
           

udevルール サンプル設定解除手順

  1. システム全体について関係するデバイスファイル名を設定している箇所等について、 udevで作成したデバイスファイル名へ変更している部分を、カーネルが作成したデバイスファイル名 (/dev/sdxx)に戻す。

    <例>

    /etc/fstabの記述において、udevで作成したデバイスファイル名を設定している部分を、 カーネルが作成したデバイス名に戻す。

    (設定を戻す前)
        /dev/scsi/0000b02s01f0/bus0/20010000138402a0/lun2/part1 /mnt/test ext3 defaults 0 0  
                     ↓
    (設定を戻した後)
        /dev/sdc1 /mnt/test ext3 defaults 0 0  

  2. パッケージをアンインストールする。
    # rpm -e udev-fcname-1-0

  3. システムをリブートする。
    # reboot


補足事項


注意事項

  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を指定して実行してください。
戻る ↑UP