Dispositivos de entrada/salida, discos y RAID

Aprende cómo trabaja un sistema operativo con el hardware que almacena y transfiere datos. Sigue una solicitud desde una llamada al sistema, a través del controlador, hasta el dispositivo, y observa cómo el sondeo, las interrupciones y el acceso directo a memoria (DMA) reparten el trabajo entre la CPU y el dispositivo. Calcula los tiempos de acceso a discos duros y compara las políticas de planificación de disco. Después, descubre cómo las unidades SSD de memoria flash ocultan los bloques de borrado y el desgaste mediante una capa de traducción. Calcula la capacidad, la velocidad y la tolerancia a fallos de los niveles RAID y usa sumas de comprobación para detectar y reparar la corrupción silenciosa de datos.

IntermedioUnidad 7 de 9 del curso Curso de Sistemas operativos

Lo que aprenderás

  1. Describe qué presenta un dispositivo al sistema operativo y cómo el núcleo usa el sondeo, las interrupciones, el acceso directo a memoria (DMA) y los controladores de dispositivos para transferir datos entre la memoria y los dispositivos.
    • Describe la interfaz del dispositivo y el protocolo básico de entrada/salida
      Sitúa los dispositivos en los buses del equipo, nombra los registros que expone un dispositivo y sigue el protocolo sencillo que usa el sistema operativo para darle un comando.
    • Elige entre sondeo e interrupciones
      Explica cómo las interrupciones permiten que la CPU haga trabajo útil mientras un dispositivo está ocupado, cuándo es mejor elegir el sondeo y cómo el sondeo híbrido y la agrupación de interrupciones reducen la sobrecarga.
    • Transfiere datos mediante acceso directo a memoria (DMA)
      Explica por qué copiar datos con la CPU desperdicia tiempo en transferencias grandes y cómo un motor DMA transfiere datos entre la memoria y un dispositivo mientras la CPU hace otro trabajo.
    • Explica los controladores de dispositivos y las capas de la pila de almacenamiento
      Muestra cómo los controladores ocultan los detalles de los dispositivos tras interfaces generales, sigue una solicitud de lectura desde una llamada al sistema hasta el dispositivo y de vuelta, y compara cómo SATA y NVMe ponen las solicitudes en cola.
  2. Describe cómo un disco duro almacena datos y accede a ellos, calcula el tiempo y la tasa de transferencia de una operación de entrada/salida y compara las políticas de planificación que reducen el tiempo de búsqueda y de rotación.
    • Describe la estructura de un disco duro y cómo se direcciona
      Relaciona la interfaz de direcciones de sector de la unidad con sus platos, pistas, cabezales y caché, y explica qué garantiza y qué no garantiza la unidad.
    • Calcula el tiempo y la tasa de transferencia de una operación de entrada/salida de disco
      Descompón una operación de entrada/salida en búsqueda, rotación y transferencia, calcula cada componente a partir de las especificaciones de una unidad y explica por qué las cargas de trabajo aleatorias y secuenciales tienen rendimientos tan distintos.
    • Compara políticas de planificación de disco
      Ordena las solicitudes de disco pendientes con FCFS, SSTF, SCAN, C-SCAN, LOOK y SPTF, calcula el movimiento del cabezal en cada caso y explica dónde se realiza la planificación en un sistema moderno.
  3. Describe las celdas, páginas y bloques de borrado de memoria flash, explica cómo la capa de traducción de memoria flash oculta sus limitaciones y compara las unidades SSD con los discos duros en rendimiento, resistencia y coste.
    • Describe la memoria flash: celdas, páginas, bloques y desgaste
      Explica cómo la memoria flash NAND almacena bits, cómo se organiza en páginas y bloques de borrado, qué operaciones admite y por qué se desgasta.
    • Explica la capa de traducción de memoria flash
      Describe cómo el firmware de una unidad SSD asigna bloques lógicos a páginas de memoria flash, escribe como un registro, recolecta basura y reparte el desgaste, y calcula la amplificación de escritura y el tamaño de la tabla de correspondencias.
    • Compara las unidades SSD con los discos duros
      Compara la latencia, la tasa de procesamiento, la resistencia, el comportamiento ante fallos y el coste de las unidades SSD y los discos duros, y explica qué cambia para el sistema operativo.
  4. Explica cómo un conjunto redundante de discos distribuye bloques mediante bandas, duplicación en espejo y paridad, calcula la capacidad y la tasa de procesamiento de cada nivel RAID y elige un nivel adecuado para una carga de trabajo y sus riesgos de fallo.
    • Explica qué ofrece un conjunto RAID y cómo evaluarlo
      Describe un conjunto RAID como un disco lógico construido a partir de varios discos, el modelo de fallos y las medidas utilizadas para comparar los niveles RAID, y los problemas que debe gestionar todo diseño con varios discos.
    • Distribuye bloques mediante bandas y duplicación en espejo
      Calcula dónde se encuentra un bloque lógico en RAID-0 y RAID-10, explica el efecto del tamaño del fragmento por disco y determina la capacidad, la fiabilidad y el rendimiento de la distribución en bandas y la duplicación en espejo.
    • Protege los datos con paridad en RAID-4, RAID-5 y RAID-6
      Calcula la paridad XOR, reconstruye un bloque perdido a partir de ella, actualiza la paridad en una escritura pequeña y explica el problema de las escrituras pequeñas y cómo lo gestionan RAID-5 y RAID-6.
    • Elige un nivel RAID y planifica la respuesta a fallos y las reconstrucciones
      Relaciona los niveles RAID con las cargas de trabajo, estima el tiempo de reconstrucción y el riesgo de sectores ilegibles durante una reconstrucción, y justifica la elección entre duplicación en espejo y paridad.
  5. Reconoce cómo fallan los dispositivos de almacenamiento de forma parcial y silenciosa, calcula y compara sumas de comprobación y diseña un sistema de almacenamiento que detecte la corrupción, las escrituras en ubicaciones incorrectas y las escrituras perdidas y las repare a partir de copias redundantes.
    • Reconoce fallos de almacenamiento distintos del fallo completo de un disco
      Describe los errores latentes de sector, la corrupción silenciosa, las escrituras en ubicaciones incorrectas y las escrituras perdidas, con qué frecuencia ocurren y por qué la redundancia por sí sola no los detecta.
    • Calcula y compara sumas de comprobación
      Calcula sumas de comprobación XOR, por adición y de Fletcher, describe la CRC y compara las funciones de suma de comprobación según los errores que detectan y su coste.
    • Incorpora comprobaciones de integridad a un sistema de almacenamiento
      Decide dónde se almacenan las sumas de comprobación, sigue el recorrido de lectura que detecta y repara la corrupción, detecta escrituras en ubicaciones incorrectas y escrituras perdidas, y planifica la verificación preventiva y sus costes.

Guía de estudio de Dispositivos de entrada/salida

5 capítulos

1

Sigue una solicitud de entrada/salida desde el software hasta el hardware

Un programa puede pedir un bloque de datos sin saber qué controlador lo obtendrá. El núcleo convierte esa solicitud en accesos a registros, transferencias de datos y gestión de la finalización. Sigue esas tareas por separado: cómo llega un comando al dispositivo, cómo espera la CPU y quién transfiere los bytes. Después, reúne las tareas en una pila de almacenamiento que permite que muchos programas y núcleos de CPU compartan dispositivos.

1.1 Da un comando a un dispositivo

Un dispositivo de entrada/salida introduce datos en un equipo, los extrae o los conserva de forma persistente. Un teclado proporciona entrada; una tarjeta de red envía y recibe paquetes; un disco conserva los datos después de desconectar la alimentación. Los dispositivos se conectan mediante buses o interconexiones. PCI Express (PCIe) conecta dispositivos de alto rendimiento como las unidades SSD NVMe. SATA y USB dan servicio a otros dispositivos de almacenamiento y periféricos situados más lejos en la jerarquía. Las interconexiones rápidas son más caras de construir y tienen límites físicos más estrictos, por lo que un equipo combina varios tipos.

La interfaz es la vista del software

Un controlador puede contener procesadores, memoria y firmware, el software que se ejecuta dentro del dispositivo. El sistema operativo lo controla mediante una interfaz de hardware expuesta. Dos controladores pueden tener interiores muy diferentes y admitir los mismos comandos.

Un dispositivo sencillo tiene tres registros:

RegistroQué averigua o proporciona el núcleo
EstadoSi el dispositivo está listo, ocupado, ha terminado o informa de un error
ComandoQué operación debe iniciar
DatosLos bytes que se envían o reciben

Para una operación de salida sencilla, el núcleo comprueba primero el estado hasta que el dispositivo está listo. Después escribe los datos, escribe el comando y comprueba el estado hasta que termina la operación. Por último, comprueba si hay un error. Escribir el comando antes de proporcionar sus datos podría iniciar una operación con un contenido incorrecto. Comprobar repetidamente el estado es sondeo; hacer que la CPU transfiera la carga útil es entrada/salida programada (PIO).

Accede a los registros de forma segura

La entrada/salida por puertos da a los registros un espacio de direcciones separado. En x86, instrucciones como in y out acceden a esos puertos. El núcleo controla qué código puede ejecutarlas. La entrada/salida mapeada en memoria (MMIO) sitúa los registros en el espacio de direcciones físicas, de modo que las cargas y los almacenamientos pueden acceder a ellos mediante mapeos controlados por las tablas de páginas del núcleo. Los dispositivos PCIe normalmente usan MMIO.

Una dirección MMIO representa una operación de dispositivo, aunque su acceso se parezca a un acceso a memoria. Una lectura puede borrar un indicador. Una escritura puede iniciar una transferencia. El estado puede cambiar porque el dispositivo termina un trabajo, sin que la CPU escriba en esa dirección. El comportamiento ordinario de la caché podría ocultar esos cambios o combinar accesos que el dispositivo necesita por separado.

Por ello, los controladores de Linux usan funciones de acceso como readl() y writel(), atributos de mapeo adecuados y las barreras de memoria necesarias. Un puntero volatile puede impedir que el compilador elimine o combine accesos, pero no proporciona toda la ordenación necesaria frente a la memoria ordinaria o la reordenación de la CPU. Por ejemplo, un descriptor de comando en RAM debe ser visible para el dispositivo antes de que un registro de notificación le indique que lo obtenga.

Mantén el control de los dispositivos en el núcleo

Una aplicación normalmente llama a read() o write(). El núcleo comprueba los permisos y ejecuta el protocolo del dispositivo en su nombre. Esto impide que un programa emita comandos que interfieran con la solicitud de otro programa. Un búfer de usuario es el área de datos de la aplicación; un registro de comandos es el punto de control del controlador. Cumplen funciones diferentes aunque ambos tengan direcciones.

Puntos clave

  • La interfaz del dispositivo oculta los componentes internos y el firmware del controlador.
  • Proporciona los datos antes de iniciar el protocolo sencillo de comandos; comprueba después la finalización y los errores.
  • El sondeo comprueba si el dispositivo está listo; la PIO transfiere datos con la CPU.
  • Los accesos a registros MMIO pueden tener efectos secundarios y necesitan funciones de acceso de la plataforma y ordenación.
  • Las llamadas al sistema permiten que el núcleo medie en el acceso compartido a los dispositivos.

1.2 Decide cómo espera la CPU

Un dispositivo puede tardar mucho más en terminar una solicitud de lo que tarda la CPU en emitirla. La estrategia de espera determina si la CPU dedica ese intervalo a comprobar el dispositivo o a ejecutar otro trabajo. No cambia la rapidez con que el propio dispositivo completa la solicitud.

Sondear o suspender

Con sondeo, la CPU lee repetidamente el estado. Una finalización puede detectarse rápidamente, pero las comprobaciones realizadas mientras el dispositivo sigue ocupado consumen tiempo de CPU. Con interrupciones, un proceso que espera una lectura queda bloqueado y puede ejecutarse otro proceso listo. Cuando el dispositivo termina, avisa a la CPU. El manejador de interrupciones del núcleo, también llamado rutina de servicio de interrupción, comprueba la finalización, gestiona el resultado y deja listo al proceso en espera. El planificador decide cuándo vuelve a ejecutarse ese proceso.

Supón que el proceso A inicia una lectura de disco que tarda 10 ms. El sondeo ocupa la CPU durante esa espera. Con entrada/salida mediante interrupciones, el proceso B puede realizar cálculos durante esos mismos 10 ms. La operación de dispositivo de A sigue durando 10 ms; el cálculo útil se solapa con la espera.

Las interrupciones también requieren trabajo: la CPU guarda el estado, ejecuta el manejador, restaura el estado y puede cambiar de proceso y volver a llenar las cachés. El coste suele ser de unos pocos microsegundos. Si un dispositivo responde en 2 µs, un breve bucle de sondeo puede ser más barato que bloquear y despertar el proceso. Las interrupciones son adecuadas para operaciones lentas; un sondeo breve es adecuado para las muy rápidas.

Adapta la espera a la velocidad de finalización y a la carga

Una estrategia híbrida, o de dos fases, sondea brevemente y después suspende el proceso hasta recibir una interrupción si la solicitud sigue sin terminar. Las finalizaciones rápidas evitan el coste de despertar el proceso, mientras que las lentas no ocupan la CPU durante todo el tiempo. Linux admite la comprobación de finalización por sondeo para solicitudes adecuadas de almacenamiento rápido.

Un tráfico intenso de interrupciones crea otro problema. Si casi todos los ciclos de CPU se dedican a gestionar eventos recién llegados, el código que consume sus datos dispone de poco tiempo de ejecución. Esto es bloqueo activo: la máquina está ocupada, pero el progreso útil se desploma. El mecanismo de red NAPI de Linux limita el trabajo de interrupciones y pasa al sondeo por lotes cuando hay carga.

La agrupación de interrupciones reúne varias finalizaciones en una sola notificación. Con 100 000 finalizaciones por segundo y 5 µs de trabajo de CPU por interrupción, las notificaciones separadas cuestan:

100 000×5 μs=0,5 s

Eso es la mitad del tiempo de un núcleo de CPU cada segundo. Combinar ocho finalizaciones por interrupción da 12 500 interrupciones y 62,5 ms de trabajo de CPU por segundo, o el 6,25 % de un núcleo. Una solicitud puede esperar brevemente a su lote, por lo que la menor sobrecarga conlleva una latencia adicional de notificación.

Envía las notificaciones al núcleo adecuado

Los dispositivos PCIe suelen usar MSI o MSI-X, interrupciones entregadas como mensajes a una dirección especial. Varios vectores de interrupción permiten que un dispositivo dirija las finalizaciones de distintas colas a distintos núcleos. Un controlador NVMe puede asociar las colas de cada núcleo con vectores de interrupción adecuados, manteniendo cerca el trabajo de envío y finalización. Más vectores organizan el trabajo de la CPU; no acortan una lectura de memoria flash ni una rotación de disco.

Puntos clave

  • Las interrupciones permiten solapar el cálculo con el tiempo del dispositivo; un proceso cuya solicitud ha terminado pasa a estar listo antes de ejecutarse.
  • Compara el tiempo de sondeo con la sobrecarga de interrupción y despertar para dispositivos rápidos.
  • La espera híbrida sondea brevemente y después bloquea el proceso si es necesario.
  • El bloqueo activo consume tiempo de CPU sin progreso útil.
  • La agrupación reduce la sobrecarga de notificación a cambio de cierta latencia adicional.
  • MSI-X admite vectores de interrupción separados para las colas de dispositivos.

1.3 Delega la transferencia de datos a DMA

Esperar y copiar son tareas separadas. Las interrupciones pueden impedir que la CPU realice espera activa mientras trabaja un dispositivo, pero la CPU seguiría ocupada si tuviera que transferir cada palabra mediante un registro de datos. El acceso directo a memoria (DMA) asigna esa transferencia a un motor de hardware, normalmente dentro del controlador del dispositivo.

Mide el trabajo que la PIO deja a la CPU

Imagina un registro de datos de 4 bytes que tarda 100 ns por acceso. Transferir un bloque de 4 KiB requiere:

4096/4=1024 accesos 1024×100 ns=102,4 μs

Esas operaciones de registro ocupan la CPU. Los búferes más grandes requieren proporcionalmente más accesos. DMA elimina esa copia palabra por palabra mediante registros; la CPU sigue preparando la solicitud y gestionando su finalización.

Sigue una lectura con DMA
  1. El controlador prepara un búfer de destino y lo pone a disposición del dispositivo.
  2. Proporciona la dirección o direcciones DMA, el número de bytes, la dirección de la transferencia y el comando de lectura.
  3. El dispositivo lee los bloques de almacenamiento solicitados y escribe los bytes en memoria.
  4. La CPU ejecuta otro trabajo mientras el dispositivo transfiere los datos.
  5. Se informa de la finalización, normalmente mediante una interrupción. El manejador comprueba el estado y despierta al proceso en espera.

El motor DMA actúa como maestro del bus, iniciando transferencias de memoria. Los costes de configuración dependen del mapeo, la plataforma y el número de regiones de memoria. DMA también consume ancho de banda de memoria compartido con la CPU. Libera instrucciones de la CPU, no todos los recursos.

Describe la memoria dispersa

Un búfer puede ser contiguo en el espacio de direcciones virtuales de un proceso y ocupar páginas físicas separadas. Una lista de dispersión y reunión describe esas regiones como pares de dirección y longitud. Un dispositivo puede realizar una transferencia de una solicitud a través de varias regiones sin que la CPU las copie primero en un único búfer físicamente contiguo.

Por ejemplo, un búfer de tres páginas puede estar respaldado por tres páginas no adyacentes. El controlador crea descriptores para las regiones visibles para el dispositivo y mantiene estables las páginas que respaldan el búfer hasta la finalización. La fijación impide que esas páginas se retiren o reutilicen mientras el hardware aún puede acceder a ellas. Liberar la fijación demasiado pronto supone el riesgo de que una escritura DMA posterior sobrescriba datos de otra persona.

Usa el espacio de direcciones del dispositivo

Un dispositivo normalmente no usa el puntero virtual de una aplicación. La API de DMA del núcleo proporciona direcciones de bus, que pueden diferir de las direcciones físicas de la CPU. Una IOMMU traduce las direcciones de dispositivo a memoria física y restringe la memoria a la que puede acceder un dispositivo. Este aislamiento también ayuda a un hipervisor a asignar un dispositivo a una máquina virtual.

Las cachés de CPU añaden otro paso de coordinación. Antes de una transferencia DMA saliente, el dispositivo debe ver los bytes más recientes de la CPU; después de una transferencia entrante, la CPU debe ver las actualizaciones del dispositivo. Algunos componentes de hardware mantienen la coherencia automáticamente. Otras plataformas requieren sincronización de caché mediante la API de DMA. El mapeo de direcciones, el tiempo de vida de las páginas y la visibilidad en caché resuelven cada uno una parte diferente de la seguridad de la transferencia.

