Sophie

Sophie

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

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: Linux e il limite degli 8 GiB dei controller IDE</TITLE>
 <LINK HREF="Large-Disk-HOWTO-12.html" REL=next>
 <LINK HREF="Large-Disk-HOWTO-10.html" REL=previous>
 <LINK HREF="Large-Disk-HOWTO.html#toc11" REL=contents>
</HEAD>
<BODY>
<A HREF="Large-Disk-HOWTO-12.html">Avanti</A>
<A HREF="Large-Disk-HOWTO-10.html">Indietro</A>
<A HREF="Large-Disk-HOWTO.html#toc11">Indice</A>
<HR>
<H2><A NAME="s11">11. Linux e il limite degli 8 GiB dei controller IDE</A></H2>

<P>Il driver IDE di Linux ricava la geometria e la capacit&agrave; di un disco
(e molte altre cose) utilizzando una richiesta ATA IDENTIFY.
<P>Fino a poco tempo fa il driver non accettava il valore di lba_capacity
restituito se questo era maggiore del 10% rispetto alla capacit&agrave;
calcolata come prodotto di C<CODE>*</CODE>H<CODE>*</CODE>S.
Ci&ograve; nonostante grazie ad accordi tra i produttori di dischi IDE di grandi dimensioni
(quelli con pi&ugrave; di 16514064 settori) forniscono i valori:
C=16383, H=16, S=63 per un totale di 16514064 settori (7.8 GB)
indipendentemente dalla loro dimensione reale che forniscono alla lba_capacity.
<P>I kernel pi&ugrave; recenti (2.0.34, 2.1.90) conoscono il problema e si comportano di
conseguenza. Se avete un kernel datato che vede solamente
i primi 8 GB di un disco pi&ugrave; grande, e non volete aggiornarlo, provate a cambiare la
funzione <CODE>lba_capacity_is_ok</CODE> in <CODE>/usr/src/linux/drivers/block/ide.c</CODE> come indicato:
<BLOCKQUOTE><CODE>
<PRE>
  
       static in lba_capacity_is_ok (struct hd_driveid *id) {
               id->cyls = id->lba_capacity / (id->heads * id->sectors);
               return 1;
       }
</PRE>
</CODE></BLOCKQUOTE>

Per fare un aggiornamento meno brutale utilizzate il kernel 2.1.90.
<P>
<H2><A NAME="ss11.1">11.1 Complicazioni del BIOS </A>
</H2>

<P>Come gi&agrave; detto i dischi di grandi dimensioni forniscono la
geometria C=16383, H=16, S=63 indipendentemente dalle
dimensioni reali, mentre la dimensione reale &egrave; indicata
dal valore della LBAcapacity.
Alcuni BIOS non la riconoscono, e traslano il 16383/16/63
in una terna con meno cilindri e pi&ugrave; testine,
per esempio 1024/255/63 o 1027/255/63. Cos&igrave;, il kernel
non deve solo riconoscere la geometria 16383/16/63 ma
anche quella generata da tali BIOS.
Dal kernel 2.2.2 questa operazione di riconoscimento funziona in modo corretto
(prendendo dal BIOS i valori H e S e calcolando C =capacit&agrave;/(H*S)).
Di norma questo problema si risolve impostando nei parametri del BIOS
il disco come Normal (o, ancor meglio a None, non fornendo nessuna indicazione al BIOS).
Se questa strada non &egrave; percorribile perch&eacute; dovete fare il boot da questo disco oppure
avete una partizione DOS/Windows, e non &egrave; possibile aggiornare la versione del kernel alla 2.2.2
o superiori, passate al kernel i parametri durante il boot.
<P>Se il BIOS riporta la geometria 16320/16/63 ci&ograve; &egrave; fatto
per ottenere dopo la traduzione la terna 1024/255/63. 
<P>Qui c'&egrave; un ulteriore problema. Se il disco &egrave; stato partizionato
usando una geometria traslata il kernel, durante la fase di avvio,
potrebbe vedere tale geometria utilizzata nella tabella delle partizioni e
riportare: <CODE>hda: [PTBL] [1027/255/63]</CODE>.
Questa &egrave; una brutta faccenda perch&egrave; ora il disco e di soli 8.4
GB. La versione 2.3.21 ha corretto questo problema tuttavia il passaggio
dei parametri durante la fase di avvio pu&ograve; essere d'aiuto.
<P>
<H2><A NAME="ss11.2">11.2 Impostare il numero delle testine per mezzo dei ponticelli (Jumper)</A>
</H2>

