web-dev-qa-db-ja.com

LinuxはディスクのSCSIアドレスをどのように決定しますか?

ご挨拶、

VMware ESX 4でRHEL 5.5ゲストVMを使用しています。VMハードウェア設定で仮想ディスクを構成すると、各ディスクには「N:M」の形式のSCSIアドレスがあります。たとえば、「1:3」はSCSIホスト番号1とSCSIターゲットID 3を意味します。

VMのBIOSまたはWindows OSからディスク情報を見ると、検出されたSCSIアドレス情報が仮想ハードウェア設定と一致しています。しかし、Linuxでは、SCSIアドレスコンポーネントが一致していません。少なくとも完全にまたは一貫性がありません。

私は3つのサポートされている仮想SCSIとSAS=ドライバを試してみましたが、それらはすべて「壊れている」ようですが、さまざまな方法で。仮想ハードウェアアドレスとLinuxで検出されたもののリスト各ドライバーで:

Driver    vHW Addr  Linux Addr
--------  --------  ----------
LSI SAS   0:0       0:0
LSI SAS   0:3       0:1
LSI SAS   0:6       0:2
LSI SCSI  1:1       2:1
LSI SCSI  1:4       2:4
LSI SCSI  1:7       2:7
pvSCSI    2:2       1:2
pvSCSI    2:5       1:5
pvSCSI    2:8       1:8

私の主な質問は、なぜこれがLinuxで起こるのですか?次の質問は、どうやって修正するか、自分で修正するかです。

私が推測するつもりなら、それはカーネルがどのようにSCSIホスト番号を配っているのか、そしてLinux SCSIドライバ(VMwareツールに含まれている)がどのようにSCSIターゲット番号を検出しているのかという問題だと思います。おそらく、ドライバーが読み込まれる順序も問題と関係があります。これにはudevが含まれないと思いますが、私は間違っている可能性があります。

どんな考えでもいただければ幸いです。ありがとう!

PS。私の環境はVMwareですが、これらのドライバーに対する具体的な答えは必要ありません。これはLinuxでのSCSIドライバの問題かもしれないと思います。

8
Chris Sears

Linuxは実際には一貫していて正しく、必ずしも期待通りではありません。

LSI SAS:SASアドレスはWWNであり、表示された順序に対応するSCSIのようなIDが割り当てられます(これは簡略化されていますが、実行されます。なぜとにかくギャップがあるのですか? ?)

LSI SCSI&pvSCSI:SCSIホスト番号は、ホストアダプタードライバーがカーネルによって読み込まれる順序にのみ関連し、VMWareが割り当てた番号には関連しません。それらを別の順序で表示する場合は、ドライバーのロード順序を切り替えます。ほとんどの場合、/ etc/modprobe.confで番号を切り替えて再起動します。

4
MikeyB

シリアル番号をトレイキャディーにマッピングして、適切なHDを削除します。 LEDの能力が低いエンクロージャがあります。/dev/sdaとして表示されると言う新しいディスク

udevadm info -q all -n /dev/sda|grep SERIAL

次に、シリアル番号を書き留めます。次に、ディスクが故障した場合は、シリアル番号(この場合は物理キャディーにラベルを付けます)を調べて、適切なディスクを取り出します。

しかし、それは実際にはVMwareの助けにはなりません。

次に、同じことを行うスクリプトを書くことができます。新しいディスクを追加し、そのuuidをゲストに記録し、後でディスクを自動的に削除する場合は、そのルックアップテーブルを調べます。

私は特に注意を払っていませんが、私のVMwareディスクは常に同じ順序で電源が入っていると思います。したがって、アドレスを同じに維持しても、scsiアドレスが変更されないことを信頼できる場合があります。

3
Steven

最新のLinuxは、起動時に/ devディレクトリを再構築し、PCIバスに表示される順序でscsi-hostsをスキャンします。 VMwareでは、それらをvmに追加する順序になります。

最初にscsi 0:1のディスクを追加し、次に2:2のディスクを追加すると、Linuxでは0:1と1:2のようになります。その後にscsi 1:3を追加すると、起動後は2:3と表示されます。

Linuxでは何も編集する必要はありません。vmxファイルでscsi-hostsの順序を変更できます。

$ grep pciSlotNumber vm.vmx
scsi0.pciSlotNumber = "16"
scsi2.pciSlotNumber = "34"
scsi1.pciSlotNumber = "35"

それらがvmxファイルに現れる順序は重要ではなく、pciSlotNumberだけです

vmxを編集し、scsi0が最小の番号、scsi1が次に小さい番号になるようにスロット番号を並べ替えます。 (同じ番号を使用してください。より安全です。vmxのバックアップも!)

scsi0.pciSlotNumber = "16"
scsi2.pciSlotNumber = "35"
scsi1.pciSlotNumber = "34"

起動後、正しい順序で表示されます。

したがって、scsi-hostsを正しい順序でvmに追加することを忘れないでください!また、scsi-Hostの最後のディスクを削除した場合、scsi-Host自体も次回の再起動で失われます。したがって、scsi-Host 0、1、2、および3があり、2を削除すると、Linuxではscsi-hosts 0、1、および2のみになります。

1
Eize Speerstra