Festplatte, die alte Daten "lesen" kann, während sie einen Schreibvorgang ausführt?

Gibt es eine Festplatte (Protokollbefehl, bestimmtes Modell usw.), die beim Schreiben neuer Daten über alte Daten die alten Daten "liest" / an den Controller / das Betriebssystem zurückgibt? (Analog zu einem gleichzeitigen Lesen-Schreiben).

Ich habe SATA-/Festplattenprotokolle auf der Suche nach etwas nachgeschlagen, das die Kriterien erfüllt, aber es ist durchaus möglich, dass mir das Vokabular fehlt, um richtig zu suchen.

Das nächste, was ich gefunden habe, ist ein ATAPI-Befehl für Read-after-Write - was dem Gegenteil von dem ähnelt, wonach ich suche. Ich möchte "Lesen-vor-dem-Schreiben" oder "Lesen-wie-ich-schreiben".

Read-after-Write eignet sich gut zur Überprüfung der Daten.

Antworten (6)

Ich würde nicht erwarten, dass eine solche Funktion auf eine Weise implementiert werden könnte, die effizienter wäre, als einfach Lese- und Schreibbefehle abzuwechseln. Wenn das Laufwerk über eine effiziente Pufferung verfügt, würde das Laufwerk wahrscheinlich auf die erste "Lese-Sektor"-Anforderung antworten, indem es die gesamte Spur, die diesen Sektor enthält, in einen Puffer liest (die Anforderung würde als erfolgreich gemeldet, sobald der angeforderte Sektor gelesen wurde, aber der Rest des Tracks wäre verfügbar, um zukünftige Anfragen zu erfüllen). Das Laufwerk würde die Schreibanforderung zwischenspeichern und sofort als abgeschlossen melden. Wenn das Laufwerk die Anforderung zum Lesen des zweiten Sektors erhält, hat das Laufwerk entweder die gesamte Spur gelesen oder ist gerade dabei, dies zu tun. Es würde dann die zweite Schreibanforderung puffern und diese als abgeschlossen melden. Abhängig von der genauen Funktionsweise der Pufferung des Laufwerks und den zeitlichen Interaktionen zwischen dem Laufwerk und dem Host kann das Laufwerk die theoretisch höchstmögliche Geschwindigkeit erreichen oder nicht, aber es sollte wahrscheinlich ziemlich nahe kommen. Ich sehe nicht, wie die Verwendung eines Befehls "Lesen und dann Schreiben" besser wäre als die Verwendung separater Befehle "Lesen" und "Schreiben", da das Laufwerk einen Sektor erst nach dem Lesen physisch auf die Festplatte schreiben könnte.

Es ist unmöglich, gleichzeitig zu lesen und zu schreiben. Das Schreiben wird unter Verwendung einer Differenzstromsenke in dieselbe Magnetkopfspule mit Mittelanzapfung ausgeführt. Ein Write-Enable(-)-Logiksignal sperrt den Lesepfad konstruktionsbedingt. Read Modify Write ist eine Möglichkeit der Anwendungsschicht, die standardmäßig nicht im Befehlssatz unterstützt wird.

Dies ist jedoch etwas, das innerhalb der Flash-Laufwerk-Emulation durchgeführt wird. Jedes Betriebssystem kann sich in der Implementierung von Read Modify Write (RMW) unterscheiden.

Beispielsweise zeigt in Solaris , ZFS Random Write, 4K-aligned fs block size test eine 230-fache Verbesserung im Vergleich zur Ausführung von RMW in f/w.

Wenn Sie neue Daten schreiben, bedeutet dies normalerweise, dass Sie die alten Daten nicht mehr benötigen, daher gibt es keinen Befehl, der dies für Sie erledigt. Wenn Sie die alten Daten noch benötigen, müssen Sie sie separat lesen, bevor Sie sie mit den neuen Daten überschreiben.

Die ATAPI-, SATA- und SCSI-Befehlssätze unterstützen keinen einzelnen Lese- und dann Schreibbefehl. Sie müssen Software schreiben, die nacheinander einen Lesevorgang und dann einen Schreibvorgang ausführt, um denselben Effekt zu erzielen.

Wenn Sie uns mehr über Ihre Anwendung und das Problem mitteilen, das diese Funktion lösen würde, können wir Ihnen möglicherweise bei der Lösung Ihres Problems helfen, obwohl diese Funktion in der Hardware, die Sie verwenden möchten, nicht vorhanden ist.

Ein weiterer Punkt: Die Spuren sind so klein und der Arm, der den Kopf trägt, folgt einer kreisförmigen Bahn, sodass der Lesekopf oft über einer anderen Spur als der Schreibkopf ist. Somit ist es unmöglich, einen gegebenen Track direkt vor dem Schreiben zu lesen, ohne auf viele Plattenumdrehungen und Kopfbewegungen zu warten.

Soweit ich weiß, möchten Sie wahrscheinlich, dass die alten Daten gelesen werden, bevor sie überschrieben werden ... Es ist also besser, beim Schreiben der Daten eine Round-Robin-Planung festzulegen , bei der zuerst eine Leseoperation über das Segment ausgeführt wird und das Segment bald überschrieben wird .