Puntos clave

  • DMA delega la copia de la carga útil; las interrupciones evitan que la CPU espere.
  • La CPU sigue configurando DMA y gestionando su finalización.
  • Las listas de dispersión y reunión describen transferencias a través de regiones de memoria separadas.
  • Las páginas fijadas deben permanecer estables hasta que DMA termine.
  • La API de DMA proporciona direcciones visibles para el dispositivo; una IOMMU las traduce y restringe.
  • La coherencia de caché o la sincronización explícita hacen visibles las actualizaciones de la CPU y del dispositivo.

1.4 Sigue una lectura a través de la pila de almacenamiento

Un controlador de dispositivo traduce una solicitud general en comandos, accesos a registros y gestión de la finalización específicos de un controlador. Esto permite que un sistema de archivos solicite un bloque sin saber si el hardware usa SATA, NVMe o USB. El controlador conoce el protocolo y las particularidades específicos del dispositivo.

Asigna una tarea a cada capa

Una lectura de almacenamiento en Linux suele pasar por esta cadena:

Aplicación → llamada al sistema → sistema de archivos → capa de bloques genérica → controlador de dispositivo → controlador de hardware → dispositivo de almacenamiento.

El sistema de archivos asigna una posición del archivo a bloques de almacenamiento. La capa de bloques pone las solicitudes en cola, fusiona las adyacentes y puede planificar su orden. El controlador de dispositivo envía las operaciones resultantes. El acceso directo al dispositivo de bloques sin procesar puede omitir el sistema de archivos y seguir usando las capas inferiores.

La interfaz estándar permite usar hardware nuevo sin reescribir cada aplicación. También oculta algunas funciones especiales. Interfaces como ioctl() o el envío directo de comandos permiten al software solicitar controles que no encajan en una lectura o escritura ordinaria de bloques.

Separa las clases de dispositivos
ClaseInterfaz habitual y ejemplos
Dispositivo de bloquesBloques direccionados; discos duros y unidades SSD
Dispositivo de caracteresUn flujo de bytes; terminales y puertos serie
Interfaz de redComunicación por paquetes mediante sockets

Linux expone los dispositivos de bloques y de caracteres como archivos especiales, como /dev/sda y /dev/nvme0n1. Los controladores suelen ejecutarse en modo núcleo, por lo que un error en uno de ellos puede bloquear el núcleo o corromper la memoria. El aislamiento de controladores limita ese alcance en los sistemas que lo admiten. La colección de controladores de Linux ocupa una gran parte de su árbol de código fuente; los estudios también han encontrado que el código de los controladores es especialmente propenso a errores.

Distribuye el trabajo en cola entre núcleos

La capa de bloques blk-mq de Linux usa colas de software por CPU y colas de despacho de hardware. Un planificador de entrada/salida como mq-deadline, bfq o kyber puede reordenar el trabajo o gestionar la equidad; none evita una política de planificación adicional. Los discos duros se benefician de reducir las búsquedas. Los dispositivos NVMe rápidos suelen usar none, ya que no tienen un cabezal que reposicionar. El planificador seleccionado aparece entre corchetes en /sys/block/<device>/queue/scheduler.

SATA con AHCI/NCQ admite una cola de hasta 32 comandos pendientes por dispositivo. NVMe admite muchas colas de envío y finalización en memoria: hasta 65 535 colas de entrada/salida, con hasta unos 64 000 comandos por cola. Los controladores reales ofrecen límites menores. Los pares de colas por núcleo reducen la contención en las vías de envío compartidas.

Sigue una lectura NVMe

Un proceso llama a read(fd, buf, 4096). Si hay un fallo de caché, el sistema de archivos localiza el bloque de disco y la capa de bloques construye una solicitud. El controlador NVMe escribe un descriptor en una cola de envío y después escribe en su registro de notificación MMIO. El controlador de hardware obtiene el comando, transfiere los datos a memoria mediante DMA y publica una entrada de finalización. Una interrupción MSI-X hace que el núcleo complete la solicitud. En una lectura con búfer, los datos llegan al búfer de la aplicación a través de la caché de páginas y read() devuelve 4096. Un acierto de caché puede satisfacer la lectura antes de que sea necesaria una operación de entrada/salida del dispositivo.

Puntos clave

  • Los controladores adaptan una interfaz estándar del núcleo a protocolos específicos de cada dispositivo.
  • La capa de bloques pone en cola, fusiona y planifica solicitudes de bloques direccionados.
  • AHCI/NCQ tiene una cola poco profunda por dispositivo; NVMe admite muchas colas en memoria.
  • Un registro de notificación anuncia el trabajo en cola; DMA transfiere la carga útil; la gestión de la finalización completa la solicitud.
2

Calcula los costes de disco y elige un orden de solicitudes

Un disco duro presenta sectores numerados, pero atender una solicitud puede requerir un movimiento del brazo y una espera por la rotación antes de transferir ningún byte. Relaciona esos pasos físicos con la latencia, las IOPS y la tasa de transferencia. Después, compara los órdenes de las solicitudes tanto por el recorrido como por la espera: una ruta corta puede mejorar la tasa de procesamiento mientras una solicitud lejana sigue esperando. Las cachés y el firmware del dispositivo también influyen en lo que observa el sistema operativo.

2.1 Relaciona las direcciones de sector con el hardware del disco

Un disco duro expone un conjunto de sectores numerados desde cero. Estos números son direcciones de bloque lógico (LBA). Tradicionalmente, un sector tenía 512 bytes; muchas unidades usan ahora sectores físicos de 4096 bytes. Una unidad 512e acepta sectores lógicos de 512 bytes sobre ese formato físico mayor. Por tanto, un bloque de 4 KiB de un sistema de archivos puede abarcar varios sectores lógicos.

Imagina las piezas móviles

Los platos magnéticos giran sobre un eje. Cada superficie tiene pistas concéntricas divididas en sectores y un cabezal de lectura/escritura en un brazo móvil. Los cabezales se mueven juntos. Las pistas de las distintas superficies que se encuentran en la misma posición del brazo forman un cilindro. Entre las velocidades habituales del eje están 5400 y 7200 RPM, y 10 000 y 15 000 RPM en familias de discos más rápidas.

Las LBA cercanas suelen colocarse próximas entre sí, lo que ayuda a las lecturas secuenciales a evitar búsquedas repetidas. Un sector reasignado a uno de reserva puede romper esa relación. Así, el software ve un espacio de direcciones lineal útil sin conocer la ubicación física exacta.

Las pistas exteriores tienen más espacio para sectores. La grabación por zonas coloca más sectores en esas pistas, por lo que pasan más bytes bajo el cabezal por revolución. La tasa de procesamiento secuencial puede disminuir a medida que una lectura avanza hacia el centro. El desfase entre pistas desplaza las posiciones de los sectores entre pistas vecinas: después de que el cabezal cambie de pista, el siguiente sector secuencial llega en el momento adecuado en lugar de haber pasado justo antes.

Distingue la finalización de la durabilidad

Una caché de la unidad puede conservar datos leídos recientemente y aceptar escrituras. Estos búferes van desde unos pocos megabytes hasta cientos de megabytes; la caché de lectura puede conservar el resto de una pista que ya pasa bajo el cabezal. Con una caché de escritura diferida, una escritura puede darse por terminada mientras sus datos permanecen en una caché volátil. La escritura inmediata espera a que lleguen al medio. Un vaciado de caché solicita que las escrituras almacenadas en caché lleguen a almacenamiento duradero; el acceso forzado a la unidad (FUA) solicita una finalización duradera para la escritura afectada.

La atomicidad ante un fallo de alimentación es otra propiedad. Una unidad de escritura atómica cambia por completo o permanece sin cambios cuando falla la alimentación. El tamaño del sector por sí solo no ofrece esa garantía: el dispositivo debe documentarla. Una escritura que abarca varias unidades atómicas puede dejar una escritura incompleta, con algunas unidades nuevas y otras antiguas. Los vaciados atienden a la durabilidad; las unidades atómicas, a las actualizaciones parciales.

Interpreta correctamente las etiquetas de capacidad

Las capacidades de las unidades usan prefijos decimales del SI. Las unidades binarias usan potencias de dos:

1 TB=1012 bytes,1 TiB=240 bytes

Por tanto, una unidad de 4 TB contiene:

4×1012/240≈3,64 TiB

Ambas etiquetas describen la misma cantidad de bytes. Una herramienta que muestra aproximadamente 3,64 y lo etiqueta como «TB» ha usado aritmética binaria con una etiqueta de apariencia decimal; la conversión no ha eliminado espacio.

Reconoce una restricción adicional de escritura

La grabación magnética solapada (SMR) superpone pistas adyacentes para almacenar más datos. Reescribir una pista puede alterar la vecina, lo que encarece las actualizaciones aleatorias pequeñas. Las escrituras secuenciales grandes en zonas adecuadas funcionan mejor. Es un disco magnético con una restricción de gestión de escritura, aunque las lecturas ordinarias siguen implicando los mismos cabezales y platos giratorios.

Puntos clave

  • Las LBA identifican sectores lógicos; los tamaños de sector lógico y físico pueden diferir.
  • Los cabezales buscan entre pistas mientras los platos giran bajo ellos.
  • La grabación por zonas y el desfase entre pistas favorecen el acceso secuencial eficiente.
  • La finalización de una escritura diferida puede preceder a la durabilidad; el vaciado y FUA solicitan persistencia.
  • La atomicidad ante un fallo de alimentación depende de la garantía documentada del dispositivo.
  • TB decimal y TiB binario expresan distintas unidades para los mismos bytes.
  • SMR mejora la densidad, pero encarece las reescrituras aleatorias pequeñas.

2.2 Calcula la latencia, las IOPS y la tasa de transferencia

Una solicitud de disco dedica tiempo a llegar a los datos antes de transferirlos. Para una solicitud sencilla sin espera en cola ni acierto de caché, divide el tiempo de servicio en tres partes:

TI/O=Tseek+Trotation+Ttransfer

La búsqueda mueve y estabiliza el brazo en la pista. La latencia rotacional es la espera hasta que el sector llega al cabezal. El tiempo de transferencia corresponde a los bytes que pasan bajo él. La espera en cola, si la hay, añade tiempo antes de que comience el servicio.

Convierte las RPM en tiempo de espera

Una revolución tarda 60 000 ms divididos entre las RPM. A 7200 RPM:

Trev=60 000/7200≈8,33 ms

Para una posición aleatoria del sector, la espera media es media revolución, unos 4,17 ms. A 15 000 RPM, una revolución tarda 4 ms y la espera media es de 2 ms. Unas RPM mayores reducen la latencia rotacional; no reducen directamente el tiempo de búsqueda del brazo.

Las fichas técnicas indican un tiempo medio de búsqueda. Las solicitudes distribuidas uniformemente tienen una distancia media de búsqueda de aproximadamente un tercio del recorrido completo, pero el tiempo de búsqueda no es proporcional a la distancia. La aceleración y la estabilización dominan las búsquedas cortas; las búsquedas largas incluyen más recorrido a velocidad máxima.

Calcula una lectura aleatoria pequeña

Usa una unidad de 7200 RPM con un tiempo medio de búsqueda de 8 ms y una tasa de transferencia de 200 MB/s. Una solicitud de 4 KiB contiene 4096 bytes. Primero calcula la transferencia en segundos:

Ttransfer=4096/(200×106) s≈0,0205 ms

Después suma el posicionamiento y la transferencia:

TI/O≈8+4,17+0,0205=12,19 ms

Una sola solicitud pendiente cada vez da aproximadamente:

IOPS=1/0,01219≈82

La tasa efectiva es de unos 4096 bytes multiplicados por 82 por segundo, o 0,34 MB/s. Una especificación de transferencia de 200 MB/s describe el movimiento de datos una vez que el cabezal está posicionado; no puede eliminar los aproximadamente 12 ms dedicados al posicionamiento para cada solicitud aleatoria pequeña.

Calcula una lectura secuencial larga

Ahora lee 100 MB con una búsqueda inicial y una espera rotacional. El tiempo de transferencia es 100/200 s, o 500 ms. El tiempo total es de unos 512,17 ms, lo que da:

RI/O=100 MB/0,51217 s≈195 MB/s

La tasa efectiva es aproximadamente 580 veces la tasa de lecturas aleatorias pequeñas. Un solo coste de posicionamiento se reparte entre muchos más bytes. Las transferencias secuenciales grandes están dominadas por el tiempo de transferencia; las solicitudes aleatorias pequeñas, por el posicionamiento.

Usa bytes de forma coherente al combinar KiB con MB/s y convierte milisegundos a segundos antes de dividir bytes entre tiempo. Las IOPS son adecuadas para operaciones aleatorias pequeñas; MB/s es adecuado para flujos secuenciales. La lectura anticipada, la colocación cercana y la combinación de escrituras pequeñas en lotes secuenciales mejoran el rendimiento al cambiar la frecuencia con que se paga el coste de posicionamiento.

Puntos clave

  • Suma el tiempo de búsqueda, la latencia rotacional y el tiempo de transferencia para modelar el tiempo de servicio del disco.
  • La latencia rotacional media aleatoria es la mitad de 60 000/RPM milisegundos.
  • Usa bytes y unidades de tiempo coherentes al calcular una tasa de transferencia efectiva.
  • Las solicitudes aleatorias pequeñas pagan repetidamente el coste de posicionamiento; las secuenciales grandes lo reparten.
  • Las IOPS cuentan operaciones por segundo; la tasa de procesamiento cuenta bytes por segundo.

2.3 Compara recorridos de planificación y tiempos de espera

Un planificador de disco elige qué solicitud pendiente atender a continuación. La posición le proporciona información útil sobre el coste de servicio. Reducir el recorrido del brazo ayuda, pero una política también debe tener en cuenta cuánto espera cada solicitud.

Compara las políticas
PolíticaSiguiente solicitud o recorridoCompensación principal
FCFSOrden de llegadaOrden equitativo, recorrido potencialmente largo
SSTFPista más cercanaBajo coste de búsqueda, posible inanición
SCANAtiende durante un barrido hasta el extremo y después invierte la direcciónEspera acotada basada en barridos
C-SCANAtiende en una dirección y vuelve sin atenderEsperas más uniformes entre posiciones
LOOKInvierte la dirección en la última solicitud pendienteEvita el recorrido innecesario hasta el extremo
C-LOOKAtiende en una dirección y vuelve entre las solicitudes pendientes extremasServicio circular sin recorrido innecesario hasta el extremo

SSTF puede elegir repetidamente nuevas solicitudes cercanas mientras una lejana espera. Un sistema operativo que carece de la geometría exacta suele aproximarlo mediante la distancia entre LBA, lo que se denomina primero el bloque más cercano. La equidad de las políticas de tipo SCAN supone que el sistema puede seguir atendiendo trabajo mientras realiza los barridos; un dispositivo sobrecargado sigue sin poder proporcionar un tiempo de respuesta fijo para cada solicitud que llega.

Suma el recorrido tramo a tramo

Considera las pistas 0–199, un cabezal en 50 que se mueve hacia números mayores y las solicitudes 82, 170, 43, 140, 24, 16, 190. Deja de contar cuando terminen todas las solicitudes.

FCFS sigue la lista. Su recorrido es 32 + 88 + 127 + 97 + 116 + 8 + 174 = 642 pistas. SSTF visita 43, 24, 16, 82, 140, 170, 190, con un total de 208 pistas.

SCAN visita las solicitudes de número mayor, continúa hasta 199 y después invierte la dirección hasta 16. Su distancia es 149 + 183 = 332. LOOK gira en 190, lo que da 140 + 174 = 314. C-LOOK va de 50 a 190, vuelve a 16 y termina en 43: 140 + 174 + 27 = 341 pistas. El retorno es un movimiento real aunque no se atienda ninguna solicitud durante él. C-SCAN viajaría hasta 199, volvería a 0 sin atender solicitudes y después atendería las solicitudes en sentido ascendente hasta 43.

El mejor total en esta cola finita no establece la mejor política para un flujo de solicitudes futuras. El reducido recorrido de SSTF aquí conlleva un riesgo de inanición bajo una carga continua.

Incluye la rotación y el firmware

Primero el menor tiempo de posicionamiento (SPTF) minimiza la suma de búsqueda y latencia rotacional. Una pista más lejana puede ser la mejor opción si su sector llega antes. Para elegir con precisión se necesitan la geometría y la posición rotacional, por lo que el firmware de la unidad está en mejor situación para hacerlo que el sistema operativo.

El sistema operativo puede fusionar solicitudes de bloques adyacentes y después enviar varios comandos mediante NCQ. El firmware reordena ese lote usando información interna. La planificación anticipatoria puede dejar brevemente el disco inactivo para esperar una probable solicitud posterior cercana. La planificación con plazos limita el aplazamiento; mq-deadline de Linux registra el vencimiento y favorece las lecturas. La planificación para SSD se centra en la equidad y la latencia porque no hay búsquedas ni rotaciones que ahorrar.

Puntos clave

  • FCFS conserva el orden de llegada; SSTF reduce el recorrido a cambio de riesgo de inanición.
  • SCAN y LOOK barren en ambos sentidos; las variantes circulares atienden en una dirección.
  • Cuenta todos los movimientos, incluido el retorno circular sin atención de solicitudes.
  • SPTF incluye tanto la posición rotacional como la búsqueda.
  • El sistema operativo fusiona y pone en cola; el firmware de la unidad puede reordenar usando la geometría oculta.
  • Los plazos y la anticipación persiguen objetivos más allá del recorrido mínimo.
3

Explica las actualizaciones de memoria flash y el rendimiento de las SSD

La memoria flash puede leer rápidamente una página pequeña, pero reutilizarla requiere borrar un bloque mucho mayor. El controlador de una unidad SSD oculta esa diferencia tras direcciones lógicas. Sigue cómo coloca nuevas versiones, recupera espacio antiguo y reparte el desgaste; después, usa esos mecanismos para interpretar la amplificación de escritura, la profundidad de cola y las clasificaciones de resistencia. La ausencia de piezas móviles cambia los costes de almacenamiento sin hacer que todos los accesos sean igual de baratos.

3.1 Comprende las páginas, los bloques de borrado y el desgaste

La memoria flash NAND almacena información como carga eléctrica en celdas. El controlador distingue los niveles de carga para leer los bits. Una celda que almacena más bits necesita más niveles distinguibles, lo que aumenta la capacidad, pero dificulta la programación y el control de errores.

Cuenta los niveles de carga
Tipo de celdaBits por celdaNiveles de carga
SLC12
MLC24
TLC38
QLC416

