¿El disco duro que tiene la capacidad de "leer" datos antiguos mientras realiza una escritura?

3

¿Hay un disco duro (comando de protocolo, modelo específico, etc.) que, mientras escribe datos nuevos sobre datos antiguos, "lee" / devuelve los datos antiguos al controlador / sistema operativo? (De manera análoga a una lectura-escritura simultánea).

He estado buscando el (los) protocolo (s) SATA / hard drisk en busca de algo que cumpla con los criterios, pero es muy posible que me falte el vocabulario para buscar correctamente.

Lo más cercano que he encontrado es un comando ATAPI para leer después de escribir, que se parece al opuesto de lo que estoy buscando. Quiero "leer antes de escribir" o "leer como escribo".

    
pregunta eitan27

6 respuestas

5

No esperaría que tal característica pudiera implementarse de una manera que fuera más eficiente que simplemente alternar los comandos de lectura y escritura. Si la unidad tiene un almacenamiento en búfer eficiente, es probable que la unidad responda a la primera solicitud de "sector de lectura" leyendo en una memoria intermedia la pista completa que contiene ese sector (la solicitud se notificaría tan exitosa tan pronto como se leyera el sector solicitado, pero el saldo de la pista estaría disponible para satisfacer futuras solicitudes). La unidad almacenaría en búfer la solicitud de escritura y la informaría como completada inmediatamente. Cuando la unidad recibe la solicitud de leer el segundo sector, la unidad habrá terminado de leer toda la pista o estaría en el proceso de hacerlo. Entonces almacenaría la segunda solicitud de escritura e informaría que se había completado. Dependiendo de la forma exacta en que funciona el almacenamiento en búfer de la unidad, y de las interacciones de tiempo entre la unidad y el host, la unidad puede o no alcanzar la mayor velocidad teóricamente posible, pero probablemente debería estar muy cerca. No veo cómo usar un comando de "leer y escribir" sería mejor que usar comandos de "leer" y "escribir" por separado, ya que la unidad no podría escribir físicamente un sector en el disco hasta una vez que se leyera.

    
respondido por el supercat
4

Es imposible leer y escribir simultáneamente. La escritura se realiza utilizando un sumidero de corriente diferencial en la misma bobina de cabezal magnético con toma central. Una señal lógica de Habilitar escritura (-) deshabilita la ruta de lectura por diseño. Leer Modificar escritura es una posibilidad de capa de aplicación que no se admite de forma predeterminada en el conjunto de comandos.

Sin embargo, esto es algo que se realiza dentro de la emulación de la unidad Flash. Cada sistema operativo puede diferir en la implementación de Read Modify Write (RMW)

Por ejemplo, en Solaris , ZFS escritura aleatoria, prueba de tamaño de bloque de fs alineada con 4K muestra una mejora de 230x en comparación con la ejecución de RMW en f / w.

    
respondido por el user11355
3

Por lo general, si escribe datos nuevos significa que ya no necesita los datos antiguos, por lo tanto, no hay ningún comando que lo haga por usted. Si aún necesita los datos antiguos, tendrá que leerlos por separado antes de sobrescribirlos con los nuevos datos.

    
respondido por el stevenvh
1

Los conjuntos de comandos ATAPI, SATA y SCSI no admiten un solo comando de lectura y escritura. Tendrá que escribir un software que realice una lectura y luego una secuencia de escritura para obtener el mismo efecto.

Si nos da más información sobre su aplicación y sobre el problema que esta característica ayudaría a resolver, podríamos ayudarle a resolver su problema a pesar de que esta característica no esté presente en el hardware que está tratando de usar.

    
respondido por el Adam Davis
1

Un punto más: las pistas son muy pequeñas y el brazo que lleva la cabeza sigue una trayectoria circular, por lo que la cabeza de lectura a menudo se encuentra sobre una pista diferente a la cabeza de escritura. Por lo tanto, leer cualquier pista antes de escribirla es imposible sin esperar muchas revoluciones de disco y movimientos de la cabeza.

    
respondido por el Nigel Davies
0

Según tengo entendido, es probable que desee que se lean los datos antiguos antes de sobrescribirlos ... Así que es mejor poner una programación de round robin al escribir los datos, donde primero se ejecuta una operación de lectura en el segmento y pronto se sobrescribe el segmento.

    
respondido por el perilbrain

Lea otras preguntas en las etiquetas