Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 549

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Large Disk HOWTO: Il limite dei 65535 cilindri in Linux</TITLE>
 <LINK HREF="Large-Disk-HOWTO-13.html" REL=next>
 <LINK HREF="Large-Disk-HOWTO-11.html" REL=previous>
 <LINK HREF="Large-Disk-HOWTO.html#toc12" REL=contents>
</HEAD>
<BODY>
<A HREF="Large-Disk-HOWTO-13.html">Avanti</A>
<A HREF="Large-Disk-HOWTO-11.html">Indietro</A>
<A HREF="Large-Disk-HOWTO.html#toc12">Indice</A>
<HR>
<H2><A NAME="s12">12. Il limite dei 65535 cilindri in Linux</A></H2>

<P>La chiamata <CODE>HDIO_GETGEO</CODE> memorizza il numero dei cilindri
in una variabile di tipo short.
Questo vuol dire che se si hanno pi&ugrave; di 65535 cilindri il loro valore
verr&agrave; troncato e (per una tipica configurazione SCSI com 1MiB di cilindri)
un disco da 80 GiB apparir&agrave; come uno da 16 GiB.
Una volta riconosciuto tale problema &egrave; facile evitarlo.
<H2><A NAME="verylarge"></A> <A NAME="ss12.1">12.1 Problemi dei controller IDE con dischi di dimensioni superiori ai 34 GB</A>
</H2>

<P>I dischi superiori ai 33.8 GB non sono utilizzabili con i kernel 
precedenti alla versione 2.3.21.
Appresso si riportano i dettagli.
Ipotizziamo l'acquisto di un nuovo disco IBM-DPTA-373420 con una
capacit&agrave; di 66835440 settori (34.2 GB).
I kernel ante 2.3.21 riporterebbero una dimensione di 769*16*63 = 775152
settori (0.4 GB) che &egrave; una cosa spiacevole.
Se fornissimo i parametri hdc=4160,255,63 da linea di comando
non otterremmo alcun effetto - tale valori sarebbero ignorati.
Ma cosa succede? La funzione idedisk_setup() utilizza la geometria
fornita dal disco (che &egrave; 16383/16/63) e sovrascrive i
valori specificati dall'utente da linea di comando che vengono
utilizzati solo per impostare la geometria da passare al BIOS.  
La funzione current_capacity() o idedisk_capacity() ricalcola
il numero dei cilindri come 66835440/(16*63)=66305 poich&egrave;
tale valore &egrave; memorizzato in una variabile short diviene
769.Fino a quando lba_capacity_is_ok() non distrugge id->cyls
ogni sua chiamata successiva riporter&agrave; il valore falso,
di conseguenza la capacit&agrave; del disco diviene 769*16*63.
&Egrave; disponibile un aggiornamento per diverse versioni del kernel.
Una "patch" per la versione 2.0.38 pu&ograve; esere trovata presso:
<A HREF="ftp://ftp.us.kernel.org/pub/linux/kernel/people/aeb/">ftp.kernel.org</A>.
Una "patch" per la versione 2.2.12 pu&ograve; essere trovata presso:
<A HREF="http://www.uwsg.indiana.edu/hypermail/linux/kernel/9910.2/0636.html">www.uwsg.indiana.edu</A>
(potrebbero essere necessarie delle modifiche per eliminare i delimitatori
del linguaggio html).
I kernel della serie 2.2.14 gestiscono tali dischi.
La serie 2.3.* gestisce questi dischi a partire dalla versione 2.3.21.
&Egrave; possibile "risolvere" il problema a livello hardware utilizzando un 
<A HREF="Large-Disk-HOWTO-11.html#jumperbig">ponticello</A> (jumper) per impostare la dimensione di 33.8 GB.
In molti casi sar&agrave; necessario un aggiornamento del 
<A HREF="Large-Disk-HOWTO-4.html#biosupgrades">BIOS</A>
se si vuole utilizzare tali dischi come dischi d'avvio del sistema.
<HR>
<A HREF="Large-Disk-HOWTO-13.html">Avanti</A>
<A HREF="Large-Disk-HOWTO-11.html">Indietro</A>
<A HREF="Large-Disk-HOWTO.html#toc12">Indice</A>
</BODY>
</HTML>