Para una celda con b bits, el número de niveles es 2b. Más bits por celda generalmente reducen el coste por gigabyte, mientras que la programación se vuelve más lenta y disminuye la resistencia a ciclos de borrado. Estas son propiedades de la organización de las celdas; el controlador y el paralelismo de toda la unidad SSD también afectan al rendimiento.

Relaciona cada operación con su unidad

Los chips de memoria flash contienen bloques de borrado, cada uno con muchas páginas. Una página suele tener 4–16 KiB, mientras que un bloque de borrado puede contener cientos de páginas y abarcar desde cientos de KiB hasta varios MiB. Una página de memoria flash, una página de memoria virtual y un bloque de sistema de archivos son unidades distintas, aunque algunos tamaños coincidan.

Una lectura devuelve una página, normalmente en decenas de microsegundos. Una programación escribe una página borrada y tarda cientos de microsegundos. Un borrado restablece un bloque completo a unos y tarda milisegundos. Las páginas se programan en el orden exigido por el chip, normalmente de las páginas inferiores a las superiores. El controlador debe seguir esas reglas de ordenación al colocar los datos.

Una página usada no puede recibir simplemente una versión de reemplazo. Primero debe borrarse su bloque de borrado, lo que destruye el contenido de todas las páginas de ese bloque. Esta es la diferencia central: las escrituras tienen el tamaño de una página, mientras que los borrados tienen el tamaño de un bloque.

Observa el coste de una actualización en el mismo lugar

Imagina un bloque que contiene las páginas A, B, C y D. Para reemplazar A por A′ manteniendo la misma ubicación física:

  1. Lee B, C y D en un almacenamiento temporal.
  2. Borra todo el bloque, incluida la A antigua.
  3. Programa A′, B, C y D en las páginas borradas.

Una página de información nueva ha causado tres lecturas, cuatro programaciones y un borrado. No es posible borrar solo A. Una unidad SSD evita pagar este coste en cada sobrescritura del anfitrión escribiendo el reemplazo en otro lugar y cambiando su correspondencia.

Gestiona los daños y la retención

Cada ciclo de programación y borrado (P/E) daña ligeramente las celdas. Los rangos representativos de resistencia son de unos 50 000–100 000 ciclos para SLC, 1000–3000 para TLC y alrededor de 1000 o menos para QLC; las clasificaciones reales varían mucho según la generación del chip y el fabricante. Los controladores retiran los bloques que dejan de ser fiables.

La carga también se pierde con el tiempo, especialmente en las celdas desgastadas. La lectura o la programación pueden perturbar las celdas cercanas. Potentes códigos de corrección de errores (ECC) reparan muchos de los errores de bits resultantes, y el controlador puede renovar los datos cuyo número de errores aumenta. La memoria flash es almacenamiento persistente con operaciones asimétricas y resistencia limitada, por lo que una lectura rápida de página por sí sola dice poco sobre el coste de las sobrescrituras sostenidas.

Puntos clave

  • Una celda que almacena b bits debe distinguir 2ᵇ niveles de carga.
  • La memoria flash lee y programa páginas, pero borra bloques completos.
  • La programación requiere espacio borrado; conservar las páginas vecinas vigentes encarece las actualizaciones en el mismo lugar.
  • Los ciclos P/E desgastan las celdas, mientras que las perturbaciones y la pérdida de carga generan errores.
  • ECC, la renovación de datos y la retirada de bloques ayudan al controlador a gestionar esos errores.

3.2 Sigue las páginas lógicas a través de la FTL

El equipo anfitrión lee y sobrescribe bloques lógicos. La capa de traducción de memoria flash (FTL) de la unidad SSD asigna esas direcciones a páginas físicas de memoria flash y gestiona los borrados que quedan ocultos debajo. Mantener la página lógica N permanentemente en la página física N haría que las sobrescrituras frecuentes borraran repetidamente los mismos bloques.

Escribe una nueva versión en otro lugar

Una FTL estructurada como registro programa los datos nuevos en una página libre y cambia su correspondencia. Supón que la LBA 100 corresponde a la página física 0 y la LBA 101 a la página 1. Una sobrescritura de la LBA 100 se programa en la página 2. La correspondencia pasa a ser 100 → 2; la página 0 deja de ser válida. El anfitrión sigue solicitando la LBA 100 y obtiene la nueva versión.

No válida es un estado de la correspondencia, no un borrado físico inmediato. Los bits antiguos permanecen hasta que se recupera su bloque de borrado. Por tanto, eliminar o sobrescribir un archivo no ofrece una garantía fiable de cuándo desaparece cada copia física antigua. El borrado fiable usa una operación de saneamiento adecuada de la unidad o un esquema de cifrado de toda la unidad correctamente gestionado con destrucción de la clave.

Recupera espacio y cuenta las escrituras adicionales

La recolección de basura (GC) elige un bloque, copia sus páginas válidas en otro lugar, actualiza la tabla de correspondencias y borra el bloque antiguo. Las páginas no válidas no necesitan copiarse. Un bloque con muchas páginas no válidas proporciona más espacio libre por cada página vigente copiada.

La amplificación de escritura (WA) mide esa programación adicional:

WA=bytes programados en memoria flashbytes escritos por el anfitrioˊn

En un bloque de 64 páginas con 48 páginas válidas y 16 no válidas, la GC copia 48 páginas. Borrar el bloque crea 64 páginas libres, pero las copias consumieron 48 páginas en otro lugar: la ganancia neta es de 16. Llenar ese espacio ganado con 16 páginas del anfitrión produce 64 programaciones de páginas de memoria flash por 16 escrituras de páginas del anfitrión, por lo que WA = 4. Una mayor amplificación consume ancho de banda y agota más rápido la resistencia a ciclos de borrado.

El sobreaprovisionamiento reserva espacio de memoria flash que el anfitrión no puede llenar. Más espacio libre da a la GC flexibilidad para elegir bloques menos costosos. TRIM, llamado Deallocate en NVMe y UNMAP en SCSI, indica al dispositivo qué rangos lógicos ya no contienen datos necesarios. Las páginas de un archivo eliminado pueden entonces tratarse como no válidas en lugar de copiarse durante la GC.

Calcula la memoria para correspondencias y gestiona el desgaste

Una tabla de correspondencias a nivel de página necesita una entrada por página lógica. Un dispositivo de 1 TiB con páginas de 4 KiB tiene:

240/212=228 entradas

Con 4 bytes por entrada, la tabla ocupa 1 GiB. La correspondencia a nivel de bloque reduce la tabla, pero encarece las actualizaciones pequeñas. La correspondencia híbrida combina tablas de bloques con zonas de registro con correspondencia por página; otro enfoque mantiene en caché solo las entradas activas de la tabla de páginas.

La nivelación del desgaste reparte los borrados entre los bloques. Las nuevas escrituras ya se desplazan, pero los bloques que contienen datos fríos y sin cambios podrían evitar el desgaste indefinidamente mientras las regiones calientes se agotan. Mover algunos datos fríos libera bloques poco usados para incorporarlos al conjunto disponible para escritura. Esa migración puede añadir escrituras, por lo que el controlador equilibra el desgaste uniforme con el coste de copia.

Puntos clave

  • Una FTL asigna las direcciones lógicas del anfitrión a páginas físicas de memoria flash.
  • Las actualizaciones en otro lugar invalidan las páginas antiguas sin borrar inmediatamente sus bits.
  • La GC copia las páginas válidas antes de borrar un bloque.
  • La amplificación de escritura divide toda la programación de memoria flash entre las escrituras del anfitrión.
  • El sobreaprovisionamiento y TRIM reducen las copias innecesarias.
  • Las tablas de correspondencias a nivel de página intercambian memoria por flexibilidad de actualización.
  • La nivelación del desgaste incorpora los bloques poco usados a la carga de borrado.

3.3 Interpreta la velocidad y la resistencia de las SSD

Una unidad SSD no tiene brazo de disco ni plato giratorio. Evita las demoras de posicionamiento de milisegundos, pero su velocidad sigue dependiendo del tamaño de las solicitudes, el paralelismo, el historial de escrituras y el trabajo que su controlador realiza en segundo plano.

Compara latencia y tasa de procesamiento
Carga de trabajo o propiedadDisco duroSSD de memoria flash
Latencia de lectura aleatoria pequeñaMilisegundosDesde decenas hasta unos cien microsegundos
Tasa de lecturas aleatorias pequeñasAproximadamente 75–200 IOPSNVMe puede alcanzar cientos de miles con suficiente trabajo en cola
Transferencia secuencialHasta unos pocos cientos de MB/sUnos 550 MB/s para SATA; varios GB/s para NVMe
Principales costes internosBúsqueda, rotación, transferenciaAcceso a páginas, trabajo del controlador, GC, paralelismo

Estas son clases de dispositivos representativas, no garantías para todas las unidades. La tasa de procesamiento de una SSD SATA está limitada por el enlace de 6 Gb/s. NVMe usa PCIe y puede mantener ocupados muchos canales de memoria flash a la vez.

Un programa que emite una lectura pequeña y espera a que termine antes de emitir la siguiente experimenta la latencia de cada solicitud. Si la latencia es de 80 µs, ese patrón en serie permite unas 12 500 operaciones por segundo. Un dispositivo anunciado con una tasa de IOPS mucho mayor necesita muchas solicitudes en curso, proporcionadas por hilos o entrada/salida asíncrona. La profundidad de cola crea oportunidades de trabajo paralelo; también puede añadir espera cuando el dispositivo está saturado.

Ten en cuenta el historial de escrituras

Las escrituras aleatorias y secuenciales siguen siendo diferentes. Las actualizaciones aleatorias pueden dejar páginas no válidas dispersas entre páginas vigentes, lo que aumenta las copias de la GC. Las cargas de trabajo secuenciales pueden invalidar regiones completas a la vez, abaratando la recuperación y manteniendo la WA más cerca de uno. Una SSD vacía puede programar directamente en espacio libre; una SSD llena debe recuperarlo. El rendimiento en régimen estacionario incluye ese coste continuo de la GC, mientras que las pruebas con la unidad recién salida de fábrica pueden no incluirlo.

Interpreta las clasificaciones de resistencia como un presupuesto de escritura

TBW es el total nominal de terabytes escritos por el anfitrión. DWPD expresa las escrituras completas de la unidad por día realizadas por el anfitrión durante el periodo de garantía. Para un dispositivo de 1 TB con una clasificación de 600 TBW durante cinco años:

DWPD=600/(1×5×365)≈0,33

Con 50 GB por día, se acumularían 600 TB de escrituras del anfitrión después de 12 000 días, unos 33 años. Esa operación aritmética compara cargas de trabajo, no predice la vida útil: los fallos del controlador, el envejecimiento y los límites de la garantía siguen importando. Una alta amplificación interna desgasta las celdas más rápido, aunque la clasificación de resistencia cuente las escrituras del anfitrión.

Adapta el dispositivo al trabajo

Los discos duros ofrecen un coste bajo por terabyte para conjuntos de datos grandes a los que se accede con poca frecuencia. Las SSD son adecuadas para trabajos sensibles a la latencia. El almacenamiento por niveles mantiene los datos calientes en SSD y los más fríos en discos duros. Ambos pueden fallar: los discos tienen fallos mecánicos y sectores defectuosos; las SSD sufren desgaste, fallos del controlador y errores de firmware. La redundancia y las copias de seguridad independientes siguen siendo útiles para ambos.

En las SSD, la desfragmentación añade escrituras con poco beneficio relacionado con la búsqueda. TRIM ayuda al controlador a identificar datos que ya no se usan. Las herramientas actuales de particionado suelen alinear los inicios con límites de 1 MiB, evitando solicitudes de bloques mal alineadas.

Puntos clave

  • Una SSD elimina el posicionamiento mecánico, pero sigue teniendo costes del controlador y de la memoria flash.
  • Para alcanzar las altas IOPS anunciadas se necesitan suficientes solicitudes independientes en curso.
  • Las escrituras aleatorias y la GC pueden reducir el rendimiento de escritura en régimen estacionario.
  • TBW cuenta las escrituras del anfitrión; DWPD reparte ese presupuesto entre la capacidad y los días de garantía.
  • Elige SSD para el acceso rápido y discos duros para obtener gran capacidad económica.
  • TRIM y una alineación adecuada ayudan a las SSD a evitar trabajo innecesario.
4

Distribuye datos y evalúa las opciones RAID

Un conjunto combina discos tras una única interfaz de dispositivo de bloques. Su organización determina qué discos contienen cada bloque, cuánta capacidad queda para datos y qué sobrevive a un fallo. Avanza desde la distribución en bandas y los pares en espejo hasta la paridad XOR y después cuenta las operaciones de entrada/salida físicas para explicar el rendimiento. Por último, incluye el funcionamiento degradado y el tiempo de reconstrucción al elegir un nivel: un conjunto sin fallos es solo una etapa de su vida operativa.

4.1 Evalúa qué ofrece un conjunto

RAID, un conjunto redundante de discos económicos o independientes, presenta varios discos físicos como un único dispositivo de bloques lógico. Internamente, una correspondencia envía cada bloque lógico a copias de datos o a una banda con redundancia. Las aplicaciones y los sistemas de archivos pueden seguir usando la interfaz de bloques sin comprender esa organización.

Compara tres medidas distintas

La capacidad es el espacio utilizable para datos de usuario. La fiabilidad describe los fallos que puede tolerar una organización. El rendimiento incluye tanto la tasa de procesamiento de muchas operaciones como la latencia de una sola operación. Un nivel puede mejorar una medida mientras reduce otra. Una mayor tasa de procesamiento agregada tampoco tiene por qué reducir la latencia de una sola solicitud de bloque.

Usa este modelo sencillo para discos del mismo tamaño:

SímboloSignificado
NNúmero de discos
BBloques por disco
STasa de procesamiento secuencial de un disco
RTasa de procesamiento aleatoria de un disco para el tamaño de solicitud
TLatencia de una solicitud a un disco

S y R usan las mismas unidades de tasa, como MB/s. En un disco duro difieren mucho: el ejemplo anterior de tiempos dio unos 195 MB/s en secuencial y 0,34 MB/s para lecturas aleatorias pequeñas. Las fórmulas del modelo suponen suficiente trabajo concurrente y ningún cuello de botella en el controlador; su propósito es mostrar los costes de la organización.

Indica el modelo de fallos

Un disco del modelo de fallo por parada funciona correctamente hasta que falla por completo y de forma visible. Esto facilita el razonamiento básico sobre RAID: el conjunto sabe qué disco falta. Los discos reales también pueden tener sectores ilegibles o devolver bytes incorrectos. Esos fallos parciales y silenciosos requieren comprobaciones de integridad además de una organización que sobreviva a la pérdida completa de un disco.

Un conjunto redundante funciona en modo degradado mientras los discos fallidos estén dentro de su tolerancia. Sigue sirviendo datos, pero los discos supervivientes realizan trabajo adicional o tienen menos capacidad de lectura disponible. Una reconstrucción llena un disco de reemplazo a partir de la información superviviente. Un disco de reserva en caliente es un disco inactivo instalado que permite que la reconstrucción empiece rápidamente. RAID-0 carece de redundancia y de ese estado de funcionamiento degradado tras perder un miembro.

Mantén consistentes las actualizaciones de varios discos

RAID puede ejecutarse en un controlador de hardware con su propio procesador y caché protegida, en software del sistema operativo como md de Linux o dentro de un sistema de archivos como ZFS. Cada uno debe gestionar una escritura interrumpida entre las actualizaciones de distintos discos. Las copias en espejo pueden discrepar; los datos y la paridad pueden describir versiones diferentes. El caso de la paridad es la inconsistencia de paridad por escritura interrumpida.

Una caché no volátil protegida o un diario adecuado pueden conservar las actualizaciones pendientes para la recuperación. Un mapa de bits de intención de escritura registra qué zonas necesitan resincronización tras una interrupción. No conserva los datos nuevos y por sí solo no es una solución completa a la inconsistencia de paridad por escritura interrumpida cuando también falta un disco.

RAID mantiene la disponibilidad ante los fallos de disco especificados. Una eliminación o una escritura de ransomware llega a las copias del conjunto a través de la interfaz normal. Un incendio o un robo pueden eliminar todo el conjunto. Las copias de seguridad independientes proporcionan versiones o copias recuperables frente a esos sucesos compartidos.

Puntos clave

  • Compara por separado la capacidad utilizable, la tolerancia a fallos, la tasa de procesamiento y la latencia de las solicitudes.
  • El modelo básico de fallo por parada supone que se identifica el disco fallido.
  • Los conjuntos redundantes pueden servir datos mientras están degradados y reconstruirlos en un disco de reemplazo.
  • Las actualizaciones interrumpidas de varios discos necesitan un mecanismo de consistencia.
  • Un mapa de bits identifica las regiones que deben resincronizarse; los registros protegidos pueden conservar información de actualización.
  • RAID y las copias de seguridad independientes protegen frente a distintos tipos de pérdida.

4.2 Localiza bloques en bandas y pares en espejo

RAID-0 distribuye datos en bandas entre discos sin mantener información redundante. Con un fragmento de un bloque y numeración desde cero, el bloque lógico A va a:

disco=A mod N,desplazamiento=⌊A/N⌋

Para cuatro discos, el bloque 14 pertenece al disco 2 en el desplazamiento 3. El módulo elige el disco; la división entera cuenta las filas de banda completas anteriores a ese bloque.

Incluye el tamaño del fragmento en la correspondencia

Un fragmento es una secuencia de bloques consecutivos colocados en un disco antes de pasar al siguiente. Sea su tamaño c bloques. Primero identifica el fragmento y después el disco y el desplazamiento local:

q=⌊A/c⌋,disco=q mod N desplazamiento=⌊q/N⌋c+(A mod c)

Para el bloque 14, c = 2 y N = 4, el fragmento es 7, el disco es 3 y el desplazamiento es 2. Usar directamente A módulo N ignoraría los fragmentos de dos bloques. Los fragmentos pequeños pueden distribuir una solicitud grande entre más discos; los mayores mantienen más trabajo cercano en un solo disco. Los fragmentos habituales de los conjuntos van de 64 a 512 KiB; md de Linux suele usar 512 KiB de forma predeterminada.

RAID-0 tiene capacidad NB y tasas agregadas ideales secuencial y aleatoria NS y NR. Una solicitud pequeña a un solo disco sigue tardando aproximadamente T. El fallo de cualquier miembro causa la pérdida de algunos datos del conjunto, por lo que esta organización es adecuada para datos temporales reproducibles cuando la disponibilidad no es importante.

Añade copias en espejo

Un espejo RAID-1 de dos discos escribe cada bloque en ambos miembros. RAID-10 distribuye los datos en bandas entre pares en espejo. Con cuatro discos y fragmentos de un bloque entre pares, el bloque A va al par A módulo 2 en el desplazamiento suelo(A/2), y ambos miembros lo almacenan.

