]> git.piffa.net Git - doc/.git/blob - source/hardware.txt
modified: source/hw_dispensa.rst
[doc/.git] / source / hardware.txt
1 ========================
2 Hardware
3 ========================
4 Integrazione all'hardware
5 -----------------------------
6
7   :Author: Andrea Manni
8   :Copyright: GFDL
9   :Version: 1.1
10
11 .. contents:: Indice degli argomenti
12
13 Generato con: http://docutils.sourceforge.net/rst.html
14
15 *Nota*: si consiglia la lettura di: http://medialab.freaknet.org/sag/node29.html
16
17 Partizioni
18 ===================
19
20 Ci sono 3 tipi di partizioni:
21
22    * 4 partizioni primarie
23
24     * 1 puo' diventare estesa
25
26      * la partizione estesa puo' contenere molte partizioni logiche
27
28
29 Le partizioni vengono *sicuramente* lette al momento del *Boot* dal BIOS della scheda madre (all'accensione del sistema, quando si aziona il tasto ``power`` per accendere il computer), quindi potrebbe essere necessario riavviare la macchina per poter vedere cambiamenti alla tabella delle partizioni. 
30
31 La tabella delle partizioni risiede nei primi ~400b del disco rigido, quindi nel primo settore che chiamiamo *Master Boot Record* (MBR, primi 512 byte del supporto) nel quale e' generalmente contenuto anche un boot loader o un boot manager nel caso di sistemi operativi multipli ospitati sullo stesso supporto di storaggio.
32
33 =============  ======================
34     Bytes                Contenuto
35 =============  ======================
36 446 bytes        codice boot
37  64 bytes        tabella partizioni
38   2 bytes        "magic number 55AA"
39 =============  ======================
40
41
42 Per conoscere le partizioni attualmente visibili dal Kernel in esecuzione:
43         
44     ``$ cat /proc/partitions``
45
46 Gestione dell'MBR
47 ===================
48
49 I dati contenuti nell'MBR sono quindi di fondamentale importanza per il sistema, dato che se questi non sono correttamente disponibili diventa impossibile accedere ai block device (e quindi ai file system e ai dati) ed eventualmente far partire il sistema (boot loader o boot manager).
50
51 E' quindi importante tenere una copia di questi dati in caso di bisogno. Il metodo piu' semplice e' l'utilizzo del comando ``dd``, per copiare / riprodurre il solo schema di partizionamento (ad esempio per un sistema in RAID) si puo' usare anche ``sfdisk`` .
52
53   * Per modificare le partizioni si usi ``# cfdisk /dev/nome_del_device``
54
55    -    ``# cfdisk /dev/hda``
56    
57   * Per fare una copia del contenuto dell'MBR:
58
59    -    ``# dd if=/dev/hdX of=/path/MBR-backup bs=512 count=1``
60    
61   * Per ripristinarlo:
62
63    -    ``# dd if=/path/MBR-backup of=/dev/hdX bs=512 count=1``
64    
65   * Per salvare solo la tabella delle partizioni:
66
67    -    ``# dd if=/dev/hdX of=/path/backup-partition-table bs=1 count=66 skip 466``
68    
69   * Per ripristinare la tabella delle partizioni:
70
71    -    ``# dd if=/path/backup-partition-table of=/dev/hdX bs=1 count=66 skip 466``
72    
73   * Per **cancellare completamente** tutto l'MBR:
74
75    -    ``# dd if=/dev/zero of=/dev/hdX bs=512 count=1``
76    
77
78 -----------
79
80 Nomenclatura dei device
81 =========================
82
83 Nei sistemi GNU/Linux la nomenclatura usata per individuare i device e le relative partizioni e' strutturata, a differenza di sistemi operativi come Windows in cui i  block device vengono associati a lettere piu' o meno casuali come ``C: D: E:`` in base al momento in cui questi vengono resi disponibili al sistema (cosa che non permette di prevedere facilmente dove trovarli).
84
85 Tutti i device fisici sono raggiungibili nella cartella ``/dev``.
86
87 Per i device di tipo EIDE / Parallel ATA su una scheda madre con due connettori si avra' a disposizione:
88
89 Primary controller:
90         * Primary Master: ``/dev/hda``
91         * Primary Slave: ``/dev/hdb``
92
93
94 Secondary controller:
95         * Secondary Master: ``/dev/hdc``
96         * Secondary Slave: ``/dev/hdd``
97
98 Si noti la progressione alfabetica delle lettere: ``hda`` e' il primo device, ``hdb`` il secondo e cosi' via.
99
100 Al nome del device segue il numero della partizione, es:
101         
102         * /dev/hda1 :   prima partizione  (Primary master EIDE)
103
104         * /dev/hda2 :   seconda partizione (Primary master EIDE)
105
106         * /dev/hda3 :   terza partizione (Primary master EIDE)
107
108         * ecc.
109
110 In uno schema *tipico* di partizionamento, nel quale si prevedono tre partizioni primarie, una estesa e alcune logiche, si avra' uno schema del tipo:
111
112
113         * /dev/hda1 :   prima partizione primaria (Primary master EIDE)
114
115         * /dev/hda2 :   seconda partizione primaria (Primary master EIDE)
116
117         * /dev/hda3 :   terza partizione primaria (Primary master EIDE)
118
119         * /dev/hda5 :   prima partizione logica (Primary master EIDE)
120
121         * /dev/hda6 :   seconda partizione logica (Primary master EIDE)
122
123         * /dev/hda7 :   terza partizione logica (Primary master EIDE)
124
125         * Seguono le altre eventuali partizioni logiche
126
127 Si consiglia caldamente di seguire questo schema, creando la partizione estesa nell'ultima primaria disponibile (la quarta, che per questo non compare nello schema precedente).
128
129 Si tenga presente che alcuni sistemi operativi come Windows o \*BSD possono non gradire di essere collocati su partizioni logiche: si consiglia quindi di preservare le partizioni primarie per questi, eventualmente lasciando dello spazio non allocato prima della creazione delle partizioni logiche nel caso si voglia avere la possibilita' in futuro di poter installare questi sistemi. Gnu/Linux non ha nessun problema a partire da una partizione logica, mettete tranquillamente i vostri sistemi da ``/dev/device5`` in poi.
130
131
132 I filesystem
133 ===============
134
135 Il file system e' una struttura logica che ci permette di individuare i diversi file. Sostanzialmente e' un'insieme di meta dati che caratterizzano i singoli file piu' quanto necessario per poterli gestire.
136
137 Alcuni esempi: e' il filesytem a poter caratterizzare i file con propietari, gruppi, permessi (lettura, scrittura, esecuzione), data di creazione e cosi' via. Alcuni filesytem permettono certe funzionalita', altri (sopratutto quelli piu' datati)
138 sono piu' *rudimentali*.
139
140 Tipicamente i filesystem sono strutturati secondo un modello gerarchico basato su *files e cartelle*: quindi per poter identificare un file ci serve il suo *nome proprio* piu' il suo *percorso* nella struttura del filesystem. Il progressivo aumento del numero dei files sta cominciando a far sentire i limiti di questo modello.
141
142 Con l'aumentare delle informazioni tendono ad essere piu' efficaci modelli relazionali, che permettono di interagire coi file in modo simile a un database. Ad esempio pensiamo alle librerie che contengono centinaia di migliaia di brani musicali MP3, oppure migliaia di fotografie: cercare di gestirli tramite nome del file e cartelle diventa poco pratico. Meglio raggrupparli per autore, data, album o quant'altro si adatti alla loro natura e al loro utilizzo.
143
144 -------------------------------
145
146 Dopo aver definito un *block device* (ad esempio avendo fatto una partizione) per poterlo usare occorre creare una struttura logica su di esso: il **file system**.
147
148 Per creare un file system di tipo ext3 si puo' usare un comando del tipo:
149
150         ``# mkfs.ext3 /dev/nome_del_device``
151
152 **Attenzione**: creare un nuovo filesytem su un device che gia' ne contiene uno rende non raggiungibili i file precedentemente esistenti. Sostanzialmente potete vedere la creazione del FS come *la formattazione* alla *windows*.
153
154 ----------------
155
156 Partizioni, nomenclatura linux, ridimeensionamente, frammentazione.
157
158 Case
159 =======
160
161 Antec:  http://www.antec.com/ec/it/pro_enclosures.php
162
163         * tower
164
165           - middle tower
166
167           - full tower
168         
169         * desktop
170         * rack per i server: http://www.antec.com/productImage.php?ProdID=03207&SetZone=en
171
172         * mini: es http://gizmodo.com/gadgets/images/mini_itx.jpg
173
174 Alimentatori
175 ============
176 Voltaggi: da 60W -> ~1000. Tipicamente 400W.
177 Si sceglie il voltaggio in base ai consumi, in particolare al giorno d'oggi le schede video (che possono consumare ~200w l'una).
178
179 Caratteristiche:
180         * ha una ventola di raffreddamento: quindi fa rumore e la ventola si puo' rompere col tempo.
181
182         * Sovraccarichi di tensione possono causare la rottura dell'alimentatore e qualunque altra cosa ad esso connessa. Utile usare un UPS / stabilizzatore di corrente priuma dell'alimentatore. Questo vale anche per la scheda di rete / modem / RJ11.
183
184 link a esemplari in vendita: http://www.eprice.it/default.aspx?cat3=497&des=Alimentatori
185
186 Un buon alimentatore da PC cosata corca ~80 per 400W.
187 Non si deve risparmiare su gli alimentatori.
188
189 Per un server se ne deve sempre avere uno di scorta disponibile, o alimentazione ridondante.
190
191 Link: http://it.wikipedia.org/wiki/Alimentatore#Alimentatori_Ridondanti
192
193
194 Schede madri
195 =============
196
197 http://it.wikipedia.org/wiki/Scheda_madre
198 ==============================================
199 ATX sono sempre in presa
200
201
202
203 Processori:
204 ================
205
206 http://it.wikipedia.org/wiki/CPU
207
208 Multi core
209
210 Hyperthreading
211         http://it.wikipedia.org/wiki/Hyper-Threading
212
213 Architetture
214 -------------
215
216 Ci sono tante architetture e **non** sono compatibili tra di loro. Il codice oggetto e' diverso per CPU diverse.
217
218 Le vostre macchine sono generalmente della famiglia x86: tipicamnete dei i686. La maggior parte del codice viene comunque compilata per i386, ma sui sistemi piu' recenti si puo' comunque utilizzare le *librerie C ottimizzate* per i686.
219
220 Controllate se nel vopstro sistema sono presenti:
221         ``dpkg -l | grep libc6-i686``
222
223 Se non sono presenti e siente su un 686 installatele!
224
225 Sulle vostre macchine gira quindi software:
226         * i386 : normali pc
227
228         * amd64 : i nuovi processori a 64 bit
229
230
231 http://it.wikipedia.org/wiki/Microprocessore
232
233 Link: http://en.wikipedia.org/wiki/X86
234
235 Elenco dei processori AMD:
236         - http://it.wikipedia.org/wiki/Microprocessori_AMD
237
238 Elenco dei processori Intel:
239         - http://it.wikipedia.org/wiki/Microprocessori_Intel
240
241         - http://processorfinder.intel.com/details.aspx?sSpec=SLAPB
242
243
244 Elenco dei processori Intel:
245         - http://www.via.com.tw/en/products/processors/c7-m/
246
247 Elenco dei processori ARM:
248         * http://it.wikipedia.org/wiki/Architettura_ARM
249           - Es: Router, NAT, network appliance (fortigate...)
250
251           - http://www.cyrius.com/debian/nslu2/
252
253 Arm e simili (geode, Xscale, alcuni PPC) sono utilizzati per i sistemi embedded.
254
255 IBM Cell/PPC
256 =============
257
258 Link:   http://it.wikipedia.org/wiki/Cell_(processore)
259
260 Embedded / NAS
261 ===============
262
263 Devices a basse prestazioni per usi dedicati e altamente specializzati.
264
265         * http://www.cappuccinopc.com/star-466.asp
266
267         * http://www.kurobox.com/
268
269         * http://www.linutop.com/linutop2/shop/
270
271         * http://www.soekris.com/
272
273         * Meno testati: http://www.eprice.it/default.aspx?sku=1864201
274
275         * http://www.onehardware.it/05/06/2008/asus-eee-box-specifiche-e-prezzi/
276
277
278         
279 RAM
280 ========
281
282 http://it.wikipedia.org/wiki/Immagine:RAM_n.jpg
283
284
285
286 Velocita' accesso dati supporti di storaggio
287 ===============================================
288
289 Tenere conto di:
290         * velocita' teorica dei bus di conssione, es ATA / PCI
291
292         * velocita' potenziale dell'hd: 7200rpm = ~45MB
293
294         * caratteristiche del FS (ottimizzazione per dimesioni file)
295
296         * numero di file e cartelle, e "vecchiaia" del FS
297
298
299 Bus per HD
300 -------------
301
302         * PATA = Parallel ATA (vecchio)
303           - http://it.wikipedia.org/wiki/PATA
304
305
306         * SATA = Seral ATA (piu' moderno)
307           - http://it.wikipedia.org/wiki/SATA
308
309         * SCSI = Small Computer System Interface
310           - http://it.wikipedia.org/wiki/SCSI
311
312
313 RAID
314 ==========
315
316  * http://www.acnc.com/raid.html
317
318  * http://it.wikipedia.org/wiki/RAID
319
320 Gli hard disk hanno dei limiti fisici: dati dalle loro dimensioni finite.
321         Pianificare le rrisorse di storaggio,
322
323 Gli hard disks hanno la tendenza a rompersi.
324
325 La velocita' degli hard disks influenza molto le prestazioni del sistema.
326
327 Spare Disk:     
328         Uno spare e' un hd che si lascia inattivo, in caso di rottura di uno degli elementi del'array questo viene attivato e ne pronde automaticcamente il posto.
329
330 RAID1: Mirror
331 --------------
332
333 Piu' hard disk vengono messi in mirror, per creare ridondanza.
334
335 Caratteristiche: Modello ipotetico con hd da s=100GB con velocita' v=40MB/s
336         1. C'e' ridondanza dei dati: se si rompe un supporto il sistema continua a lavorare.
337
338         2. Dimensioni: si perde meta' della capacita' di storaggio. 
339                 Per 2hd si ha:
340                         raid size= (s+s)/2 = 100
341
342         3. Prestazioni:
343           
344           3.1 Lettura:  Non ci dovrebbero essere cambiamenti:
345                 raid read speed = v * (numero array -1) = 120MB/s (3 hd in stripe + 1 per la parita')
346
347           3.2 Scrittura: si scrive molto velocemente sulla *parte in stripe*, ma ad ogni scrittura si deve calcolare la parita' e scriverla sul supporto dedicato, che diventa il collo di bottiglia dell'intero array.
348                 - raid read speed = dipende dell'hd della parita' = 40 MB/s             
349
350         
351 RAID0: Stripe
352 --------------
353
354 Piu' hard disk vengono messi in *sequenza*, per aumentare prestazioni e dimensioni massime.
355
356 Caratteristiche: Modello ipotetico con hd da s=100GB con velocita' v=40MB/s
357         1. Non C'e' ridondanza dei dati: se si rompe un supporto perdo tutto l'array. Non va' quindi usato per dati *importanti*, ma per dati che si possono facilmente rimpiazzare (es: una chache proxy. un mirror di qualcosa, file temnporanei per la compilazione...).
358
359         2. Dimensioni: si sommano le capacita' di storaggio. 
360                 
361                 - Per 2hd si ha:
362                         - raid size= s+s = 200
363                         - nota: s sta per la dimesione del membro piu' piccolo dell'ARRAY.
364                         - disk1 300GB + disk2 150GB = RAID0 300GB
365
366         3. Prestazioni:
367           
368           3.1 Lettura:  Dovrebbero aumentare
369                  - raid read speed = v * numero membri array = 80MB/s
370
371           3.2 Scrittura: teoricamente bisogna scrivere il doppio dei dati: le prestazioni in scrittura dimezzano.
372                         
373                         - raid read speed = v * numer dei membri dell'array= 80 MB/s            
374
375 Note:
376         Si usa per aumentare la velocita' e per ottenere blok device di grosse dimensioni, ma e' *pericoloso* per quanto riguarda la disponibilita' dei dati.
377
378
379 RAID4: 
380 --------------
381
382 http://www.acnc.com/04_01_05.html
383
384 Piu' hard disk vengono messi in stripe con un elemto dedicato alla parita'.
385
386 Parita:
387
388 ======== ======= ======= ========
389    disk0   disk1   disk2   disk3
390 -------- ------- ------- --------
391   stripe  stripe  stripe  parita'
392 -------- ------- ------- --------
393     0      0        1       1
394     1      0        1       0
395     1      1        1       1
396     0      0        0       0
397     1      1        0       0
398 ======== ======= ======= ========
399
400
401 Se si rompe un HD: si puo' riapplicare l'algoritmo usato per calcolare la parita' per ri-ottenere i valori persi.
402
403 ======== ======= ======= ========
404    disk0   disk1   disk2   disk3
405 -------- ------- ------- --------
406   stripe  stripe  stripe  parita'
407 -------- ------- ------- --------
408     0      x        1       1
409     1      x        1       0
410     1      x        1       1
411     0      x        0       0
412     1      x        0       0
413 ======== ======= ======= ========
414
415 Nota: e' fondamentale avere uno spare disk diponibile: perche' in caso di rottura di due elementi perdo l'intero array senza avere possibilita' di recupero. I raid 4 0 5 tendono ad essere molto grandi, quindi il danno interesserebbe molti dati.
416
417 Caratteristiche: Modello ipotetico con hd da s=100GB con velocita' v=40MB/s
418         1. C'e' ridondanza dei dati: se si rompe un supporto il sistema continua a lavorare. E' fondamental;e avere uno spare disk sempre disponibile, meglio se piu' di uno.
419
420         2. Dimensioni: si perde la capacita' di storaggio usata per ospitare la parita'. 
421                 
422                 - Per 2hd si ha:
423                 
424                 - raid size= somma (numero mebri array -1) = 450
425
426         3. Prestazioni: tipicamente aumentano, ma varia in base alla modalita' di gestione del RAID: se sia hardware o software. 
427           
428           3.1 Lettura:  Dovrebbero aumentare drasticamente come per uno stripe
429                 raid read speed = v = 40MB/s
430
431           3.2 Scrittura: teoricamente bisogna scrivere il doppio dei dati: le prestazioni in scrittura dimezzano.
432                 
433                 - raid read speed = v/2 = 20 MB/s               
434
435 Note:
436         La velocita' di lettura puo' aumentare: migliora notevolmente il *seek time* dato che il kernel o il controller raid puo' scegliere di leggere i dati dal'HD in cui la testina e' piu' vicina ai dati.
437
438         Inserendo uno *spare disk* si puo' aumentare ulteriormente la cap[acita' dell'array di sopravvivere a un guarsto fisico. 
439         
440 RAID5
441 ------
442
443 http://www.acnc.com/04_01_05.html
444
445 Il RAID5 e' un RAID4 in cui la parita' e distruibuita su tutti i membri dell'array.
446         
447
448 Mnitors
449 =========
450
451 http://it.wikipedia.org/wiki/Monitor_(video)
452
453 http://it.wikipedia.org/wiki/HDCP
454
455 --------------------
456
457 TODO ridimensionamento, frammentazione, raid LVM
458