8 votes

Comment Linux détermine-t-il l'adresse SCSI d'un disque ?

Salutations,

Je travaille avec des VM invitées RHEL 5.5 sous VMware ESX 4. Lorsque je configure les disques virtuels dans les paramètres matériels de la VM, chaque disque a une adresse SCSI au format "N:M". Par exemple, "1:3" signifie le numéro d'hôte SCSI 1 et l'ID cible SCSI 3.

Lorsque je consulte les informations relatives au disque à partir du BIOS de la VM ou d'un système d'exploitation Windows, les adresses SCSI détectées correspondent aux paramètres du matériel virtuel. Mais sous Linux, les composants de l'adresse SCSI ne correspondent pas, du moins pas complètement ou de manière cohérente.

J'ai essayé les trois pilotes SCSI et SAS virtuels pris en charge et ils semblent tous être "cassés", mais de manière différente. Voici une liste des adresses matérielles virtuelles par rapport à ce qui a été détecté sous Linux avec chacun des pilotes :

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

Ma principale question est la suivante : pourquoi cela se produit-il sous Linux ? La question suivante est : comment puis-je le faire réparer ou le réparer moi-même ?

Si je devais deviner, je dirais qu'il s'agit d'un problème lié à la manière dont le noyau distribue le numéro d'hôte SCSI et dont le pilote SCSI Linux (inclus dans les outils VMware) détecte le numéro de cible SCSI. Peut-être que l'ordre dans lequel les pilotes sont chargés a également quelque chose à voir avec le problème. Je suppose que cela n'implique pas udev, mais je peux me tromper.

Toute réflexion serait appréciée. Merci de votre compréhension.

PS. Mon environnement est VMware, mais je n'ai pas besoin d'une réponse pour ces pilotes en particulier. J'imagine que ce problème peut se poser avec n'importe quel pilote SCSI sous Linux.

4voto

MikeyB Points 38317

Linux est en fait cohérent et correct, mais pas nécessairement de la manière que vous attendez.

LSI SAS : les adresses SAS sont des WWN et se voient attribuer des ID de type SCSI correspondant à l'ordre dans lequel elles sont vues. (Il s'agit d'une simplification, mais cela suffit. Pourquoi y a-t-il des lacunes de toute façon ?)

LSI SCSI & pvSCSI : le numéro d'hôte SCSI concerne UNIQUEMENT l'ordre dans lequel les pilotes de l'adaptateur hôte sont chargés par le noyau et ne concerne pas les numéros attribués par VMWare. Si vous préférez les voir dans l'autre ordre, modifiez l'ordre de chargement des pilotes. Plus probablement, modifiez leur numérotation dans le fichier /etc/modprobe.conf et redémarrez.

3voto

Steven Points 2979

Je retire le HD approprié en associant les numéros de série aux plateaux. Nous avons des boîtiers avec des LED de mauvaise qualité. Un nouveau disque est installé, disons qu'il apparaît sous le nom de /dev/sda

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

Nous notons ensuite le numéro de série. Ensuite, si un disque est défectueux, nous recherchons le numéro de série (dans notre cas, nous étiquetons le caddie physique) et nous extrayons le disque approprié.

Mais cela ne vous aide pas vraiment dans vmware.

Mais vous pouvez aussi écrire un script qui fait la même chose. Ajoutez un nouveau disque, enregistrez son uuid dans l'invité, puis consultez cette table de recherche lorsque vous souhaitez supprimer automatiquement le disque ultérieurement.

Je n'ai pas vraiment fait attention, mais je pense que mes disques vmware ont toujours été mis sous tension dans le même ordre. Vous pouvez donc être sûr que l'adresse scsi ne changera pas si vous gardez la même adresse.

1voto

Oenotria Points 516

Le système Linux moderne reconstruit le répertoire /dev au démarrage et analyse les hôtes scsi dans l'ordre dans lequel ils apparaissent sur le bus pci. Dans VMware, ce serait l'ordre dans lequel vous les ajoutez à la vm.

Si vous ajoutez un disque avec scsi 0:1 d'abord, puis un avec 2:2, dans linux ils apparaîtront comme : 0:1 et 1:2. Si vous ajoutez ensuite le disque scsi 1:3, il apparaîtra comme 2:3 au démarrage.

Il n'est pas nécessaire d'éditer quoi que ce soit sous Linux, vous pouvez changer l'ordre des hôtes scsi dans le fichier vmx :

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

L'ordre dans lequel ils apparaissent dans le fichier vmx n'a pas d'importance, seul le numéro d'emplacement pciSlotNumber compte.

éditer le vmx, et réarranger les numéros de slots pour que scsi0 ait le numéro le plus bas, scsi1 le plus bas suivant et ainsi de suite. ( Utilisez les mêmes numéros, c'est plus sûr. Sauvegardez votre vmx aussi ! )

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

Après le démarrage, ils apparaîtront dans l'ordre correct.

N'oubliez donc pas d'ajouter vos hôtes scsi à la machine virtuelle dans le bon ordre ! N'oubliez pas non plus que si vous supprimez le dernier disque d'un hôte scsi, l'hôte scsi lui-même disparaîtra au prochain redémarrage. Ainsi, si vous avez les hôtes scsi 0, 1, 2 et 3, et que vous en supprimez 2, vous n'aurez plus que les hôtes scsi 0, 1 et 2 sous linux.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X