RAID-10 usa la mitad de la capacidad bruta. Soporta cualquier fallo de un solo disco y puede soportar N/2 fallos si cada uno afecta a un par diferente. Perder ambos miembros de un par implica perder los datos de ese par, aunque todos los demás pares sigan sanos.

Cuenta el trabajo útil por disco

Cada escritura en espejo actualiza dos discos en paralelo. Su latencia es de aproximadamente T, determinada por el miembro más lento, mientras que la tasa agregada de escrituras aleatorias es NR/2. Las lecturas pueden repartirse entre todas las copias, lo que da NR si hay suficientes lecturas aleatorias independientes.

Cuatro discos, cada uno de 4 TB; S = 200 MB/s, R = 1 MB/sRAID-0RAID-10
Capacidad utilizable16 TB8 TB
Tasa de lectura/escritura secuencial en el modelo sencillo800 MB/s400 MB/s
Tasa de lectura aleatoria4 MB/s4 MB/s
Tasa de escritura aleatoria4 MB/s2 MB/s

El modelo sencillo de lectura secuencial en espejo da NS/2 porque los compañeros saltan los bloques del otro. Las implementaciones que asignan rangos completos de lectura a cada copia pueden obtener mejores resultados. La duplicación en espejo proporciona más capacidad para atender lecturas; no hace que un disco termine una lectura individual en la mitad de tiempo.

Puntos clave

  • Usa el módulo para elegir el disco de una banda con fragmentos de un bloque y la división entera para su desplazamiento local.
  • Para fragmentos mayores, localiza el fragmento antes de elegir el disco.
  • RAID-0 tiene toda la capacidad utilizable y ninguna tolerancia a fallos de disco.
  • RAID-10 distribuye los datos en bandas entre pares en espejo y usa la mitad de la capacidad bruta.
  • Solo se pueden soportar dos fallos si ningún par en espejo pierde ambos miembros.
  • Las escrituras en espejo consumen trabajo de dos discos; las lecturas independientes pueden usar cualquiera de las copias.
  • El resultado NS/2 del modelo sencillo de lectura secuencial en espejo depende de la distribución de las lecturas.

4.3 Reconstruye y actualiza la paridad

Una banda con paridad almacena bloques de datos y un bloque de redundancia igual a su XOR bit a bit. Para cada posición de bit, XOR es uno cuando un número impar de entradas es uno. Aplicar XOR a un valor consigo mismo lo cancela. Esa cancelación permite al conjunto despejar un bloque que falta.

Recupera un bloque ausente conocido

Para los datos 0011, 0101 y 1001:

P=0011⊕0101⊕1001=1111

Si falta el segundo bloque:

D2=0011⊕1001⊕1111=0101

El conjunto debe saber qué bloque reconstruir. Una discrepancia de paridad entre bloques aparentemente sanos muestra una inconsistencia, pero no identifica el miembro defectuoso. Una suma de comprobación puede ayudar a determinar qué datos son válidos.

Actualiza un bloque sin leer toda la banda

Reconstruir la paridad a partir de los demás datos es paridad aditiva. Con cinco discos de datos, cambiar un bloque requiere leer los otros cuatro bloques de datos y después combinarlos con el valor nuevo. La paridad sustractiva, o lectura-modificación-escritura, elimina la contribución del bloque antiguo e inserta la del nuevo:

Pnew=Pold⊕Dold⊕Dnew

Cambia 0101 por 1100 en la banda anterior:

1111⊕0101⊕1100=0110

Esto requiere dos lecturas, de los datos antiguos y la paridad antigua, seguidas de dos escrituras, de los datos nuevos y la paridad nueva. La fase de lectura debe terminar antes de la fase de escritura, lo que da una latencia de aproximadamente 2T. Una escritura de banda completa dispone de todos los bloques de datos nuevos, por lo que calcula directamente la nueva paridad y no necesita lecturas de bloques antiguos.

Distribuye el trabajo de paridad
NivelUbicación de la redundanciaBloques utilizablesFallos de disco toleradosTasa ideal de escrituras aleatorias pequeñas
RAID-4Un disco dedicado a la paridad(N − 1)BCualquiera de unoR/2
RAID-5Un bloque de paridad que rota entre discos(N − 1)BCualquiera de unoNR/4
RAID-6Dos bloques de redundancia independientes por banda(N − 2)BCualesquiera dosNR/6

El disco de paridad de RAID-4 realiza una lectura y una escritura por cada actualización pequeña, lo que crea un cuello de botella fijo. RAID-5 reparte la paridad entre los miembros, permitiendo que las actualizaciones de bandas no relacionadas se ejecuten de forma concurrente. Sigue pagando cuatro operaciones de entrada/salida físicas por cada escritura lógica pequeña. Las lecturas aleatorias pueden usar todos los discos con NR; las escrituras secuenciales grandes alcanzan aproximadamente (N − 1)S.

RAID-6 añade redundancia independiente P y Q, normalmente usando un código Reed–Solomon para Q. Dos copias del mismo XOR solo darían una ecuación. Actualizar un bloque de datos mediante lectura-modificación-escritura lee los datos antiguos, P y Q, y después escribe los tres: seis operaciones de entrada/salida.

Para cuatro discos de 4 TB con R = 1 MB/s, RAID-4 y RAID-5 proporcionan 12 TB y tasas de escritura aleatoria de 0,5 y 1 MB/s. RAID-6 proporciona 8 TB y unos 0,67 MB/s. En RAID-5 degradado, un bloque de datos ausente necesita N − 1 lecturas de bloques supervivientes. En RAID-6 con un bloque de datos ausente, la reconstrucción con P necesita N − 2 lecturas y omite Q; dos bloques ausentes requieren ambas ecuaciones independientes.

Puntos clave

  • La paridad XOR reconstruye un bloque ausente identificado.
  • Una discrepancia de paridad por sí sola no puede localizar la corrupción silenciosa.
  • La lectura-modificación-escritura lee los datos antiguos y la paridad y después escribe ambos valores nuevos.
  • Las escrituras de banda completa evitan las lecturas de datos y paridad antiguos.
  • RAID-4 centraliza el cuello de botella de paridad; RAID-5 lo distribuye.
  • RAID-6 necesita dos códigos independientes y soporta cualesquiera dos fallos de disco.
  • Cuenta cuatro operaciones de entrada/salida para una escritura pequeña en RAID-5 y seis para RAID-6.
  • Las lecturas en modo degradado reconstruyen los datos ausentes y consumen más trabajo de los discos supervivientes.

4.4 Elige un nivel teniendo en cuenta las reconstrucciones

Empieza a elegir un nivel RAID considerando la carga de trabajo y las pérdidas que debe soportar. La capacidad por sí sola deja fuera el coste de escritura, el rendimiento degradado y el tiempo necesario para restaurar la redundancia. Un conjunto mayor tiene más discos que aportan capacidad, pero también más miembros y sectores expuestos durante la recuperación.

Adapta la organización a la carga de trabajo

RAID-0 es adecuado para datos temporales que pueden recrearse y no necesitan tolerancia a fallos de disco. RAID-10 es adecuado para muchas lecturas y escrituras aleatorias pequeñas cuando es aceptable renunciar a la mitad de la capacidad. RAID con paridad usa el espacio de forma eficiente y funciona bien para escrituras grandes de banda completa. RAID-6 añade protección frente a cualesquiera dos fallos, útil cuando reconstruir unidades grandes lleva mucho tiempo.

Con cuatro discos, RAID-10 y RAID-6 proporcionan cada uno la mitad de la capacidad bruta. RAID-10 necesita dos escrituras físicas por cada escritura lógica pequeña; la lectura-modificación-escritura de RAID-6 necesita seis operaciones de entrada/salida. RAID-6 soporta cualquier combinación de fallos de dos discos, mientras que RAID-10 requiere que esos fallos afecten a pares diferentes. Ninguna de las dos opciones es superior en todas las medidas.

Calcula un límite inferior para la reconstrucción

La reconstrucción de un espejo copia su disco compañero superviviente. La reconstrucción completa de un conjunto con paridad lee los datos supervivientes y reconstruye los bloques que faltan. La ecuación P de RAID-6 puede reconstruir un bloque de datos ausente sin Q; las lecturas reales de recuperación dependen de la organización y la implementación. Las reconstrucciones de dispositivos completos pueden implicar lecturas extensas de los discos supervivientes.

Escribir un disco de reemplazo de 20 TB a 200 MB/s tarda al menos:

T=20×1012200×106=100 000 s

Son unas 27,8 horas sin carga que compita ni cuellos de botella adicionales. La entrada/salida normal, las búsquedas, el trabajo del controlador y la limitación de velocidad de la recuperación pueden alargar ese tiempo. Añadir un disco de reserva en caliente reduce la demora antes de que empiece la reconstrucción; no elimina el tiempo de copia.

Examina la exposición durante la recuperación

Un conjunto RAID-5 degradado ha agotado su única tolerancia a fallos de disco. La pérdida de otro disco impide la recuperación. Un sector ilegible en un disco superviviente también puede dejar una banda con dos bloques desconocidos: el bloque del miembro ausente y el bloque ilegible del superviviente. Otras bandas pueden seguir siendo recuperables.

Como cálculo ilustrativo, reconstruir un conjunto RAID-5 de cuatro discos de 4 TB supone leer tres discos supervivientes completos:

3×4×1012×8=9,6×1013 bits

Si los errores se modelan con una tasa de uno por cada 10¹⁴ bits, el número esperado es 0,96. Este es un número esperado según ese modelo de tasa, no una probabilidad de fallo del 96 %. Un límite de tasa de errores de una ficha técnica no es una predicción medida para una reconstrucción concreta. Las especificaciones empresariales suelen dar un límite más exigente, como uno por cada 10¹⁵ bits.

Aumentar RAID-5 de cuatro a ocho discos eleva la capacidad utilizable del 75 % al 87,5 % del espacio bruto, pero también aumenta los datos supervivientes que se leen durante la recuperación. La edad y el desgaste compartidos también debilitan la suposición de fallos independientes. Una base de datos con muchas escrituras puede favorecer RAID-10; un archivo secuencial grande puede favorecer RAID-6. Programa verificaciones preventivas de datos para descubrir sectores defectuosos mientras quede redundancia y conserva copias de seguridad independientes.

Puntos clave

  • Elige según la carga de trabajo, la capacidad, las combinaciones de fallos y la exposición durante la recuperación.
  • La capacidad dividida entre la tasa de reconstrucción da un tiempo de reconstrucción optimista.
  • Un conjunto RAID-5 degradado no tolera ningún otro fallo completo de disco.
  • Un sector superviviente ilegible puede impedir la reconstrucción de su banda.
  • Un número esperado de errores no es una probabilidad de fallo.
  • Más miembros en RAID-5 mejoran la eficiencia de espacio y aumentan la exposición durante la recuperación.
5

Comprueba los datos y repara los errores verificados

Un disco puede seguir en línea mientras devuelve bloques ilegibles o incorrectos. Distingue esos fallos del fallo completo de un disco y después compara los métodos de suma de comprobación y los errores que pueden pasar por alto. La ubicación de la suma de comprobación importa tanto como la aritmética: unos bytes correctos en la dirección incorrecta y una versión antigua en la dirección correcta necesitan comprobaciones diferentes. Combina la verificación con redundancia y lecturas periódicas para detectar y reparar fallos antes de que desaparezcan las opciones de recuperación.

5.1 Reconoce fallos parciales y silenciosos

El modelo de fallo por parada identifica un disco completo como ausente. Un dispositivo del modelo de fallo parcial funciona en su mayor parte mientras algunos bloques son ilegibles o incorrectos. Esos fallos pueden permanecer ocultos en datos a los que se accede pocas veces hasta que otro fallo haga necesarios esos bloques para una reconstrucción.

Distingue un error de lectura notificado de unos bytes incorrectos

Un error latente de sector (LSE) significa que la unidad no puede leer un sector e informa de un error. Puede deberse a daños físicos o a errores de bits que superan la capacidad de corrección del ECC interno. Como se conoce la ubicación, un sistema redundante puede leer una copia en espejo o reconstruir ese bloque a partir de la paridad. Reescribir los datos recuperados permite que la unidad retire o reasigne la ubicación dañada.

La corrupción silenciosa significa que una lectura devuelve bytes incorrectos sin informar de un error. Puede producirla un firmware defectuoso, un fallo del controlador o del bus, o una escritura en una ubicación incorrecta. El estado de éxito del comando indica que la transferencia terminó; no es una validación de extremo a extremo del contenido.

Distingue los errores de dirección de los de versión
FalloQué está malPor qué puede no detectarlo una suma de comprobación local de los datos
Escritura en una ubicación incorrectaLos bytes nuevos correctos llegan al disco o bloque equivocadoLos datos y su suma de comprobación coincidente pueden viajar juntos
Escritura perdidaUna actualización notificada como completa nunca llega al almacenamientoLos bytes antiguos siguen coincidiendo con su suma de comprobación antigua

Una escritura en una ubicación incorrecta puede sobrescribir un bloque no relacionado y dejar desactualizado el destino previsto. Una escritura perdida deja en su lugar la versión antigua del bloque de destino. Un identificador de dirección ayuda a detectar el primer fallo; un valor esperado de la nueva versión almacenado de forma independiente ayuda a detectar el segundo.

El ECC interno de la unidad corrige muchos errores en los bits almacenados. No puede comprobar todos los fallos en otras partes del recorrido, como un valor corrompido antes de que la unidad calcule su código o después de que lo devuelva. La protección limitada al medio deja otros componentes sin comprobar.

Comprende por qué importa la escala

Un estudio de campo siguió 1,53 millones de discos en producción durante 32 meses. Los LSE afectaron a aproximadamente el 8,5 % de las unidades nearline y al 1,9 % de las unidades de clase empresarial. Un estudio independiente de corrupción sobre la misma población durante 41 meses encontró discrepancias de sumas de comprobación en aproximadamente el 0,86 % y el 0,065 %, respectivamente. Son observaciones históricas de periodos de estudio diferentes, no probabilidades anuales ni garantías actuales. En un parque de gran tamaño, incluso los fallos poco frecuentes por unidad se convierten en sucesos operativos habituales.

Usa redundancia con verificación

Una lectura normal de un espejo de dos copias puede elegir una copia sin compararla con la otra. Puede devolver bytes corruptos si no se comprueba ninguna suma. Si las copias se comparan y discrepan, dos copias por sí solas no indican cuál es correcta. Una suma de comprobación válida proporciona una base para seleccionar una versión correcta.

Durante una reconstrucción de RAID-5, un LSE en un superviviente puede eliminar la última información necesaria para su banda. El conjunto ya tiene un bloque ausente y una ecuación XOR no puede recuperar dos incógnitas. Detectar y reparar fallos latentes mientras todos los miembros siguen disponibles conserva opciones para el siguiente fallo.

Puntos clave

  • Un LSE es una incapacidad de leer un sector que se notifica; la corrupción silenciosa devuelve datos incorrectos sin error.
  • Las escrituras en ubicaciones incorrectas tienen un destino equivocado; las escrituras perdidas dejan una versión antigua.
  • El ECC de la unidad protege el medio, pero deja expuestas otras partes del recorrido de los datos.
  • Dos copias en espejo que discrepan necesitan verificación para identificar una copia correcta.
  • Un fallo latente puede volverse irrecuperable después de agotar la redundancia.

5.2 Calcula sumas de comprobación y compara su capacidad de detección

Una suma de comprobación resume un bloque de datos en un valor mucho menor. Al leer, vuelve a calcularla y compárala con el valor esperado almacenado. Una discrepancia detecta una inconsistencia. Distintas entradas pueden compartir un valor, lo que se denomina colisión, por lo que las sumas coincidentes proporcionan una prueba sólida cuya fuerza depende de la función elegida y del patrón de error.

Prueba XOR y la adición

Para los bytes 0x36, 0x5A, 0xC1 y 0x0F, el XOR bit a bit da 0xA2. En binario, el cálculo es:

00110110⊕01011010⊕11000001⊕00001111=10100010

Invierte el bit menos significativo de los dos primeros bytes, obteniendo 0x37 y 0x5B. Los dos cambios se cancelan con XOR y queda 0xA2. Una operación barata puede tener un punto ciego predecible.

Una suma de comprobación por adición de 8 bits suma los valores de los bytes módulo 256:

(54+90+193+15) mod 256=96=0x60

La doble inversión anterior cambia la suma a 0x62, por lo que la adición detecta ese error. Pero cambiar el orden de los bytes deja sin cambios tanto la adición simple como XOR.

Añade sensibilidad a la posición

Una suma de comprobación de Fletcher mantiene dos sumas, inicializadas a cero. Para cada byte d, actualiza la primera suma y después añade su nuevo valor a la segunda:

s1=(s1+d) mod 255,s2=(s2+s1) mod 255
ByteNuevo s₁Nuevo s₂
545454
90144198
1938225
1597122

El resultado es (97, 122). Intercambiar los dos primeros bytes da (97, 158). La primera suma ignora el orden, pero la segunda pondera las posiciones mediante la acumulación progresiva. Fletcher detecta errores de un solo bit y muchas ráfagas de errores a bajo coste, aunque siguen siendo posibles las colisiones.

Sigue una división CRC breve

Una comprobación de redundancia cíclica (CRC) trata los bits como coeficientes de un polinomio y divide usando XOR. Con el generador 1011, que representa x³ + x + 1, un resto de tres bits protege los datos. Para los datos 1101, añade tres ceros:

  1. Empieza con 1101000 y aplica XOR con 1011000, lo que deja 0110000.
  2. Alinea el generador con el primer uno y aplica XOR con 0101100, lo que deja 0011100.
  3. Aplica XOR con 0010110, lo que deja 0001010.
  4. Aplica XOR con 0001011, lo que deja 0000001.

El resto es 001, por lo que se almacena 1101001. Dividir esa palabra de código da cero; cambiarla a 1111001 da el resto 110. Una CRC de n bits detecta toda ráfaga de longitud máxima de n bits. El soporte de la CPU hace que CRC sea práctico para el almacenamiento y el tráfico de red, incluida CRC32C en los metadatos de ext4 y Btrfs.

Las funciones hash criptográficas como SHA-256 también resisten los intentos deliberados de producir colisiones. Un hash usado contra la manipulación necesita un valor esperado de confianza; reemplazar tanto los datos como su hash no confiable inutiliza la comparación. OpenZFS normalmente usa Fletcher para datos ordinarios y SHA-256 para la deduplicación. Ocho bytes de suma de comprobación por bloque de 4 KiB cuestan alrededor del 0,2 % de espacio. La detección por sí sola no proporciona bytes de reemplazo: la reparación necesita redundancia o un código de corrección de errores.

