A    デバイスの命名規則

この付録では,次の内容について説明します。

A.1    デバイス名の変遷

Version 5.0 より前のバージョンのオペレーティング・システムでは,すぺてのデバイスは /dev ディレクトリに存在しており,表 A-1 に示すような名前が使用されていました。

表 A-1:  古いデバイス命名規則

デバイス・タイプ ディレクトリ 命名規則
汎用 /dev std,drum,kmem,mem,null,trace,tty,local
ディスク /dev rz*,ra*,re*
テープ /dev tz*,ta*
端末 /dev pty
プリンタ /dev -

オペレーティング・システムの Version 5.0 以降では,表 A-2 のように,デバイスのクラスごとに別のサブディレクトリが用意されています。

表 A-2:  Version 5.1B のデバイス命名規則

デバイス・タイプ ディレクトリ 命名規則
汎用 /dev/generic  
ディスク /dev/disk,/dev/rdisk dsk,floppy,cdrom,worm,optical
テープ /dev/tape,/dev/ntape 9trk,qic,8mm,3480,dlt,dat
端末 /dev/term serial,ptm,pts,ptm_v,pts_v
プリンタ /dev/printer lp
Logical Storage Manager (LSM) /dev/vol, /dev/rvol rootdg/root_vol, rootdg/swap_vol, rootdg/usr_vol

ディレクトリ名と実際のデバイス名は,実体を推測しやすい名前になっています。 ただし,注意が必要な例外がいくつかあります。

disk,rdisk

disk サブディレクトリは,ブロック型デバイスのノードを表しています。 rdisk サブディレクトリは,キャラクタ型デバイスのノードを表しています。

tape,ntape

tape サブディレクトリは,クローズ時にリワインドされるタイプのデバイスのノードを表しています。 ntape サブディレクトリは,クローズ時にリワインドされないタイプのデバイスのノードを表しています。

表 A-3 に,古いスタイルのデバイス名と現在のデバイス名の対応を示します。

表 A-3:  古いスタイルのデバイス名と新しいスタイルのデバイス名の対応

デバイス 古いデバイス名 新しいデバイス名
システム・ディスク,キャラクタ型デバイス /dev/rrz0a /dev/rdisk/dsk0a
システム・ディスク,ブロック型デバイス /dev/rz0a /dev/disk/dsk0a
フロッピィ・ドライブ /dev/fd0c /dev/disk/floppy0c
CD-ROM /dev/rz4c /dev/disk/cdrom0c

A.2    デバイス特殊ファイルの作成

システムをブートするたびに,システムのハードウェアが走査され,新しいデバイス特殊ファイルが自動的に作成されます。 新しいデバイスをシステムに追加した場合に,システムをリブートすることなくデバイス特殊ファイルを作成したいときは,hwmgr コマンドを使用します。 たとえば,次のコマンドを実行すると,新しいデバイスが追加されていないか SCSI バスが走査され,新しいデバイスのデバイス特殊ファイルが自動的に作成されます。

# hwmgr -scan scsi

注意

Version 5.0 のオペレーティング・システム以降では,/dev/MAKEDEV コマンドを使用してデバイス特殊ファイルを作成することはできなくなりました。

A.3    デバイス名の割り当て方法

新しいデバイスが作成されると,そのデバイスには次に利用可能なデバイス名が割り当てられます。 システムが最初にインストールされたときに,システム上に存在するデバイスを確認するために,ハードウェアがチェックされます。 ハードウェアのチェックはバス 0/ターゲット 0 から始まり,バス 0 上の次のターゲットへと続きます。 その後,チェックはバス 1 へと続き,ターゲット 0 から開始して,すべてのターゲットがチェックされます。 新しいデバイスが検出されるたびに,そのデバイスには次に利用可能なデバイス名 (0 から開始) が割り当てられます。 表 A-4 に,この割り当ての例を示します。

表 A-4:  デバイス名の割り当て

バス番号 ターゲット番号 古いデバイス名 新しいデバイス名 ワールドワイド ID
0 0 rz0 dsk0 DEC100 [脚注 13]
0 4 rz4 dsk1 DEC101
1 3 rz11 dsk2 DEC102
1 6 rz14 dsk3 DEC103
1 7 rz15 dsk4 DEC104

物理ディスクにデバイス名が割り当てられた後は,バス上での位置が変っても,そのディスクのデバイス名は変わりません。 各物理ディスクには,製造時に固有のワールドワイド識別子が付与されています。 物理ディスクを新しいデバイス名に対応付けるときに使用されるのは,このワールドワイド識別子です。 つまり,ディスクは,デバイス名が変わることなく,バス上のスロット間で移動させることができます。 このため,ディスクをあるスロットから別のスロットへ移動したとしても,同じデバイス名でこのディスクを参照できます。 表 A-4 の例で,dsk0 というディスクをバス 0/ターゲット 0 からバス 1/ターゲット 4 に移動しても,そのディスクのデバイス名はもとのままです。 以前のリリースでは,このデバイスを rz12 としてアクセスする必要がありましたが,新しいリリースではデバイス名は dsk0 のままです。 これは,デバイス名がワールドワイド識別子に結び付いており,バス上でのディスクの位置には結び付いていないためです。

