<!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: Conclusioni</TITLE> <LINK HREF="Large-Disk-HOWTO-10.html" REL=next> <LINK HREF="Large-Disk-HOWTO-8.html" REL=previous> <LINK HREF="Large-Disk-HOWTO.html#toc9" REL=contents> </HEAD> <BODY> <A HREF="Large-Disk-HOWTO-10.html">Avanti</A> <A HREF="Large-Disk-HOWTO-8.html">Indietro</A> <A HREF="Large-Disk-HOWTO.html#toc9">Indice</A> <HR> <H2><A NAME="s9">9. Conclusioni</A></H2> <P> <!-- disk!consequences of translation --> Cosa significa tutto ciò? Per gli utenti Linux una sola cosa: che devono verificare che LILO e <CODE>fdisk</CODE> utilizzino la geometria corretta. Per <CODE>fdisk</CODE> la geometria `corretta' è quella utilizzata dagli altri sistemi operativi installati sullo stesso disco mentre per LILO è quella che permette un'interazione senza errori con il BIOS in fase di inizializzazione (di solito i due aspetti coincidono). <P>Come rileva la geometria <CODE>fdisk</CODE>? Interroga il kernel, utilizzando la funzione ioctl.h <CODE>HDIO_GETGEO</CODE>. L'utente è tuttavia in grado di forzare la geometria in modo interattivo o da linea di comando. <P>Come rileva la geometria LILO? Interroga il kernel utilizzando la ioctl <CODE>HDIO_GETGEO</CODE>. Tuttavia l'utente può forzare la geometria utilizzando l'opzione `<CODE>disk=</CODE>' nel file <CODE>/etc/lilo.conf</CODE> (cfr lilo.conf(5)). È possibile fornire a LILO l'opzione <CODE>linear</CODE> in modo da memorizzare nella mappa dei file i valori della LBA invece dei CHS e recupererà la geometria da utilizzare in fase di avvio mediante la funzione 8 dell'INT 13 per richiedere la geometria del disco. <P>Com'è in grado di rispondere il kernel? Bene, prima di tutto, l'utente può aver specificato una geometria esplicita fornendo le opzioni `<CODE>hda=</CODE><I>cyls</I><CODE>,</CODE><I>heads</I><CODE>,</CODE><I>secs</I>' al kernel da riga di comando (cfr. bootparam(7)), probabilmtente di persona od indicando al "boot loader" di fornire tali valori al kernel. Per esempio, si può indicare a LILO di fornire tali informazioni opzionali aggiungendo una riga del tipo `<CODE>append = "hda=</CODE><I>cyls</I><CODE>,</CODE><I>heads</I><CODE>,</CODE><I>secs</I><CODE>"</CODE>' in <CODE>/etc/lilo.conf</CODE> (cfr. lilo.conf(5)). D'altrocanto il kernel è in grado di congetturare una geometria utilizzando possibilmente i valori ottenuti dal BIOS o dai dispositivi hardware. <P>È possibile (a partire dalla versione 2.1.79) cambiare i valori della geometria congetturata dal kernel utilizzando il filesystem <CODE>/proc</CODE>. Per esempio: <BLOCKQUOTE><CODE> <PRE> # sfdisk -g /dev/hdc /dev/hdc: 4441 cylinders, 255 heads, 63 sectors/track # cd /proc/ide/ide1/hdc # echo bios_cyl:17418 bios_head:128 bios_sect:32 > settings # sfdisk -g /dev/hdc /dev/hdc: 17418 cylinders, 128 heads, 32 sectors/track # </PRE> </CODE></BLOCKQUOTE> <H2><A NAME="ss9.1">9.1 Calcolo dei parametri di LILO</A> </H2> <P>Qualche volta è utile impostare una precisa geometria da riga di comando: `<CODE>hda=</CODE><I>cyls</I><CODE>,</CODE><I>heads</I><CODE>,</CODE><I>secs</I>'. Quasi sempre si vuole un valore di <I>secs</I>=63, lo scopo di fornire tale valore è quello di specificare il valore <I>heads</I> (valori ragionevoli in questo periodo sono <I>heads</I>=16 e <I>heads</I>=255). Quali valori si potrebbero specificare per <I>cyls</I>? Quei valori che forniranno la capacità totale corretta di C*H*S settori. Per esempio, per un drive con 71346240 settori (36529274880 byte) si potrebbe calcolare C come 71346240/(255*63)=4441 (usando, e.g., il programma <CODE>bc</CODE>) e fornire quindi come parametri di avvio: <CODE>hdc=4441,255,63</CODE>. Come si può stabilire la capacità totale corretta? Per esempio: <BLOCKQUOTE><CODE> <PRE> # hdparm -g /dev/hdc | grep sectors geometry = 4441/255/63, sectors = 71346240, start = 0 # hdparm -i /dev/hdc | grep LBAsects CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=71346240 </PRE> </CODE></BLOCKQUOTE> indica due modi per stabilire il numero totale si settori pari a 71346240. I messaggi del kernel: <BLOCKQUOTE><CODE> <PRE> # dmesg | grep hdc ... hdc: Maxtor 93652U8, 34837MB w/2048kB Cache, CHS=70780/16/63 hdc: [PTBL] [4441/255/63] hdc1 hdc2 hdc3! hdc4 < hdc5 > ... </PRE> </CODE></BLOCKQUOTE> riportano (perlomeno) 34837*2048=71346176 settori e 70780*16*63=71346240 settori (almeno). In questo caso il secondo valore è quello corretto ma in generale entrambi sono arrotondati per difetto. Questo è un buon modo per definire in maniera approssimata le dimensioni del disco quando <CODE>hdparm</CODE> non è disponibile. Non assegnate mai a <I>cyls</I> un valore troppo grande! Nel caso di dischi SCSI il numero preciso dei settori è indicato dai messaggi forniti dal kernel all'avvio: <BLOCKQUOTE><CODE> <PRE> SCSI device sda: hdwr sector= 512 bytes. Sectors= 17755792 [8669 MB] [8.7 GB] </PRE> </CODE></BLOCKQUOTE> (MB e GB sono arrotondati, non per difetto, e in `notazione binaria'). <P> <HR> <A HREF="Large-Disk-HOWTO-10.html">Avanti</A> <A HREF="Large-Disk-HOWTO-8.html">Indietro</A> <A HREF="Large-Disk-HOWTO.html#toc9">Indice</A> </BODY> </HTML>