Puntos clave

  • Una discrepancia en la suma de comprobación detecta una inconsistencia; una colisión puede ocultar un error.
  • XOR no detecta inversiones de bits que se cancelan; la adición no detecta fragmentos reordenados.
  • Fletcher actualiza dos sumas acumuladas para que las posiciones de los bytes afecten al resultado.
  • CRC usa división polinómica con XOR y detecta ráfagas de longitud acotada.
  • Las funciones hash criptográficas refuerzan la resistencia a colisiones, pero necesitan un valor esperado de confianza frente a la manipulación.
  • Las sumas de comprobación detectan errores; la reparación necesita información adicional.

5.3 Sitúa las comprobaciones donde puedan detectar el fallo

Una función de suma de comprobación determina qué cambios pueden detectarse. El diseño del almacenamiento determina con qué valor se compara, a qué dirección pertenece y si existe un reemplazo correcto. Una suma de comprobación robusta asociada a la versión incorrecta puede seguir aceptando datos desactualizados.

Elige dónde guardar el valor esperado
UbicaciónCómo funcionaConsecuencia principal
Por sectorPor ejemplo, 512 bytes de datos más 8 bytes de protección en un sector de 520 bytesLa protección viaja con el sector
Bloque de sumas de comprobación agrupadasUn bloque de 4 KiB contiene 512 sumas de comprobación de ocho bytesActualizar datos también puede requerir actualizar otro bloque
Puntero del bloque padreUn bloque padre almacena la suma de comprobación del bloque hijo al que hace referenciaEl contenido esperado se comprueba desde fuera del bloque hijo

ZFS usa sumas de comprobación en los punteros de los bloques padre, creando un árbol de verificación hasta su raíz. La información de protección también puede incluir la dirección esperada. La etiqueta de referencia de T10 usa los 32 bits inferiores de la dirección de bloque lógico junto con una CRC de datos de 16 bits y una etiqueta de aplicación. Una comprobación de dirección puede rechazar bytes correctos obtenidos de la ubicación incorrecta.

Distingue una ubicación incorrecta de una versión incorrecta

Supón que una lectura del disco 3, bloque 1207 devuelve un par válido de datos y suma de comprobación etiquetado para otra dirección. La suma por sí sola coincide, pero el identificador de dirección revela el error de ubicación.

Una escritura perdida es más difícil: el contenido antiguo puede tener una suma de comprobación válida y la dirección correcta. La verificación mediante lectura tras la escritura compara una nueva lectura con el contenido nuevo esperado, añadiendo aproximadamente otra operación de entrada/salida. Debe observar el resultado almacenado, no solo la misma copia en caché volátil. Una suma de comprobación esperada almacenada por separado, como en un puntero confirmado del bloque padre, puede en cambio rechazar la versión desactualizada del bloque hijo. El valor esperado separado debe describir a su vez la actualización prevista.

Verifica antes de devolver o reparar

En una lectura, obtén el bloque y su suma de comprobación esperada, vuelve a calcularla y compárala. Si la primera copia falla, lee otra copia o reconstruye el bloque a partir de la redundancia. Verifica ese resultado antes de devolverlo. Si supera la comprobación, devuelve los datos correctos y reescribe la copia dañada. Esto es autorreparación. Si no puede encontrarse ninguna copia válida, devuelve un error en lugar de bytes sin comprobar.

Por ejemplo, un grupo de almacenamiento ZFS en espejo lee el disco A y detecta una discrepancia en la suma de comprobación. La copia del disco B supera la comprobación. El sistema devuelve los datos de B, repara A y registra el error de A. La duplicación en espejo ordinaria sin verificación de sumas de comprobación podría devolver los bytes incorrectos de A sin advertirlo.

Busca errores antes de que un fallo obligue a recuperar

La verificación preventiva de datos lee y verifica periódicamente los datos almacenados, incluidos los bloques que las aplicaciones apenas consultan. Si hay redundancia disponible, el sistema puede reparar fallos antes de que falle otro miembro. En el estudio histórico de LSE, la verificación preventiva encontró más del 60 % de los errores.

La verificación consume tiempo de CPU, espacio para sumas de comprobación y, a veces, entrada/salida adicional. Ocho bytes por 4 KiB cuestan alrededor del 0,2 %; ocho por 512 bytes de datos cuestan alrededor del 1,6 %. Las lecturas de verificación preventiva compiten con las solicitudes en primer plano, por lo que conviene usar periodos de poca actividad. El argumento de extremo a extremo sitúa la comprobación final cerca del sistema de archivos o de la aplicación, cubriendo más parte del recorrido que el ECC de la unidad limitado al medio.

Puntos clave

  • La ubicación de la suma de comprobación determina qué valor esperado está disponible durante una lectura.
  • La información de dirección detecta datos en ubicaciones incorrectas; un valor esperado actual y separado puede detectar datos desactualizados.
  • Verifica una copia recuperada antes de devolverla o usarla para reparar.
  • La verificación preventiva comprueba datos que se leen pocas veces mientras la redundancia aún puede repararlos.
  • Las comprobaciones de extremo a extremo cubren fallos más allá del medio de la unidad.

Ejemplos de Dispositivos de entrada/salida

5 Lecciones Interactivas

1

Sigue una solicitud sin mantener ocupada la CPU

16 pasos
Sigue los comandos, la espera, DMA y la finalización en cola durante una lectura de almacenamiento.
  1. 1
    IntroducciónSepara las tareas de una solicitud de entrada/salida

    Una solicitud de almacenamiento tiene varias tareas: describir qué hacer, transferir bytes e informar de cuándo termina. La CPU no tiene que realizarlas todas continuamente: el DMA permite que el hardware transfiera los bytes, y las interrupciones permiten que la CPU ejecute otro trabajo mientras espera.

    Sigue una solicitud desde su interfaz de registros a través de la espera y la transferencia, y después reúne el recorrido completo mediante un controlador de dispositivo y un controlador de hardware.

  2. 2
    ExplicaciónEmpieza por la interfaz del dispositivo

    El controlador de hardware oculta su firmware y sus componentes internos tras registros. En un protocolo de salida sencillo, el controlador de dispositivo comprueba que el estado indique que está listo, proporciona los datos, escribe el comando y después comprueba la finalización y los errores.

    El orden importa: escribir el comando puede poner en marcha el hardware de inmediato. Una aplicación accede a esta operación controlada mediante una llamada al sistema.

  3. 3
    Idea claveUna dirección de registro puede iniciar trabajo

    Con MMIO, las cargas y los almacenamientos acceden a los registros del dispositivo mediante direcciones mapeadas. Una lectura de registro puede borrar un indicador; una escritura puede iniciar un comando. Las suposiciones habituales sobre la RAM no son seguras aquí.

    El controlador usa las funciones de acceso de la plataforma y las barreras necesarias. Declarar un puntero volatile no proporciona toda la ordenación entre un descriptor en RAM y la notificación MMIO que hace que el dispositivo lo obtenga.

  4. 4
    DesafíoCorrige la secuencia de comandos

    Un controlador encuentra un dispositivo de salida listo, escribe su comando y después llena el registro de datos. ¿Qué orden debería usar y por qué?

    ---reveal---

    Proporciona los datos antes de emitir el comando. El comando pone en marcha el dispositivo, que de otro modo podría consumir datos desactualizados. Después del envío, el controlador comprueba la finalización y cualquier error notificado.

  5. 5
    EjemploDeja que se ejecute otro proceso

    El proceso C inicia una lectura que dura 7 ms. El proceso D tiene cálculos listos para ejecutarse. Con sondeo, la CPU comprueba repetidamente el estado de la lectura de C durante toda la espera.

    Con espera mediante interrupciones, C se bloquea y D puede ejecutarse. Al finalizar, el manejador comprueba la solicitud y deja listo a C. La lectura sigue tardando 7 ms; el cálculo útil ha ocupado ese intervalo.

  6. 6
    ExplicaciónCompara el coste de notificación

    Una finalización muy rápida puede llegar antes de que compense bloquear y despertar el proceso. Una fase breve de sondeo evita esa sobrecarga y después una estrategia híbrida suspende el proceso si la solicitud sigue sin terminar.

    Con tráfico intenso, la agrupación comparte una interrupción entre varias finalizaciones. Esto reduce el trabajo de CPU, pero puede retrasar la primera finalización mientras se forma el lote.

  7. 7
    DesafíoElige un tamaño de lote según su coste

    Un dispositivo entrega 60 000 finalizaciones cada segundo. Gestionar una interrupción cuesta 6 µs de tiempo de CPU. ¿Cuánto tiempo de CPU se ahorra cada segundo al agrupar tres finalizaciones por interrupción?

    ---reveal---

    Las interrupciones separadas cuestan 360 ms por segundo. Los lotes de tres finalizaciones necesitan 20 000 interrupciones:

    20 000×6 μs=120 ms

    El ahorro es de 240 ms por segundo. El tiempo de servicio del dispositivo no cambia, mientras que la notificación puede retrasarse.

  8. 8
    EjemploCuenta las copias que requiere la PIO

    Supón que una carga útil de 8 KiB pasa por un registro de datos de 8 bytes, con un coste de 80 ns por acceso. La CPU debe realizar:

    8192/8=1024 accesos 1024×80 ns=81,92 μs

    Esas operaciones solo transfieren la carga útil. DMA delega la transferencia al hardware y deja a la CPU la preparación del búfer, el envío y la gestión de la finalización.

  9. 9
    ExplicaciónMantén estable el destino

    El controlador mapea el búfer para que el dispositivo pueda acceder a él y mantiene fijadas las páginas que lo respaldan hasta la finalización. Una lista de dispersión y reunión describe regiones separadas de dirección y longitud cuando las páginas físicas no son adyacentes.

    El dispositivo recibe direcciones de bus DMA, no un puntero de usuario ordinario. Una IOMMU puede traducir esas direcciones y restringir el dispositivo a la memoria permitida.

  10. 10
    ConsejoCoordina la visibilidad de la memoria

    Una dirección válida es solo una parte de una transferencia DMA correcta. El dispositivo debe ver los datos salientes más recientes de la CPU y la CPU debe ver los bytes entrantes escritos por el dispositivo.

    En algunas plataformas, la coherencia del hardware se encarga de ello. Otras necesitan sincronización explícita de caché mediante la API de DMA. Mantén el búfer mapeado y estable hasta que el dispositivo haya dejado de acceder a él.

  11. 11
    DesafíoDiagnostica una liberación prematura del búfer

    Un controlador inicia una transferencia DMA hacia dos páginas fijadas, las libera antes de la finalización y se las asigna a otro proceso. ¿Por qué una interrupción posterior no puede hacer que esto sea seguro?

    ---reveal---

    El dispositivo puede haber escrito ya en las páginas reutilizadas antes de generar su interrupción. Las páginas deben permanecer fijadas y no disponibles para su reutilización hasta que DMA haya terminado. Gestionar después la finalización no puede deshacer la corrupción de memoria.

  12. 12
    ConexiónPasa la solicitud por la pila

    Para una lectura con búfer y fallo de caché, el sistema de archivos localiza los bloques de almacenamiento solicitados. La capa de bloques pone sus solicitudes en cola o las fusiona, y el controlador de dispositivo envía los comandos de hardware.

    Esta división permite que el sistema de archivos use la misma interfaz de bloques para distintos dispositivos. Un control especial, como un comando específico de un dispositivo, puede necesitar una interfaz como ioctl().

  13. 13
    ExplicaciónEnvía trabajo mediante una cola NVMe

    El controlador NVMe coloca un comando en una cola de envío en memoria y después escribe en el registro de notificación MMIO. El controlador de hardware obtiene la entrada, usa DMA para transferir la carga útil y publica una finalización. MSI-X puede dirigir la notificación a un núcleo adecuado.

    Muchos pares de colas permiten que los núcleos de CPU envíen trabajo con menos contención compartida que una sola cola de dispositivo poco profunda.

  14. 14
    DesafíoLocaliza una solicitud antes de su envío

    Dos lecturas de bloques vecinos esperan en el núcleo. ¿Dónde pueden fusionarse y qué acción posterior indica a un controlador NVMe que obtenga el trabajo enviado?

    ---reveal---

    La capa de bloques genérica puede fusionar las solicitudes adyacentes antes de que las envíe el controlador de dispositivo. Después, el controlador NVMe rellena una entrada de envío y escribe en su registro de notificación. La fusión afecta a la solicitud; el registro de notificación anuncia el trabajo en cola.

  15. 15
    DesafíoExplica el bajo uso de CPU durante una lectura grande

    Una lectura grande con fallo de caché termina mientras otro proceso realiza cálculos. La CPU realiza el trabajo de configuración y finalización, pero no copia palabra por palabra mediante registros del dispositivo. ¿Qué mecanismos explican lo observado?

    ---reveal---

    DMA transfiere la carga útil directamente a la memoria. La espera mediante interrupciones permite que el proceso de lectura se bloquee mientras se ejecutan otros cálculos. El controlador y la capa de bloques organizan el envío y la finalización; ninguno de los dos mecanismos hace desaparecer el trabajo propio del dispositivo de almacenamiento.

  16. 16
    RepasoSigue la responsabilidad en cada límite

    Lee el recorrido de una solicitud preguntándote quién conoce la dirección del bloque, quién conoce el protocolo del controlador, quién transfiere la carga útil y quién informa de la finalización.

    Mantén separadas la espera, la copia y la planificación al diagnosticar el coste de CPU. Una misma lectura puede combinar una interfaz de bloques estándar, una notificación MMIO, DMA y una interrupción.

2

Convierte el movimiento del disco en una estimación de rendimiento

13 pasos
Relaciona las garantías de sector, los cálculos de tiempo de acceso y la planificación de solicitudes.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónEmpieza por el trabajo que hay detrás de una dirección
  2. 2
    ExplicaciónDistingue tres garantías de almacenamiento
  3. 3
    DesafíoInterpreta una notificación de escritura en caché
  4. 4
    EjemploConvierte la velocidad del eje en espera media
  5. 5
    EjemploAñade la transferencia de una lectura pequeña
  6. 6
    Idea claveReparte el posicionamiento entre más datos
  7. 7
    DesafíoEstima otra carga de trabajo aleatoria
  8. 8
    EjemploDibuja un recorrido LOOK
  9. 9
    EjemploCuenta el retorno circular
  10. 10
    DesafíoAplica una política a nuevas solicitudes
  11. 11
    ConexiónMira más allá de la distancia de búsqueda
  12. 12
    DesafíoElige qué mejorar
  13. 13
    RepasoUsa la magnitud adecuada para decidir
3

Sigue una sobrescritura en una SSD hasta la recuperación de espacio

14 pasos
Sigue las restricciones de las celdas, los cambios de correspondencia, las escrituras adicionales y el rendimiento visible para el anfitrión.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónObserva qué hace realmente una sobrescritura
  2. 2
    ExplicaciónElige la unidad física de la operación
  3. 3
    Idea claveRelaciona la densidad con los límites de las celdas
  4. 4
    DesafíoConserva las páginas vecinas
  5. 5
    EjemploRedirige una sobrescritura lógica
  6. 6
    ExplicaciónCopia solo lo que sigue vigente
  7. 7
    EjemploCalcula el coste oculto de programación
  8. 8
    ConsejoProporciona mejor información a la recolección
  9. 9
    DesafíoRecupera un bloque con más páginas vigentes
  10. 10
    ExplicaciónProporciona suficientes solicitudes independientes
  11. 11
    EjemploInterpreta una clasificación de resistencia
  12. 12
    DesafíoInterpreta una ralentización en régimen estacionario
  13. 13
    DesafíoUsa la información de eliminación para cambiar el trabajo interno
  14. 14
    RepasoRelaciona la vista física con la del anfitrión
4

Elige un RAID a partir del trabajo físico

18 pasos
Distribuye bandas, recupera la paridad y compara el rendimiento sin fallos con la exposición durante la reconstrucción.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónCompara un conjunto según varios criterios
  2. 2
    ExplicaciónMantén separadas la interfaz y la organización
  3. 3
    ConexiónPlanifica el estado posterior a un fallo
  4. 4
    DesafíoDistingue la disponibilidad de la recuperación de versiones anteriores
  5. 5
    EjemploDistribuye una banda con fragmentos de un bloque
  6. 6
    ExplicaciónAñade pares en espejo
  7. 7
    DesafíoSigue un fragmento mayor
  8. 8
    Idea claveDistingue una escritura de muchas escrituras
  9. 9
    EjemploCalcula la paridad XOR de una banda
  10. 10
    EjemploRecupera el valor ausente
  11. 11
    EjemploActualiza la paridad con el bloque modificado
  12. 12
    ExplicaciónDesplaza el cuello de botella o añade una ecuación
  13. 13
    DesafíoElige la actualización de paridad adecuada
  14. 14
    EjemploCalcula el tiempo antes de prometer una reconstrucción
  15. 15
    ExplicaciónExamina los errores durante ese periodo
  16. 16
    DesafíoElige entre organizaciones de igual capacidad
  17. 17
    DesafíoCombina la carga de trabajo y las fases de actualización
  18. 18
    RepasoSigue la organización hasta la recuperación
5

Verifica un bloque antes de confiar en sus bytes

15 pasos
Distingue los modos de fallo, calcula sumas de comprobación y sigue una reparación verificada.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónPregúntate qué establece una lectura correcta
  2. 2
    ExplicaciónDistingue lo ilegible de lo silenciosamente incorrecto
  3. 3
    EjemploSigue el destino y la versión
  4. 4
    DesafíoDiagnostica una lectura correcta de datos desactualizados
  5. 5
    EjemploCalcula una suma de comprobación por adición
  6. 6
    Idea claveObserva una colisión sin recurrir a conjeturas aleatorias
  7. 7
    EjemploAcumula la posición con Fletcher
  8. 8
    DesafíoElige la aritmética correcta de la suma de comprobación
  9. 9
    ConexiónConoce qué aportan las comprobaciones más robustas
  10. 10
    ExplicaciónSitúa el valor esperado fuera del valor sospechoso
  11. 11
    EjemploVerifica la fuente de reparación
  12. 12
    ConsejoEncuentra fallos ocultos mientras quedan copias
  13. 13
    DesafíoElige una comprobación para un bloque mal ubicado
  14. 14
    DesafíoRepara antes de que se agote la redundancia
  15. 15
    RepasoSigue las pruebas de validez de un bloque devuelto

Ejercicios de Dispositivos de entrada/salida

50 Preguntas de Práctica en 5 sets

Set 1: Dispositivos, tiempos y protección de datos10 Preguntas de Práctica

Pregunta 1 de 10

Un controlador debe iniciar una operación de salida sencilla. El dispositivo está listo. ¿Qué debe hacer inmediatamente antes de escribir en el registro de comandos?
  1. Esperar a que se complete la salida.
  2. Proporcionar la carga útil de salida.
  3. Borrar el bit de ocupado del dispositivo.
  4. Leer datos desde el dispositivo.
