25.3. 永続的な命名

オペレーティングシステムはストレージデバイスへのアクセスに使用するパスを参照してそのデバイスへの I/O を発行します。 SCSI デバイスの場合、 パスは次から構成されます。
  • ホストのバスアダプターの PCI 識別子 (HBA)
  • その HBA 上のチャネル番号
  • リモートの SCSI ターゲットのアドレス
  • 論理ユニット番号 (LUN)
このパスに基づいたアドレスは永続的ではありません。 システムが再構成されると (本ガイドに記載されているようなオンラインによるシステムの再構成や、 シャットダウン - 再構成 - 再起動の順序で行われる再構成など) アドレスは変更になる可能性があります。 また、 物理的な再構成が行われなかった場合でも、 システムの起動やバスの再スキャンでの検出プロセスで発生するタイミングの変化によりパスの識別子が変更される可能性があります。
オペレーティングシステムでは、 ストレージデバイスへのアクセスパスを表すのに永続的ではない名前がいくつか提供されます。 /dev/sd 名や major:minor 番号などがこれに該当します。 また、 /dev/disk/by-path/ ディレクトリー内で管理されているシムリンクも永続的ではありません。 シムリンクはパス識別子から現在の /dev/sd 名へのマッピングを行います。 たとえば、 ファイバーチャネルデバイスなら、 PCI 情報と Host:BusTarget:LUN 情報は次のように表示されます。
pci-0000:02:0e.0-scsi-0:0:0:0 -> ../../sda
iSCSI デバイスの場合は、 by-path/ の名前によりターゲット名とポータル情報から sd 名へのマッピングが行われます。
一般的には、 アプリケーションにこうしたパスベースの名前を使用させるのは適切とは言えません。 パスが参照するストレージデバイスは変更される可能性があり、 間違ったデータがデバイスに書き込まれる恐れがあるためです。 パスが名前になっているような名前はマルチパスデバイスなどにも適していません。 複数あるストレージデバイスの名前を間違えてしまうことにより、 一貫性のないアクセスで意図しないデータの変更を招いてしまう可能性があるためです。
また、 パスベースの名前はシステム固有となります。 このため、 クラスター内などでデバイスへのアクセスが複数のシステムから発生した場合、 意図しないデータ変更が行われる可能性があります。
こうした理由から、デバイスの識別を目的とした永続的でシステムに依存しない方法が開発されました。 次のセクションで詳しく説明していきます。

25.3.1. WWID

World Wide Identifier (WWID) を使用するとデバイスを正確に識別することが可能です。 WWID 識別子は、 SCSI 標準で全 SCSI デバイスに必要とされるような永続的でシステムに依存しない ID となります。 すべてのストレージデバイスに対して必ず固有となり、 デバイスのアクセスに使用するパスに依存しません。
この識別子は、 Device Identification Vital Product Data (ページ 0x83) または Unit Serial Number (ページ 0x80) を取得するための SCSI Inquiry を発行することで取得することができます。 WWID から現在の /dev/sd 名へのマッピングは /dev/disk/by-id/ ディレクトリー内で管理されているシムリンクで確認できます。

例25.3 WWID

たとえば、 ページ 0x83 の識別子を持つデバイスには次があります。
scsi-3600508b400105e210000900000490000 -> ../../sda
ページ 0x80 の識別子を持つデバイスには次があります。
scsi-SSEAGATE_ST373453LW_3HW1RHM6 -> ../../sda
Red Hat Enterprise Linux では、 WWID ベースのデバイス名からそのシステム上の現在の /dev/sd 名への正しいマッピングを自動的に維持します。 デバイスへのパスが変更したり、 別のシステムからそのデバイスへのアクセスがあった場合にも、 アプリケーションはディスク上のデータ参照に /dev/disk/by-id/ を使用することができます。
1 システムから 1 デバイスへのパスが複数ある場合、 device-mapper-multipath は WWID を使って検出を行います。 次に Device-mapper-multipath/dev/mapper/3600508b400105df70000e00000ac0000 などの単一の「擬似デバイス」 を /dev/mapper/wwid 内に提示します。
multipath -l コマンドでは Host:Channel:Target:LUN/dev/sd 名、 major:minor 番号などの永続的ではない識別子が表示されます。
3600508b400105df70000e00000ac0000 dm-2 vendor,product 
[size=20G][features=1 queue_if_no_path][hwhandler=0][rw] 
\_ round-robin 0 [prio=0][active] 
 \_ 5:0:1:1 sdc 8:32  [active][undef] 
 \_ 6:0:1:1 sdg 8:96  [active][undef]
\_ round-robin 0 [prio=0][enabled] 
 \_ 5:0:0:1 sdb 8:16  [active][undef] 
 \_ 6:0:0:1 sdf 8:80  [active][undef]
Device-mapper-multipath では、 WWID に基づく各デバイス名からシステム上の該当 /dev/sd 名への正しいマッピングが自動的に維持されます。 こうした名前はパスの変更後も永続的となるため、 別のシステムからそのデバイスへのアクセスが行われた場合でも一貫性が保たれます。
user_friendly_names 機能を使用すると (device-mapper-multipath の機能)、 WWID は /dev/mapper/mpathn の形式の名前にマッピングされます。 デフォルトでは、 このマッピングは /etc/multipath/bindings ファイル内で維持されます。 このファイルが維持されている限り mpathn の名前は永続的となります。

重要

user_friendly_names を使用する場合、クラスターで一貫した名前を取得するために追加の手順を行う必要があります。DM Multipath 設定管理 の「クラスター内で一貫したマルチデバイス名」の項を参照してください。
上記のようにシステムで提供される永続的な名前の他にも、 ストレージの WWID にマッピングされる独自の永続的な名前の実装を udev ルールを使っても行うことができます。 詳細については http://kbase.redhat.com/faq/docs/DOC-7319 を参照してください。