Articulo de referencia

Búfer de disco

En esta unidad de disco duro, la placa controladora contiene un circuito integrado de RAM que se utiliza para el búfer del disco. Un disco duro Western Digital de 500 GB con u...

En esta unidad de disco duro, la placa controladora contiene un circuito integrado de RAM que se utiliza para el búfer del disco.
Un disco duro Western Digital de  500 GB con un búfer de 16 MB. 

En el almacenamiento informático , un búfer de disco (a menudo denominado indistintamente caché de disco o búfer de caché ) es la memoria integrada en un disco duro (HDD) o una unidad de estado sólido (SSD) que actúa como búfer entre el resto del ordenador y el plato físico del disco duro o la memoria flash que se utiliza para el almacenamiento. [ 1 ] Los discos duros modernos vienen con entre 8 y 256 MiB de dicha memoria, y las unidades de estado sólido vienen con hasta 4 GB de memoria caché. [ 2 ]  

Desde finales de la década de 1980, casi todos los discos duros que se venden incorporan microcontroladores y una interfaz ATA , Serial ATA , SCSI o Fibre Channel . El circuito de la unidad suele tener una pequeña cantidad de memoria, que se utiliza para almacenar los datos que entran y salen de los platos del disco.

El búfer de disco es físicamente distinto y se utiliza de manera diferente a la caché de páginas que normalmente mantiene el sistema operativo en la memoria principal del ordenador . El búfer de disco está controlado por el microcontrolador de la unidad de disco duro, y la caché de páginas está controlada por el ordenador al que está conectado dicho disco. El búfer de disco suele ser bastante pequeño, oscilando entre 8 MB y 4 GB, y la caché de páginas generalmente es toda la memoria principal no utilizada. Mientras que los datos en la caché de páginas se reutilizan varias veces, los datos en el búfer de disco rara vez se reutilizan. [ 3 ] En este sentido, los términos caché de disco y búfer de caché son nombres inapropiados; la memoria del controlador integrado se denomina más apropiadamente búfer de disco .

Cabe destacar que los controladores de matrices de discos , a diferencia de los controladores de discos , suelen tener una memoria caché normal de entre 0,5 y 8  GiB.

Usos

Lectura anticipada/lectura atrasada

Cuando el controlador del disco realiza una lectura física, el actuador mueve el cabezal de lectura/escritura hacia (o cerca de) el cilindro correcto. Tras un periodo de estabilización y, posiblemente, un ajuste fino, el cabezal de lectura comienza a leer los datos de la pista, y solo queda esperar a que la rotación del plato proporcione los datos solicitados.

Los datos leídos antes de la solicitud durante esta espera no son solicitados pero están disponibles gratuitamente, por lo que normalmente se guardan en el búfer del disco en caso de que se soliciten posteriormente.

De manera similar, se pueden leer datos de forma gratuita después de los solicitados si el cabezal puede mantenerse en la trayectoria correcta porque no hay otra lectura que ejecutar o la siguiente actuación puede comenzar más tarde y aún así completarse a tiempo. [ 4 ]

Si varias lecturas solicitadas se encuentran en la misma pista (o cerca unas de otras en una pista en espiral), la mayoría de los datos no solicitados entre ellas se leerán tanto por adelantado como por detrás.

Sincronización de velocidad

La velocidad de la interfaz de entrada/salida del disco con el ordenador casi nunca coincide con la velocidad a la que se transfieren los bits desde y hacia el plato del disco duro . El búfer del disco se utiliza para que tanto la interfaz de entrada/salida como el cabezal de lectura/escritura del disco puedan funcionar a máxima velocidad.

Aceleración de escritura

El microcontrolador integrado del disco puede indicar al ordenador principal que la escritura en el disco ha finalizado inmediatamente después de recibir los datos, antes de que estos se escriban realmente en el plato. Esta señal temprana permite que el ordenador principal siga funcionando aunque los datos aún no se hayan escrito. Esto puede ser peligroso, ya que si se interrumpe el suministro eléctrico antes de que los datos se fijen permanentemente en el medio magnético, se perderán del búfer del disco y el sistema de archivos podría quedar en un estado inconsistente.