Mostrar respuestaOcultar respuesta
Respuesta: B
El protocolo sencillo proporciona la carga útil antes de que el comando inicie la operación. Una vez iniciada, el dispositivo puede consumir esos datos de inmediato. La espera de la finalización corresponde a después de enviar el comando; hacerlo primero supondría esperar una operación que aún no ha comenzado.

Pregunta 2 de 10

En un núcleo de CPU, una operación de almacenamiento tarda 14 ms. Otro proceso tiene 9 ms de cálculo listos para ejecutarse. ¿Cómo puede mejorar el uso de la CPU la espera mediante interrupciones?
  1. Reduce la operación del dispositivo a 5 ms.
  2. Ejecuta a la vez las instrucciones de ambos procesos.
  3. Completa la transferencia sin configuración de la CPU.
  4. Ejecuta el cálculo que está listo durante la espera.
Mostrar respuestaOcultar respuesta
Respuesta: D
El proceso que realizó la llamada puede bloquearse mientras el planificador ejecuta los 9 ms de cálculo del otro proceso. El dispositivo sigue tardando 14 ms. Restar el cálculo del tiempo del dispositivo confunde el solapamiento de dos actividades con la aceleración del hardware de almacenamiento.

Pregunta 3 de 10

Una unidad tiene sectores físicos de 4 KiB y acepta sectores lógicos de 512 bytes. ¿Qué identifica una LBA?
  1. Un sector lógico expuesto al anfitrión.
  2. Una pista física bajo un cabezal.
  3. Un bloque de sistema de archivos asignado a un archivo.
  4. Una unidad atómica garantizada ante un fallo de alimentación.
Mostrar respuestaOcultar respuesta
Respuesta: A
Una LBA identifica un sector en la interfaz lógica, aquí una unidad de 512 bytes. Varios de esos sectores pueden compartir un sector físico de 4 KiB. Tratar cada LBA como un sector físico pasa por alto la capa de emulación, y ninguno de los dos tamaños establece la atomicidad ante fallos de alimentación.

Pregunta 4 de 10

Un disco duro de 6000 RPM tiene un tiempo medio de búsqueda de 4 ms y una tasa de transferencia de 100 MB/s. Atiende lecturas aleatorias independientes de 10 000 bytes de una en una, sin aciertos de caché ni espera en cola. ¿Qué tasa efectiva de transferencia resulta aproximadamente?
  1. 2,44 MB/s
  2. 100 MB/s
  3. 1,10 MB/s
  4. 0,71 MB/s
Mostrar respuestaOcultar respuesta
Respuesta: C
Una revolución tarda 10 ms, por lo que la latencia rotacional media es de 5 ms. Transferir 10 000 bytes tarda 0,1 ms, lo que da un total de 9,1 ms y unos 1,10 MB/s. El resultado de 2,44 MB/s omite la rotación, aunque la posición aleatoria requiere esa espera.

Pregunta 5 de 10

Una página NAND contiene datos antiguos. ¿Con qué granularidad física debe borrarse la memoria flash antes de que esa misma página pueda programarse de nuevo?
  1. El byte programado individual.
  2. El bloque de borrado que la contiene.
  3. El bloque del sistema de archivos del anfitrión.
  4. La única página de memoria flash ocupada.
Mostrar respuestaOcultar respuesta
Respuesta: B
El borrado restablece todo el bloque de borrado de memoria flash que contiene la página. Antes deben conservarse las demás páginas válidas. Confundir la unidad de programación del tamaño de una página con la unidad de borrado oculta la razón por la que una actualización en el mismo lugar puede requerir muchas copias.

Pregunta 6 de 10

Para un disco duro que gira a 12 000 RPM, ¿cuál es la latencia rotacional media de un sector situado en una posición aleatoria?
  1. 2,5 ms
  2. 5 ms
  3. 1,25 ms
  4. 12 ms
Mostrar respuestaOcultar respuesta
Respuesta: A
Una revolución tarda 60 000/12 000 = 5 ms. Un sector objetivo situado uniformemente necesita media revolución en promedio, o 2,5 ms. Usar 5 ms trata cada solicitud como si su sector acabara de pasar bajo el cabezal y debiera completar casi una vuelta entera.

Pregunta 7 de 10

Se elimina accidentalmente un archivo de un volumen almacenado en un conjunto en espejo que funciona correctamente. ¿Por qué sigue siendo útil una copia de seguridad independiente?
  1. La eliminación cambia un miembro; el otro conserva una copia histórica.
  2. La eliminación queda en caché hasta que una copia de seguridad restaura el miembro ausente.
  3. La eliminación cambia la paridad; una reconstrucción del espejo revierte la actualización del archivo.
  4. La eliminación actualiza ambas copias vigentes; una copia de seguridad puede conservar una versión anterior.
Mostrar respuestaOcultar respuesta
Respuesta: D
La duplicación en espejo mantiene copias de los datos vigentes, por lo que una eliminación puede retirar el archivo de esas copias al mismo tiempo. Una copia de seguridad independiente puede conservar una versión anterior recuperable. Tratar el segundo miembro del espejo como una copia histórica confunde la redundancia con la recuperación de versiones.

Pregunta 8 de 10

Un conjunto RAID-0 tiene cinco discos y fragmentos de un bloque. Los discos y los desplazamientos locales se numeran desde cero. ¿Dónde está el bloque lógico 23?
  1. Disco 4, desplazamiento 3.
  2. Disco 2, desplazamiento 5.
  3. Disco 3, desplazamiento 4.
  4. Disco 3, desplazamiento 5.
Mostrar respuestaOcultar respuesta
Respuesta: C
El disco es 23 módulo 5, que es 3, y el desplazamiento local es suelo(23/5), que es 4. Antes de este bloque hay cuatro filas de banda completas. Elegir el desplazamiento 5 redondea el cociente hacia arriba en lugar de contar solo las filas completas.

Pregunta 9 de 10

Un disco devuelve un bloque con bytes incorrectos e informa de que la operación terminó correctamente. ¿Qué tipo de fallo ha ocurrido?
  1. Un fallo completo de disco detectado.
  2. Un error latente de sector notificado.
  3. Una corrupción silenciosa de datos.
  4. Una escritura perdida confirmada.
Mostrar respuestaOcultar respuesta
Respuesta: C
La corrupción silenciosa devuelve datos incorrectos sin informar de un error de lectura. En cambio, un error latente de sector hace que el sector sea ilegible y la unidad lo notifica. El estado de éxito del comando por sí solo no comprueba el contenido ni todo el recorrido que ha seguido.

Pregunta 10 de 10

Una suma de comprobación por adición de 8 bits comienza en cero e ignora el desbordamiento. ¿Qué suma de comprobación resulta de los bytes decimales 150, 90 y 40?
  1. 25
  2. 24
  3. 255
  4. 280
Mostrar respuestaOcultar respuesta
Respuesta: B
Los valores de los bytes suman 280 y, al reducir módulo 256, queda 24. La suma de comprobación almacenada debe caber en ocho bits. Conservar 280 ignora la regla de desbordamiento; reducir módulo 255 daría 25, que pertenece a otra convención de sumas de comprobación.
Set 2: Colas, mantenimiento de memoria flash y recuperación10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

¿Qué tarea de la CPU delega principalmente DMA durante una transferencia grande de un dispositivo?
  1. Elegir el siguiente proceso listo.
  2. Comprobar los permisos de archivos de la aplicación.
  3. Copiar cada palabra de la carga útil hacia o desde el dispositivo.
  4. Gestionar cada interrupción de finalización de solicitud.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Dos lecturas de bloques adyacentes esperan para el mismo dispositivo de almacenamiento de Linux. ¿Qué capa puede combinarlas antes de que el controlador de hardware envíe el trabajo?
  1. La capa de bloques genérica.
  2. La tabla de vectores de interrupción del dispositivo.
  3. La tabla de reasignación de sectores de la unidad.
  4. El mecanismo de mapeo de direcciones virtuales de la aplicación.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Las pistas se numeran de 0 a 99. El cabezal está en 30 y se mueve hacia números mayores, con solicitudes en 10, 45 y 70. ¿Cuánto recorre LOOK antes de que terminen las tres?
  1. 109 pistas
  2. 100 pistas
  3. 40 pistas
  4. 89 pistas
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un anfitrión sobrescribe la página lógica 27. La FTL coloca su nueva versión en la página física libre 93. ¿Qué cambio hace que las lecturas posteriores devuelvan la nueva versión?
  1. Borrar la página 27 de forma independiente.
  2. Mover todas las páginas al orden físico.
  3. Renumerar la página lógica 27 como página 93.
  4. Cambiar la correspondencia de lógica a física.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Una SSD tarda 125 µs en cada lectura. Un programa espera a que termine cada lectura antes de emitir la siguiente, sin ninguna otra sobrecarga. ¿Cuál es su tasa aproximada de operaciones?
  1. 125 IOPS
  2. 8000 IOPS
  3. 80 000 IOPS
  4. 125 000 IOPS
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

La recolección de basura recupera un bloque de 100 páginas que contiene 60 páginas válidas. Copia esas páginas en otro lugar y después usa el espacio libre neto para páginas nuevas del anfitrión. Todas las páginas tienen el mismo tamaño. ¿Qué amplificación de escritura incluye las copias y las nuevas escrituras?
  1. 1,5
  2. 0,6
  3. 2,5
  4. 4,0
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una banda tiene los bloques de datos 1010 y 0110 y la paridad XOR 1100. El disco que contiene 0110 falla. ¿Qué bloque reconstruye los datos ausentes?
  1. 0110
  2. 1100
  3. 1010
  4. 0000
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Hay disponibles seis discos de 3 TB. Un conjunto debe proporcionar al menos 12 TB y soportar cualesquiera dos fallos de disco. Según los modelos RAID con discos iguales, ¿qué organización cumple ambos requisitos?
  1. RAID-10 con tres pares en espejo.
  2. RAID-1 con dos de los discos.
  3. RAID-5 con los seis discos.
  4. RAID-6 con los seis discos.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

¿Qué operación de mantenimiento lee y verifica periódicamente datos a los que las aplicaciones pueden acceder pocas veces?
  1. La verificación preventiva de datos.
  2. El sobreaprovisionamiento de memoria flash.
  3. La fusión de solicitudes.
  4. La agrupación de interrupciones.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Una escritura envía un par correcto de datos y suma de comprobación al bloque 840 en lugar del bloque 480 previsto. ¿Qué comprobación adicional puede revelar el destino incorrecto al leer el bloque 840?
  1. Volver a comprobar el par con la misma suma.
  2. Comparar la velocidad del eje notificada.
  3. Comparar su etiqueta de dirección con la dirección solicitada.
  4. Esperar hasta que se seleccionen ambas copias en espejo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 3: Distribuye solicitudes y contabiliza el trabajo oculto10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un controlador escribe un descriptor de comando en RAM y después activa un registro de notificación MMIO. ¿Por qué puede ser insuficiente por sí solo un puntero volatile a ese registro?
  1. Ordena los registros de puertos, pero no los mapeados.
  2. Protege el puntero, pero no el contenido del descriptor.
  3. Ordena las lecturas del dispositivo, pero no sus escrituras.
  4. No garantiza toda la ordenación de memoria necesaria.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un búfer de usuario de tres páginas ocupa páginas físicas no adyacentes. Un controlador las ha mapeado para DMA. ¿Qué debe seguir siendo cierto hasta que el dispositivo termine?
  1. La aplicación debe mantener la CPU sondeando.
  2. Las páginas que respaldan el búfer deben permanecer fijadas y estables.
  3. Las páginas físicas deben adquirir números adyacentes.
  4. El dispositivo debe usar el puntero de usuario original.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

El cabezal de un disco duro empieza en la pista 40 con solicitudes pendientes en 10, 44 y 47. Usa SSTF. Inmediatamente después de cada finalización llega una nueva solicitud en la pista siguiente a la posición actual del cabezal. ¿Cuáles son las tres primeras solicitudes atendidas?
  1. 44, después 45 y después 46.
  2. 44, después 47 y después 48.
  3. 44, después 47 y después 10.
  4. 44, después 45 y después 47.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Una unidad informa de que una escritura ha terminado después de colocarla en una caché volátil. ¿Qué política de caché describe esto?
  1. Caché de escritura inmediata.
  2. Caché de lectura anticipada.
  3. Caché de escritura diferida.
  4. Caché de desfase entre pistas.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Una suma de comprobación de Fletcher empieza con ambas sumas en cero y usa módulo 255. ¿Qué par resulta después de los bytes decimales 100 y 200, actualizando la primera suma antes que la segunda para cada byte?
  1. (44, 144)
  2. (45, 145)
  3. (45, 90)
  4. (100, 45)
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Una SSD de 2 TB tiene una clasificación de 1460 TBW durante cinco años. Usando 365 días por año, ¿qué clasificación DWPD implica?
  1. 0,8 DWPD
  2. 2,0 DWPD
  3. 0,2 DWPD
  4. 0,4 DWPD
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Ocho discos iguales sostienen cada uno 120 operaciones físicas de entrada/salida aleatorias pequeñas por segundo. En el modelo ideal equilibrado, ¿cuántas escrituras lógicas pequeñas por segundo pueden sostener RAID-5 y RAID-6 mediante lectura-modificación-escritura?
  1. RAID-5: 240; RAID-6: 160.
  2. RAID-5: 480; RAID-6: 320.
  3. RAID-5: 120; RAID-6: 120.
  4. RAID-5: 960; RAID-6: 960.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Una banda con paridad tiene la paridad antigua 1011. Un bloque de datos cambia de 0010 a 1101. ¿Cuál es la nueva paridad XOR?
  1. 0110
  2. 1001
  3. 0100
  4. 1111
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Una suma de comprobación XOR cubre los bytes 0x20 y 0x10. Se invierte el bit menos significativo de ambos bytes, que pasan a ser 0x21 y 0x11. ¿Qué ocurre con la suma de comprobación?
  1. Sube de 0x30 a 0x32.
  2. Baja de 0x30 a 0x2E.
  3. Se invierte de 0x30 a 0x31.
  4. Permanece igual a 0x30.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Una actualización confirmada del bloque 80 debería coincidir con la nueva suma de comprobación de un bloque padre confirmado. Una lectura devuelve los bytes anteriores con su suma antigua coincidente y la etiqueta de dirección 80. Una copia en espejo coincide con el bloque padre. ¿Qué copia debe devolverse, qué rechaza la primera copia y qué debe repararse?
  1. Devolver la primera; su etiqueta de dirección es válida; reparar el espejo.
  2. Devolver el espejo; falla la comprobación del padre en la primera; reparar la primera.
  3. Devolver la primera; su suma local es válida; reparar el padre.
  4. Devolver el espejo; falla la etiqueta de dirección de la primera; reparar la etiqueta.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 4: Explica las compensaciones entre rendimiento e integridad10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un dispositivo completa 240 000 solicitudes por segundo. Cada interrupción cuesta 4 µs de tiempo de CPU. Los lotes de cuatro añaden como máximo 12 µs de demora de notificación; los lotes de ocho añaden como máximo 28 µs. Los límites son 0,30 de un núcleo y 20 µs de demora adicional. ¿Qué política cumple ambos?
  1. Una interrupción por cada ocho finalizaciones.
  2. Una interrupción por cada finalización.
  3. Una interrupción por cada cuatro finalizaciones.
  4. Una interrupción por cada dos finalizaciones.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

En una solicitud NVMe, ¿qué indica al controlador una escritura en el registro de notificación de la cola de envío?
  1. Que un proceso ya ha consumido su resultado.
  2. Que un archivo ha llegado a almacenamiento duradero.
  3. Que todas las cachés de CPU contienen la nueva carga útil.
  4. Que hay trabajo enviado disponible en la cola.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Un disco duro tiene un tiempo de búsqueda de 3 ms, una revolución de 10 ms y una tasa de transferencia de 200 MB/s. Ignora los aciertos de caché y la espera en cola. ¿Cuál es el tamaño mínimo de una única solicitud secuencial que proporciona al menos 100 MB/s de tasa de procesamiento efectiva, usando la rotación inicial media para una posición aleatoria?
  1. 1,6 MB
  2. 0,8 MB
  3. 1,0 MB
  4. 2,0 MB
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Dos solicitudes de disco tienen tiempos previstos de búsqueda y rotación de 1 ms/7 ms y 3 ms/1 ms. ¿En qué orden las atiende SPTF?
  1. Atiende la primera porque 1 ms es la búsqueda más corta.
  2. Atiende la segunda porque 4 ms es el menor tiempo de posicionamiento.
  3. Atiende la primera porque 7 ms es la espera rotacional más larga.
  4. Atiende la segunda porque una búsqueda más larga siempre tiene prioridad.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Una SSD de 512 GiB usa páginas lógicas de 8 KiB y una entrada de correspondencia de 8 bytes por página. Si la tabla completa de correspondencias a nivel de página permanece en memoria, ¿cuánto espacio necesita?
  1. 256 MiB
  2. 1 GiB
  3. 64 MiB
  4. 512 MiB
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Una SSD llena se ralentiza durante sobrescrituras aleatorias sostenidas, aunque la velocidad de su enlace no cambia. ¿Qué trabajo interno puede explicar la disminución?
  1. El aumento de las esperas rotacionales entre páginas de memoria flash.
  2. La copia de páginas ya marcadas como no válidas durante la GC.
  3. La copia de páginas vigentes durante la recolección de basura.
  4. El borrado solo de las páginas individuales sobrescritas de memoria flash.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un conjunto redundante ha perdido un miembro, pero sigue sirviendo todos los datos solicitados dentro de su tolerancia a fallos. ¿En qué estado se encuentra?
  1. Funcionamiento en modo degradado.
  2. Reconstrucción completada.
  3. Parada por fallo completo.
  4. Funcionamiento sin bandas.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

La reconstrucción de un RAID-5 de cuatro discos debe leer tres discos supervivientes de 6 TB. Para un cálculo ilustrativo, modela un error de lectura por cada 10¹⁵ bits. ¿Qué número esperado de errores resulta y qué significa?
  1. 0,018 errores; un número esperado según el modelo de tasa.
  2. 0,144 errores; un número esperado según el modelo de tasa.
  3. 0,144 errores; exactamente un 14,4 % de probabilidad de pérdida de datos.
  4. 0,018 errores; exactamente un 1,8 % de probabilidad de pérdida de datos.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Dos miembros de un espejo devuelven contenidos diferentes para el mismo bloque. Ninguno informa de un error de lectura y no hay ninguna suma de comprobación esperada disponible. ¿Qué conclusión está justificada?
  1. El miembro leído primero debe contener los datos más recientes.
  2. El miembro con más espacio libre debe ser el correcto.
  3. La discrepancia identifica el miembro defectuoso.
  4. Las copias discrepan, pero ninguna está verificada como correcta.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

