Y a-t-il un nombre maximum de disques durs que l'on peut connecter à une machine linux 64 bits ? Je ne me préoccupe pas de l'aspect pratique, étant donné que ma situation implique une VM.
Réponses
Trop de publicités?De ce billet de LinuxQuestions :
Linux ne fixe pas de limites arbitraires au nombre de disques durs.
De plus, à partir de ce message dans la liste de diffusion Debian :
C'est facile. Après /dev/sdz vient /dev/sdaa. Et, je viens de le tester en créant et en me connectant à 800 cibles ISCSI sur mon ordinateur portable, après /dev/sdzz vient /dev/sdaaa. :)
et cet article de blog :
Pour les lecteurs SATA et SCSI sous un noyau Linux moderne, la même chose que ci-dessus s'applique, sauf que le code pour dériver les noms fonctionne correctement au-delà de sdzzz jusqu'à (en théorie) sd suivi de 29 z !
En théorie, il existe donc des limites, mais en pratique, elles sont inatteignables.
Il existe en fait une limite au nombre de disques exposés par le sous-système SCSI abstrait de Linux, qui inclut les disques SATA et USB. En effet, les fichiers de périphériques sont marqués par des paires de numéros de périphériques majeur/mineur, et le schéma alloué au sous-système SCSI comporte cette limite implicite.
https://www.kernel.org/doc/Documentation/devices.txt
Les principaux opcodes suivants sont attribués : 8, 65 à 71, et 128 à 135, ce qui donne un total de 16 blocs alloués. L'opcode mineur est limité à 256 valeurs possibles (plage de 0 à 255). Chaque disque reçoit 16 opcodes mineurs consécutifs, le premier représentant le disque entier et les 15 suivants les partitions.
let major = number of major allocated opcodes = 16
let minor = number of minor opcodes per major opcode = 256
let parts = number of minor opcodes per disk = 16
major * (minor / parts) = 16 * (256 / 16) = 256 possible drives
J'ai déjà vu des personnes écrire 128 comme limite. Je crois que Linux a plus récemment fixé la limite à 128-135, ce qui expliquerait l'écart.
Le système de dénomination ( /dev/sdbz7
) est choisi par le userland, et non par le noyau Linux. Dans la plupart des cas, ils sont gérés par udev, eudev ou mdev (bien que dans le passé, ils aient été créés manuellement). Je ne connais pas leur système de dénomination. Ne comptez pas nécessairement sur le fait que tous les systèmes basés sur Linux nomment les périphériques de la même manière, car l'administrateur système peut modifier les politiques de dénomination des périphériques.
En Capacités et limites de la technologie RHEL suggère au moins 10000 avec un noyau assez récent (voir la ligne 'Maximum number of device paths ("sd" devices)'). Cette quantité est supérieure à celle mentionnée par @luiji-maryo car :
- S'il est configuré pour être autorisé, un appareil peut se voir attribuer un numéro majeur/mineur de manière dynamique (voir https://www.kernel.org/doc/Documentation/devices.txt pour plus de détails).
- Les numéros de périphériques mineurs de Linux peuvent être beaucoup plus grands qu'une valeur de 8 bits. .
Pour vous en convaincre, vous pouvez utiliser la fonction scsi_debug
module :
modprobe scsi_debug max_luns=10 num_tgts=128
Après une courte attente sur la distro Linux principale, vous devriez avoir 1280 disques SCSI supplémentaires. Vous pouvez utiliser
ls -l <pathtodisk>
pour voir leurs numéros de majeure/mineure.
NB (1) : les logiciels de virtualisation ont normalement des valeurs beaucoup plus faibles (de l'ordre de quelques centaines, voire moins). Limites de vSphere 6.0 ) sur le nombre maximum de contrôleurs pouvant être attachés à la VM et le nombre maximum de disques pouvant être accrochés à ces contrôleurs, il est donc peu probable que vous atteigniez les limites de Linux de cette manière.
NB (2) : Les deux BSG et SG se limitent (par l'intermédiaire de BSG_MAX_DEVS
et SG_MAX_DEVS
respectivement) jusqu'à un maximum de 32768 appareils. Même si vous n'aviez pas besoin d'entrées /dev/ pour les disques eux-mêmes, vous auriez des difficultés à envoyer des commandes SCSI plus spécialisées sans ces périphériques supplémentaires.