En algunos discos, este período vulnerable entre la señal de finalización de la escritura y la corrección de los datos puede ser arbitrariamente largo, ya que la escritura puede posponerse indefinidamente debido a nuevas solicitudes. Por este motivo, el uso de la aceleración de escritura puede resultar controvertido. Sin embargo, se puede mantener la consistencia mediante el uso de un sistema de memoria con respaldo de batería para el almacenamiento en caché de datos, aunque esto generalmente solo se encuentra en controladores RAID de gama alta .

Como alternativa, se puede desactivar el almacenamiento en caché cuando la integridad de los datos se considere más importante que el rendimiento de escritura. Otra opción es enviar los datos al disco en un orden cuidadosamente gestionado y emitir comandos de "vaciado de caché" en los lugares adecuados, lo que generalmente se conoce como la implementación de barreras de escritura .

Cola de comandos

Los discos SATA más recientes y la mayoría de los discos SCSI pueden aceptar múltiples comandos mientras se ejecuta uno solo mediante la "cola de comandos" (consulte NCQ y TCQ ). Estos comandos se almacenan en el controlador integrado del disco hasta que se completan. Una ventaja es que los comandos se pueden reordenar para procesarlos de manera más eficiente, de modo que los comandos que afectan a la misma área del disco se agrupan. Si una lectura hace referencia a los datos en el destino de una escritura en cola, se devolverán los datos que se van a escribir.

NCQ se suele utilizar junto con el almacenamiento en búfer de escritura habilitado. En el caso de un comando FPDMA de lectura/escritura con el bit de Acceso a Unidad Forzada (FUA, véase más abajo ) establecido en 0 y el almacenamiento en búfer de escritura habilitado, el sistema operativo puede considerar que la operación de escritura ha finalizado antes de que los datos se escriban físicamente en el medio. En el caso de que el bit FUA esté establecido en 1 y el almacenamiento en búfer de escritura habilitado, la operación de escritura solo finaliza después de que los datos se hayan escrito físicamente en el medio.

Control de caché desde el host

vaciado de caché

Los datos aceptados en la caché de escritura de un dispositivo de disco se escribirán finalmente en los platos del disco, siempre que no se produzca una condición de inanición como resultado de fallos en el firmware y que la alimentación del disco no se interrumpa antes de que todas las escrituras en caché se fuercen a los platos del disco. Para controlar la caché de escritura, la especificación ATA incluyó los comandos FLUSH CACHE (E7h) y FLUSH CACHE EXT (EAh). Estos comandos hacen que el disco complete la escritura de datos desde su caché, y el disco devolverá el estado "bueno" después de que los datos en la caché de escritura se hayan escrito en el medio de disco. Además, cuando la unidad recibe un comando STANDBY IMMEDIATE, en medios de disco este comando aparcará el cabezal, en medios flash este comando guardará la tabla de asignación FTL . [ 5 ]

Un sistema operativo moderno (como Windows y Linux ) envía los comandos FLUSH CACHE y STANDBY IMMEDIATE a las unidades de disco duro durante el proceso de apagado. Además, un sistema operativo moderno ejecuta sync() periódicamente, que normalmente ejecuta el comando FLUSH CACHE. [ 6 ]

El vaciado obligatorio de la caché se utiliza en Linux para las barreras de escritura en algunos sistemas de archivos (por ejemplo, ext4 ), junto con el comando de escritura Force Unit Access para los bloques de confirmación del diario . [ 7 ]

Acceso a la Unidad de Fuerza (FUA)

El acceso forzado a la unidad (FUA) es una opción de comando de escritura de E/S que fuerza la escritura de datos hasta el almacenamiento permanente. [ 8 ] Los comandos de escritura FUA (WRITE DMA FUA EXT 3Dh, WRITE DMA QUEUED FUA EXT 3Eh, WRITE MULTIPLE FUA EXT CEh), a diferencia de los comandos correspondientes sin FUA, escriben datos directamente en el medio, independientemente de si el almacenamiento en caché de escritura en el dispositivo está habilitado o no. El comando de escritura FUA no regresa hasta que los datos se escriben en el medio, por lo que los datos escritos por un comando de escritura FUA completado están en el medio permanente incluso si el dispositivo se apaga antes de emitir un comando FLUSH CACHE. [ 9 ] [ 10 ]   