<P>Molti dischi hanno dei ponticelli che permetto di selezionare una geometria a 15 
o a 16 testine. La configurazione predefinita &egrave; quella a 16 testine.
A volte entrambe le geometrie indirizzano lo stesso numero di settori
altre quella a 15 testine ne indirizza un numero inferiore.
C'&egrave; una buona ragione come spiega Petri Kaukasoina per spiegare queste due opzioni:
`Ho impostato un disco IBM Deskstar 16 GP (modello IBM-DTTA-351010) da 10.1 GiB 
per utilizzare 16 testine come da configurazione predefinita ma il mio vecchio PC (con BIOS AMI)
non si avviava cos&igrave; ho dovuto spostare il ponticello sull'opzione che d&agrave; 15 testine.
hdparm -i riporta RawCHS=16383/15/63 e LBAsects=19807200. Io utilizzo una configurazione 20960/15/63
per poter sfruttare tutta la capacit&agrave; del disco.'
Per ulteriori informazioni su come ponticellare tali dischi visitate il sito:
<A HREF="http://www.storage.ibm.com/techsup/hddtech/hddtech.htm">http://www.storage.ibm.com/techsup/hddtech/hddtech.htm</A>.
<H2><A NAME="ss11.3">11.3 Ridurre la capacit&agrave; totale di un disco mediante l'uso dei ponticelli</A>
</H2>

<P>Molti dischi hanno dei ponticelli che permettono di mostrare 
le dimensioni del disco pi&ugrave; piccole di quelle che sono.
&Egrave; un po' stupido a farsi e probabilmente nessun utente Linux vorrebbe
mai utilizzare tale espediente ma alcuni BIOS non riescono a gestire
i dischi di grandi dimensioni andando in "crash".
La soluzione pi&ugrave; comune &egrave; quella di non far vedere il disco
all'avvio al BIOS, ma &egrave; possibile farlo solo se il disco non  &egrave;
quello di avvio.  
<P>Il primo limite grave era il limite di 4096 cilindri (che corrisponde,
con 16 testine e 63 settori/traccia a 2,11 GB).
Per esempio, il disco Fujitsu MPB3032ATU da 3.24 GB ha la geometria predefinita da
6704/15/63 ma pu&ograve; essere poticellato per fornire una geometria 4092/16/63 e riportare
di conseguenza una LBAcapacity di 4124736 settori, in questo modo il
sistema operativo non pu&ograve; congetturare che la dimensione reale &egrave; pi&ugrave; grande.
In questi casi (con un BIOS che si "schianta" se riconosce la reale dimensione
del disco &egrave; necessario ricorrere al ponticello) &egrave; necessario informare Linux
sulle dimensioni del disco fornendo i parametri all'avvio.
<P>Questo &egrave; un caso sfortunato. Molti dischi possono essere "ponticellati" in modo 
da sembrare dischi da 2 GB e fornire quindi una geometria ridotta tipo 4092/16/63
o 4096/16/63 ma in grado di fornire il valore corretto della LBAcapacity.
Tali dischi sono in grado di lavorare bene e di utilizzare la capacit&agrave; totale
con Linux indipendentemente dalle impostazioni dei ponticelli.
<P>
<A NAME="jumperbig"></A> 
Un limite pi&ugrave; recente &egrave; quello dei 
<A HREF="Large-Disk-HOWTO-12.html#verylarge">33.8 GB</A>.
I kernel di Linux precedenti alla versione 2.3.21 devono essere aggiornati 
per poter gestire dischi IDE di dimensioni superiori a queste.
Alcuni dischi che superano tale limite possono essere ponticellati per 
sembrare dei dischi da 33.8 GB.
Per esempio l'IBM Deskstar (DPTA-353750) da 37.5 GB pu&ograve; essere ponticellato
per sembrare un disco da 33.8 GB e fornire la geometria 16383/16/63 come
un qualsiasi altro disco di grandi dimensioni, ma la LBAcapacity di 66055248
(che corrisponde a 65531/16/63 o 4111/255/63).
Sfortunatamente i ponticelli sembrano essere troppo efficaci - non influenzano
solo ci&ograve; che il drive fornisce al sistema ma anche le operazioni di
I/O:
Petr Soucek comunica che questi parametri non sono d'aiuto nel caso di dischi
d'avvio - ponticellando tali dischi ogni accesso ai settori oltre il settore
66055248 causa un errore di I/O.
Tuttavia con schede madri che montino il BIOS Award 4.51PG tali dischi possono
essere utilizzati come dischi d'avvio ed inoltre in tutta la loro capacit&agrave;.
Vedi anche: 
<A HREF="http://www.storage.ibm.com/techsup/hddtech/bios338gb.htm">the BIOS 33.8 GB limit</A>.
<P>
<P>
<HR>
<A HREF="Large-Disk-HOWTO-12.html">Avanti</A>
<A HREF="Large-Disk-HOWTO-10.html">Indietro</A>
<A HREF="Large-Disk-HOWTO.html#toc11">Indice</A>
</BODY>
</HTML>