- Aprender
- Informática
- Ciencias de la computación
- Sistemas operativos
- Dispositivos de entrada/salida
Dispositivos de entrada/salida, discos y RAID
IntermedioUnidad 7 de 9 del curso Curso de Sistemas operativos
Lo que aprenderás
- 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/salidaSitú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 interrupcionesExplica 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 almacenamientoMuestra 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.
- Describe la interfaz del dispositivo y el protocolo básico de entrada/salida
- 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 direccionaRelaciona 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 discoDescompó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 discoOrdena 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.
- Describe la estructura de un disco duro y cómo se direcciona
- 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 desgasteExplica 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 flashDescribe 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 durosCompara 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.
- Describe la memoria flash: celdas, páginas, bloques y desgaste
- 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 evaluarloDescribe 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 espejoCalcula 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-6Calcula 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 reconstruccionesRelaciona 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.
- Explica qué ofrece un conjunto RAID y cómo evaluarlo
- 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 discoDescribe 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ónCalcula 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 almacenamientoDecide 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.
- Reconoce fallos de almacenamiento distintos del fallo completo de un disco
Guía de estudio de Dispositivos de entrada/salida
1Sigue 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:
| Registro | Qué averigua o proporciona el núcleo |
|---|---|
| Estado | Si el dispositivo está listo, ocupado, ha terminado o informa de un error |
| Comando | Qué operación debe iniciar |
| Datos | Los 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:
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:
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
- El controlador prepara un búfer de destino y lo pone a disposición del dispositivo.
- Proporciona la dirección o direcciones DMA, el número de bytes, la dirección de la transferencia y el comando de lectura.
- El dispositivo lee los bloques de almacenamiento solicitados y escribe los bytes en memoria.
- La CPU ejecuta otro trabajo mientras el dispositivo transfiere los datos.
- 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
| Clase | Interfaz habitual y ejemplos |
|---|---|
| Dispositivo de bloques | Bloques direccionados; discos duros y unidades SSD |
| Dispositivo de caracteres | Un flujo de bytes; terminales y puertos serie |
| Interfaz de red | Comunicació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.
2Calcula 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:
Por tanto, una unidad de 4 TB contiene:
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:
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:
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:
Después suma el posicionamiento y la transferencia:
Una sola solicitud pendiente cada vez da aproximadamente:
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:
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ítica | Siguiente solicitud o recorrido | Compensación principal |
|---|---|---|
| FCFS | Orden de llegada | Orden equitativo, recorrido potencialmente largo |
| SSTF | Pista más cercana | Bajo coste de búsqueda, posible inanición |
| SCAN | Atiende durante un barrido hasta el extremo y después invierte la dirección | Espera acotada basada en barridos |
| C-SCAN | Atiende en una dirección y vuelve sin atender | Esperas más uniformes entre posiciones |
| LOOK | Invierte la dirección en la última solicitud pendiente | Evita el recorrido innecesario hasta el extremo |
| C-LOOK | Atiende en una dirección y vuelve entre las solicitudes pendientes extremas | Servicio 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.
3Explica 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 celda | Bits por celda | Niveles de carga |
|---|---|---|
| SLC | 1 | 2 |
| MLC | 2 | 4 |
| TLC | 3 | 8 |
| QLC | 4 | 16 |
Para una celda con b bits, el número de niveles es . 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:
- Lee B, C y D en un almacenamiento temporal.
- Borra todo el bloque, incluida la A antigua.
- 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:
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:
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 propiedad | Disco duro | SSD de memoria flash |
|---|---|---|
| Latencia de lectura aleatoria pequeña | Milisegundos | Desde decenas hasta unos cien microsegundos |
| Tasa de lecturas aleatorias pequeñas | Aproximadamente 75–200 IOPS | NVMe puede alcanzar cientos de miles con suficiente trabajo en cola |
| Transferencia secuencial | Hasta unos pocos cientos de MB/s | Unos 550 MB/s para SATA; varios GB/s para NVMe |
| Principales costes internos | Búsqueda, rotación, transferencia | Acceso 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:
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.
4Distribuye 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ímbolo | Significado |
|---|---|
| N | Número de discos |
| B | Bloques por disco |
| S | Tasa de procesamiento secuencial de un disco |
| R | Tasa de procesamiento aleatoria de un disco para el tamaño de solicitud |
| T | Latencia 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:
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:
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/s | RAID-0 | RAID-10 |
|---|---|---|
| Capacidad utilizable | 16 TB | 8 TB |
| Tasa de lectura/escritura secuencial en el modelo sencillo | 800 MB/s | 400 MB/s |
| Tasa de lectura aleatoria | 4 MB/s | 4 MB/s |
| Tasa de escritura aleatoria | 4 MB/s | 2 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:
Si falta el segundo bloque:
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:
Cambia 0101 por 1100 en la banda anterior:
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
| Nivel | Ubicación de la redundancia | Bloques utilizables | Fallos de disco tolerados | Tasa ideal de escrituras aleatorias pequeñas |
|---|---|---|---|---|
| RAID-4 | Un disco dedicado a la paridad | (N − 1)B | Cualquiera de uno | R/2 |
| RAID-5 | Un bloque de paridad que rota entre discos | (N − 1)B | Cualquiera de uno | NR/4 |
| RAID-6 | Dos bloques de redundancia independientes por banda | (N − 2)B | Cualesquiera dos | NR/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:
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:
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.
5Comprueba 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
| Fallo | Qué está mal | Por qué puede no detectarlo una suma de comprobación local de los datos |
|---|---|---|
| Escritura en una ubicación incorrecta | Los bytes nuevos correctos llegan al disco o bloque equivocado | Los datos y su suma de comprobación coincidente pueden viajar juntos |
| Escritura perdida | Una actualización notificada como completa nunca llega al almacenamiento | Los 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:
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:
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:
| Byte | Nuevo s₁ | Nuevo s₂ |
|---|---|---|
| 54 | 54 | 54 |
| 90 | 144 | 198 |
| 193 | 82 | 25 |
| 15 | 97 | 122 |
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:
- Empieza con 1101000 y aplica XOR con 1011000, lo que deja 0110000.
- Alinea el generador con el primer uno y aplica XOR con 0101100, lo que deja 0011100.
- Aplica XOR con 0010110, lo que deja 0001010.
- 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ón | Cómo funciona | Consecuencia principal |
|---|---|---|
| Por sector | Por ejemplo, 512 bytes de datos más 8 bytes de protección en un sector de 520 bytes | La protección viaja con el sector |
| Bloque de sumas de comprobación agrupadas | Un bloque de 4 KiB contiene 512 sumas de comprobación de ocho bytes | Actualizar datos también puede requerir actualizar otro bloque |
| Puntero del bloque padre | Un bloque padre almacena la suma de comprobación del bloque hijo al que hace referencia | El 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
1Sigue una solicitud sin mantener ocupada la CPU
16 pasos
- 1Introducció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.
- 2Explicació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.
- 3Idea 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
volatileno proporciona toda la ordenación entre un descriptor en RAM y la notificación MMIO que hace que el dispositivo lo obtenga. - 4Desafí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.
- 5EjemploDeja 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.
- 6Explicació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.
- 7Desafí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:
El ahorro es de 240 ms por segundo. El tiempo de servicio del dispositivo no cambia, mientras que la notificación puede retrasarse.
- 8EjemploCuenta 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:
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.
- 9Explicació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.
- 10ConsejoCoordina 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.
- 11Desafí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.
- 12Conexió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(). - 13Explicació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.
- 14Desafí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.
- 15Desafí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.
- 16RepasoSigue 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.
2Convierte el movimiento del disco en una estimación de rendimiento
13 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónEmpieza por el trabajo que hay detrás de una dirección
- 2ExplicaciónDistingue tres garantías de almacenamiento
- 3DesafíoInterpreta una notificación de escritura en caché
- 4EjemploConvierte la velocidad del eje en espera media
- 5EjemploAñade la transferencia de una lectura pequeña
- 6Idea claveReparte el posicionamiento entre más datos
- 7DesafíoEstima otra carga de trabajo aleatoria
- 8EjemploDibuja un recorrido LOOK
- 9EjemploCuenta el retorno circular
- 10DesafíoAplica una política a nuevas solicitudes
- 11ConexiónMira más allá de la distancia de búsqueda
- 12DesafíoElige qué mejorar
- 13RepasoUsa la magnitud adecuada para decidir
3Sigue una sobrescritura en una SSD hasta la recuperación de espacio
14 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónObserva qué hace realmente una sobrescritura
- 2ExplicaciónElige la unidad física de la operación
- 3Idea claveRelaciona la densidad con los límites de las celdas
- 4DesafíoConserva las páginas vecinas
- 5EjemploRedirige una sobrescritura lógica
- 6ExplicaciónCopia solo lo que sigue vigente
- 7EjemploCalcula el coste oculto de programación
- 8ConsejoProporciona mejor información a la recolección
- 9DesafíoRecupera un bloque con más páginas vigentes
- 10ExplicaciónProporciona suficientes solicitudes independientes
- 11EjemploInterpreta una clasificación de resistencia
- 12DesafíoInterpreta una ralentización en régimen estacionario
- 13DesafíoUsa la información de eliminación para cambiar el trabajo interno
- 14RepasoRelaciona la vista física con la del anfitrión
4Elige un RAID a partir del trabajo físico
18 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónCompara un conjunto según varios criterios
- 2ExplicaciónMantén separadas la interfaz y la organización
- 3ConexiónPlanifica el estado posterior a un fallo
- 4DesafíoDistingue la disponibilidad de la recuperación de versiones anteriores
- 5EjemploDistribuye una banda con fragmentos de un bloque
- 6ExplicaciónAñade pares en espejo
- 7DesafíoSigue un fragmento mayor
- 8Idea claveDistingue una escritura de muchas escrituras
- 9EjemploCalcula la paridad XOR de una banda
- 10EjemploRecupera el valor ausente
- 11EjemploActualiza la paridad con el bloque modificado
- 12ExplicaciónDesplaza el cuello de botella o añade una ecuación
- 13DesafíoElige la actualización de paridad adecuada
- 14EjemploCalcula el tiempo antes de prometer una reconstrucción
- 15ExplicaciónExamina los errores durante ese periodo
- 16DesafíoElige entre organizaciones de igual capacidad
- 17DesafíoCombina la carga de trabajo y las fases de actualización
- 18RepasoSigue la organización hasta la recuperación
5Verifica un bloque antes de confiar en sus bytes
15 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónPregúntate qué establece una lectura correcta
- 2ExplicaciónDistingue lo ilegible de lo silenciosamente incorrecto
- 3EjemploSigue el destino y la versión
- 4DesafíoDiagnostica una lectura correcta de datos desactualizados
- 5EjemploCalcula una suma de comprobación por adición
- 6Idea claveObserva una colisión sin recurrir a conjeturas aleatorias
- 7EjemploAcumula la posición con Fletcher
- 8DesafíoElige la aritmética correcta de la suma de comprobación
- 9ConexiónConoce qué aportan las comprobaciones más robustas
- 10ExplicaciónSitúa el valor esperado fuera del valor sospechoso
- 11EjemploVerifica la fuente de reparación
- 12ConsejoEncuentra fallos ocultos mientras quedan copias
- 13DesafíoElige una comprobación para un bloque mal ubicado
- 14DesafíoRepara antes de que se agote la redundancia
- 15RepasoSigue las pruebas de validez de un bloque devuelto
Ejercicios de Dispositivos de entrada/salida
Set 1: Dispositivos, tiempos y protección de datos10 Preguntas de Práctica
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Pregunta 5 de 10
Mostrar respuestaOcultar respuesta
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
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
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
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
volatile a ese registro?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
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
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
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
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
¿Te atascas con una pregunta tuya? Ayuda con Tareas
Términos Clave
A
Acceso directo a memoria (DMA)
Acceso forzado a la unidad (FUA)
Acceso secuencial
Agrupación de interrupciones
Algoritmo del ascensor (SCAN)
Almacenamiento por niveles
Amplificación de escritura
Autorreparación
B
Barrido circular (C-SCAN)
Barrido circular entre solicitudes extremas (C-LOOK)
Barrido hasta la última solicitud pendiente (LOOK)
Bloque de borrado
Bloqueo activo
C
Caché de escritura diferida
Capa de bloques
Capa de traducción de memoria flash (FTL)
Ciclo de programación y borrado (P/E)
Cilindro
Código de corrección de errores (ECC)
Colisión de sumas de comprobación
Comprobación de redundancia cíclica (CRC)
Conjunto redundante de discos independientes (RAID)
Controlador de dispositivo
Corrupción silenciosa
D
Desfase entre pistas
Dirección de bloque lógico (LBA)
Disco de reserva en caliente
Dispositivo de bloques
Dispositivo de caracteres
Distribución de datos en bandas
Duplicación en espejo
E
Eficiencia de capacidad
Entrada/salida mapeada en memoria (MMIO)
Entrada/salida por puertos
in y out en x86.Entrada/salida programada (PIO)
Error de lectura irrecuperable (URE)
Error latente de sector (LSE)
Escritura de banda completa
Escritura en una ubicación incorrecta
Escritura incompleta
Escritura perdida
Escrituras completas de la unidad por día (DWPD)
Espera híbrida
Etiqueta de dirección
Exposición a fallos durante la reconstrucción
F
Firmware
Función hash criptográfica
G
Grabación por zonas
I
Inconsistencia de paridad por escritura interrumpida
Integridad de extremo a extremo
Interfaz de dispositivo
Interrupciones señalizadas por mensajes extendidas (MSI-X)
L
Latencia rotacional
Lectura-modificación-escritura
Lista de dispersión y reunión
M
Maestro del bus
Manejador de interrupciones
Memoria flash NAND
Modelo de fallo parcial
Modelo de fallo por parada
Modo degradado
N
Nivelación del desgaste
Número esperado de errores
NVMe
O
Operaciones de entrada/salida por segundo (IOPS)
P
Página de memoria flash
Página fijada en memoria
Paridad XOR
Perturbación por lectura
Pista
Planificación anticipatoria
Primero el menor tiempo de búsqueda (SSTF)
Primero el menor tiempo de posicionamiento (SPTF)
Primero en llegar, primero en ser atendido (FCFS)
Profundidad de cola
R
RAID-0
RAID-4
RAID-5
RAID-6
RAID-10
Recolección de basura (GC)
Reconstrucción de datos en modo degradado
Reconstrucción del conjunto RAID
Registro de comandos
Registro de estado
Registro de notificación
Rendimiento en régimen estacionario
S
Sobreaprovisionamiento
Sondeo
Suma de comprobación
Suma de comprobación almacenada en el puntero del bloque padre
Suma de comprobación de Fletcher
Suma de comprobación por adición
T
Tabla de correspondencias
Tamaño del fragmento por disco
Tasa de procesamiento
Terabytes escritos (TBW)
Tiempo de búsqueda
Tiempo de transferencia
TRIM
U
Unidad de gestión de memoria de entrada/salida (IOMMU)
V
Verificación mediante lectura tras la escritura
Verificación preventiva de datos
Sobre esta unidad
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.