1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660
|
Linux Partition HOWTO
Kristan Koehntopp, kris@koehntopp.de
v2.4, 3 November 1997
Questo Mini-HOWTO spiega come pianificare e disporre lo spazio disco
per il vostro sistema Linux. Parla di hardware, partizioni, dimensione
dello spazio di swap e considerazioni di posizionamento, file system,
tipi di file system e argomenti collegati. L'intenzione quella di
dare un po' di conoscenza generale, non delle procedure. Traduzione
di Andrea Manzini <linux@netbusiness.it>
1. Introduzione
1.1. Di cosa si tratta ?
Questo un testo Linux Mini-HOWTO. Un Mini-HOWTO un piccolo testo
che spiega qualcosa collegato all'installazione di Linux e alla sua
manutenzione in forma esplicativa. mini, perch o il testo o
l'argomento che discute sono troppo brevi per un vero HOWTO o
addirittura un libro. Un HOWTO non una guida di riferimento: per
questo esistono le pagine man.
1.2. Cosa contiene ? E altri documenti HOWTO collegati
Questo particolare Mini-HOWTO spiega come pianificare e suddividere lo
spazio disco per il vostro sistema Linux. Parla di hardware,
partizioni, dimensione dello spazio di swap e considerazioni di
posizionamento, file system, tipi di file system e argomenti
collegati. L'intenzione quella di dare un po' di conoscenza
generale, cos in questo testo parleremo soprattutto di principi e non
di strumenti.
In teoria, questo documento dovrebbe essere letto prima
dell'installazione, ma questo risulta difficile per molte persone; i
principianti hanno ben altri problemi che non l'ottimizzazione del
disco. Cos voi siete probabilmente tra quelli che hanno appena finito
una installazione Linux e adesso starete pensando a come ottimizzare
questa installazione o come evitare certe sviste nella prossima. Bene,
preparatevi a cancellare e a rifare la vostra installazione quando
avrete finito di leggere questo testo. :-)
Questo Mini-HOWTO si limita alla pianificazione e alla disposizione
dello spazio su disco nella maggior parte dei casi. Non discute
dell'uso di fdisk, LILO, mke2fs o programmi di backup. Ci sono altri
HOWTO che trattano questi problemi. Fate riferimento all'indice degli
HOWTO per informazioni sugli HOWTO disponibili. Nell'indice ci sono
anche le informazioni su come e dove procurarsi i documenti HOWTO.
Per imparare a stimare le diverse dimensioni e velocit richieste
dalle differenti parti del file system, vedere il mini-HOWTO "Linux
Multiple Disks Layout", di Gjoen Stein <gjoen@nyx.net>.
Per istruzioni e considerazioni su dischi con pi di 1024 cilindri,
vedere il mini-HOWTO "Linux Large Disk", di Andries Brouwer
<aeb@cwi.nl>.
Per istruzioni sulla limitazione dell'uso di spazio su disco per
utente (quotas), vedere il mini-HOWTO "Linux Quota", di Albert M.C.
Tam <bertie@scn.org>
Al momento, non ci sono documenti generici sul backup, ma ci sono vari
documenti con riferimenti a soluzioni specifiche di backup. Vedere il
mini-HOWTO "Linux ADSM Backup", di Thomas Koenig
<Thomas.Koenig@ciw.uni-karlsruhe.de> per istruzioni su come integrare
Linux in un ambiente di backup IBM ADSM. Vedere il mini-HOWTO "Linux
Backup with MSDOS", di Christopher Neufeld
<neufeld@physics.utoronto.ca> per informazioni circa il backup di
dischi Linux via MS-DOS.
Per istruzioni sulla scrittura e l'invio di un documento HOWTO, vedere
l'indice "the Linux HOWTO Index", di Tim Bynum <linux-
howto@sunsite.unc.edu>.
Anche scorrere nella directory /usr/src/linux/Documentation pu essere
veramente istruttivo. Leggete i file ide.txt e scsi.txt per una
informazione generale sulle caratteristiche dei driver e date
un'occhiata alla sottodirectory filesystems/.
2. Cos' una partizione ?
Poco dopo che dischi fissi furono inventati, la gente volle installare
pi di un sistema operativo, anche se disponevano di un solo disco.
Nacque cos la necessit di un meccanismo che dividesse un singolo
disco fisico in tante unit logiche. Quindi ecco cos' una partizione:
un insieme di blocchi contigui sul vostro hard disk che viene trattato
dal sistema operativo come se fosse un disco completamente autonomo e
separato.
abbastanza evidente che le partizioni non devono sovrapporsi: un
sistema operativo non sarebbe felice se un altro sistema operativo
installato sulla stessa macchina gli sovrascrivesse informazioni
importanti a causa della sovrapposizione delle due partizioni. Non ci
dovrebbe neanche essere dello spazio vuoto tra una partizione ed
un'altra, in quanto anche se non comporterebbe alcun danno,
significherebbe sprecare prezioso spazio su disco lasciandolo
inutilizzato.
Un disco non ha bisogno di essere completamente partizionato. Potete
decidere di lasciare un po' di spazio alla fine senza assegnarlo ad
alcun sistema operativo, e, successivamente, quando sar chiaro quale
userete per la maggior parte del tempo, potrete partizionare questo
spazio vuoto rimanente e metterci sopra un file system.
Le partizioni non possono essere spostate n ridimensionate senza
distruggere il file system che contengono. Il ripartizionamento quindi
comporta il backup e il ripristino di tutti i file system coinvolti
nel ripartizionamento. In effetti, molto facile fare dei pasticci
durante il ripartizionamento, cos dovreste in ogni caso fare una
copia di backup di tutto prima ancora di usare cose come fdisk.
Beh, veramente alcuni tipi di partizione che contengono alcuni tipi di
file system possono essere divisi in due senza alcuna perdita di dati
(se siete fortunati). Per esempio, esiste un programma chiamato "fips"
per splittare le partizioni MS-DOS in due per far spazio a una
partizione Linux senza dover reinstallare MS-DOS. In ogni caso, non
andreste a maneggiare queste cose senza aver prima fatto un accurato e
completo backup, vero ?
2.1. I backup sono importanti
I nastri sono molto utili per fare i backup. Sono veloci, affidabili e
facili da usare, quindi potrete effettuare il backup spesso,
preferibilmente in modo automatico e senza disagi.
Parlando di cassette: quello di cui sto parlando sono i veri nastri,
non quelle porcherie pilotate dal controller dei dischetti. Tenete in
considerazione SCSI: Linux lo supporta in modo nativo. Non occorre
caricare driver ASPI, non sprecate preziosa HMA e una volta che
l'adattatore SCSI installato, potete attaccarci anche dischi,
nastri, scanner e CD-ROM. Niente pi indirizzi I/O, acrobazie con IRQ
n master/slave e livelli PIO da abbinare.
In aggiunta: un buon adattatore SCSI fornisce alte prestazioni di I/O
senza occupare troppo la CPU. Anche durante una pesante attivit di
disco, avrete tempi di risposta molto buoni. Se intendete usare un
sistema Linux come un server USENET o se volete di entrare nel mercato
degli ISP, non pensate nemmeno di impostare un sistema senza SCSI.
2.2. Numeri e nomi di device
Il numero di partizioni di un sistema basato su Intel stato limitato
fin dall'inizio: la tabella delle partizioni era installata come parte
del settore di boot e aveva spazio solo per 4 partizioni. Queste
partizioni adesso sono chiamate partizioni primarie. Quando divenne
chiaro che la gente voleva pi partizioni nei loro sistemi, sono state
inventate le partizioni logiche. Il loro numero non limitato: ogni
partizione logica contiene un puntatore alla prossima, cos da avere
una catena potenzialmente illimitata di partizioni.
Per ragioni di compatibilit, lo spazio occupato da tutte le
partizioni logiche deve essere tenuto in conto. Se state usando
partizioni logiche, una partizione primaria viene marcata come
"partizione estesa" e il suo blocco di inizio e di fine segnano l'area
occupata dalle partizioni logiche in essa contenute. Questo implica
che lo spazio assegnato a tutte le partizioni logiche deve essere
contiguo. Ci pu essere solo una partizione estesa per disco: nessun
programma fdisk pu creare pi di una partizione estesa.
Linux non pu gestire pi di un limitato numero di partizioni per
disco. Cos in Linux potrete avere 4 partizioni primarie (3 delle
quali usabili, se state usando partizioni logiche) e al massimo 15
partizioni totali su un disco SCSI (63 in tutto su un disco IDE)
In Linux, le partizioni sono rappresentate come file di device. Un
file di device un file con tipo c (che sta per "carattere", cio
device che non usano un buffer di cache) oppure b (ossia device a
"blocchi", che passano dal buffer di cache). In Linux, tutti i dischi
sono rappresentati solo come device a blocchi. A differenza di altri
unix, Linux non offre "pure" versioni a caratteri dei dischi e delle
loro partizioni.
La sola cosa importante con un file di device sono il suo numero
primario e secondario, visualizzato invece delle dimensioni del file:
______________________________________________________________________
$ ls -l /dev/hda
brw-rw---- 1 root disk 3, 0 Jul 18 1994 /dev/hda
^ ^
| numero secondario di device
numero primario di device
______________________________________________________________________
Quando un file di device viene aperto, il numero primario indica quale
driver viene usato per effettuare l'operazione di input/output. Alla
chiamata viene passato il numero secondario come parametro e spetta al
driver l'interpretazione del numero secondario. Di solito la
documentazione del driver riporta come viene usato il numero
secondario. Per i dischi IDE, questa documentazione in
/usr/src/linux/Documentation/ide.txt. Per i dischi SCSI, ci si
aspetterebbe questa documentazione in
/usr/src/linux/Documentation/scsi.txt, ma non c'. Per accertarsene,
occorrerebbe leggere il sorgente del driver,
(/usr/src/linux/driver/scsi/sd.c:184-196). Fortunatamente, c' la
lista dei numeri e dei nomi di device curata da Peter Anvin in
/usr/src/linux/Documentation/devices.txt; vedere le voci per i device
a blocchi, primario 3, 22, 33, 34 per i dischi IDE e primario 8 per
gli SCSI. Il numero primario e secondario sono un byte ognuno ed per
questo che il numero di partizioni per disco limitato.
Per convenzione, i file di device hanno determinati nomi e molti
programmi di sistema riconoscono questi nomi essendo stati compilati
nel loro codice. Si aspettano che i vostri dischi IDE si chiamino
/dev/hd* e i dischi SCSI /dev/sd*. I dischi sono numerati come a, b, c
e cos via, quindi /dev/hda il primo disco IDE e /dev/sda il primo
disco SCSI. Entrambi rappresentano interi dischi, iniziando dal primo
blocco. Scrivere su questi device con il programma sbagliato
distrugger il master boot loader e la tavola delle partizioni dei
dischi, rendendo cos tutti i dati inutilizzabili o facendo s che il
sistema non possa pi eseguire il boot. Siate sicuri di quello che
fate e, ripeto, copiate su backup prima di farlo.
Le partizioni primarie su un disco sono numerate 1, 2, 3 e 4. Cos
/dev/hda1 la prima partizione primaria del primo disco IDE eccetera.
Le partizioni logiche hanno numeri che vanno da 5 in su, cos
/dev/sdb5 la prima partizione logica del secondo disco SCSI.
Ogni voce nella tabella delle partizioni contrassegnata da un blocco
di inizio, uno di fine, e un tipo. Il tipo un codice numerico (a un
byte) che indica l'appartenenza di quella partizione a un determinato
sistema operativo. Per la gioia dei consulenti informatici i codici
dei tipi di partizione non sono del tutto univoci, cio esiste la
probabilit che due sistemi operativi usino lo stesso codice.
Linux riserva per le sue partizioni di swap il codice 0x82, e lo 0x83
per il filesystem "nativo" (che ext2 per quasi tutti). L'oramai
sorpassato e una volta famoso Linux/Minix filesystem usava il codice
0x81. OS/2 segna le sue partizioni con il tipo 0x07, lo stesso del
NTFS di Windows NT. MS-DOS usa diversi codici per i vari tipi di
filesytem FAT: 0x01, 0x04 e 0x06. DR-DOS usava il codice 0x81 per
indicare partizioni FAT protette, creando una ambiguit con
Linux/Minix, ma ormai n Linux/Minix, n DR-DOS vengono largamente
usati. Per finire, le partizioni estese che fungono da contenitori per
le partizioni logiche hanno codice 0x05.
Le partizioni vengono create e cancellate con il programma fdisk.
Ogni sistema operativo che si rispetti viene fornito con una versione
di fdisk e per tradizione si chiama proprio fdisk (oppure FDISK.EXE)
in quasi tutti i sistemi operativi. Qualcuno di questi fdisk, come ad
esempio quello del DOS, mostra qualche limitazione quando ha a che
fare con partizioni di altri sistemi operativi. Queste limitazioni
includono l'impossibilit di gestire altri tipi di codice,
l'impossibilit di trattare numeri cilindro superiori a 1024, e
l'impossibilit di creare o gestire partizioni che non terminano
esattamente su un cilindro. Per esempio, fdisk di MS-DOS non pu
cancellare le partizioni NTFS, quello di OS/2 conosciuto per
"correggere" senza preavviso le partizioni create con fdisk di Linux
che non terminano esattamente sul cilindro e entrambi, sia quello DOS
sia quello OS/2, hanno problemi con i dischi che risultano avere pi
di 1024 cilindri (vedere il Mini-Howto "large-disk" per i dettagli)
3. Di quali partizioni ho bisogno ?
3.1. Di quante partizioni ho bisogno ?
Bene, allora quali partizioni vi servono ? Tanto per cominciare alcuni
sistemi operativi non riescono a fare il boot dalle partizioni
logiche, per motivi che esulano dalla comprensione di un sano di
mente. Cos probabilmente vorrete riservare le partizioni primarie
come partizioni di boot per MS-DOS, OS/2 e Linux o cos'altro state
usando. Ricordate anche che una partizione estesa non altro che una
partizione primaria, che funziona da contenitore per il resto del
disco suddiviso in partizioni logiche.
L'avvio (boot) di un sistema operativo una operazione che si svolge
in modalit reale, coinvolgendo cos il BIOS e la limitazione dei 1024
cilindri. Probabilmente quindi piazzerete tutte le vostre partizioni
bootabili nei primi 1024 cilindri del disco, giusto per evitare
problemi. Ripeto, leggete il Mini-Howto "large-disk" per i dettagli
salienti.
Per installare Linux, avrete bisogno di almeno una partizione. Se il
kernel viene caricato da questa partizione (per esempio da LILO), essa
deve essere leggibile dal BIOS. Se state usando altri sistemi per
caricare il kernel (da un disco di boot o da MS-DOS con il programma
LOADLIN.EXE) allora la partizione pu essere ovunque. In ogni caso
questa partizione avr il tipo 0x83 "Linux nativa".
Il vostro sistema avr bisogno di spazio di swap. A meno che vogliate
paginare su file, avrete bisogno di una partizione di swap dedicata.
Dal momento che solo il kernel di Linux accede a questa partizione, e
il kernel non ha limitazioni legate al BIOS, la partizione di swap pu
essere posizionata ovunque. Io consiglio di usare una partizione
logica (/dev/?d?5 e superiori). Le partizioni dedicate allo swap hanno
codice tipo 0x82 "Linux Swap".
Questi sono i requisiti minimi. Pu essere utile creare altre
partizioni per Linux. Continuate a leggere.
3.2. Quanto deve essere grande lo spazio di swap ?
Se avete deciso di usare una partizione di swap dedicata, il che
generalmente una Buona Idea [tm], seguite queste indicazioni per
stimare la sua dimensione:
In Linux la RAM e lo spazio di swap si sommano (questo anche in
tutti gli altri unix). Per esempio, se avete 8 MB di RAM e 12 MB di
swap, in totale avete 20 MB di memoria virtuale.
Quando dimensionate lo spazio di swap, tenete conto che dovreste
avere almeno 16 MB di memoria virtuale totale. Cos con 4 MB di RAM
considerate un minimo di 12 MB di swap, per 8 MB almeno altri 8 di
swap.
In Linux, una partizione di swap non pu essere pi grande di 128
MB. Cio, in effetti la partizione pu anche essere pi grande, ma
lo spazio in pi non viene utilizzato. Se volete pi di 128 MB di
swap, dovete creare pi di una partizione di swap.
Quando dimensionate lo spazio di swap, ricordate che troppo swap
pu essere del tutto inutile.
Ogni processo ha uno "spazio di lavoro". una serie di pagine in
memoria a cui il processore acceder nell'immediato futuro. Linux
tenta di anticipare questi accessi in memoria (assumendo che le
pagine usate pi di recente saranno usate ancora prossimamente) e
cerca di tenere queste pagine in RAM se possibile. Se il programma
ha una buona "localit", questa assunzione risulter vera e
l'algoritmo di predizione far il suo lavoro.
Mantenere uno spazio di lavoro in memoria possibile solo se c'
abbastanza memoria. Se avete troppi processi attivi, il kernel
obbligato a spostare su disco alcune pagine che verranno ricaricate
dopo poco tempo (forzando lo swap di alcune pagine di altri
processi). Di solito questo comporta un pesante incremento
nell'attivit di paginazione e una sostanziale perdita di
prestazioni. Una macchina in questo stato va in "trashing", oppure
si dice che si "siede", o "swappa" (per i lettori di lingua
tedesca, "dreschen", "schlagen", "haemmern" e non "muellen").
Su una macchina "seduta" i processi girano sostanzialmente da disco
e non in RAM. Le prestazioni si abbasseranno nella misura
approssimativa del rapporto che c' tra il tempo di accesso alla
memoria e il tempo di accesso del disco.
Una vecchia regola di massima ai tempi del PDP e del Vax era che la
grandezza dello spazio di lavoro di un programma circa il 25%
della sua dimensione. Pertanto probabilmente inutile avere uno
spazio di swap superiore al triplo della RAM.
Tenete a mente che questa solo una regola di massima. facile
incontrare casi dove i programmi hanno bisogno di uno spazio di
lavoro estremamente ampio o molto piccolo. Per esempio, un
programma di simulazione che accede ad un grosso numero di dati in
maniera pseudocasuale, ha pochissima localit nel suo spazio di
dati, pertanto lo spazio di lavoro sar molto ampio.
D'altra parte, un xv con tanti JPEG aperti contemporaneamente,
tutti iconizzati tranne uno, avrebbe un segmento dati molto grande.
Ma le trasformazioni vengono eseguite su una singola immagine,
infatti la maggior parte della memoria occupata da xv non viene mai
toccata. Lo stesso per un editor con tante finestre aperte, ma solo
una di loro viene modificata alla volta. Questi programmi hanno, se
sono progettati correttamente, una localit molto alta e la maggior
parte del loro spazio di lavoro pu essere paginata su disco senza
un grosso impatto sulle prestazioni.
Si potrebbe sospettare che quel 25%, derivato dall'era dei
programmi a linea di comando non sia pi valido per i programmi GUI
moderni che agiscono su documenti multipli, ma non conosco nessun
documento pi recente che tenti di verificare questo indice.
Cos per una configurazione con 16 MB di RAM, non serve swap per una
configurazione minima e pi di 48 MB di swap sono probabilmente
inutili. La quantit esatta dipende dalle applicazioni che fate girare
sulla macchina (cosa vi aspettavate ?).
3.3. Dove dovrei mettere lo spazio di swap ?
La Meccanica lenta, l'elettronica veloce.
I dischi fissi moderni hanno molte testine. Il passaggio tra
testine della stessa traccia rapido, poich elettronico.
Passare da traccia a traccia lento, perch significa far muovere
fisicamente qualcosa.
Cos se avete un disco con tante testine e uno con meno e per
entrambi gli altri parametri sono identici, il disco con pi
testine sar pi veloce.
Separare lo swap in due e metterlo su entrambi i dischi sarebbe
ancora meglio, penso.
I vecchi dischi hanno lo stesso numero di settori su tutte le
tracce. Con questi dischi sarebbe meglio mettere lo swap nel mezzo
del disco, ottimizzando il caso che la testina si muova da una
traccia casuale verso l'area di swap.
I dischi pi recenti usano lo ZBR (zone bit recording). Hanno pi
settori sulle tracce esterne. Con un numero costante di giri al
minuto, questo comporta migliori prestazioni sulle tracce esterne
che su quelle interne. Meglio mettere lo swap sulle tracce pi
veloci.
Naturalmente la testina non si muove in maniera casuale. Se avete
lo spazio di swap nel mezzo di un disco tra una partizione "home"
molto occupata e una partizione di archivio usata molto poco, sar
meglio avere lo swap nel mezzo della partizione home per accorciare
i movimenti della testina. Sarebbe ancora meglio spostare lo swap
su un altro disco altrimenti inutilizzato.
In breve: Mettete lo swap sul disco pi veloce con pi testine che non
sia occupato per dell'altro. Se avete pi di un disco: dividete lo
swap e spezzettatelo fra tutti i dischi e/o fra pi controllers.
Ancora meglio: Comprate altra RAM.
3.4. Alcune note sui file system e la frammentazione
Lo spazio su disco gestito dal sistema operativo in blocchi e
frammenti di blocchi. In ext2, i frammenti e i blocchi devono avere la
stessa dimensione, quindi possiamo restringere la nostra discussione
ai blocchi.
I file possono essere di qualsiasi dimensione, perci possono non
terminare sul margine di un blocco. Cos per ogni file una parte
dell'ultimo blocco viene sprecata. Assumendo che la dimensione dei
file sia casuale, c' approssimativamente mezzo blocco sprecato per
ogni file sul vostro disco. Tanenbaum nel suo libro "Operating
Systems" chiama questo evento "frammentazione interna".
Potete intuire il numero di file sul disco dal numero di inode
allocati. Sul mio disco
______________________________________________________________________
# df -i
Filesystem Inodes IUsed IFree %IUsed Mounted on
/dev/hda3 64256 12234 52022 19% /
/dev/hda5 96000 43058 52942 45% /var
______________________________________________________________________
Ci sono circa 12000 file su / e circa 44000 file su /var. Con dei
blocchi grandi 1 KB, circa 6+22 = 28 MB di spazio su disco sono
sprecati nei blocchi di coda dei file. Se avessi scelto una dimensione
del blocco di 4 KB, avrei sprecato uno spazio 4 volte superiore.
Tuttavia il trasferimento dati pi veloce per blocchi di dati grossi
e contigui. per questo che ext2 prova a riservare spazio in unit di
8 blocchi contigui per i file in crescita. Lo spazio riservato e non
utilizzato viene rilasciato quando il file viene chiuso, pertanto non
c' spreco di spazio.
Sistemare blocchi in modo non consecutivo un male per le
prestazioni, poich l'accesso ai file avviene in maniera sequenziale.
Il sistema operativo viene forzato a ripetere l'accesso al disco, e il
disco deve spostare la testina. Questo viene chiamato "frammentazione
esterna" o semplicemente "frammentazione" ed un problema comune con
i filesystem DOS.
Ext2 ha diverse strategie per evitare la frammentazione esterna.
Normalmente la frammentazione non un grosso problema per ext2,
nemmeno sulle partizioni usate pesantemente come uno spool di news
USENET. Anche se c' un programma di deframmentazione per il
filesystem ext2, nessuno lo usa e non aggiornato con la versione
corrente di ext2. Usatelo se volete, ma fatelo a vostro rischio e
pericolo.
Il filesystem MS-DOS ben conosciuto per la sua patologica gestione
dello spazio disco. Insieme con l'irrisiorio buffer di cache usato da
MS-DOS, gli effetti della frammentazione sulle prestazioni sono molto
rilevanti. Gli utenti DOS sono abituati a deframmentare i dischi ogni
poche settimane e qualcuno ha addirittura sviluppato alcune credenze
rituali a riguardo della frammentazione. Nessuna di queste abitudini
dovrebbe essere trasportata su Linux ed ext2. I file system nativi di
Linux non hanno bisogno di deframmentazione durante il normale
utilizzo, cio ogni situazione con almeno il 5% di spazio libero su
disco.
Il file system MS-DOS famoso anche per sprecare grosse porzioni di
disco a causa della frammentazione interna. Per partizioni pi grandi
di 256 MB, la dimensione dei blocchi diventa tale che non sono pi
efficaci (questo stato corretto in qualche maniera con FAT32)
ext2 non vi costringe a scegliere grossi blocchi per grossi file
system, eccetto per file sistem enormi dagli 0.5 TB (1 TB equivale a
1024 GB) in su, quando i blocchi piccoli diventano meno efficienti.
Quindi a differenza del DOS non c' bisogno di dividere grossi dischi
in molte partizioni per mantenere piccola la dimensione del blocco.
Usate la dimensione di default di 1 KB se possibile. Potete
sperimentare con una dimensione di 2 KB per alcune partizioni, ma
aspettatevi di incontrare qualche raro bug: la maggior parte della
gente usa il default.
3.5. Il ciclo di vita dei file e le sequenze di backup come criterio
di partizionamento
Con ext2, le decisioni di partizionamento dovrebbero essere governate
da considerazioni di backup e dalla diversificazione dei tempi di vita
dei differenti tipi di file per evitare la frammentazione esterna.
I file hanno dei tempi di vita. Dopo che un file stato creato,
rimarr per un certo tempo nel sistema e poi verr rimosso. I cicli di
vita dei file variano molto nel filesystem e sono parzialmente
dipendenti dal percorso del file. Per esempio, i file in /bin, /sbin,
/usr/sbin, /usr/bin e directory simili hanno tipicamente una vita
molto lunga: molti mesi e oltre. I file in /home hanno una vita media:
circa qualche settimana. I file in /var hanno vita breve: quasi
nessuno in /var/spool/news rester per pi di qualche giorno, mentre
in /var/spool/lpd i file durano pochi minuti.
Per il backup utile che la quantit di dati salvati nel backup
giornaliero sia minore della capacit del singolo dispositivo di
backup. Un backup giornaliero pu essere completo o incrementale.
Potete decidere di tenere la dimensione delle partizioni abbastanza
piccola da farle entrare completamente su un singolo backup (scegliete
backup giornalieri completi). In ogni caso una partizione dovrebbe
essere abbastanza breve che i cambiamenti da un giorno all'altro
(tutti i file modificati) stiano su un solo backup (scegliete il
backup incrementale e cambiate dispositivo di backup per il
salvataggio totale settimanale o mensile - non possibile una
operazione automatica).
La vostra strategia di backup dipende da quella decisione.
Quando progettate di comprare spazio su disco, ricordate di mettere da
parte dei soldi per il backup! I dati non salvati non valgono nulla! I
costi per riprodurli sono molto maggiori di quelli per salvarli per
chiunque!
Per ragioni di prestazioni, utile tenere i file con diversi tempi di
vita su differenti partizioni. In questo modo i file con vita breve
sulla partizione delle news possono anche essere molto frammentati, ma
questo non avr impatto sulle prestazioni della partizione / o /home.
4. Un esempio
4.1. Un modello raccomandato per principianti ambiziosi
Un modello comune crea le partizioni /, /home e /var come discusso in
precedenza. Cos semplice installare, mantenere e la distinzione
abbastanza buona da evitare effetti indesiderati a causa dei
differenti tempi di vita. Si adatta bene ad un modello di backup:
quasi nessuno si preoccupa di salvare gli spool USENET, e solo qualche
file in /var vale la pena di essere salvato (mi viene in mente
/var/spool/mail). D'altra parte, / cambia raramente e pu venire
salvata su richiesta (dopo cambiamenti di configurazione) ed
abbastanza piccola da stare nei moderni sistemi di backup come un
backup completo (tipicamente dai 250 ai 500 MB, dipende dal software
installato). /home contiene importanti dati degli utenti e dovrebbe
essere salvata in modo giornaliero. Qualche installazione ha delle
partizioni /home molto grandi e si devono usare i backup incrementali.
Alcuni sistemi mettono /tmp su una partizione separata, altri creano
un link simbolico a /var/tmp per ottenere lo stesso effetto (notare
che questo pu influire sul modo utente singolo, dove /var non sar
disponibile e nel sistema non ci sar /tmp finch non ne creerete una
o monterete /var manualmente) oppure la mettono su un disco RAM
(Solaris, ad esempio, lo fa). Questo lascia /tmp separato da /, che
una buona idea.
Questo modello conveniente per aggiornamenti o reinstallazioni:
salvate i vostri file di configurazione (o l'intero ramo /etc) in
qualche directory /home, cancellate /, reinstallate e ripristinate le
vecchie configurazioni dalla directory di salvataggio in /home.
5. Come ho fatto sulla mia macchina
Avevo un vecchio 386/40 che giaceva sugli scaffali, l'avevo
abbandonato due anni fa perch non potevo pi utilizzarlo. Pianificavo
di trasformarlo un un piccolo server (senza X-windows) per la mia rete
casalinga.
Ecco come ho fatto: ho preso quel 386 e ci ho messo 16 MB di RAM, ho
aggiunto un disco EIDE economico, il pi piccolo che ho trovato (800
MB) e una scheda di rete ethernet. Ho messo anche una vecchia
Hercules, dato che avevo ancora un monitor. Ci ho installato Linux e i
server NFS, SMB, HTTP, LDP/LPR, NNTP oltre che il mail router e il
server POP3. Con l'aggiunta di una scheda ISDN la macchina divenne il
mio router TCP/IP con firewall.
La maggior parte dello spazio su disco andava nel ramo /var,
/var/spool/mail, /var/spool/news e /var/httpd/html. Ho messo /var su
una grossa partizione separata. Ci saranno pochi utenti su questa
macchina, perci non ho creato partizioni home e monto /home da
qualche altra workstation via NFS.
Linux senza X pi qualche utility installata localmente sta comodo in
250 MB di partizione /. La macchina ha 16 MB di RAM, ma fa girare
molti server. Servono minimo altri 16 MB di swap, meglio 32 MB. Non
abbiamo problemi di spazio, perci ne ho messi 32. Per motivi
sentimentali ho lasciato 20 MB di partizione MS-DOS. Avendo deciso di
importare /home da un'altra macchina, i rimanenti 500 e oltre MB
andranno in /var. Sono pi che sufficienti per un utilizzo domestico
di scarico dei newgroup USENET .
Abbiamo
______________________________________________________________________
Device Montato su Dimensioni
/dev/hda1 /dos_c 25 MB
/dev/hda2 - (Spazio swap) 32 MB
/dev/hda3 / 250 MB
/dev/hda4 - (Partizione Estesa) 500 MB
/dev/hda5 /var 500 MB
homeserver:/home /home 1.6 GB
______________________________________________________________________
I salvataggi vengono effettuati via rete usando il nastro su
homeserver. Poich stato tutto installato da CD-ROM, devo salvare
solo qualche file di configurazione in /etc, i miei *.tgz
personalizzati installati localmente da /root/Source/Installed e
/var/spool/mail, assieme a /var/httpd/html. Copio questi file in una
directory dedicata /home/backmeup su homeserver ogni notte, per essere
prelevati dalla procedura di backup ordinario di homeserver.
|