In generale, in risposta diretta alla tua domanda, non sono a conoscenza delle principali marche di unità SATA che l'unità stessa ha avuto bug relativi al corretto funzionamento con la cache in scrittura abilitata. Cioè, solo dal punto di vista dell'unità, l'unità fa quello che dovrebbe fare dalla prospettiva della cache. Vorrei anche notare che anche quando la cache di scrittura è abilitata, il ritardo da una scrittura del disco sul cavo SATA al supporto rotante che viene fisicamente aggiornato è ancora molto breve (in genere da ~ 50 a 100ms). Non è che i dati della cache sporca rimarranno lì per pochi secondi alla volta ..... l'unità cerca continuamente di ottenere dati sporchi dalla cachesui supporti fisici non appena possibile. Questa non è solo una questione di sicurezza dei dati, ma di essere pronti ad accettare scritture future senza alcun ritardo (es. Scrivere posting).
Il problema che si presenta quando la memorizzazione nella cache è abilitata è che l'ordine di scrittura sull'unità tramite il cavo SATA e l'ordine di scrittura sul supporto rotante non è lo stesso. Ciò non può mai causare un problema A MENO CHE non si abbia una perdita di potenza o un arresto anomalo del sistema prima che tutto il contenuto della cache arrivi al disco. Perché? ->
Il problema che può sorgere qui è relativo alla solidità della transazione del file system e / o del contenuto del file di database a questi scritti fuori uso persi. In effetti, quelle scritture potenzialmente perse fuori servizio possono teoricamente corrompere l'integrità della logica di transazione che altrimenti sarebbe stata garantita dalle scritture su disco avvenute in un ordine molto specifico per il supporto.
Ora, naturalmente, i progettisti del file system, dei database, dei controller RAID, ecc. Sono a conoscenza (o certamente dovrebbero essere a conoscenza) di questo fenomeno relativo alla scrittura nella cache. La memorizzazione nella cache di scrittura è estremamente desiderabile dal punto di vista delle prestazioni nella maggior parte degli scenari di I / O di tipo casuale. In effetti, la disponibilità della memorizzazione nella cache di scrittura è un elemento chiave per poter avere un reale vantaggio per il più avanzato Accodamento comandi nativo ( NCQ) supportato su SATA più recenti e sulle ultime generazioni di implementazioni PATA. Pertanto, per garantire l'ordine al supporto fisico in determinati momenti critici, il file system e / o l'applicazione, ecc. Possono richiedere in modo specifico un flush delle cache di scrittura sul supporto. Al completamento di questa richiesta di sincronizzazione, tutto ciò che è in sospeso da (potenzialmente) buffer di file, memorizzazione nella cache del disco del sistema operativo, memorizzazione nella cache del disco fisico ecc. È effettivamente disponibile sul supporto per la progettazione del sistema di transazione nelle giuste operazioni critiche. Cioè, ciò accade correttamente se i programmatori effettuano le chiamate giuste nella parte superiore E ogni elemento di questa catena di livelli software e hardware ha svolto correttamente il proprio lavoro. vale a dire: non ci sono bug a questo proposito nell'unità, nei controller RAID, nei driver del disco, nelle cache del sistema operativo, nel file system, nel motore di database, ecc. Questo è un sacco di software che tutto deve funzionare esattamente bene. Inoltre, verificare la correttezza in questo senso è molto difficile perché in quasi tutte le situazioni normalmente l'ordine di scrittura non ha alcuna importanza .... e gli scenari di interruzione dell'alimentazione e crash sono test difficili da costruire. Quindi, alla fine, "disattivare la memorizzazione nella cache di scrittura" in uno o più dei vari livelli e / o significati di questo termine ... ha la reputazione di "risolvere" determinati tipi di problemi. In effetti, la disattivazione dei comportamenti di memorizzazione nella cache di scrittura del controller RAID o delle cache del disco del sistema operativo o dell'unità, ecc. Sta evitando uno o più bug nel sistema ..... e la fonte di tale tradizione. e le interruzioni di corrente e gli scenari di crash sono test difficili da costruire. Quindi, alla fine, "disattivare la memorizzazione nella cache di scrittura" in uno o più dei vari livelli e / o significati di questo termine ... ha la reputazione di "risolvere" determinati tipi di problemi. In effetti, la disattivazione dei comportamenti di memorizzazione nella cache di scrittura del controller RAID o delle cache del disco del sistema operativo o dell'unità, ecc. Sta evitando uno o più bug nel sistema ..... e la fonte di tale tradizione. e le interruzioni di corrente e gli scenari di crash sono test difficili da costruire. Quindi, alla fine, "disattivare la memorizzazione nella cache di scrittura" in uno o più dei vari livelli e / o significati di questo termine ... ha la reputazione di "risolvere" determinati tipi di problemi. In effetti, la disattivazione dei comportamenti di memorizzazione nella cache di scrittura del controller RAID o delle cache del disco del sistema operativo o dell'unità, ecc. Sta evitando uno o più bug nel sistema ..... e la fonte di tale tradizione.
In ogni caso, tornando al nocciolo della domanda: in SATA, la gestione specifica di tutti i comandi di lettura / scrittura del disco e i comandi flush cache sono ben definiti dalle specifiche SATA . Inoltre, i produttori di unità dovrebbero disporre di una documentazione dettagliata per ciascun modello di unità o famiglia di unità che descriva la loro implementazione e conformità a queste regole come questo esempio per le unità Barracuda di Seagate . In particolare, vedere i dettagli delle FUNZIONI DEL SET SATAIl comando che controlla la modalità operativa dell'unità e in particolare l'opzione 82h può essere utilizzato per disabilitare la memorizzazione nella cache del disco a livello di unità poiché l'impostazione predefinita è sicuramente la cache di scrittura abilitata su tutte le unità di cui sono a conoscenza. Se si desidera veramente disabilitare la cache, questo comando deve essere eseguito all'avvio di ogni reimpostazione o accensione di un'unità ed è generalmente sotto il controllo dei driver del disco per il proprio sistema operativo. Potresti essere in grado di incoraggiare il tuo driver del sistema operativo a impostare questa modalità tramite un tipo di IOCTL e / o impostazioni del Registro di sistema, ma questo varia notevolmente.