1 ========================
3 ========================
4 Integrazione all'hardware
5 -----------------------------
11 .. contents:: Indice degli argomenti
13 Generato con: http://docutils.sourceforge.net/rst.html
15 *Nota*: si consiglia la lettura di: http://medialab.freaknet.org/sag/node29.html
20 Ci sono 3 tipi di partizioni:
22 * 4 partizioni primarie
24 * 1 puo' diventare estesa
26 * la partizione estesa puo' contenere molte partizioni logiche
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.
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.
33 ============= ======================
35 ============= ======================
37 64 bytes tabella partizioni
38 2 bytes "magic number 55AA"
39 ============= ======================
42 Per conoscere le partizioni attualmente visibili dal Kernel in esecuzione:
44 ``$ cat /proc/partitions``
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).
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`` .
53 * Per modificare le partizioni si usi ``# cfdisk /dev/nome_del_device``
55 - ``# cfdisk /dev/hda``
57 * Per fare una copia del contenuto dell'MBR:
59 - ``# dd if=/dev/hdX of=/path/MBR-backup bs=512 count=1``
63 - ``# dd if=/path/MBR-backup of=/dev/hdX bs=512 count=1``
65 * Per salvare solo la tabella delle partizioni:
67 - ``# dd if=/dev/hdX of=/path/backup-partition-table bs=1 count=66 skip 466``
69 * Per ripristinare la tabella delle partizioni:
71 - ``# dd if=/path/backup-partition-table of=/dev/hdX bs=1 count=66 skip 466``
73 * Per **cancellare completamente** tutto l'MBR:
75 - ``# dd if=/dev/zero of=/dev/hdX bs=512 count=1``
80 Nomenclatura dei device
81 =========================
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).
85 Tutti i device fisici sono raggiungibili nella cartella ``/dev``.
87 Per i device di tipo EIDE / Parallel ATA su una scheda madre con due connettori si avra' a disposizione:
90 * Primary Master: ``/dev/hda``
91 * Primary Slave: ``/dev/hdb``
95 * Secondary Master: ``/dev/hdc``
96 * Secondary Slave: ``/dev/hdd``
98 Si noti la progressione alfabetica delle lettere: ``hda`` e' il primo device, ``hdb`` il secondo e cosi' via.
100 Al nome del device segue il numero della partizione, es:
102 * /dev/hda1 : prima partizione (Primary master EIDE)
104 * /dev/hda2 : seconda partizione (Primary master EIDE)
106 * /dev/hda3 : terza partizione (Primary master EIDE)
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:
113 * /dev/hda1 : prima partizione primaria (Primary master EIDE)
115 * /dev/hda2 : seconda partizione primaria (Primary master EIDE)
117 * /dev/hda3 : terza partizione primaria (Primary master EIDE)
119 * /dev/hda5 : prima partizione logica (Primary master EIDE)
121 * /dev/hda6 : seconda partizione logica (Primary master EIDE)
123 * /dev/hda7 : terza partizione logica (Primary master EIDE)
125 * Seguono le altre eventuali partizioni logiche
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).
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.
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.
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*.
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.
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.
144 -------------------------------
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**.
148 Per creare un file system di tipo ext3 si puo' usare un comando del tipo:
150 ``# mkfs.ext3 /dev/nome_del_device``
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*.
156 Partizioni, nomenclatura linux, ridimeensionamente, frammentazione.
161 Antec: http://www.antec.com/ec/it/pro_enclosures.php
170 * rack per i server: http://www.antec.com/productImage.php?ProdID=03207&SetZone=en
172 * mini: es http://gizmodo.com/gadgets/images/mini_itx.jpg
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).
180 * ha una ventola di raffreddamento: quindi fa rumore e la ventola si puo' rompere col tempo.
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.
184 link a esemplari in vendita: http://www.eprice.it/default.aspx?cat3=497&des=Alimentatori
186 Un buon alimentatore da PC cosata corca ~80 per 400W.
187 Non si deve risparmiare su gli alimentatori.
189 Per un server se ne deve sempre avere uno di scorta disponibile, o alimentazione ridondante.
191 Link: http://it.wikipedia.org/wiki/Alimentatore#Alimentatori_Ridondanti
197 http://it.wikipedia.org/wiki/Scheda_madre
198 ==============================================
199 ATX sono sempre in presa
206 http://it.wikipedia.org/wiki/CPU
211 http://it.wikipedia.org/wiki/Hyper-Threading
216 Ci sono tante architetture e **non** sono compatibili tra di loro. Il codice oggetto e' diverso per CPU diverse.
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.
220 Controllate se nel vopstro sistema sono presenti:
221 ``dpkg -l | grep libc6-i686``
223 Se non sono presenti e siente su un 686 installatele!
225 Sulle vostre macchine gira quindi software:
228 * amd64 : i nuovi processori a 64 bit
231 http://it.wikipedia.org/wiki/Microprocessore
233 Link: http://en.wikipedia.org/wiki/X86
235 Elenco dei processori AMD:
236 - http://it.wikipedia.org/wiki/Microprocessori_AMD
238 Elenco dei processori Intel:
239 - http://it.wikipedia.org/wiki/Microprocessori_Intel
241 - http://processorfinder.intel.com/details.aspx?sSpec=SLAPB
244 Elenco dei processori Intel:
245 - http://www.via.com.tw/en/products/processors/c7-m/
247 Elenco dei processori ARM:
248 * http://it.wikipedia.org/wiki/Architettura_ARM
249 - Es: Router, NAT, network appliance (fortigate...)
251 - http://www.cyrius.com/debian/nslu2/
253 Arm e simili (geode, Xscale, alcuni PPC) sono utilizzati per i sistemi embedded.
258 Link: http://it.wikipedia.org/wiki/Cell_(processore)
263 Devices a basse prestazioni per usi dedicati e altamente specializzati.
265 * http://www.cappuccinopc.com/star-466.asp
267 * http://www.kurobox.com/
269 * http://www.linutop.com/linutop2/shop/
271 * http://www.soekris.com/
273 * Meno testati: http://www.eprice.it/default.aspx?sku=1864201
275 * http://www.onehardware.it/05/06/2008/asus-eee-box-specifiche-e-prezzi/
282 http://it.wikipedia.org/wiki/Immagine:RAM_n.jpg
286 Velocita' accesso dati supporti di storaggio
287 ===============================================
290 * velocita' teorica dei bus di conssione, es ATA / PCI
292 * velocita' potenziale dell'hd: 7200rpm = ~45MB
294 * caratteristiche del FS (ottimizzazione per dimesioni file)
296 * numero di file e cartelle, e "vecchiaia" del FS
302 * PATA = Parallel ATA (vecchio)
303 - http://it.wikipedia.org/wiki/PATA
306 * SATA = Seral ATA (piu' moderno)
307 - http://it.wikipedia.org/wiki/SATA
309 * SCSI = Small Computer System Interface
310 - http://it.wikipedia.org/wiki/SCSI
316 * http://www.acnc.com/raid.html
318 * http://it.wikipedia.org/wiki/RAID
320 Gli hard disk hanno dei limiti fisici: dati dalle loro dimensioni finite.
321 Pianificare le rrisorse di storaggio,
323 Gli hard disks hanno la tendenza a rompersi.
325 La velocita' degli hard disks influenza molto le prestazioni del sistema.
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.
333 Piu' hard disk vengono messi in mirror, per creare ridondanza.
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.
338 2. Dimensioni: si perde meta' della capacita' di storaggio.
340 raid size= (s+s)/2 = 100
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')
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
354 Piu' hard disk vengono messi in *sequenza*, per aumentare prestazioni e dimensioni massime.
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...).
359 2. Dimensioni: si sommano le capacita' di storaggio.
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
368 3.1 Lettura: Dovrebbero aumentare
369 - raid read speed = v * numero membri array = 80MB/s
371 3.2 Scrittura: teoricamente bisogna scrivere il doppio dei dati: le prestazioni in scrittura dimezzano.
373 - raid read speed = v * numer dei membri dell'array= 80 MB/s
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.
382 http://www.acnc.com/04_01_05.html
384 Piu' hard disk vengono messi in stripe con un elemto dedicato alla parita'.
388 ======== ======= ======= ========
389 disk0 disk1 disk2 disk3
390 -------- ------- ------- --------
391 stripe stripe stripe parita'
392 -------- ------- ------- --------
398 ======== ======= ======= ========
401 Se si rompe un HD: si puo' riapplicare l'algoritmo usato per calcolare la parita' per ri-ottenere i valori persi.
403 ======== ======= ======= ========
404 disk0 disk1 disk2 disk3
405 -------- ------- ------- --------
406 stripe stripe stripe parita'
407 -------- ------- ------- --------
413 ======== ======= ======= ========
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.
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.
420 2. Dimensioni: si perde la capacita' di storaggio usata per ospitare la parita'.
424 - raid size= somma (numero mebri array -1) = 450
426 3. Prestazioni: tipicamente aumentano, ma varia in base alla modalita' di gestione del RAID: se sia hardware o software.
428 3.1 Lettura: Dovrebbero aumentare drasticamente come per uno stripe
429 raid read speed = v = 40MB/s
431 3.2 Scrittura: teoricamente bisogna scrivere il doppio dei dati: le prestazioni in scrittura dimezzano.
433 - raid read speed = v/2 = 20 MB/s
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.
438 Inserendo uno *spare disk* si puo' aumentare ulteriormente la cap[acita' dell'array di sopravvivere a un guarsto fisico.
443 http://www.acnc.com/04_01_05.html
445 Il RAID5 e' un RAID4 in cui la parita' e distruibuita su tutti i membri dell'array.
451 http://it.wikipedia.org/wiki/Monitor_(video)
453 http://it.wikipedia.org/wiki/HDCP
457 TODO ridimensionamento, frammentazione, raid LVM