¿Cuántos niveles de carga distinguibles necesita una celda de memoria flash QLC para representar sus cuatro bits?
  1. 16
  2. 8
  3. 4
  4. 32
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 5: Elige diseños con restricciones combinadas10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un registro de dispositivo borra su indicador de disponibilidad cada vez que se lee. ¿Por qué debe tratar el controlador las lecturas repetidas como operaciones del dispositivo?
  1. El registro siempre contiene un bloque de datos completo.
  2. Cada lectura puede cambiar el estado visible del dispositivo.
  3. Cada lectura garantiza la devolución de bytes en caché.
  4. El registro solo puede escribirse mediante DMA.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Durante una avalancha de paquetes, una CPU permanece ocupada gestionando interrupciones mientras la aplicación consume casi ningún paquete. ¿Qué cambio aborda este mecanismo de bloqueo activo?
  1. Generar una interrupción separada por cada paquete en espera.
  2. Mantener la misma tasa de interrupciones y bloquear a cada consumidor.
  3. Usar lotes acotados de trabajo de sondeo bajo carga elevada.
  4. Hacer que cada paquete completado genere otra interrupción.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Un búfer es virtualmente contiguo y abarca dos páginas físicas no adyacentes. El controlador pasa el puntero de usuario a un dispositivo DMA y después libera las páginas antes de la finalización. ¿Qué corrección aborda ambos fallos?
  1. Mantener el puntero de usuario y vaciar el registro de comandos.
  2. Mapear una página y copiar solo el estado de finalización.
  3. Fijar las páginas, pero seguir pasando el puntero virtual.
  4. Proporcionar direcciones mapeadas de dispersión y reunión y mantener fijadas las páginas.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un dispositivo garantiza la atomicidad ante fallos de alimentación para una unidad de 4 KiB. Una escritura alineada de 8 KiB abarca dos de esas unidades y se confirma en una caché volátil de escritura diferida. ¿Qué puede concluirse sobre un fallo de alimentación inmediato?
  1. No están garantizadas ni la atomicidad de toda la actualización de 8 KiB ni su persistencia.
  2. Toda la actualización de 8 KiB es atómica porque ambas unidades están alineadas.
  3. Toda la escritura es duradera porque ya llegó la confirmación.
  4. Solo la segunda unidad de 4 KiB puede conservar su contenido anterior.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

¿Qué proceso físico limita principalmente la resistencia de NAND a la programación y el borrado?
  1. Las lecturas repetidas siempre cuentan como ciclos de borrado completos.
  2. Cada borrado elimina permanentemente una posición de bit almacenada.
  3. Los ciclos repetidos de programación y borrado dañan las celdas de memoria flash.
  4. Las comprobaciones ECC repetidas consumen el presupuesto de escritura de la celda.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Un conjunto tiene un mapa de bits de intención de escritura, pero ningún registro de los datos nuevos ni de la paridad. ¿Qué información de recuperación proporciona el mapa después de una actualización interrumpida?
  1. El contenido nuevo exacto previsto para cada bloque afectado.
  2. Las regiones que necesitan comprobación y resincronización.
  3. La identidad de cada miembro de datos corrompido silenciosamente.
  4. Los valores de paridad ausentes de cada banda incompleta.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un conjunto RAID-10 de seis discos tiene los pares (0,1), (2,3) y (4,5). El disco 2 ha fallado. Cada disco sano tiene una tasa de lectura aleatoria R. ¿Qué segundo fallo conserva todos los datos y qué tasa agregada ideal de lectura aleatoria queda?
  1. Falla el disco 3; queda 4R.
  2. Falla el disco 4; queda 3R.
  3. Falla el disco 3; queda 3R.
  4. Falla el disco 4; queda 4R.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Un conjunto RAID-0 tiene cuatro discos y fragmentos de tres bloques. Los discos y los desplazamientos locales empiezan en cero. ¿Dónde se encuentra el bloque lógico 29?
  1. Disco 1, desplazamiento 8.
  2. Disco 1, desplazamiento 7.
  3. Disco 3, desplazamiento 6.
  4. Disco 2, desplazamiento 8.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Cuatro discos de 8 TB deben proporcionar 16 TB, soportar cualesquiera dos fallos de miembros y reconstruir un disco de reemplazo completo. La tasa de escritura del reemplazo no puede superar 160 MB/s. ¿Qué nivel y tiempo mínimo optimista corresponden?
  1. RAID-10; unas 13,9 horas.
  2. RAID-6; unas 6,9 horas.
  3. RAID-6; unas 13,9 horas.
  4. RAID-5; unas 13,9 horas.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Una lectura en espejo del disco A no supera la comprobación de su suma esperada. El disco B proporciona una copia que sí la supera. ¿Qué debe hacer un sistema con autorreparación?
  1. Devolver los datos de A y registrar solo la suma diferente.
  2. Devolver los datos de B y usarlos para reparar la copia de A.
  3. Rechazar ambas copias porque la primera lectura falló.
  4. Reescribir B usando A porque A se seleccionó primero.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

¿Te atascas con una pregunta tuya? Ayuda con Tareas

Términos Clave

103 Términos Clave, cada uno con su definición

A

Acceso directo a memoria (DMA)
El acceso directo a memoria (DMA) transfiere datos entre un dispositivo y la memoria principal mediante hardware, evitando que la CPU copie cada palabra de la carga útil.
El acceso directo a memoria (DMA) permite que la CPU realice cálculos mientras un controlador llena un búfer de memoria preparado.
Acceso forzado a la unidad (FUA)
El acceso forzado a la unidad (FUA) es un atributo de una solicitud de escritura que exige que los datos afectados lleguen a almacenamiento persistente antes de informar de su finalización.
Un sistema de archivos puede usar acceso forzado a la unidad (FUA) cuando los datos escritos deben ser duraderos al finalizar.
Acceso secuencial
El acceso secuencial lee o escribe bloques cercanos en orden, lo que permite que un disco duro reparta el coste de posicionamiento entre una transferencia larga.
El acceso secuencial puede acercarse a la tasa de transferencia sostenida del disco duro cuando la solicitud es lo bastante grande.
Agrupación de interrupciones
La agrupación de interrupciones reúne varios eventos de dispositivo en menos interrupciones, lo que reduce la sobrecarga de notificación de la CPU y añade cierta demora de finalización.
La agrupación de interrupciones permite que una ejecución del manejador procese las finalizaciones de varias solicitudes de almacenamiento.
Algoritmo del ascensor (SCAN)
SCAN atiende solicitudes durante un barrido hacia un extremo del disco y después invierte la dirección, repartiendo el servicio mediante pasadas repetidas por las pistas.
SCAN continúa hasta el extremo aunque su última solicitud pendiente en esa dirección esté antes.
Almacenamiento por niveles
El almacenamiento por niveles coloca los datos de acceso frecuente en almacenamiento más rápido y los datos menos activos en capacidad más barata para equilibrar tiempo de acceso y coste.
El almacenamiento por niveles puede mantener un índice activo en SSD mientras los archivos grandes que se leen pocas veces permanecen en discos duros.
Amplificación de escritura
La amplificación de escritura es la proporción entre los bytes programados internamente en memoria flash y los bytes escritos por el anfitrión, incluido el trabajo de reubicación interna.
La amplificación de escritura aumenta cuando las actualizaciones sostenidas obligan a copiar muchas páginas vigentes durante la GC.
Autorreparación
La autorreparación repara una copia almacenada dañada usando contenido redundante que primero ha superado la verificación frente a los datos esperados.
Un sistema de archivos en espejo realiza una autorreparación después de encontrar una alternativa válida a una copia cuya suma de comprobación ha fallado.

B

Barrido circular (C-SCAN)
C-SCAN atiende solicitudes en una dirección y vuelve al inicio sin atenderlas, lo que proporciona a las distintas posiciones un patrón de ciclo de servicio más uniforme.
El trayecto de vuelta en C-SCAN sigue moviendo el cabezal y debe incluirse en el recorrido total.
Barrido circular entre solicitudes extremas (C-LOOK)
C-LOOK atiende solicitudes en una dirección y vuelve entre las solicitudes pendientes extremas, evitando el recorrido hasta los extremos físicos del disco que no se necesitan.
C-LOOK vuelve a la solicitud pendiente más baja sin atender solicitudes durante el retorno.
Barrido hasta la última solicitud pendiente (LOOK)
LOOK recorre las solicitudes, pero invierte la dirección en la última solicitud pendiente de su sentido, evitando el recorrido innecesario desde allí hasta el extremo del disco.
LOOK gira en la pista 110 cuando no queda ninguna solicitud superior, aunque el disco llegue hasta 199.
Bloque de borrado
Un bloque de borrado es el grupo de páginas de memoria flash que se restablecen juntas mediante una operación de borrado, normalmente mucho mayor que la unidad de programación por página.
La GC copia las páginas vigentes fuera de un bloque de borrado antes de restablecerlo para futuras programaciones.
Bloqueo activo
El bloqueo activo es una actividad continua del sistema con escaso progreso útil, como una gestión excesiva de interrupciones que impide ejecutarse a los consumidores de paquetes.
Una avalancha de paquetes puede causar bloqueo activo aunque la utilización de la CPU siga cerca del cien por ciento.

C

Caché de escritura diferida
Una caché de escritura diferida confirma las escrituras cuando se aceptan en la caché, lo que permite informar de su finalización antes de que los bytes lleguen al medio de almacenamiento persistente.
Una caché volátil de escritura diferida puede perder una actualización confirmada si falla la alimentación antes de vaciarla.
Capa de bloques
La capa de bloques pone en cola las solicitudes de almacenamiento y puede fusionarlas o planificarlas antes de pasar las operaciones al controlador de dispositivo adecuado.
La capa de bloques combina dos lecturas adyacentes para que el controlador pueda enviar una solicitud mayor.
Capa de traducción de memoria flash (FTL)
La capa de traducción de memoria flash (FTL) es firmware de una SSD que asigna las direcciones lógicas del anfitrión a páginas de memoria flash y gestiona la colocación, el borrado y el desgaste.
La capa de traducción de memoria flash (FTL) redirige una sobrescritura a espacio libre sin cambiar la LBA del anfitrión.
Ciclo de programación y borrado (P/E)
Un ciclo de programación y borrado (P/E) es un uso de las celdas de memoria flash que contribuye al desgaste y reduce gradualmente su capacidad de conservar la carga de forma fiable.
La nivelación del desgaste reparte los ciclos P/E para que un pequeño conjunto de bloques calientes no se desgaste primero.
Cilindro
Un cilindro es el conjunto de pistas de un disco duro situadas en la misma posición radial en las superficies de los platos, a las que se accede con una misma posición del brazo compartido de los cabezales.
Cambiar de superficie dentro de un cilindro no requiere mover el brazo a otra posición radial.
Código de corrección de errores (ECC)
Un código de corrección de errores (ECC) almacena información redundante que puede detectar y reparar determinados patrones de errores de bits dentro de su capacidad de corrección.
Una unidad informa de un sector ilegible cuando su código de corrección de errores (ECC) no puede recuperar los bits.
Colisión de sumas de comprobación
Una colisión de sumas de comprobación ocurre cuando distintas entradas producen la misma suma de comprobación, lo que permite que algunos contenidos modificados superen una comparación de valores.
Dos inversiones de bits que se cancelan crean una colisión de sumas de comprobación para una comprobación XOR simple por bytes.
Comprobación de redundancia cíclica (CRC)
Una comprobación de redundancia cíclica (CRC) almacena el resto de una división polinómica XOR, lo que proporciona una detección sólida de patrones especificados de ráfagas de errores.
Una comprobación de redundancia cíclica (CRC) de tres bits usa un generador de grado tres y un resto de tres bits.
Conjunto redundante de discos independientes (RAID)
RAID combina varios discos en un dispositivo lógico de almacenamiento cuya organización determina el espacio utilizable, el rendimiento en paralelo y la tolerancia a fallos de disco.
Un sistema de archivos puede leer una interfaz de bloques RAID sin saber qué miembro físico contiene los datos.
Controlador de dispositivo
Un controlador de dispositivo implementa comandos específicos del hardware y la gestión de la finalización tras una interfaz que puede usar el resto del sistema operativo.
Un nuevo controlador de dispositivo permite que la capa de bloques existente envíe solicitudes a otro controlador de hardware.
Corrupción silenciosa
La corrupción silenciosa ocurre cuando una lectura de almacenamiento devuelve contenido incorrecto sin informar de un error, por lo que se requiere una verificación independiente para detectarla.
Un espejo simple puede devolver datos con corrupción silenciosa cuando lee una copia dañada sin comprobar su contenido.

D

Desfase entre pistas
El desfase entre pistas desplaza las posiciones de los sectores entre pistas adyacentes para que una lectura secuencial pueda continuar después del tiempo necesario para cambiar de pista.
El desfase entre pistas impide que el siguiente sector secuencial pase justo antes de que el cabezal llegue a su pista.
Dirección de bloque lógico (LBA)
Una dirección de bloque lógico (LBA) es un número de sector en el conjunto de bloques de un dispositivo de almacenamiento visible para el anfitrión, independiente de la ubicación física oculta en el medio.
El sistema de archivos solicita una dirección de bloque lógico (LBA) sin nombrar un plato ni una pista.
Disco de reserva en caliente
Un disco de reserva en caliente es un disco instalado e inactivo disponible para servir rápidamente como destino de reconstrucción después de que falle un miembro del conjunto.
Un disco de reserva en caliente acorta la demora de reemplazo, aunque sigue siendo necesario realizar las copias de la reconstrucción.
Dispositivo de bloques
Un dispositivo de bloques proporciona almacenamiento en forma de bloques direccionados que pueden leerse o escribirse de forma independiente mediante la interfaz de solicitudes de bloques del núcleo.
Linux expone un espacio de nombres NVMe como un dispositivo de bloques que un sistema de archivos puede leer y escribir.
Dispositivo de caracteres
Un dispositivo de caracteres expone una interfaz orientada a flujos, como la de un terminal o un puerto serie, en lugar de un conjunto de bloques de almacenamiento direccionados.
Un dispositivo de caracteres de terminal intercambia bytes sin ofrecer direccionamiento de sectores como un disco.
Distribución de datos en bandas
La distribución de datos en bandas reparte fragmentos lógicos consecutivos entre discos, lo que permite trabajar en paralelo, mientras que la presencia de redundancia depende de la organización RAID.
RAID-0 usa distribución en bandas para aumentar la tasa de procesamiento agregada sin conservar información adicional de recuperación.
Duplicación en espejo
La duplicación en espejo mantiene copias de los mismos datos lógicos en miembros separados, permite leer de cualquiera de ellos y exige que ambos reciban cada actualización.
La duplicación en espejo permite que una copia sana verificada proporcione datos cuando su compañera ha fallado.

E

Eficiencia de capacidad
La eficiencia de capacidad es la capacidad utilizable para datos dividida entre la capacidad bruta de los miembros, e indica cuánto espacio dedica una organización a la redundancia.
La eficiencia de capacidad de RAID-5 aumenta con el número de miembros, mientras que la recuperación debe leer más datos supervivientes.
Entrada/salida mapeada en memoria (MMIO)
La entrada/salida mapeada en memoria (MMIO) asigna a los registros de dispositivos direcciones en el espacio de direcciones físicas, lo que permite acceder a ellos mediante cargas y almacenamientos controlados.
El controlador NVMe usa entrada/salida mapeada en memoria (MMIO) para escribir en un registro de notificación de cola después de preparar un comando.
Entrada/salida por puertos
La entrada/salida por puertos accede a los registros de dispositivos mediante un espacio de direcciones de puertos separado, usando instrucciones especiales del procesador como in y out en x86.
Un núcleo x86 puede restringir qué procesos pueden ejecutar las instrucciones usadas para la entrada/salida por puertos.
Entrada/salida programada (PIO)
La entrada/salida programada (PIO) transfiere datos de la carga útil entre la memoria y un registro de dispositivo mediante instrucciones de la CPU, que interviene en cada transferencia.
La entrada/salida programada (PIO) requiere muchos accesos a registros cuando la carga útil contiene un bloque grande de datos.
Error de lectura irrecuperable (URE)
Un error de lectura irrecuperable (URE) es un fallo de lectura que la unidad no puede corregir; una tasa URE publicada limita los errores con respecto a los bits leídos.
Un URE en un disco superviviente durante una reconstrucción de RAID-5 puede dejar su banda con información insuficiente para recuperarla.
Error latente de sector (LSE)
Un error latente de sector (LSE) es un sector ilegible que se descubre al acceder a él y que la unidad notifica después de que falle la corrección interna.
La verificación preventiva de datos puede descubrir un error latente de sector (LSE) en datos que no se han leído durante meses.
Escritura de banda completa
Una escritura de banda completa reemplaza todos los bloques de datos de una banda con paridad, lo que permite calcular la nueva redundancia sin leer el contenido antiguo de la banda.
Un controlador puede combinar un lote completo en una escritura de banda completa para evitar las lecturas de paridad antigua.
Escritura en una ubicación incorrecta
Una escritura en una ubicación incorrecta almacena datos en un destino distinto del disco o bloque previsto, lo que puede dejar un bloque desactualizado y sobrescribir otro.
Una etiqueta de dirección puede revelar una escritura en una ubicación incorrecta incluso cuando los datos devueltos coinciden con su suma de comprobación.
Escritura incompleta
Una escritura incompleta es una actualización interrumpida que deja algunas unidades atómicas independientes con contenido nuevo y otras con su contenido anterior.
Una actualización de 8 KiB que abarca dos unidades atómicas de 4 KiB puede convertirse en una escritura incompleta tras un fallo de alimentación.
Escritura perdida
Una escritura perdida es una actualización notificada como completa que no llega al almacenamiento y deja contenido antiguo que puede conservar una suma de comprobación local válida.
Una suma de comprobación actual en un registro padre puede rechazar el contenido desactualizado del bloque hijo dejado por una escritura perdida.
Escrituras completas de la unidad por día (DWPD)
DWPD expresa el volumen diario nominal de escritura del anfitrión como múltiplos de la capacidad completa de la unidad durante el periodo de garantía.
Una SSD de 2 TB con una clasificación de 0,5 DWPD admite un promedio nominal de 1 TB de escrituras del anfitrión por día de garantía.
Espera híbrida
La espera híbrida sondea durante un intervalo breve y después bloquea el proceso a la espera de una interrupción si la operación no ha terminado, adaptándose a tiempos de finalización variables.
La espera híbrida gestiona una respuesta rápida de inmediato sin realizar espera activa durante una demora larga del dispositivo.
Etiqueta de dirección
Una etiqueta de dirección registra la ubicación a la que pertenece un bloque, lo que permite al lector comparar la información de identidad devuelta con el destino solicitado.
Una etiqueta de dirección para el bloque 720 entra en conflicto con una lectura que solicitó el bloque 270.
Exposición a fallos durante la reconstrucción
La exposición a fallos durante la reconstrucción es el periodo y la carga de trabajo durante los cuales un conjunto tiene menos redundancia mientras se restauran los datos ausentes en un disco de reemplazo.
Un disco mayor puede prolongar la exposición a fallos durante la reconstrucción aunque el disco de reemplazo esté disponible de inmediato.