FUA apareció en el conjunto de comandos SCSI y posteriormente fue adoptado por SATA con NCQ . FUA es más preciso, ya que permite forzar una única operación de escritura en medios estables y, por lo tanto, tiene un menor impacto en el rendimiento general en comparación con los comandos que vacían toda la caché del disco, como la familia de comandos ATA FLUSH CACHE. [ 10 ] [ 11 ]

Windows (Vista y versiones posteriores) admite FUA como parte de NTFS transaccional , pero solo para discos SCSI o Fibre Channel donde la compatibilidad con FUA es común. [ 12 ] Se desconoce si una unidad SATA que admite comandos de escritura FUA realmente respetará el comando y escribirá datos en los platos del disco según lo indicado; por lo tanto, Windows 8 y Windows Server 2012 envían comandos para vaciar la caché de escritura del disco después de ciertas operaciones de escritura. [ 13 ]

Aunque el kernel de Linux obtuvo soporte para NCQ alrededor de 2007, SATA FUA permanece deshabilitado por defecto debido a regresiones que se encontraron en 2012 cuando se probó el soporte del kernel para FUA. [ 14 ] [ 15 ] El kernel de Linux admite FUA a nivel de capa de bloques. [ 16 ]

Véase también

Referencias

  1. Mark Kyrnin. "Qué buscar en un disco duro" . about.com . Archivado del original el 4 de abril de 2015. Consultado el 20 de diciembre de 2014. El búfer de un disco es una cantidad de RAM en el disco para almacenar datos a los que se accede con frecuencia.
  2. "Samsung SSD 860 PRO | Samsung V-NAND Consumer SSD | Sitio web global de Samsung Semiconductor" . Samsung . Archivado del original el 6 de abril de 2018. Consultado el 16 de julio de 2018. MEMORIA CACHÉ: 4 GB DDR4 de bajo consumo (4096 GB)
  3. Kozierok, Charles M. (17 de abril de 2001). "Tamaño de la caché interna (búfer)" . The PC Guide . Archivado del original el 30 de diciembre de 2018. Recuperado el 20 de diciembre de 2014 .
  4. Discos para centros de datos .
  5. Hitachi (2006). Especificación de la unidad de disco Deskstar 7K80, 4.ª edición (revisión 1.6) (12 de septiembre de 2006) Final . Hitachi Global Storage Technologies. págs. 99, 130, 131. 
  6. https://manpages.debian.org/stable/e2fsprogs/ext4.5.en.html
  7. Christoph Hellwig; Theodore Ts'o . "¿Envía ext4 FUA para vaciar la caché del disco?" . spinics.net . Consultado el 18 de marzo de 2014 .
  8. Jonathan Corbet (18 de agosto de 2010). "El fin de las barreras de bloque" . LWN.net . Consultado el 27 de junio de 2015 .
  9. "Tecnología de la información - Anexo AT 8 - Conjunto de comandos ATA/ATAPI (ATA8-ACS)" (PDF) . T13/1699-D, revisión 6a, 6 de septiembre de 2008. American National Standards Institute, Inc. Archivado del original (PDF) el 6 de agosto de 2020. Consultado el 14 de diciembre de 2020 .
  10. 1 2 Gregory Smith (2010). PostgreSQL 9.0: Alto rendimiento . Packt Publishing Ltd. pág. 78. ISBN  978-1-84951-031-8.
  11. Bruce Jacob; Spencer Ng; David Wang (2010). Sistemas de memoria: caché, DRAM, disco . Morgan Kaufmann. pág. 734. ISBN  978-0-08-055384-9.
  12. "Implementación de NTFS transaccional (Windows)" . Msdn.microsoft.com. 5 de diciembre de 2013. Consultado el 24 de enero de 2014 .
  13. "Acceso forzado a la unidad | Trabajando duro en TI" . Workinghardinit.wordpress.com. 12 de octubre de 2012. Archivado del original el 12 de enero de 2014. Consultado el 24 de enero de 2014 .
  14. "Regresión relacionada con el almacenamiento en linux-next 20120824" . 12 de septiembre de 2012. Consultado el 27 de junio de 2015 .
  15. "Revertir " libata: habilitar la detección fua de disco SATA por defecto " " . GitHub . 2012-09-13 . Recuperado 2015-06-27 .
  16. "Documentación del kernel de Linux: Documentation/block/writeback_cache_control.txt" . kernel.org . 12 de agosto de 2013. Consultado el 24 de enero de 2014 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Disk_buffer&oldid=1362919096#FUA "