Appunti per l’acquisto di un controller SATA (parte 1)

Appunti per l’acquisto di un controller SATA per espandere un vecchio computer DELL PowerEdge T20. Nella prima parte si vede l’argomento controller, nella seconda i dischi e il contenitore. Non sono pagine ben strutturate, sono solo degli appunti, quindi le informazioni vanno cercate un po’ in tutto il testo. Questa pagina è stata aggiornata con correzioni e nuove «scoperte».

Giusto per capirci, i nomi dei connettori esterni dei controller (HBA vuol dire Host Bus Adapter, cioè scheda per collegare il controller del disco al computer vero e proprio; invece DAS è lo scatolotto che conterrà i dischi, DAS sta per Direct Attach Storage) sono questi:

  • SFF-8088, connettore esterno tra HBA e DAS, 26-pin, 6Gb/s Mini-SAS 2.0, 4 dischi
  • SFF-8644, connettore esterno tra HBA e DAS, 36-pin, 12Gb/s Mini-SAS 3.0, 4 dischi

Una famosa marca di chipset per controller è la LSI, da tempo acquistata da Broadcom. I suoi chip sono usati dalle più svariate marche: Intel, Fujitsu, NEC, DELL, ASUS, Supermicro, HP, IBM, oltre che da LSI stessa. Un esempio di scheda con il SAS2008 e 8 porte esterne, con tutti i dettagli tecnici, è la LSI SAS 9200-8e.

Uno dei chip più famosi è il SAS2008 — che fu immesso sul mercato ormai nel 2009 — descritto brevemente dal sito servethehome così: «SAS2008 – 8x SAS v2.0, 3890MB/s, PCIe v2.0, PCIe 4x slot 1716MB/s, PCIe 8x slot 3433MB/s max throughput». Vale a dire che gestisce al massimo 8 dischi da 6Gbit/s, che si può mettere su un bus PCIe v2.0 e che, se viene messo su uno slot con 4 linee (x4) allora riesce ad arrivare a 1712MB/s (megabyte al secondo), mentre su uno slot con 8 linee arriva a 3433MB/s. La velocità massima della comunicazione con i dischi è 6Gbit/s perché il controller supporta SAS v2.0, quindi è perfetta per i normali dischi SATA-III. Il manuale di LSI mostra dei numeri leggermente diversi: 1200MB/s su x1 linee e 4000MB/s su x8 linee.

La velocità di una linea PCIe v2.0 è 500Gb/s (gigabit/s). Una 4x è 2000Gb/s, 8x è 4000Gb/s.
Assumendo che i bit siano inviati con un bit di parità, uno di start e forse uno di stop, vanno contati almeno 10 bit per byte, quindi sul PCIe v2.0 la velocità in byte diventa 50GB/s per linea. Possiamo quindi considerare che un bus PCIe v2.0 è decidamente oltre alla velocità che raggiunge il controller?

Questi controller LSI hanno due modalità di funzionamento, che richiedono di montare il BIOS corrispondente:

  • Initator-Target (IT) ** mostra direttamente i dischi collegati alla scheda
  • Integrated RAID (IR) ** mostra solo i RAID fatti dalla scheda

Il SAS2008 ha avuto molto successo e si trova facilmente in commercio a prezzi ragionevoli. I suoi successori gestiscono anche PCIe v3.0 e SAS v3.0, nei quali la velocità del bus PCIe raddopia (985Gb/s per ogni linea) e quella della comunicazione con i dischi raddoppia (12Gb/s).

I chipset più moderni non sono solo più veloci, ma gestiscono anche cose aggiuntive, come il TRIM dei dischi SSD. Il TRIM è un modo che il controller ha per dire ad un disco che un certo blocco è stato cancellato. In questo modo il disco SSD lo toglie dalla mappa dei settori attivi. Ovviamente va usato un sistema operativo moderno che sia in grado, quando si cancella un file, di dire al disco che quello spazio non è più usato. Ma lo fanno ormai tutti, anche Windows… Inoltre molti hanno anche una cache da almeno 512Mb (usata sia per la scrittura che per la lettura) e sanno gestire una batteria tampone (detta BBU) che permette di mantenere i dati nella cache mentre mancasse la corrente e inviarli ai dischi alla riaccensione (c’è un limite di tempo massimo, in genere di 2—3 giorni). I controller di ultima generazione hanno anche una memoria flash (in genere con interfaccia ONFI), sicché la batteria serve solo per il tempo necessario a trasferire la cache nella flash. Ad esempio, il modello SAS2208 (presente sulla scheda LSI MegaRAID SAS 9286-8e) è analogo al 2008, ma ha una cache da 1Gb e gestisce una BBU. Il chip SAS4124 invece gestisce anche la memoria flash nella quale memorizzare — in caso di mancanza di corrente — la cache dei dati ancora da scrivere sui dischi.

Un chipset di una marca diversa è Asmedia A1164, presente ad esempio nelle schede QNAP come la QXP-400eS-A1164. Gestisce al massimo 4 dischi e utilizza PCIe v3.0, 1x o 2x. La scheda QXP-800eS-A1164 ne monta due, ciascuno con un connettore esterno per 4 dischi.

Altra alternativa che si trova su eBay a prezzi decenti: scheda LSI® SAS 9207-8e, prodotta dall’anno 2010, gestisce 8 dischi da 6Gbit/s, ha 2 porte esterne SFF-8088, usa il protocollo PCIe 3.0, vuole un connettore da 8 linee. Il chip che viene montato, LSI SAS 2308, usa 1 o 4 linee, in modo da trasferire da un minimo di 600MB/s (1 linea, half duplex) ad un massimo di 4800MB/s (4 linee, full duplex). Quindi, serve uno slot fisico da 8 linee, ma ne usa solo 4. Il chip 2308 è compatibile con il bus PCIe 2.x e anche 1.x.

Il DELL PowerEdge T20 ha 4 slot, il 2 è il vecchio PCI a 32bit, gli altri tre sono PCIe: lo slot 1 è v3.0 x16 ed è collegato direttamente al processore, lo slot 2 è v2.0 x1 ed è collegato al PCH, lo slot 4 è v2.0 x16 (x4) ed è collegato al PCH. Quest’ultimo ha x4 come link width e x16 come slot width vale a dire che i dati passano solo su 4 linee, ma ci puoi incastrare una scheda PCIe x16 che, una volta riconosciuto il bus, funzionerà a x4. In pratica non si è obbligati a mettere una scheda fisicamente grossa su uno slot con tante linee: la si può mettere su uno con meno perché il pettine si infila correttamente anche se alcuni pin non funzioneranno.

Attualmente lo slot 1 ospita una scheda di rete X540-AT2 da 10gbit/s che è compatibile con PCIe v2.1 e vuole x8 linee dati (ma potrei spostarla: 8 linee sono necessarie se si usano le due porte RJ45 assieme, ma con una sola 4 linee sono sufficienti. Fonte: Intel ® Ethernet Controller X540 Frequently Asked Questions). lo slot 2 è usato da un vecchio controller SCSI AIC-7861. Quindi rimangono liberi due slot, entrambi PCIe v2.0, uno con x1 e l’altro con x4 linee. Potrei quindi metterci un controller SAS2308 o SAS2008 che le sfrutterebbe tutte, mentre quello A1164, essendo x2, ne userebbe solo due abbassando la velocità a quella del PCIe v2.0.