On Sat, 21 Dec 2002, Anne Possoz wrote:

> Attached scsi disk sda at scsi0, channel 0, id 0, lun 0

D�tacher:

   # echo 'scsi remove-single-device 0 0 0 0' > /proc/scsi/scsi

Attacher:

   # echo 'scsi add-single-device 0 0 0 0' > /proc/scsi/scsi

Encore que si c'est le seul p�riph�rique du bus SCSI je d�chargerais et
rechargerais, carr�ment, le pilote SCSI concern� (p.ex. sym53c8xx), dans
la mesure o� le kernel est modulaire (initrd si on boot dessus).

> Je vois dans le log:
> SCSI device sda: -1716207616 512-byte hdwr sectors (220813 MB)

Oui.  SCSI limite � 32 bits le retour de la commande READ CAPACITY. Le
nombre de block d'un p�riph�rique disque SCSI est donc au plus de 2^32 - 1
blocks, soit avec des blocks de 512 bytes/secteur environ 2.1 TB.

Si l'on veut pousser cette limite � 4 TB, on peut utiliser des blocks de
1024 bytes/secteur avec Linux: mais on ne peut pas d�marrer dessus en
r�gle g�n�rale (limitation des BIOS SCSI).   Au del� une solution
peut-�tre d'agglom�rer plusieurs disques virtuels (LUN) via LVM p.ex.
(dans la mesure o� LVM, le block device virtuel et le fs le
supporteraient).

Une autre limitation concerne le type de commandes utilis�es: il y a des
commandes SCSI � 6 ou 10 bytes, qui limitent respectivement � 24 ou
32 bits le LBA (adresse de block) possible.

> Ce nombre n�gatif ne m'inspire pas confiance et les 220 GB ne sont qu'une
> part de la r�alit�.

Effectivement. Version du kernel, patches �ventuels appliqu�s ?

Car ici par exemple:
   SCSI device sda: 625180672 512-byte hdwr sectors (320093 MB)

(pour 320 GB)

Regardons dans la source du kernel:

schaefer@defian:/scratch/linux-2.4.19/drivers/scsi% grep -A3 'SCSI device
%s' * 2>/dev/null
sd.c:                   printk("SCSI device %s: "
sd.c-                          "%d %d-byte hdwr sectors (%d MB)\n",
sd.c-                          nbuff, rscsi_disks[i].capacity,
sd.c-                          hard_sector, (sz/2 - sz/1250 + 974)/1950);

Effectivement, si ton hardware array montre en SCSI > 2 milliards de
blocks (31 bits + signed == 32 bits), donc s'il d�passe le TB, il est
possible que cela soit `wrappe' en sign�, donc modifier ce printf ainsi:

   remplacer les %d dans cette cha�ne par %u (unsigned)

Maintenant cela est cosm�tique. Que dit fdisk sur ce disque ?

Personnellement, dans l'�tat des choses, je ne connecterais pas un disque
d�passant 1 TB (2^31 - 1 blocks @ 512) sous Linux. Le scinder en deux
unit�s logiques (LOGICAL UNIT) de 700 GB p.ex.

PS: pour l'audience: en fonction de ce qui pr�c�de et de la valeur
n�gative trouv�e, estimer la taille r�elle du p�riph�rique (et me dire le
cas �ch�ant si mes estimations de 1.4 TB sont fausses).

[ Martial: faut bien faire quelque chose plut�t que de regarder les logs
           de callsrv1 b�tement pendant des heures:->
]

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se d�sabonner aussi.

Répondre à