Ich verwende eine SSD, die über eine SATA-zu-USB-Brücke an einen Mac angeschlossen ist, um relativ große Dateien zu archivieren. Nachdem ich sie auf die SSD übertragen habe, hänge ich sie ab und ziehe den Stecker.
Diese SSD verfügt über einen DRAM-Cache. Soweit ich weiß, wird dieser Cache sowohl zum Zwischenspeichern von Schreibvorgängen als auch zum Speichern einer Kopie der Dateizuordnung verwendet. Wenn ich die SSD ausstecke, ohne sie auszuhängen, oder wenn sie gerade schreibt, gehe ich davon aus, dass es sehr gut möglich ist, dass im DRAM zwischengespeicherte Daten verloren gehen und möglicherweise sogar Dateien, da Zeiger auf Daten, die sich in der Zuordnung geändert haben, ebenfalls verloren gehen.
Meine Frage ist:Wenn ich das Laufwerk aushänge und es im Anschluss sofort wieder ausstecke, besteht dann die Möglichkeit, dass ich die Stromversorgung der SSD unterbreche, bevor sie mit dem Schreiben des DRAM-Inhalts auf die Festplatte fertig ist?
Verwaltet das Betriebssystem/APFS den DRAM und stellt sicher, dass dieser geleert wird, bevor er ausgehängt wird, oder erledigt dies die Firmware in der SSD?
Antwort1
Der DRAM auf der SSD wird von der Firmware verwaltet, aber das Betriebssystem kann der Firmware mithilfe der „Barrier“-Funktionsaufrufe mitteilen, alle ausstehenden Daten in den stabilen Speicher zu übertragen. Das Betriebssystem kann der SSD auch mitteilen, ob der Schreibcache überhaupt aktiviert werden soll.
Wenn Sie das Laufwerk sauber aushängen, führt das Betriebssystem die erforderlichen Funktionsaufrufe aus, um sicherzustellen, dass alle Daten vollständig geschrieben werden.
Wenn Sie die Festplatte während des Schreibvorgangs ausstecken, ohne sie gründlich auszuhängen, ist alles möglich und das Ergebnis hängt von der SSD-Firmware, dem Dateisystem und verschiedenen anderen Faktoren ab.
Antwort2
Es gibt sowohl DRAM im Host, der vom Betriebssystem gesteuert wird, als auch DRAM innerhalb der SSD, der von der Firmware der SSD gesteuert wird.
Wie in der anderen Antwort angegeben, sollte bei ordnungsgemäßem Auswerfen alles durch genau definierte Mechanismen erledigt werden, die Teil der SATA- und USB-Protokolle sind, um Aktionen zwischen dem Host und der SSD zu synchronisieren.
Wenn Sie es mitten im Schreiben herausziehen, bleiben wahrscheinlich Daten sowohl im DRAM des Hosts als auch in der SSD ungeschrieben, und es ist ziemlich fraglich, ob die ungeschriebenen Daten im DRAM des Hosts oder im DRAM der SSD waren, da sie in beiden Fällen verloren gehen. In dieser Situation gibt es wahrscheinlich sogar DatenAnder Bus, der vom Host gesendet, aber noch nicht von der SSD empfangen wurde.