F

Firmware
El firmware es el software que se ejecuta dentro de un controlador de dispositivo, implementa su comportamiento interno y da soporte a la interfaz de hardware expuesta.
El firmware de una SSD gestiona la colocación en memoria flash mientras el anfitrión sigue emitiendo solicitudes de bloques ordinarias.
Función hash criptográfica
Una función hash criptográfica asigna a los datos un resumen de tamaño fijo diseñado para resistir ataques deliberados de colisión, además de cambios accidentales.
Una función hash criptográfica detecta la manipulación solo cuando el resumen esperado es a su vez de confianza.

G

Grabación por zonas
La grabación por zonas coloca más sectores en las pistas exteriores más largas de un disco duro, lo que aumenta los bytes transferidos por revolución frente a las pistas interiores más cortas.
La grabación por zonas explica por qué una lectura secuencial larga puede ralentizarse al acercarse a las pistas interiores.

I

Inconsistencia de paridad por escritura interrumpida
La inconsistencia de paridad por escritura interrumpida es una discrepancia de paridad causada por una actualización interrumpida de varios discos, que deja los datos y la redundancia en versiones diferentes.
Un registro protegido de actualizaciones adecuado ayuda a evitar que la inconsistencia de paridad por escritura interrumpida perjudique una recuperación posterior.
Integridad de extremo a extremo
La integridad de extremo a extremo comprueba el contenido cerca de su consumidor final a lo largo del recorrido de los datos, detectando fallos que quedan fuera de la protección limitada al medio.
Una suma de comprobación del sistema de archivos proporciona integridad de extremo a extremo sobre más componentes que el ECC interno del disco.
Interfaz de dispositivo
Una interfaz de dispositivo es el conjunto de registros y comandos mediante los cuales el software del sistema controla el hardware sin conocer su diseño interno.
Un controlador puede usar la misma interfaz de dispositivo aunque un controlador de hardware más nuevo tenga un firmware distinto.
Interrupciones señalizadas por mensajes extendidas (MSI-X)
MSI-X es un mecanismo de interrupciones señalizadas por mensajes de PCIe que proporciona múltiples vectores y permite a un dispositivo dirigir distintas notificaciones de forma independiente.
Un controlador NVMe puede usar vectores MSI-X para enviar las finalizaciones de las colas a los núcleos de CPU que las gestionan.

L

Latencia rotacional
La latencia rotacional es la espera hasta que un sector solicitado del disco duro gira y pasa bajo el cabezal después del posicionamiento; para sectores aleatorios, es de media vuelta en promedio.
A 10 000 RPM, la latencia rotacional media aleatoria es de 3 ms porque una revolución completa tarda 6 ms.
Lectura-modificación-escritura
La lectura-modificación-escritura actualiza la paridad leyendo los datos antiguos y la redundancia, calculando sus reemplazos y después escribiendo los datos y la redundancia nuevos.
Una lectura-modificación-escritura en RAID-5 usa dos lecturas seguidas de dos escrituras para una actualización lógica pequeña.
Lista de dispersión y reunión
Una lista de dispersión y reunión describe regiones de transferencia separadas mediante pares de dirección y longitud, lo que permite que una solicitud abarque memoria no adyacente.
Un controlador construye una lista de dispersión y reunión para un búfer respaldado por varias páginas físicas separadas.

M

Maestro del bus
Un maestro del bus es un dispositivo o controlador que inicia transferencias en la interconexión, como un motor DMA que lee o escribe en la memoria principal.
Una SSD actúa como maestro del bus cuando escribe un bloque solicitado directamente en el búfer mapeado.
Manejador de interrupciones
Un manejador de interrupciones es código del núcleo que responde a una notificación de hardware, comprueba el evento y realiza el trabajo de finalización necesario.
El manejador de interrupciones deja listo para el planificador de CPU al proceso que esperaba una lectura terminada.
Memoria flash NAND
La memoria flash NAND es memoria no volátil que representa bits como niveles de carga en celdas y organiza el acceso en páginas dentro de bloques de borrado mayores.
La memoria flash NAND conserva su contenido sin alimentación, pero necesita espacio borrado antes de poder programar una página.
Modelo de fallo parcial
El modelo de fallo parcial permite que un dispositivo siga funcionando en gran parte mientras algunos bloques son ilegibles o devuelven silenciosamente datos incorrectos.
El modelo de fallo parcial explica por qué un disco en línea puede seguir teniendo bloques que requieren recuperación.
Modelo de fallo por parada
El modelo de fallo por parada supone que un disco funciona correctamente o falla por completo y de forma detectable, de modo que se conocen las ubicaciones de sus datos ausentes.
El modelo de fallo por parada permite que un conjunto con paridad identifique el bloque que debe reconstruir tras perder un miembro.
Modo degradado
El modo degradado es el servicio continuado de un conjunto redundante tras fallos dentro de su tolerancia, antes de que se haya reconstruido la redundancia ausente.
Un conjunto RAID-5 en modo degradado puede leer datos, pero no puede tolerar otro fallo completo de disco.

N

Nivelación del desgaste
La nivelación del desgaste reparte los ciclos de borrado de la memoria flash entre bloques y, a veces, mueve datos sin cambios para que los bloques poco usados se incorporen al conjunto activo de escritura.
La nivelación del desgaste puede mover datos fríos incluso cuando el anfitrión no ha solicitado ningún cambio en ellos.
Número esperado de errores
El número esperado de errores es el número medio de errores previsto para un volumen de lectura según un modelo de tasa elegido; no es por sí mismo una probabilidad de fallo.
Duplicar el volumen de lectura modelado duplica el número esperado de errores cuando la tasa de errores es fija.
NVMe
NVMe es una interfaz de comandos de almacenamiento diseñada para memoria no volátil que admite muchas colas de envío y finalización en memoria.
Los pares de colas NVMe permiten que distintos núcleos de CPU envíen solicitudes de memoria flash con menos contención compartida.

O

Operaciones de entrada/salida por segundo (IOPS)
Las IOPS miden las operaciones de entrada/salida completadas por segundo; su significado depende del tamaño de las solicitudes, la carga de trabajo, la concurrencia y la proporción de lecturas y escrituras.
Una prueba de lecturas aleatorias de una en una informa de IOPS para una carga de trabajo muy distinta de la de una prueba con cola profunda.

P

Página de memoria flash
Una página de memoria flash es una unidad que se lee o programa dentro de un bloque de borrado, normalmente de varios KiB, cuya reutilización depende del estado de borrado del bloque.
Una página de memoria flash que contiene una versión antigua no puede recibir simplemente la nueva versión en la misma ubicación.
Página fijada en memoria
Una página fijada en memoria es una página que se mantiene residente y estable mientras una operación como DMA aún puede acceder a la memoria física que la respalda.
Una página fijada en memoria no puede reutilizarse para otro búfer hasta que termine la transferencia activa del dispositivo.
Paridad XOR
La paridad XOR es el OR exclusivo bit a bit de los bloques de datos de una banda, que permite reconstruir un bloque cuando se conoce la ubicación del que falta.
La paridad XOR y los bloques de datos supervivientes recuperan el valor almacenado en un miembro cuyo fallo es visible.
Perturbación por lectura
La perturbación por lectura es un desplazamiento de la carga almacenada en memoria flash causado por lecturas repetidas, que puede aumentar los errores de bits en celdas cercanas.
Los mecanismos de ECC y renovación del controlador ayudan a gestionar los errores que puede crear la perturbación por lectura.
Pista
Una pista es una trayectoria circular de datos magnéticos en una superficie de un plato de disco duro, dividida en sectores que pasan bajo un cabezal mientras gira el plato.
Pasar a otra pista requiere reposicionar el brazo antes de poder leer los sectores deseados.
Planificación anticipatoria
La planificación anticipatoria espera brevemente una probable solicitud posterior cercana en lugar de desplazar inmediatamente el cabezal hacia otro trabajo pendiente.
La planificación anticipatoria puede ahorrar un desplazamiento de ida y vuelta cuando un proceso solicita pronto otro bloque.
Primero el menor tiempo de búsqueda (SSTF)
SSTF selecciona la solicitud pendiente con la búsqueda más corta, lo que reduce el recorrido cercano, pero supone el riesgo de aplazar indefinidamente las solicitudes lejanas.
SSTF elige repetidamente solicitudes cercanas recién llegadas mientras espera una solicitud más antigua en una pista lejana.
Primero el menor tiempo de posicionamiento (SPTF)
SPTF elige la solicitud con la menor suma prevista de tiempo de búsqueda y latencia rotacional, usando información de posicionamiento normalmente disponible dentro de la unidad.
SPTF puede preferir una pista más lejana cuando su sector vaya a girar bajo el cabezal antes.
Primero en llegar, primero en ser atendido (FCFS)
FCFS atiende las solicitudes de disco por orden de llegada, conservando ese orden, aunque permite grandes movimientos del cabezal entre solicitudes consecutivas lejanas.
FCFS puede enviar el cabezal repetidamente de un lado a otro del disco cuando las solicitudes sucesivas alternan entre extremos.
Profundidad de cola
La profundidad de cola es el número de solicitudes de entrada/salida pendientes, que puede permitir aprovechar el paralelismo de una SSD, pero también añadir espera cuando la capacidad de servicio está saturada.
Aumentar la profundidad de cola permite que varios canales de memoria flash procesen lecturas independientes al mismo tiempo.

R

RAID-0
RAID-0 distribuye datos en bandas entre miembros sin redundancia, usa toda la capacidad bruta de los miembros y pierde datos del conjunto si falla cualquiera de ellos.
RAID-0 es adecuado para resultados temporales que pueden recrearse si falla un miembro de almacenamiento.
RAID-4
RAID-4 distribuye datos en bandas mientras mantiene la paridad XOR en un disco dedicado, que se convierte en un cuello de botella compartido para las escrituras pequeñas de todo el conjunto.
Añadir discos de datos a RAID-4 no elimina el trabajo de lectura y escritura del miembro de paridad en cada actualización.
RAID-5
RAID-5 distribuye un bloque de paridad por banda entre los miembros, mantiene la tolerancia al fallo de un miembro y reparte el trabajo de actualización de la paridad.
Un conjunto RAID-5 de seis miembros ofrece una capacidad de datos equivalente a cinco miembros y tolera un fallo.
RAID-6
RAID-6 almacena dos valores de redundancia independientes por banda, lo que proporciona tolerancia al fallo de cualesquiera dos miembros a costa de la capacidad de dos miembros.
Una actualización pequeña en RAID-6 debe mantener ambos valores de redundancia, lo que aumenta el trabajo físico de entrada/salida frente a RAID-5.
RAID-10
RAID-10 distribuye datos en bandas entre pares en espejo, usa la mitad de la capacidad bruta y soporta fallos mientras cada par conserve una copia operativa.
Un conjunto RAID-10 de seis discos puede soportar tres fallos si cada uno procede de un par en espejo distinto.
Recolección de basura (GC)
La recolección de basura (GC) recupera espacio de una SSD reubicando las páginas válidas de un bloque de borrado, actualizando sus correspondencias y borrando el bloque de origen.
La recolección de basura (GC) es menos costosa cuando al bloque seleccionado le quedan pocas páginas vigentes que conservar.
Reconstrucción de datos en modo degradado
La reconstrucción de datos en modo degradado obtiene los datos solicitados a partir de la redundancia superviviente cuando falta el miembro que normalmente los almacena.
Una reconstrucción de datos en modo degradado de RAID-5 lee varios bloques supervivientes de la banda en lugar de un solo bloque de datos.
Reconstrucción del conjunto RAID
Una reconstrucción del conjunto RAID restaura el contenido de un miembro ausente en un disco de reemplazo, copiando un espejo o reconstruyendo datos a partir de la información superviviente.
El tráfico en primer plano puede prolongar una reconstrucción porque las solicitudes de las aplicaciones compiten con la entrada/salida de recuperación.
Registro de comandos
Un registro de comandos recibe una solicitud de operación del dispositivo y puede iniciar el trabajo del hardware en cuanto el controlador escribe el comando requerido.
El controlador proporciona los datos de salida antes de escribir en el registro de comandos que inicia la transferencia.
Registro de estado
Un registro de estado informa del estado actual de un dispositivo, como su disponibilidad, actividad, finalización o un error, para que el software del sistema lo consulte.
El controlador comprueba el registro de estado antes de enviar un comando a un controlador de hardware ocupado.
Registro de notificación
Un registro de notificación es un registro de control de dispositivo en el que el software escribe para avisar a un controlador de que ha cambiado el estado de envío o finalización de una cola.
Después de colocar un comando en memoria, el controlador escribe en el registro de notificación de envío.
Rendimiento en régimen estacionario
El rendimiento en régimen estacionario describe el comportamiento sostenido de una SSD después de que las escrituras continuas y la recolección de basura hayan sustituido la fase inicial de unidad vacía.
El rendimiento en régimen estacionario de una unidad llena puede ser inferior a su velocidad de escritura recién salida de fábrica.

S

Sobreaprovisionamiento
El sobreaprovisionamiento reserva capacidad de memoria flash fuera del uso del anfitrión, proporcionando a una SSD espacio libre adicional para la recolección de basura y otras tareas de gestión interna.
El sobreaprovisionamiento permite que la GC retrase la recuperación de bloques que requerirían copiar muchas páginas vigentes.
Sondeo
El sondeo comprueba repetidamente el estado de un dispositivo para saber si está listo o ha terminado, a cambio de dedicar trabajo de CPU mientras sigue ocupado.
Un bucle breve de sondeo puede costar menos que bloquear y despertar el proceso para una operación de almacenamiento muy rápida.
Suma de comprobación
Una suma de comprobación es un valor compacto calculado a partir de datos y comparado con un valor esperado al leer para detectar cambios en el contenido protegido.
El lector vuelve a calcular una suma de comprobación antes de decidir si un bloque almacenado coincide con el valor esperado.
Suma de comprobación almacenada en el puntero del bloque padre
Una suma de comprobación almacenada en el puntero del bloque padre guarda la suma esperada de un bloque hijo en el bloque padre que lo referencia, separando el valor esperado del bloque hijo que se comprueba.
Una suma de comprobación almacenada en el puntero del bloque padre puede rechazar una versión antigua del bloque hijo aunque su suma local coincida.
Suma de comprobación de Fletcher
Una suma de comprobación de Fletcher mantiene una suma de los datos y una suma acumulada de esa suma, lo que añade sensibilidad a la posición a una comprobación de integridad de bajo coste.
El segundo componente de la suma de comprobación de Fletcher puede cambiar cuando se intercambian los dos primeros bytes.
Suma de comprobación por adición
Una suma de comprobación por adición suma fragmentos de datos módulo un rango fijo, detectando algunos cambios a bajo coste, pero sin ser sensible al orden de los fragmentos.
Una suma de comprobación por adición de ocho bits reduce un total de 300 módulo 256 al valor 44.

T

Tabla de correspondencias
Una tabla de correspondencias registra qué ubicación física de memoria flash almacena actualmente cada unidad lógica asignada, lo que permite mover los datos de forma transparente al actualizarlos.
La tabla de correspondencias apunta a la página nueva después de que una actualización en otro lugar invalide la página antigua.
Tamaño del fragmento por disco
El tamaño del fragmento por disco es la cantidad consecutiva de datos del conjunto que se coloca en un disco antes de pasar al siguiente miembro de la banda.
Un tamaño de fragmento de dos bloques coloca dos bloques lógicos vecinos en el mismo disco antes de pasar al siguiente.
Tasa de procesamiento
La tasa de procesamiento es el trabajo completado por unidad de tiempo, por ejemplo, en MB/s o IOPS, y es distinta del tiempo que tarda una solicitud individual.
Más copias en espejo para lectura pueden aumentar la tasa de procesamiento mientras la lectura de un solo bloque sigue tardando aproximadamente lo mismo que antes.
Terabytes escritos (TBW)
TBW es una clasificación de resistencia del total de terabytes escritos por el anfitrión bajo las condiciones especificadas, distinta de las programaciones internas de memoria flash.
Una clasificación de 900 TBW cuenta el volumen de escritura del anfitrión aunque la recolección de basura añada escrituras adicionales en memoria flash.
Tiempo de búsqueda
El tiempo de búsqueda es el intervalo necesario para que el brazo de un disco duro mueva y estabilice los cabezales en la pista requerida por una solicitud, antes de la espera rotacional.
En una lectura aleatoria pequeña, el tiempo de búsqueda puede superar ampliamente el necesario para transferir la carga útil.
Tiempo de transferencia
El tiempo de transferencia es el intervalo usado para transferir la carga útil una vez que es accesible, calculado como el número de bytes dividido entre la tasa de transferencia aplicable.
Una solicitud secuencial grande dedica al tiempo de transferencia una parte mucho mayor de su intervalo de servicio que una lectura diminuta.
TRIM
TRIM indica a una SSD que ciertos rangos lógicos ya no contienen datos necesarios, lo que permite al controlador tratar su contenido físico antiguo como no válido.
TRIM después de eliminar un archivo puede impedir que el controlador copie páginas obsoletas durante la recuperación de espacio.

U

Unidad de gestión de memoria de entrada/salida (IOMMU)
Una IOMMU traduce las direcciones de memoria visibles para los dispositivos y aplica restricciones de acceso, lo que ayuda a aislar los dispositivos DMA de la memoria física no relacionada.
La IOMMU puede limitar un dispositivo asignado directamente a la memoria de su máquina virtual.

V

Verificación mediante lectura tras la escritura
La verificación mediante lectura tras la escritura compara una nueva lectura con el contenido nuevo previsto y añade entrada/salida para comprobar que la actualización esperada se almacenó.
La verificación mediante lectura tras la escritura debe llegar al resultado almacenado en lugar de limitarse a volver a leer la caché volátil.
Verificación preventiva de datos
La verificación preventiva de datos lee y verifica de forma proactiva los datos almacenados, descubriendo fallos latentes mientras la redundancia restante aún puede permitir su reparación.
Una pasada mensual de verificación preventiva puede comprobar datos fríos mucho antes de que una aplicación vuelva a solicitarlos.

Sobre esta unidad

Por StudeliInformar de un error

Crea tus propios Materiales de Estudio

Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.

Comenzar