デバイスに新しいデバイス名が割り当てられた後は,システムをリブートしてもデバイスの名前は変わりません。 新しいデバイスには,次に利用できるデバイス名が割り当てられます。 表 A-4 の例では,DEC100 デバイス (dsk0) がバス 0/ターゲット 0 からバス 1/ターゲット 4 に移動されたとします。 また,新しいデバイス (DEC099) が,バス 0/ターゲット 0 でシステムに追加されたとします。 表 A-5 に,システムをリブートした時点での,新しいデバイス名を示します。

表 A-5:  デバイスの移動および追加後のデバイス名割り当て

バス番号 ターゲット番号 古いデバイス名 新しいデバイス名 ワールドワイド ID
0 0 rz0 dsk5 DEC099 [脚注 14]
0 4 rz4 dsk1 DEC101
1 3 rz11 dsk2 DEC102
1 4 rz12 dsk0 DEC100
1 6 rz14 dsk3 DEC103
1 7 rz15 dsk4 DEC104

表 A-5 では,DEC100 デバイスは,別のバス/ターゲットに移動されたにもかかわらず,dsk0 というデバイス名のままであることを示しています。 新しいデバイス (DEC099) には,次に利用可能なデバイス名 (dsk5) が割り当てられています。 オペレーティング・システムからのデバイス情報の取得方法については,A.6 節を参照してください。

A.4    フル・インストレーションにおけるデバイス名の保護

フル・インストレーションを実行すると,既存のデバイス名データベースは失われます。 つまり,デバイスが検出された順に,新しいデバイス名が割り当てられます。 この新しい命名方法は,古いオペレーティング・システムで使用されていた命名方法と異なることがあります。 ただし,古い情報をフル・インストレーションの際に保存する方法があります。 この機能は,既存のデバイス名を使用するアプリケーションを,新しいバージョンのオペレーティング・システム上で使用したい場合に特に便利です。 デバイス命名データベースを保護しないと,アプリケーションが誤ったデバイスにアクセスする可能性があります。 フル・インストレーションの際にデバイス名を保護するには,次の手順を使用します。

  1. システムをシャットダウンして,コンソール・モードにします。

    # shutdown -h now
    

  2. bootdef_dev コンソール変数を調べます。

    >>> show bootdef_dev
    

    / (ルート) ファイル・システムの置かれているディスクが bootdef_dev 変数の値に設定されている場合は,フル・インストレーション・プロシージャが自動的にハードウェア・デバイス・データベースを保護するため,何もする必要はありません。 設定されていない場合は,次のステップに進みます。

  3. bootdef_dev 変数の値が / ファイル・システムの置かれているディスクに設定されていない場合は,次のコマンドで設定します。

    >>> set bootdef_dev dka0
    

  4. フル・インストレーションを実行します。 フル・インストレーション・プロシージャは,以前のバージョンのオペレーティング・システムのデバイス・データベースを保護します。 この保護は,bootdef_dev 変数で指定されたデバイスをマウントし,必要なデバイス・データベース・ファイルを保存することによって行われます。 これらのファイルは,後で新しく作成されたシステム上に置かれます。 つまり,新しいシステムのデバイスは,以前のインストレーションの場合と全く同じようにマッピングされます。

以前のインストレーションのデバイス名を引き継ぎたくない場合は,bootdef_dev コンソール変数に " " (二重引用符) を設定します。

A.5    アップデート・インストレーションでのデバイス名

アップデート・インストレーション・プロシージャは,古いデバイス名を,新しいデバイス名にマッピングします。 このため,新しいシステムには,古い rz* 形式のデバイスと新しい dsk* 形式のデバイスの両方が存在します。 古いデバイス名から新しいデバイス名へのマッピングは,/etc/dfsl.dat ファイルにあります。 このマッピングは,システムのブートのたびに動的に決定されます。 これは,新しいデバイス名が変わることはありませんが,古いデバイス名はバスとターゲットの位置に従って変わるためです。 このため,ディスクをあるバスから別のバスへ移動した場合,古いデバイス名は変わりますが,新しいデバイス名は変わりません。 デバイスの命名規則についての詳細は,表 A-2 を参照してください。

注意

/etc/dfsl.dat ファイルは変更しないでください。 このファイルは,カーネルがシステム・デバイスにアクセスするために使用するデータベースです。 このファイルを変更すると,デバイスが動作しなくなることがあります。

Version 5.1B より前のリリースでは,カーネルは同じデバイスを複数回マウントすることはありませんでした。 たとえば,以前のリリースでは,/dev/rz0a/mnt にマウントしてから,/dev/rz0a/mnt1 にマウントすることはできませんでした。 この制限は,新しいリリースでも適用されます。 つまり,古いデバイス名をマウントしている状態で,新しいデバイス名を使用して同じデバイスをマウントしようとすると,このマウントは失敗します。 たとえば,/dev/rz0a/dev/disk/dsk0a が同じ物理ディスクにマッピングされている場合,/dev/rz0a/dev/disk/dsk0a を同時にマウントすることはできません。

A.6    デバイスの詳細情報の取得

ハードウェアの状態に関する情報を取得するには,次のようにします。