Logo Studenta

Silberschatz 10a castellano cap11

¡Este material tiene más páginas!

Vista previa del material en texto

Administración de Almacenamiento
Los sistemas de Computación deben proporcionar almacenamiento masivo para alojar permanentemente archivos y datos. Las computadoras modernas implementan el almacenamiento masivo como almacenamiento secundario, utilizando tanto en discos duros como en dispositivos de memoria no volátiles.
Los dispositivos de almacenamiento secundarios varían en muchos aspectos. Algunos transfieren un carácter a la vez, y algunos un bloque de caracteres. Algunos pueden ser accedidos solo de forma secuencial, y otros de forma aleatoria. Algunos transfieren datos de forma sincrónica, y otros de forma asincrónica. Algunos son dedicados y algunos compartidos. Pueden ser de solo lectura o de lectura y escritura. Y aunque varíen enormemente en velocidad, son en muchos sentidos el componente principal más lento de la computadora.
Debido a toda esta variación de dispositivos, el sistema operativo necesita proporcionar una amplia gama de funciones para que las aplicaciones puedan controlar todos los aspectos de los dispositivos. Un objetivo clave del subsistema de E/S en un sistema operativo es proporcionar la interfaz más simple posible para el resto del sistema. Dado que los dispositivos son un cuello de botella en el rendimiento, otra clave es optimizar la E/S para una máxima concurrencia.
CAPÍTULO 11
Estructura de Almacenamiento masivo
En este capítulo, analizamos cómo el almacenamiento masivo, el sistema de almacenamiento no volátil de una computadora — está estructurado. El principal sistema de almacenamiento masivo en la computadora es el almacenamiento secundario, que generalmente es proporcionado por unidades de disco duro (HDD) y dispositivos de memoria no volátil (NVM). Algunos sistemas también tienen almacenamiento terciario más grande, que generalmente consta de cinta magnética, discos ópticos o incluso almacenamiento en la nube.
Porque los dispositivos de almacenamiento más comunes e importantes en la computadora moderna son sistemas HDD y dispositivos NVM, la mayor parte de este capítulo está dedicada a ellos para discutir estos dos tipos de almacenamiento. Primero describimos su estructura física. Luego consideramos los algoritmos de planificación, que planifican el orden de las E/S para maximizar el rendimiento. A continuación, discutimos el formateo y la administración de dispositivos de bloques de arranque, bloques dañados y espacio de intercambio. Finalmente, examinamos la estructura de los sistemas RAID.
Hay muchos tipos de almacenamientos masivos y usamos el término general no volátil almacenamiento (NVS) o hablar sobre "unidades" de almacenamiento cuando la discusión incluye a todos los tipos. Dispositivos particulares, como HDD y dispositivos NVM, son especificados como apropiados.
OBJETIVOS DEL CAPÍTULO
• Describir las estructuras físicas de varios dispositivos de almacenamiento secundario y el efecto de la estructura de un dispositivo en su uso.
• Explicar las características de rendimiento de los dispositivos de almacenamiento masivo.
• Evaluar algoritmos de planificación de E/S.
• Analizar los servicios del sistema operativo proporcionados para el almacenamiento masivo, incluidos RAID.
11.1 Descripción general de la estructura de almacenamiento masivo
La mayor parte del almacenamiento secundario para las computadoras modernas es proporcionada por unidades de disco (HDD) y dispositivos de memoria no volátil (NVM). En esta sección, describimos los mecanismos básicos de estos dispositivos y explicamos cómo funcionan los sistemas que traducen sus propiedades físicas al almacenamiento lógico a través del mapeo de direcciones.
Figura 11.1 Mecanismo de disco de cabezal móvil HDD.
11.1.1 Unidades de disco duro
Conceptualmente, los discos duros son relativamente simples (Figura 11.1). Cada plato de disco tiene una forma circular plana, como un CD. Los diámetros habituales de los platos van de 1,8 a 3,5 pulgadas. Las dos superficies de un plato están cubiertas con un material magnético. Almacenamos información registrándola magnéticamente en los platos, y leemos la información detectando el patrón magnético en los platos.
Un cabezal de lectura y escritura “vuela” justo encima de cada superficie de cada plato. Las cabezas están unidas a un brazo de disco que mueve todas las cabezas como una unidad. La superficie de un plato se divide lógicamente en pistas circulares, que se subdividen en sectores. El conjunto de pistas en una posición determinada del brazo forma un cilindro. Ahí puede haber miles de cilindros concéntricos en una unidad de disco, y cada pista puede contener cientos de sectores. Cada sector tiene un tamaño fijo y es la unidad de transferencia más pequeña. El tamaño del sector era comúnmente de 512 bytes hasta aproximadamente 2010. En ese momento, muchos fabricantes comienzan a migrar a sectores de 4 KB. La capacidad de almacenamiento de las unidades de disco comunes se mide en gigabytes y terabytes. Una unidad de disco con la cubierta quitada se muestra en la Figura 11.2.
Figura 11.2 Un disco duro de 3,5 pulgadas con la cubierta retirada
Un motor de accionamiento de disco lo hace girar a alta velocidad. La mayoría de las unidades giran de 60 a 250 veces por segundo. Especificando en términos de rotaciones por minuto (RPM), los accionamientos comunes giran a 5.400, 7.200, 10.000 y 15.000 RPM. Algunas unidades se apagan cuando no está en uso y giran al recibir una solicitud de E/S. La velocidad de rotación está relacionada con la tasa de transferencia de datos. La tasa de transferencia es la velocidad a la que fluyen los datos entre unidad y la computadora. Otro aspecto del rendimiento es el tiempo de posicionamiento o tiempo de acceso aleatorio, consta de dos partes: el tiempo necesario para mover el brazo del disco al cilindro deseado, llamado tiempo de búsqueda, y el tiempo necesario para leer el sector deseado para rotar al cabezal del disco, llamado latencia rotacional. Los discos Típicos pueden transferir decenas a cientos de megabytes de datos por segundo, y tienen tiempos de búsqueda y latencias de rotación de varios milisegundos. Ellos aumentan rendimiento al tener búferes DRAM en el controlador de la unidad.
La cabeza del disco vuela sobre un cojín extremadamente delgado (medido en micrones) de aire u otro gas, como helio, y existe el peligro de que la cabeza haga contacto con la superficie del disco. Aunque los platos del disco están recubiertos con una fina capa protectora, la cabeza a veces dañará la superficie magnética. Este accidente se llama choque de cabeza. Normalmente, un choque de cabeza no se puede reparar; y todo el disco debe ser reemplazado, y los datos en el disco se pierden a menos que se haya respaldado en otro almacenamiento o protegido por RAID. (RAID se analiza en la Sección 11.8.)
Los HDD son unidades selladas, y algunos chasis que contienen HDD permiten su extracción sin apagar el sistema o el chasis de almacenamiento. Esto es útil cuando un sistema necesita más almacenamiento del que se puede conectar en un momento dado o cuando es necesario reemplazar una unidad defectuosa por una que funcione. Otros tipos de medios de almacenamiento también son extraíbles, incluidos CD, DVD y discos Blu-ray.TARIFAS DE TRANSFERENCIA DE DISCO
Como ocurre con muchos aspectos de la informática, las cifras de rendimiento publicadas para los discos no son los mismos que los números de rendimiento del mundo real. Las tasas de Transferencia declaradas son siempre más altas que las tasas de transferencia efectivas, por ejemplo. La velocidad de transferencia puede ser la velocidad a la que los bits pueden ser leídos del medio magnético por la cabeza del disco, pero eso es diferente de la velocidad a la que se entregan los bloques al sistema operativo.
11.1.2 Dispositivos de memoria no volátil
Los dispositivos de memoria no volátil (NVM) son cada vez más importantes. Una descripción simple sería, los dispositivos NVM son eléctricos en lugar de mecánicos. Más comúnmente, dicho dispositivo está compuesto por un controlador y un chip semiconductorflash NAND, que se utilizan para alojar datos. Existen otras tecnologías NVM, como DRAM con respaldo de batería para que no pierda su contenido, así como otros de tecnología de semiconductores como 3D XPoint, pero son mucho menos comunes y por eso no se tratan en este libro.
11.1.2.1 Descripción general de los dispositivos de memoria no volátil
La NVM basada en memoria flash se utiliza con frecuencia en un contenedor similar a una unidad de disco, en cuyo caso se le llama disco de estado sólido (SSD) (Figura 11.3). En otros casos, toma la forma de una unidad USB (también conocida como memoria USB o unidad flash) o cinta DRAM. También se monta en la superficie de la placa base como almacenamiento principal en dispositivos como teléfonos inteligentes. En todas sus formas, actúa y puede tratarse de la misma manera. Nuestro análisis de los dispositivos NVM se centra en esta tecnología.
Los dispositivos NVM pueden ser más confiables que los HDD porque no tienen partes en movimiento y pueden ser más rápidos porque no tienen tiempo de búsqueda ni latencia de rotación. Además, consumen menos energía. En el lado negativo, son más caros por megabyte que los discos duros tradicionales y tienen menos capacidad que los discos duros más grandes. Sin embargo, con el tiempo, la capacidad de los dispositivos NVM ha aumentado más rápido que la capacidad del disco duro, y su precio ha bajado más rápidamente, por lo que su uso está aumentando drásticamente. De hecho, los SSD y dispositivos similares se usan ahora en algunas computadoras portátiles para hacerlas más pequeñas, más rápidas y de energía más eficiente.
Debido a que los dispositivos NVM pueden ser mucho más rápidos que las unidades de disco duro, las interfaces de bus pueden causar un límite importante en el rendimiento. Algunos dispositivos NVM están diseñados para conectarse directamente al bus del sistema (PCIe, por ejemplo). Esta tecnología también está cambiando otros aspectos tradicionales del diseño de computadoras.
Figura 11.3 Una placa de circuito SSD de 3,5 pulgadas.
Algunos sistemas lo usan como reemplazo directo de las unidades de disco, mientras que otros lo usan como un nuevo nivel de caché, moviendo datos entre discos magnéticos, NVM y memoria principal para optimizar el rendimiento.
Los semiconductores NAND tienen algunas características que presentan sus propios desafíos de almacenamiento y confiabilidad. Por ejemplo, se pueden leer y escribir en un incremento de "página" (similar a un sector), pero los datos no se pueden sobrescribir: más bien, las celdas NAND deben borrarse primero. El borrado, que ocurre en un incremento de "bloque" que tiene varias páginas de tamaño, lleva mucho más tiempo que una lectura (la operación más rápida) o una escritura (más lenta que la lectura, pero mucho más rápida que borrar). Para Ayudar a la situación, es que los dispositivos flash NVM están compuestos de muchos dados, con muchas rutas de datos para cada dado, por lo que las operaciones pueden ocurrir en paralelo (cada uno usando una ruta de datos). Los semiconductores NAND también se deterioran con cada ciclo de borrado, y después de aproximadamente 100.000 ciclos de borrado de programa (el número específico varía según el medio), las celdas ya no retienen datos. Debido al desgaste de la escritura y a que no hay partes móviles, en NAND la vida útil de NVM no se mide en años, sino en Drive Writes Per Day (DWPD). Esa medida es cuántas veces se puede escribir la capacidad de la unidad por día antes de que falle la unidad. Por ejemplo, una unidad NAND de 1 TB con una clasificación de 5 DWPD Se espera que tenga 5 TB por día escritos durante el período de garantía sin fallas.
Estas limitaciones han dado lugar a varios algoritmos de mejora. Por suerte, generalmente se implementan en el controlador de dispositivo NVM y no son motivo de preocupación al sistema operativo. El sistema operativo simplemente lee y escribe bloques lógicos, y el dispositivo gestiona cómo se hace. (Los bloques lógicos son discutido con más detalle en la Sección 11.1.5.) Sin embargo, los dispositivos NVM tienen variaciones basadas en sus algoritmos operativos, por lo que una breve discusión de lo que hace el controlador está garantizado.
11.1.2.2 Algoritmos del controlador flash NAND
Debido a que los semiconductores NAND no se pueden sobrescribir una vez escritos, hay generalmente páginas que contienen datos no válidos. Considere un bloque de sistema de archivos, escrito una vez y luego se escribe de nuevo. Si no se ha borrado mientras tanto, la primera página que se escribió tiene los datos antiguos, que ahora no son válidos, y la segunda La página tiene la versión actual y buena del bloque. Un bloque NAND que contiene Las páginas válidas y no válidas se muestran en la Figura 11.4. Para rastrear qué bloques lógicos contienen datos válidos, el controlador mantiene una capa de traducción flash (FTL). Esta tabla “mapea” las páginas físicas que contienen bloques lógicos actualmente válidos. También rastrea el estado del bloque físico, es decir, qué bloques contienen solo páginas no válidas y por lo tanto se puede borrar.
Figura 11.4 Un bloque NAND con páginas válidas y no válidas.
Ahora considere un SSD lleno con una solicitud de escritura pendiente. Como el SSD está lleno, y se han escrito todas las páginas, puede haber un bloque que contenga datos no válidos. En ese caso, la escritura puede esperar a que se produzca el borrado y entonces la escritura se puede hacer. Pero ¿y si no hay bloques libres? Todavía podría haber algo de espacio disponible si las páginas individuales contienen datos no válidos. En ese caso, podría producirse la recolección de basura; los datos buenos se podrían copiar a otras ubicaciones, liberando bloques que podrían borrarse y luego podrían recibir la escritura. Sin embargo, ¿dónde almacenaría la recolección de basura de los datos correctos? Para resolver este problema y mejorar el rendimiento de escritura, el dispositivo NVM utiliza sobreaprovisionamiento. El dispositivo reserva varias páginas (con frecuencia, el 20 por ciento del total) como un área siempre disponible para escribir. Si el dispositivo está lleno y algunos Bloques están totalmente inválidos, por la recolección de basura, o por operaciones de escritura que invalidan versiones antiguas de datos, se deben borran y colocar en el espacio de sobreaprovisionamiento, devolviéndose al conjunto libre.
El espacio de sobreaprovisionamiento también puede ayudar a nivelar el desgaste. Si algunos de los bloques se borran repetidamente, mientras que otros no, los bloques que se borran con frecuencia se desgastarán más rápido que los demás, y todo el dispositivo tendrá una menor vida útil de la que tendría si todos los bloques se desgastaran al mismo tiempo. El controlador intenta evitar eso mediante el uso de varios algoritmos para colocar datos en los bloques menos borrados para que los posteriores borrados ocurran en esos bloques en lugar de los bloques más borrados, nivelando el desgaste en todo el dispositivo. 
En términos de protección de datos, tanto los discos duros como los dispositivos NVM brindan códigos de corrección de errores, que se calculan y almacenan junto con los datos durante escritura y se leen con los datos para detectar errores y corregirlos si es posible. (Los códigos de corrección de errores se tratan en la Sección 11.5.1.) Si una página tiene errores corregibles, es posible que la página esté marcada como incorrecta y no se utilice en escrituras posteriores. Generalmente, un solo dispositivo NVM, como un HDD, puede tener una falla catastrófica en la que se corrompe o no responde para leer o escribir peticiones. Para permitir la recuperación de datos en esos casos, se usa la protección RAID.
11.1.3 Memoria volátil
Puede parecer extraño discutir la memoria volátil en un capítulo sobre estructura de almacenamiento masivo, pero es justificable porque DRAM se utiliza con frecuencia como un dispositivo de almacenamiento masivo. Específicamente, las unidades de RAM (que se conocen por muchosnombres, incluidos Discos RAM) actúan como almacenamiento secundario, pero son creados por controladores de dispositivo que forman una sección en la DRAM del sistema y presentarla al resto de los sistemas como si fuera un dispositivo de almacenamiento. Estas "unidades" se pueden utilizar como bloque de dispositivos sin procesar, pero más comúnmente, los sistemas de archivos crean en ellos operaciones para archivos estándar.
Las computadoras ya tienen almacenamiento en búfer y caché, entonces, ¿cuál es el propósito de ¿Otro uso más de DRAM para el almacenamiento temporal de datos? Después de todo, la DRAM es volátil, y los datos en una unidad RAM no sobreviven a un bloqueo, apagado o alimentación baja del sistema. Los cachés y búferes los asigna el programador o el sistema operativo, mientras que las unidades RAM permiten al usuario (así como al programador) colocar datos en la memoria para su custodia temporal mediante operaciones de archivo estándar. De hecho, la funcionalidad de la unidad RAM es lo suficientemente útil como para que tales unidades se encuentren en todos principales sistemas operativos. En Linux hay /dev/ram, onmacOS el comando diskutil los crea, Windows los tiene a través de herramientas de terceros y Solaris como Linux crea /tmp en el momento del arranque de tipo “tmpfs”, que es una unidad RAM. Las unidades de RAM son útiles como espacio de almacenamiento temporal de alta velocidad. A pesar de que los dispositivos NVM son rápidos, la DRAM es mucho más rápida y las operaciones de E/S en unidades RAM son la forma más rápida de crear, leer, escribir y eliminar archivos y su contenido. Muchos programas usan (o podrían beneficiarse del uso) de unidades RAM para alojar archivos temporales. Por ejemplo, los programas pueden compartir datos fácilmente escribiendo y leyendo archivos desde una unidad RAM. Para otro ejemplo, Linux en el momento del arranque crea un sistema de archivos raíz temporal (initrd) que permite que otras partes del sistema tengan acceso a un sistema de archivos raíz y su contenido antes que las partes del sistema operativo, que entiende se cargarán desde los dispositivos de almacenamiento.CINTAS MAGNÉTICAS
La cinta magnética se utilizó como medio de almacenamiento secundario desde los comienzos. A pesar de que no es volátil y puede contener grandes cantidades de datos, su tiempo de acceso es lento en comparación con la de la memoria principal y las unidades. Además, el acceso aleatorio a la cinta magnética es aproximadamente mil veces más lento que el acceso aleatorio a los Discos duros y unas cien mil veces más lento que el acceso aleatorio a los SSD, por lo que las cintas no son muy útiles para el almacenamiento secundario. Se utilizan cintas principalmente para copias de seguridad, para el almacenamiento de información se utiliza con poca frecuencia y también se usa como medio para transferir información de un sistema a otro.
Una cinta se guarda en un carrete y se enrolla o rebobina después de una lectura-escritura. Moverse al lugar correcto en una cinta puede llevar minutos, pero una vez ubicada, las unidades de cinta pueden leer y escribir datos a velocidades comparables a las de los discos duros. Las capacidades de las cintas varían mucho, según el tipo particular de unidad de cinta, con capacidades actuales superiores a varios terabytes. Algunas cintas tienen incorporado la compresión que puede ser más del doble del almacenamiento efectivo. Las Cintas y sus controladores generalmente se clasifican por ancho, incluidos 4, 8 y 19 milímetros y 1/4 y 1/2 pulgada. Algunos se nombran según la tecnología, como LTO-6 (Figura 11.5) y SDLT. 
Figura 11.5 Unidad de cinta LTO-6 con cartucho de cinta insertado
11.1.4 Métodos de conexión de almacenamiento secundario
Un dispositivo de almacenamiento secundario está conectado a una computadora por el bus del sistema o un Bus de E/S. Hay varios tipos de buses disponibles, incluida la tecnología avanzada adjunta (ATA), serial ATA (SATA), eSATA, SCSI conectado en serie (SAS), universal bus serie (USB) y canal de fibra (FC). La conexión más común es SATA. Debido a que los dispositivos NVM son mucho más rápidos que los HDD, la industria creó una interfaz rápida y especial para dispositivos NVM llamada NVM express (NVMe). NVMe conecta directamente el dispositivo al bus PCI del sistema, aumentando el rendimiento y latencia decreciente en comparación con otros métodos de conexión.
Las transferencias de datos en un bus se realizan mediante procesadores electrónicos especiales llamados controladores (o adaptadores de bus de host (HBA)). El controlador de host es el controlador en el extremo de la computadora del bus. Un controlador de dispositivo está integrado en cada dispositivo de almacenamiento. Para realizar una operación de E/S de almacenamiento masivo, la computadora coloca un comando en el controlador de host, normalmente usando los Puertos de E/S como memoria mapeada, como se describe en la Sección 12.2.1. El controlador de host envía el comando a través de mensajes al controlador del dispositivo, y el controlador opera el hardware de la unidad para ejecutar el comando. Los controladores de dispositivos suelen tener un caché incorporado. La transferencia de datos en la unidad ocurre entre el caché y el medio de almacenamiento y la transferencia de datos al host, a velocidades electrónicas rápidas, ocurre entre la memoria caché del host DRAM a través de DMA.
11.1.5 Asignación de direcciones
Los dispositivos de almacenamiento se tratan como grandes matrices unidimensionales de bloques, donde el bloque lógico es la unidad de transferencia más pequeña. Cada bloque lógico mapea a un sector físico o página de semiconductores. La matriz unidimensional de bloques lógicos se asigna a los sectores o páginas del dispositivo. El Sector 0 podría ser el primer sector de la primera pista en el cilindro más externo en un HDD, por ejemplo. El mapeo procede en orden a través de esa pista, luego a través del resto de las pistas en ese cilindro, y luego a través del resto de los cilindros, de lo más externo a lo interno. Para NVM, el mapeo es de una tupla (lista finita ordenada) de chip, bloque y página a una matriz de bloques lógicos. Una dirección lógica de bloque (LBA) es más fácil de usar para los algoritmos que un sector, cilindro y cabeza o tupla de chip, bloque y página.
Al usar este mapeo en un HDD, podemos, al menos en teoría, convertir un número de bloque lógico en una dirección de disco de estilo antiguo que consta de un número de cilindro, un número de pista dentro de ese cilindro y un número de sector dentro de esa pista. En la práctica, es difícil realizar esta traducción por tres razones. Primero, la mayoría de las unidades tienen algunos sectores defectuosos, pero el mapeo oculta esto sustituyendo los sectores de repuesto en otros lugares de la unidad. La dirección del bloque lógico permanece secuencial, pero la ubicación del sector físico cambia. Segundo, el número de sectores por pista no es constante en algunas unidades. En tercer lugar, los fabricantes de discos administran LBA a la asignación de direcciones físicas internamente, por lo que en la actualidad unidades hay poca relación entre LBA y los sectores físicos. A pesar de estos caprichos de direcciones físicas, los algoritmos que tratan con HDD tienden a suponga que las direcciones lógicas están relativamente relacionadas con las direcciones físicas. Es decir, las direcciones lógicas ascendentes tienden a significar una dirección física ascendente.
Veamos más de cerca la segunda razón. En medios que usan velocidad lineal constante (CLV), la densidad de bits por pista es uniforme. Cuanto más lejos esté una pista del centro del disco, mayor es su longitud, por lo que más sectores puede sostener. A medida que nos movemos de las zonas exteriores a las zonas interiores, el número de sectores por la pista disminuye. Las pistas en la zona más externa suelen contener un 40 por ciento más sectores que las pistas en la zona más interna. El variador aumenta su rotación velocidada medida que la cabeza se mueve de la pista exterior a la interior para mantener la misma velocidad de datos moviéndose debajo de la cabeza. Este método se utiliza en unidades de CD-ROM y DVD-ROM. Alternativamente, la velocidad de rotación del disco puede permanecer constante; en este caso, la densidad de bits disminuye de pistas internas a pistas externas para mantener la velocidad de datos constante (y el rendimiento es relativamente el mismo sin importar dónde están los datos en el manejar). Este método se utiliza en discos duros y se conoce como velocidad angular constante (CAV).
El número de sectores por pista ha ido aumentando a medida que la tecnología de disco mejora, y la zona exterior de un disco suele tener varios cientos de sectores por pista. Del mismo modo, el número de cilindros por disco ha ido aumentando; los discos grandes tienen decenas de miles de cilindros.
Tenga en cuenta que existen más tipos de dispositivos de almacenamiento que los razonables a cubrir en un texto de sistemas operativos. Por ejemplo, hay "discos duros de grabación magnética” con mayor densidad, pero peor rendimiento que los discos duros convencionales (consulte http://www.tomsitpro.com/articles/shingled-magnetic-recoding-smr-101-basics, 2-933.html). También hay dispositivos combinados que incluyen tecnología NVM y HDD, o administradores de volumen (consulte la Sección 11.5) que pueden unir dispositivos NVM y HDD en una unidad de almacenamiento más rápida que HDD pero de menor costo que NVM. Estos dispositivos tienen diferentes características de los dispositivos más comunes, y podría necesitar diferentes algoritmos de almacenamiento en caché y planificación para maximizar el rendimiento.
11.2 Planificación de HDD
Una de las responsabilidades del sistema operativo es utilizar el hardware eficientemente. Para los HDD, cumplir con esta responsabilidad implica minimizar el tiempo de acceso y maximizar el ancho de banda de transferencia de datos.
Para discos duros y otros dispositivos de almacenamiento mecánicos que usan platos, el tiempo de acceso tiene dos componentes principales, como se menciona en la Sección 11.1. El tiempo de búsqueda es el tiempo que demora el brazo del dispositivo que mueve las cabezas al cilindro que contiene el sector deseado, y la latencia de rotación es el tiempo adicional para que el plato gire el sector deseado a la cabeza. El ancho de banda del dispositivo es el número total de bytes transferidos, dividido por el tiempo total entre la primera solicitud de servicio y la finalización del último traslado. Podemos mejorar tanto el acceso el tiempo y el ancho de banda administrando el orden en el que las solicitudes de E/S de almacenamiento se mantienen.
Siempre que un proceso necesita E/S hacia o desde la unidad, emite una llamada al sistema al sistema operativo. La solicitud especifica varios datos:
• Si esta operación es de entrada o salida
• El identificador de archivo abierto que indica el archivo para operar
• Cuál es la dirección de memoria para la transferencia
• La cantidad de datos a transferir
Si el variador y el controlador deseados están disponibles, la solicitud puede ser atendida inmediatamente. Si la unidad o el controlador están ocupados, cualquier nueva solicitud de servicio debe colocarse en la cola de solicitudes pendientes para esa unidad. Para un sistema con multiprogramación y con muchos procesos, la cola de dispositivos a menudo puede tener varias solicitudes pendientes.
La existencia de una cola de solicitudes a un dispositivo puede tener su rendimiento optimizado al evitar que la cabeza se mueva sin orden y permitir a los controladores de dispositivos mejorar el rendimiento mediante la ordenación en cola.
En el pasado, las interfaces HDD requerían que el host especificara qué pista y qué cabezal usar, y se dedicó mucho esfuerzo a los algoritmos de planificación del disco. Las unidades más nuevas que el cambio de siglo no solo no exponen estos controles al host, sino que también asigna LBA a direcciones físicas bajo el control del driver (manejador). Los objetivos actuales de la planificación de discos incluyen equidad, plazos y optimizaciones, como agrupar lecturas o escrituras que aparecen en secuencia, los drivers funcionan mejor con E/S secuenciales. Por lo tanto, todavía se requiere un esfuerzo de planificación útil. Se puede utilizar cualquiera de los varios algoritmos de planificación de disco, y discutirlos a continuación. Tenga en cuenta que el conocimiento absoluto de la ubicación de la cabeza y Las ubicaciones de bloque / cilindro generalmente no es posible en los accionamientos modernos. Pero como una aproximación aproximada, los algoritmos pueden asumir que el aumento de LBA significa aumentar las direcciones físicas y los LBA juntos equivalen a un bloque físico proximidad.
11.2.1 Planificación FCFS
La forma más simple de planificación de disco es, por supuesto, el orden de llegada (FCFS) algoritmo (o FIFO). Este algoritmo es intrínsecamente justo, pero generalmente no proporciona el servicio más rápido. Considere, por ejemplo, una cola de disco con solicitudes de E/S a bloques en cilindros
98, 183, 37, 122, 14, 124, 65, 67,
en ese orden. Si la cabeza del disco está inicialmente en el cilindro 53, primero se moverá de 53 a 98, luego a 183, 37, 122, 14, 124, 65, y finalmente a 67, para un Movimiento total de cabeza de 640 cilindros. Este programa se muestra en un diagrama en la Figura 11.6.
Figura 11.6 Planificación del disco FCFS.
El salto de 122 a 14 y luego de regreso a 124 ilustra el problema con esta planificación. Si las solicitudes de los cilindros 37 y 14 pudieran ser atendidas juntas, antes o después de las solicitudes de 122 y 124, el movimiento total de la cabeza podría reducirse sustancialmente y, por lo tanto, el rendimiento podría mejorarse.
11.2.2 Planificación de SCAN
En el algoritmo SCAN, el brazo del disco comienza en un extremo del disco y se mueve hacia el otro extremo, las solicitudes de servicio a medida que llega a cada cilindro, hasta que llegue al otro extremo del disco. En el otro extremo, la dirección del movimiento de la cabeza se invierte y el servicio continúa. La cabeza explora continuamente hacia atrás y adelante a través del disco. El algoritmo SCAN a veces se denomina algoritmo ascensor, dado que el brazo del disco se comporta como un ascensor en un edificio, primero atiende todas las solicitudes subiendo y luego revierte a solicitudes de servicio en el otro sentido. Volvamos a nuestro ejemplo para ilustrar. Antes de aplicar SCAN para planificar las solicitudes en los cilindros 98, 183, 37, 122, 14, 124, 65 y 67, necesitamos saber la dirección del movimiento de la cabeza además de la posición actual de la cabeza.
Suponiendo que el brazo del disco se mueve hacia 0 y que la posición inicial de la cabeza es nuevamente 53, el cabezal dará servicio a 37 y luego a 14. En el cilindro 0, el brazo se revertirá y se moverá hacia el otro extremo del disco, dando servicio a las solicitudes en 65, 67, 98, 122, 124 y 183 (Figura 11.7). Si llega una solicitud en la cola justo en frente de la cabeza, será atendida casi de inmediato; una solicitud que llega justo detrás de la cabeza tendrá que esperar hasta que el brazo se mueva el final del disco, cuando invierta la dirección y regrese.
Figura 11.7 Planificación del disco SCAN.
Suponiendo una distribución uniforme de solicitudes de cilindros, considere la densidad de solicitudes cuando la cabeza llega a un extremo e invierte la dirección. En este punto, relativamente pocas solicitudes están inmediatamente delante de la cabeza, ya que estos cilindros han sido revisados ​​recientemente. La mayor densidad de solicitudes está en el otro extremo del disco. Estas solicitudes también han esperado más tiempo, por lo que ¿Por qué no ir allí primero? Esa es la idea del próximo algoritmo.
11.2.3 Planificación C-SCAN
La planificación circular SCAN (C-SCAN) es una variante de SCAN diseñada para proporcionar un tiempo de espera más uniforme. Como SCAN, C-SCAN mueve la cabeza desde un extremodel disco al otro, atendiendo las solicitudes recién cuando regrese desde el otro extremo, sin embargo, vuelve inmediatamente al principio del disco sin atender ninguna solicitud en el viaje de regreso.
Figura 11.8 Planificación del disco C-SCAN.
Volvamos a nuestro ejemplo para ilustrar. Antes de aplicar C-SCAN para planificar las solicitudes de los cilindros 98, 183, 37, 122, 14, 124, 65 y 67, necesitamos conocer la dirección del movimiento de la cabeza en la que se planifican las solicitudes. Suponiendo que las solicitudes están planificadas cuando el brazo del disco se mueve de 0 a 199 y que la posición inicial de la cabeza sea nuevamente 53, se atenderá la solicitud como se muestra en la Figura 11.8. El algoritmo de planificación C-SCAN esencialmente trata los cilindros como una lista circular que envuelve desde el cilindro final hasta el primero.
11.2.4 Selección de un algoritmo de planificación de disco
Hay muchos algoritmos de planificación de disco que no se incluyen en esta cobertura, porque rara vez se utilizan. Pero ¿cómo deciden los diseñadores de sistemas operativos cuál implementar, y los implementadores eligieron el mejor para usar? Para cualquier lista en particular de solicitudes, podemos definir un orden óptimo de recuperación, pero el cálculo necesario para encontrar una planificación óptima puede no justificar los ahorros sobre SCAN. Sin embargo, con cualquier algoritmo de planificación, el rendimiento depende en gran medida del número y tipo de solicitudes. Por ejemplo, suponga que la cola normalmente tiene solo una solicitud pendiente. Entonces, todos los algoritmos de planificación se comportan igual, porque solo tienen una opción de dónde mover la cabeza del disco: todos se comportan como la planificación FCFS.
SCAN y C-SCAN funcionan mejor para sistemas que colocan una carga pesada en el disco, porque es menos probable que causen un problema de inanición. Sin embargo, demoran mucho, lo que llevó a Linux a crear el planificador de plazos. Este planificador mantiene colas de lectura y escritura separadas y da prioridad a las lecturas porque es más probable que los procesos se bloqueen esperando lectura que en escritura. Las colas son ordenadas en orden LBA, esencialmente implementando C-SCAN. Se envían todas las solicitudes de E/S en un lote en este pedido de LBA. El plazo se mantiene en cuatro colas: dos de lecturas y dos de escrituras, una ordenada por LBA y el otro por FCFS. Verifica después de cada lote para ver si hay solicitudes en las colas FCFS más antiguas que una edad configurada (por defecto, 500 ms). Si es así, se selecciona la cola LBA (lectura o escritura) que contiene esa solicitud para el siguiente lote de E/S.
El planificador de E/S de plazo es el predeterminado en la distribución Linux RedHat 7, pero RHEL 7 también incluye otros dos. NOOP se prefiere para sistemas limitados por CPU utilizando almacenamiento rápido como dispositivos NVM y el planificador de cola completamente justa (CFQ) es el predeterminado para las unidades SATA. CFQ mantiene tres colas (con ordenación por inserción para mantenerlos ordenados en orden LBA): tiempo real, mejor esfuerzo (el predeterminado) e inactivo. Cada uno tiene prioridad exclusiva sobre los demás, en ese orden, con posible inanición. Utiliza datos históricos, anticipando si es probable que un proceso emita más solicitudes de E/S pronto. Si así lo determina, permanece inactivo esperando una nueva E/S, ignorando otras solicitudes en cola. Esto es para minimizar el tiempo de búsqueda, asumiendo localidad de referencia de las solicitudes de E/S de almacenamiento, por proceso. Detalles de estos planificadores se puede encontrar en https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Performance_Tuning_Guide_/index.html.
11.3 Planificación de NVM
Los algoritmos de planificación de disco que se acaban de analizar se aplican a los almacenamientos como discos duros. Se centran, principalmente en minimizar la cantidad de movimiento de la cabeza del disco. Los dispositivos NVM no contienen cabezales de disco móviles y comúnmente usan una política FCFS simple. Por ejemplo, el planificador NOOP de Linux usa una política FCFS, pero la modifica para fusionar solicitudes adyacentes. El comportamiento observado de los dispositivos NVM indica que el tiempo requerido para dar servicio a las lecturas es uniforme pero que, debido a las propiedades de la memoria flash, cuando escribe, el tiempo de servicio no es uniforme. Algunos planificadores SSD han aprovechado esta propiedad y han fusionado solo solicitudes de escritura adyacentes, atendiendo todas las solicitudes de lectura en orden FCFS.
Como hemos visto, la E/S puede ocurrir de forma secuencial o aleatoria. El Acceso secuencial es óptimo para dispositivos mecánicos como HDD y cinta porque la lectura o escritura de datos está cerca del cabezal de lectura/escritura. La E/S de acceso aleatorio, que es medido en operaciones de entrada/salida por segundo (IOPS), hace que se mueva la cabeza del disco HDD. Naturalmente, la E/S de acceso aleatorio es mucho más rápida en NVM. Un disco duro puede producir cientos de IOPS, mientras que un SSD puede producir cientos de miles de IOPS.
Los dispositivos NVM ofrecen una ventaja mucho menor para el rendimiento secuencial, donde se minimizan las búsquedas de cabezal de HDD y la lectura y escritura de datos. En esos casos, para lecturas, el rendimiento para los dos tipos de dispositivos pueden variar, desde un orden de magnitud ventaja para los dispositivos NVM. Escribir en NVM es más lento que leer, disminuyendo la ventaja. Además, mientras que el rendimiento de escritura de los discos duros es consistente durante la vida útil del dispositivo, el rendimiento de escritura de los dispositivos NVM varía dependiendo de cuán lleno esté el dispositivo (recuerde la necesidad de recolección de basura y sobreaprovisionamiento) y qué tan "gastado" está. Un dispositivo NVM cerca de su fin de vida debido a muchos ciclos de borrado, generalmente tiene un rendimiento mucho peor que un dispositivo nuevo. 
Una forma de mejorar la vida útil y el rendimiento de los dispositivos NVM es que el sistema de archivos informe al dispositivo cuando se eliminan archivos, de modo que el dispositivo puede borrar los bloques en los que se almacenaron esos archivos. Este enfoque es discutido con más detalle en la Sección 14.5.6.
Analicemos más de cerca el impacto de la recolección de basura en el rendimiento. Considere un dispositivo NVM con carga de lectura y escritura aleatoria. Asuma que todos los bloques se han escrito, pero hay espacio libre disponible. La Recolección de basura debe hacerse para recuperar el espacio ocupado por datos no válidos. Eso significa que una escritura puede causar una lectura de una o más páginas, y una escritura de datos buenos se hará en esas páginas de sobreaprovisionamiento de espacio, un borrado del bloque de todos los datos inválidos y la colocación de ese bloque en el espacio de aprovisionamiento excesivo. En resumen, para escribir la solicitud (datos), llevan a una o más lecturas de página (por recolección de basura), y una o más páginas escritas (con datos buenos de bloques recolectados de basura). Las solicitudes de E/S no son realizadas por las aplicaciones sino que el dispositivo NVM realiza la recolección de basura y la administración del espacio llamado amplificación de escritura y puede afectar en gran medida el rendimiento de escritura del dispositivo. En el peor de los casos, se activan varias E/S adicionales con cada escritura solicitud.
11.4 Detección y corrección de errores
La detección y corrección de errores son fundamentales para muchas áreas de la informática, incluyendo la memoria, redes y almacenamiento. La detección de errores determina si Ha ocurrido un problema, por ejemplo, un bit en la DRAM cambió espontáneamente de 0 a 1, el contenido de un paquete de red cambió durante la transmisión, o un bloque de datos cambió entre el momento en que se escribió y el momento en que se leyó. Al detectarel problema, el sistema puede detener una operación antes de que se propague el error, informar el error al usuario o administrador, o advertir de un dispositivo que podría estar empezando a fallar o ya ha fallado.
Los sistemas de memoria han detectado durante mucho tiempo ciertos errores mediante el uso de bits de paridad. En este escenario, cada byte en un sistema de memoria tiene un bit de paridad asociado con que registra si el número de bits en el byte establecido en 1 es par (paridad = 0) o impar (paridad = 1). Si uno de los bits del byte está dañado (un 1 se convierte en un 0, o un 0 se convierte en un 1), la paridad del byte cambia y no coincide con la paridad almacenada. Del mismo modo, si el bit de paridad almacenado está dañado, no coincide con la paridad calculada. Por tanto, todos los errores de un solo bit son detectados por el sistema de memoria. Sin embargo, es posible que un error de doble bit no se detecte. Note que la paridad se calcula fácilmente realizando un XOR (para "OR eXclusivo") de los bits. También tenga en cuenta que, para cada byte de memoria, ahora necesitamos un poco más de memoria para almacenar la paridad.
La paridad es una forma de sumas de comprobación, que utilizan aritmética modular para calcular, almacenar y comparar valores en palabras de longitud fija. 
Otro método de detección de errores, común en las redes, es una redundancia cíclica check (CRC), que utiliza una función hash para detectar errores de varios bits (consulte http://www.mathpages.com/home/kmath458/kmath458.htm).
Un código de corrección de errores (ECC) no solo detecta el problema, sino que también lo corrige. La corrección se realiza mediante algoritmos y cantidades adicionales de almacenamiento. Los códigos varían según la cantidad de almacenamiento adicional que necesiten y cuántos errores se pueden corregir. Por ejemplo, las unidades de disco utilizan ECC por sector y unidades flash ECC por página. Cuando el controlador escribe un sector/página de datos durante la E/S normal, el ECC se escribe con un valor calculado a partir de todos los bytes en los datos que se escriben. Cuando se lee el sector/página, el ECC se recalcula y se compara con el valor almacenado. Si los números almacenados y calculados son diferentes, esta discrepancia indica que los datos se han corrompido y que el medio de almacenamiento puede ser malo (Sección 11.5.3). El ECC corrige errores porque contiene suficiente información, solo si se han corrompido, para permitir al controlador identificar qué bits han cambiado y Calcular cuáles deberían ser sus valores correctos. Luego informa un error recuperable de soft. Si ocurren demasiados cambios y el ECC no puede corregir el error, un error no corregible se señala un error grave. El controlador realiza automáticamente el procesamiento de ECC cada vez que se lee o escribe un sector o una página.
La detección y corrección de errores son frecuentemente diferenciadores entre productos consumidores y productos empresariales. ECC se utiliza en algunos sistemas para Corrección de errores DRAM y protección de la ruta de datos, por ejemplo.
11.5 Gestión de dispositivos de almacenamiento
El sistema operativo es responsable de varios otros aspectos de la gestión del dispositivo de almacenamiento también. Aquí, discutimos la inicialización de la unidad, el arranque desde una unidad y recuperación de bloques defectuosos.
11.5.1 Formateo, particiones y volúmenes de unidades
Un nuevo dispositivo de almacenamiento es una pizarra en blanco: es solo una bandeja de material de grabación magnética o un conjunto de celdas de almacenamiento de semiconductores no inicializadas. Antes de que un dispositivo de almacenamiento pueda almacenar datos, debe dividirse en sectores que el controlador puede Leer y escribir. Las páginas NVM deben inicializarse y crearse el FTL. Este proceso se denomina formato de bajo nivel o formato físico. El Formateo de bajo nivel llena el dispositivo con una estructura de datos especial para cada ubicación de almacenamiento. La estructura de datos de un sector o página generalmente consta de un encabezado, un área de datos y un final. El encabezado y el final contienen información utilizada por el controlador, como un número de sector/página y un código de detección o corrección de errores.
La mayoría de las unidades se formatean a bajo nivel en la fábrica como parte del proceso de fabricación. Este formateo permite al fabricante probar el dispositivo e inicializar el mapeo de números de bloques lógicos a sectores libres de defectos o páginas en los medios. Por lo general, es posible elegir entre algunos tamaños de sector, como 512 bytes y 4 KB. Formatear un disco con un tamaño de sector mayor significa que caben menos sectores en cada pista, pero también significa que menos encabezados y finales se escriben en cada pista y hay más espacio disponible para los datos del usuario. Algunos sistemas operativos pueden manejar solo un tamaño de sector específico.
Antes de que pueda usar una unidad para almacenar archivos, el sistema operativo aún necesita registrar sus propias estructuras de datos en el dispositivo. Lo hace en tres pasos. 
El primer paso es dividir el dispositivo en uno o más grupos de bloques o páginas. El sistema operativo puede tratar cada partición como si fuera un dispositivo separado. Por ejemplo, una partición puede contener un sistema de archivos que contenga una copia del código ejecutable del sistema operativo, otra del espacio de intercambio y otra, un sistema de archivos que contiene los archivos del usuario. Algunos sistemas operativos y Los sistemas de archivos realizan el particionamiento automáticamente cuando todo un dispositivo debe ser administrado por el sistema de archivos. La información de formateo de la partición se escribe en una ubicación fija en el dispositivo de almacenamiento. En Linux, el comando fdisk se utiliza para administrar particiones en dispositivos de almacenamiento. El dispositivo, cuando es reconocido por el sistema operativo, lee la información de su partición y luego, el sistema crea entradas de dispositivo para las particiones (en /dev de Linux). De allí, un archivo de configuración, como /etc/fstab, le dice al sistema operativo que monte cada partición que contenga un sistema de archivos en una ubicación específica y use opciones de montaje como solo lectura. Montar un sistema de archivos es hacer que el sistema de archivos esté disponible para su uso por el sistema y sus usuarios.
El segundo paso es la creación y gestión de volúmenes. A veces, este paso es implícito, como cuando un sistema de archivos se coloca directamente dentro de una partición. Ese volumen está listo para ser montado y utilizado. En otras ocasiones, La creación y gestión de volúmenes es explícita, por ejemplo, cuando hay varias particiones o Los dispositivos se utilizarán juntos como un conjunto RAID (consulte la Sección 11.8) donde uno o más de los sistemas de archivos se distribuyen por los dispositivos. El administrador de volumen de Linux lvm2 puede proporcionar estas funciones, al igual que las herramientas comerciales de terceros para Linux y otros sistemas operativos. ZFS proporciona administración de volúmenes y un sistema de archivos integrado en un conjunto de comandos y funciones. (Tenga en cuenta que el "volumen" también significa cualquier sistema de archivos montable, incluso un archivo que contiene un sistema de archivos como un Imagen de CD.)
El tercer paso es el formateo lógico o la creación de un sistema de archivos. En esto paso, el sistema operativo almacena las estructuras de datos iniciales del sistema de archivos en el dispositivo. Estas estructuras de datos pueden incluir mapas de espacio libre y asignación y un directorio vacío inicial. La información de la partición también indica si una partición contiene un sistema de archivos (que contiene el sistema operativo). La partición etiquetada para el arranque se utiliza para establecer la raíz del sistema de archivos. Una vez montado, el dispositivo Se puede crear enlacespara todos los demás dispositivos y sus particiones. Generalmente, El "sistema de archivos" de la computadora consta de todos los volúmenes montados. En Windows, estos se nombran por separado mediante una letra (C :, D :, E :). En otros sistemas, como Linux, en el momento del arranque, se monta el sistema de archivos de arranque y se pueden instalar otros montando dentro de esa estructura de árbol (como se discutió en la Sección 13.3). En Windows, la interfaz del sistema de archivos deja claro cuándo se está utilizando un dispositivo determinado, mientras que, en Linux, un solo acceso a un archivo puede atravesar muchos dispositivos antes de lo solicitado se accede al archivo en el sistema de archivos solicitado (dentro de un volumen).
Figura 11.9 Herramienta de administración de discos de Windows 7 que muestra dispositivos, particiones, volúmenes y sistemas de archivos.
La Figura 11.9 muestra la herramienta Administración de discos de Windows 7 mostrando tres volúmenes (C :, E: y F :). Tenga en cuenta que E: y F: son particiones del dispositivo "Disco 1" y que hay espacio no asignado en ese dispositivo para más particiones (posiblemente que contiene sistemas de archivos).
Para aumentar la eficiencia, la mayoría de los sistemas de archivos agrupan bloques en fragmentos, frecuentemente llamados clústeres. La E/S del dispositivo se realiza mediante bloques, pero el sistema de archivos La E/S se realiza a través de clústeres, lo que garantiza efectivamente que la E/S tenga mejor acceso secuencial y peor características de acceso aleatorio. Los sistemas de archivos agrupan el contenido de los archivos cerca de sus metadatos, reduciendo las búsquedas de cabezales de HDD cuando se opera en un archivo, por ejemplo.
Algunos sistemas operativos dan a programas especiales la capacidad de usar una partición como una gran matriz secuencial de bloques lógicos, sin ningún dato de la estructura del sistema de archivos. Esta matriz a veces se denomina disco sin formato, y la E/S a esta matriz es denominada E/S sin procesar. Se puede utilizar para el espacio de intercambio (consulte la Sección 11.6.2), por ejemplo, y algunos sistemas de bases de datos prefieren E/S sin procesar porque les permite controlar la ubicación exacta donde se almacena cada registro de la base de datos. La E/S sin procesar omite todos los servicios del sistema de archivos, como la caché del búfer, el bloqueo de archivos, la captación previa, el espacio asignación, nombres de archivos y directorios. Podemos hacer ciertas aplicaciones más eficiente al permitirles implementar su propio almacenamiento para fines especiales servicios en una partición sin formato, pero la mayoría de las aplicaciones utilizan un sistema de archivos proporcionado en lugar de administrar los datos por sí mismos. Tenga en cuenta que Linux generalmente no admite E/S sin procesar, pero puede lograr un acceso similar mediante el uso de la bandera DIRECTO para la llamada al sistema open ().
11.5.2 Bloque de arranque
Para que una computadora comience a funcionar, por ejemplo, cuando se enciende o reinicia: debe tener un programa inicial para ejecutarse. Este cargador de arranque inicial tiende a ser simple. Para la mayoría de las computadoras, el bootstrap se almacena en NVM flash firmware de memoria en la placa base del sistema y asignado a una ubicación de memoria conocida. Los fabricantes de productos pueden actualizarlo según sea necesario, pero también puede ser escrito por virus, infectando el sistema. Inicializa todos los aspectos del sistema, desde los registros de la CPU hasta los controladores de dispositivo y el contenido de la memoria.
Este pequeño programa cargador de arranque también es lo suficientemente inteligente como para traer un programa de arranque completo desde el almacenamiento secundario. El programa completo de Bootstrap se almacena en los "bloques de arranque" en una ubicación fija en el dispositivo. El valor por defecto del cargador de arranque de Linux es grub2 (https://www.gnu.org/software/grub/manual/grub.html /). Un dispositivo que tiene una partición de arranque se denomina disco del sistema o disco de arranque.
Figura 11.10 Arranque desde un dispositivo de almacenamiento en Windows.
El código de la NVM de arranque indica al controlador de almacenamiento que lea los bloques de arranque en la memoria (no se cargan controladores de dispositivo en este punto) y luego comienza a ejecutar ese código. El programa de arranque completo es más sofisticado que el cargador de arranque: es capaz de cargar todo el sistema operativo desde una ubicación no prefijada en el dispositivo y para iniciar el sistema operativo en ejecución.
Consideremos como ejemplo el proceso de arranque en Windows. Primero, tenga en cuenta que Windows permite dividir una unidad en particiones y una partición: identificada como la partición de arranque: contiene el sistema operativo y los manejadores de dispositivos (drivers). El sistema Windows coloca su código de arranque en el primer bloque lógico en el disco duro o la primera página del dispositivo NVM, que denomina arranque maestro registro o MBR. El arranque comienza ejecutando código que reside en el sistema firmware. Este código indica al sistema que lea el código de arranque del MBR, comprendiendo lo suficiente sobre el controlador de almacenamiento y el dispositivo de almacenamiento para cargar un sector de él. Además de contener el código de arranque, el MBR contiene una tabla que enumera las particiones para la unidad y una bandera que indica qué partición del sistema debe iniciarse, como se ilustra en la Figura 11.10. Una vez que el sistema identifica la partición de arranque, lee el primer sector / página de esa partición (llamado sector de arranque), que lo dirige al kernel. Luego continúa con el resto del proceso de arranque, que incluye la carga de los distintos subsistemas y servicios del sistema.
11.5.3 Bloques defectuosos
Debido a que los discos tienen partes móviles y pequeñas tolerancias (recuerde que el disco la cabeza vuela justo por encima de la superficie del disco), son propensos a fallar. A veces el daño es completo; en este caso, es necesario reemplazar el disco y su contenido restaurado desde el medio de copia de seguridad al nuevo disco. Más frecuentemente, uno o más sectores se vuelven defectuosos. La mayoría de los discos incluso vienen de fábrica con bloques malos. Según el disco y el controlador en uso, estos bloques se manejan en una variedad de formas.
En discos más antiguos, como algunos discos con controladores IDE, los bloques defectuosos son manejados manualmente. Una estrategia es escanear el disco para encontrar bloques defectuosos mientras se está formateando el disco. Los bloques defectuosos que se descubren se marcan como inutilizables para que el sistema de archivos no los asigne. Si los bloques se estropean durante funcionamiento normal, un programa especial (como el comando badblocks de Linux) debe ejecutarse manualmente para buscar los bloques defectuosos y bloquearlos. Datos que residían en los bloques defectuosos generalmente se pierden.
Los discos más sofisticados son más inteligentes en cuanto a la recuperación de bloques defectuosos. El controlador mantiene una lista de bloques defectuosos en el disco. La lista se inicializa durante el formateo de bajo nivel en la fábrica y se actualiza durante la vida útil del disco. El formateo de bajo nivel también aparta los sectores de repuesto que no son visibles para el sistema operativo. Se le puede decir al controlador que reemplace cada sector defectuoso lógicamente con uno de los sectores de repuesto. Este esquema se conoce como ahorro de sector o reenvío (forwarding). Una transacción típica de sector defectuoso podría ser la siguiente:
• El sistema operativo intenta leer el bloque lógico 87.
• El controlador calcula el ECC y encuentra que el sector es malo. Informa este hallazgo al sistema operativo como un error de E/S.
• El controlador de dispositivo reemplaza el sector defectuoso con uno de repuesto.
• Después de eso,siempre que el sistema solicita el bloque lógico 87, la solicitud es traducido a la dirección del sector de reemplazo por el controlador.
Tenga en cuenta que tal redirección por parte del controlador podría invalidar cualquier optimización del algoritmo de planificación de disco del sistema operativo. Por esta razón, la mayoría de los discos están formateados para proporcionar algunos sectores de repuesto en cada cilindro y un cilindro de repuesto también. Cuando se reasigna un bloque defectuoso, el controlador utiliza un sector de repuesto del mismo cilindro, si es posible.
Como alternativa a la preservación del sector, algunos controladores pueden recibir instrucciones para Reemplazar un bloque defectuoso por deslizamiento de sector. Aquí hay un ejemplo: Suponga que la dirección lógica es el bloque 17 y se vuelve defectuoso y el primer repuesto disponible sigue en el sector 202. El deslizamiento del sector luego reasigna todos los sectores del 17 al 202, moviéndolos todos por un lugar. Es decir, el sector 202 se copia en el repuesto, luego el sector 201 en 202, luego 200 en 201, y así sucesivamente, hasta que el sector 18 se copie en el sector 19. Deslizamiento los sectores de esta manera libera el espacio del sector 18 para que el sector 17 pueda ser asignado a él.
Los errores “blandos” recuperables pueden desencadenar una actividad del dispositivo en la que se crea una copia de datos de bloque y el bloque se salva o se desliza. Los errores “duros” de recuperación, sin embargo, dan como resultado la pérdida de datos. Cualquier archivo que estuviera usando ese bloque debe ser reparado (por ejemplo, mediante restauración desde una cinta de respaldo), y eso requiere intervención manual.
Los dispositivos NVM también tienen bits, bytes e incluso páginas que no son funcionales en el momento de la fabricación o se estropean con el tiempo. La Gestión de las áreas defectuosas es más simple que para los discos duros porque no hay pérdida de rendimiento en el tiempo de búsqueda que deba ser evitada. Se pueden reservar varias páginas y utilizarlas como reemplazo Se pueden utilizar ubicaciones o espacio del área de sobreaprovisionamiento (disminuyendo la capacidad utilizable del área de sobreaprovisionamiento). De cualquier manera, el controlador mantiene una tabla de páginas defectuosas y nunca establece esas páginas como disponibles para escribir a, por lo que nunca se accede a ellos.
11.6 Gestión del espacio de intercambio (swapping)
El intercambio se presentó por primera vez en la Sección 9.5, donde discutimos cómo mover todo el proceso entre el almacenamiento secundario y la memoria principal. El Intercambio en ese escenario ocurre cuando la cantidad de memoria física alcanza un punto críticamente bajo y los procesos se mueven de la memoria para intercambiar espacio y liberar la memoria disponible. En la práctica, muy pocos sistemas operativos modernos implementan el intercambio de este modo. Más bien, los sistemas ahora combinan el intercambio con técnicas de memoria virtual. (Capítulo 10) y paginación, no necesariamente procesos completos. De hecho, algunos sistemas ahora usan los términos "intercambio" y "paginación" indistintamente, reflejando la fusión de estos dos conceptos.
La gestión del espacio de intercambio es otra tarea de bajo nivel del sistema operativo. La memoria virtual utiliza el espacio de almacenamiento secundario como una extensión de la memoria. Dado que el acceso a la unidad es mucho más lento que el acceso a la memoria, usar swap como espacio disminuye significativamente el rendimiento del sistema. El objetivo principal del diseño y la implementación del espacio de intercambio es proporcionar el mejor rendimiento para el sistema de memoria virtual. En esta sección, discutimos cómo se usa el espacio de intercambio, donde se encuentra el espacio de intercambio en los dispositivos de almacenamiento y cómo se gestiona el espacio de intercambio.
11.6.1 Uso del espacio de intercambio
Los diferentes sistemas operativos utilizan el espacio de intercambio de diversas formas, según sean los algoritmos de gestión de memoria en uso. Por ejemplo, hay sistemas que usan el espacio de intercambio para contener una imagen de proceso completa, incluido el código y los segmentos de datos. Los sistemas de paginación pueden simplemente almacenar páginas que han sido sacados de la memoria principal. La cantidad de espacio de intercambio necesario en un sistema, por lo tanto, puede variar desde unos pocos megabytes de espacio en disco hasta gigabytes, dependiendo de la cantidad de memoria física, la cantidad de memoria virtual es el respaldo y la forma en que se utiliza la memoria virtual.
Tenga en cuenta que puede ser más seguro sobreestimar que subestimar la cantidad de espacio de intercambio requerido, porque si un sistema se queda sin espacio de intercambio, puede verse obligado a abortar procesos o puede fallar por completo. La sobreestimación de espacio de almacenamiento secundario podría usarse para archivos, pero esto no causa daño. Algunos sistemas recomiendan la cantidad que se reservará para espacio de intercambio. Solaris, por ejemplo, sugiere establecer el espacio de intercambio igual a la cantidad por el cual la memoria virtual excede la memoria física paginable. En el pasado, Linux ha sugerido configurar el espacio de intercambio para duplicar la cantidad de memoria. Hoy en día, los algoritmos de paginación han cambiado y la mayoría de los sistemas Linux utilice considerablemente menos espacio de intercambio.
Algunos sistemas operativos, incluido Linux, permiten el uso de múltiples espacios de intercambio, incluidos archivos y particiones de intercambio dedicadas. Estos espacios de intercambio generalmente se colocan en dispositivos de almacenamiento separados para distribuir la carga colocada en el sistema de E/S mediante paginación y el intercambio en el sistema de Ancho de banda de E/S.
11.6.2 Ubicación del espacio de intercambio
Un espacio de intercambio puede residir en uno de dos lugares: se puede colocar en el sistema de archivos, o puede estar en una partición separada. Si el espacio de intercambio es simplemente un gran archivo dentro del sistema de archivos, se pueden usar rutinas normales del sistema de archivos para crearlo, nombrarlo y asignar su espacio.
Alternativamente, el espacio de intercambio se puede crear en una partición sin formato separada. No en el sistema de archivos o en la estructura de directorios se coloca en este espacio. Más bien, el administrador de almacenamiento de espacio de intercambio la utiliza para asignar y desasignar los bloques. de la partición sin formatear. Este administrador utiliza algoritmos optimizados para la velocidad, en lugar de por la eficiencia del almacenamiento, porque se accede mucho más al espacio de intercambio con frecuencia que los sistemas de archivos, cuando se utiliza (recuerde que el espacio de intercambio se utiliza para intercambio y paginación). La fragmentación interna puede aumentar, pero esta compensación es aceptable porque la vida de los datos en el espacio de intercambio es generalmente mucho más corta que el de los archivos del sistema de archivos. Dado que el espacio de intercambio se reinicializa en el momento del arranque, cualquier fragmentación es de corta duración. El enfoque de partición sin procesar crea una cantidad fija de espacio de intercambio durante la partición del disco. Añadir más espacio de intercambio requiere volver a particionar el dispositivo (lo que implica mover las otras particiones del sistema de archivos o destruirlas y restaurarlas backup) o agregando otro espacio de intercambio en otro lugar.
Algunos sistemas operativos son flexibles y pueden intercambiar tanto en particiones sin formato y en el espacio del sistema de archivos. Linux es un ejemplo: la política y la implementación son independientes, lo que permite al administrador de la máquina decidir qué tipo de intercambio usar. La compensación está entre la conveniencia de la asignación y gestión en el sistema de archivos y elrendimiento del intercambio en particiones en bruto.
11.6.3 Gestión del espacio de intercambio: un ejemplo
Podemos ilustrar cómo se usa el espacio de intercambio siguiendo la evolución del intercambio y paginación en varios sistemas UNIX. Comenzó el kernel UNIX tradicional con una implementación de intercambio que copiaba procesos completos entre regiones de disco contiguas y memoria. UNIX luego evolucionó a una combinación de intercambio y paginación a medida que el hardware de paginación estuvo disponible. 
En Solaris 1 (SunOS), los diseñadores cambiaron los métodos estándar de UNIX para mejorar la eficiencia y reflejar los avances tecnológicos. Cuando un proceso se ejecuta, las páginas de segmentos de texto que contienen código se obtienen del archivo sistema, se accede en la memoria principal y se desecha si se selecciona para la página. Es más eficaz volver a leer una página del sistema de archivos que escribirla en intercambie espacio y luego vuelva a leerlo desde allí. El espacio de intercambio solo se usa como respaldo almacenar para páginas de memoria anónima (memoria no respaldada por ningún archivo), que incluye memoria asignada para la pila, el montón y los datos no inicializados de un proceso.
Se realizaron más cambios en versiones posteriores de Solaris. El mayor cambio es que Solaris ahora asigna espacio de intercambio solo cuando una página es forzada a salir de memoria física, en lugar de cuando se crea por primera vez la página de memoria virtual. Este esquema ofrece un mejor rendimiento en las computadoras modernas, que tienen más memoria física que los sistemas más antiguos y tienden a paginar menos.
Figura 11.11 Las estructuras de datos para intercambiar en sistemas Linux.
Linux es similar a Solaris en que el espacio de intercambio ahora se usa solo para memoria anónima. Linux permite establecer una o más áreas de intercambio. El área swap puede estar en un archivo de intercambio en un sistema de archivos normal o en una partición de intercambio dedicada. Cada área de intercambio consta de una serie de espacios de página de 4 KB, que se utilizan para contener páginas intercambiadas. Asociado con cada área de intercambio hay un mapa de intercambio, una matriz de contadores de números enteros, cada uno de los cuales corresponde a una página en el espacio del área de intercambio. Si el valor de un contador es 0, el espacio de página correspondiente está disponible. Los Valores mayor a 0 indican que el espacio de la página está ocupado por una página intercambiada. El valor del contador indica el número de asignaciones a la página intercambiada. Por ejemplo, un valor de 3 indica que la página intercambiada se asigna a tres diferentes procesos (que pueden ocurrir si la página intercambiada almacena una región de memoria compartida por tres procesos). Las estructuras de datos para intercambiar en Linux se muestran en la Figura 11.11.
11.7 Accesorio de almacenamiento
Las computadoras acceden al almacenamiento secundario de tres formas: a través del almacenamiento conectado al host, almacenamiento conectado a la red y almacenamiento en la nube.
11.7.1 Almacenamiento adjunto al host
El almacenamiento adjunto al host es el almacenamiento al que se accede a través de puertos de E/S locales. Estos puertos utilizan varias tecnologías, la más común es SATA, como se mencionó anteriormente. Un sistema típico tiene uno o varios puertos SATA.
Para permitir que un sistema obtenga acceso a más almacenamiento, un dispositivo individual de almacenamiento, un dispositivo en un chasis o varias unidades en un chasis se pueden conectar a través de puertos y cables USB FireWire o Thunderbolt.
Las estaciones de trabajo y servidores de alta gama generalmente necesitan más almacenamiento o necesitan para compartir almacenamiento, utilice arquitecturas de E/S más sofisticadas, como fibr canal (FC), una arquitectura en serie de alta velocidad que puede operar sobre fibra óptica o sobre un cable de cobre de cuatro conductores. Debido al gran espacio de direcciones y la naturaleza conmutada de la comunicación, múltiples hosts y dispositivos de almacenamiento puede agregarse al computador, lo que permite una gran flexibilidad en la comunicación de E/S.
Una amplia variedad de dispositivos de almacenamiento son adecuados usar conectados al host de almacenamiento. Entre estos se encuentran los discos duros; Dispositivos NVM; CD, DVD, Blu-ray y cinta ; y redes de área de almacenamiento (SAN) (discutidas en la Sección 11.7.4). Los comandos de E/S que inician transferencias de datos a un dispositivo de almacenamiento conectado al host son los que leen y escriben bloques de datos lógicos dirigidos a un almacenamiento específicamente identificado unidades (como ID de bus o unidad lógica de destino).
11.7.2 Almacenamiento conectado a la red
El almacenamiento conectado a la red (NAS) (Figura 11.12) proporciona acceso al almacenamiento a un dispositivo NAS a través de una red que puede ser un sistema de almacenamiento de propósito especial o un sistema informático general que proporciona su almacenamiento a otros hosts en la red. Los clientes acceden al almacenamiento conectado a la red a través de una interfaz de llamada a procedimiento remoto como NFS para sistemas UNIX y Linux o CIFS para máquinas Windows. Las llamadas a procedimiento remoto (RPC) se llevan a cabo a través de TCP o UDP a través de una red IP, generalmente la misma red de área local (LAN) que transporta todo el tráfico de datos a los clientes. La unidad de almacenamiento conectada a la red generalmente se implementa como una matriz de almacenamiento con software que implementa la interfaz RPC. CIFS y NFS proporcionan varias funciones de bloqueo, lo que permite compartir archivos entre hosts que acceden a un NAS con esos protocolos. Por ejemplo, un usuario que inicia sesión en varios clientes NAS puede acceder a su directorio de inicio desde todos esos clientes, simultáneamente.
Figura 11.12 Almacenamiento conectado a la red.
El almacenamiento conectado a la red proporciona una forma conveniente para todas las computadoras en una LAN para compartir un grupo de almacenamiento con la misma facilidad de asignación de nombres y acceso con almacenamiento local adjunto al host. Sin embargo, tiende a ser menos eficiente y tienen un rendimiento más bajo que algunas opciones de almacenamiento de conexión directa, iSCSI es el último protocolo de almacenamiento conectado a la red. En esencia, utiliza el Protocolo de red IP para llevar el protocolo SCSI. Por lo tanto, las redes, en lugar de Cables SCSI: se pueden utilizar como interconexiones entre los hosts y su almacenamiento.
Como resultado, los hosts pueden tratar su almacenamiento como si estuviera directamente conectado, incluso si el almacenamiento está distante del host, mientras que NFS y CIFS presentan un sistema de archivos y envía partes de archivos a través de la red, iSCSI envía bloques lógicos a través de la red y deja que el cliente use los bloques directamente o cree un sistema de archivos con ellos.
11.7.3 Almacenamiento en la nube
La sección 1.10.5 discutió la computación en nube. Una oferta de proveedores en la nube es el almacenamiento en la nube. Similar al almacenamiento conectado a la red, el almacenamiento en la nube proporciona acceso al almacenamiento a través de una red. A diferencia de NAS, se accede al almacenamiento a través de Internet u otra WAN a un centro de datos remoto que proporciona almacenamiento por una tarifa (o incluso gratis).
Otra diferencia entre NAS y el almacenamiento en la nube es cómo se accede al almacenamiento y se presenta a los usuarios. Se accede a NAS como un sistema de archivos más si se utilizan los protocolos CIFS o NFS, o como un dispositivo de bloque sin formato si el protocolo iSCSI es usado. La mayoría de los sistemas operativos tienen estos protocolos integrados y presentan NAS almacenamiento de la misma manera que el resto de almacenamiento. Por el contrario, el almacenamiento en la nube se basa en API, y los programas utilizan las API para accederal almacenamiento. Amazon S3 es una oferta de almacenamiento en la nube líder. Dropbox es un ejemplo de una empresa que proporciona aplicaciones que se conectan al almacenamiento en la nube que proporciona. Otros ejemplos incluyen Microsoft OneDrive y Apple iCloud.
Una razón por la que se utilizan API en lugar de protocolos existentes es la latencia y escenarios de falla de una WAN. Los protocolos NAS se diseñaron para su uso en LAN, que tienen una latencia más baja que las WAN y tienen muchas menos probabilidades de perder conectividad entre el usuario de almacenamiento y el dispositivo de almacenamiento. Si falla una conexión LAN, un sistema que usa NFS o CIFS puede bloquearse hasta que se recupere. Con el almacenamiento en la nube, las fallas como esas son más probables, por lo que una aplicación simplemente pausa el acceso hasta se restablece la conectividad.
Figura 11.13 Red de área de almacenamiento
11.7.4 Redes de área de almacenamiento (SAN) y matrices de almacenamiento (NAS)
Un inconveniente de los sistemas de almacenamiento conectados a la red es que la E/S de almacenamiento Las operaciones consumen ancho de banda en la red de datos, lo que aumenta la latencia de la comunicación de red. Este problema puede ser particularmente agudo en grandes instalaciones cliente-servidor: la comunicación entre servidores y Los clientes compiten por el ancho de banda con la comunicación entre servidores y dispositivos de almacenamiento.
Una red de área de almacenamiento (SAN) es una red privada (que utiliza protocolos de almacenamiento en lugar de protocolos de red) que conectan servidores y unidades de almacenamiento, como los que se muestra en la Figura 11.13. El poder de una SAN radica en su flexibilidad. Varios hosts y varias matrices de almacenamiento se pueden conectar a la misma SAN, y el almacenamiento se puede asignados dinámicamente a los hosts. Las matrices de almacenamiento pueden estar protegidas por RAID o unidades desprotegidas (solo un montón de discos (JBOD)). Un conmutador SAN permite o prohíbe el acceso entre los hosts y el almacenamiento. Como ejemplo, si un anfitrión tiene poco espacio en disco, la SAN se puede configurar para asignar más almacenamiento a ese anfitrión. Las SAN hacen posible que los clústeres de servidores compartan el mismo almacenamiento y para que las matrices de almacenamiento incluyan múltiples conexiones directas de host.
Tanto SAN (Storage Area Network) como NAS (Network Attached Storage) son soluciones de almacenamiento en red. En términos generales, un NAS es un único dispositivo de almacenamiento que opera sobre los archivos de datos, mientras que un SAN es una red local de múltiples dispositivos que operan en bloques de disco.
Las SAN suelen tener más puertos y cuestan más que las matrices de almacenamiento. La conectividad en SAN se realiza a distancias cortas y, por lo general, no tiene enrutamiento, por lo que un NAS puede tener muchos más hosts conectados que una SAN. Una matriz de almacenamiento es un dispositivo especialmente diseñado (consulte la Figura 11.14) que incluye Puertos SAN, puertos de red o ambos. También contiene unidades para almacenar datos y un controlador (o conjunto redundante de controladores) para administrar el almacenamiento y permitir el acceso al almacenamiento a través de las redes. Los controladores están compuestos por CPU, memoria y software que implementan las características de la matriz, que pueden incluyen protocolos de red, interfaces de usuario, protección RAID, instantáneas, replicación, compresión, deduplicación y cifrado. Algunas de esas funciones se tratan en el Capítulo 14.
Algunas matrices de almacenamiento incluyen SSD. Una matriz puede contener solo SSD, lo que resulta en máximo rendimiento, pero menor capacidad, o puede incluir una combinación de SSD y HDD, con el software del arreglo (o el administrador) seleccionando el mejor medio para un uso determinado o el uso de SSD como caché y HDD de almacenamiento a granel.
Figura 11.14 Una matriz de almacenamiento.
FC es la interconexión SAN más común, aunque la simplicidad de iSCSI está aumentando su uso. Otra interconexión SAN es InfiniBan (IB), una arquitectura de bus de propósito especial que proporciona soporte de hardware y software para Redes de interconexión de alta velocidad para servidores y unidades de almacenamiento.
11.8 Estructura RAID
Los dispositivos de almacenamiento han seguido haciéndose más pequeños y más baratos, por lo que ahora es económicamente factible conectar muchas unidades a un sistema informático. Tener un gran número de unidades en un sistema presenta oportunidades para mejorar la velocidad a la que se pueden leer o escribir datos, si las unidades funcionan en paralelo. Además, esta configuración ofrece el potencial para mejorar la confiabilidad de almacenamiento de datos, porque la información redundante se puede almacenar en múltiples unidades. Por lo tanto, la falla de una unidad no conduce a la pérdida de datos. Una variedad de técnicas de organización de disco, colectivamente llamadas matrices redundantes de independientes discos (RAID), se utilizan comúnmente para abordar el rendimiento y problemas de confiabilidad.
En el pasado, los RAID compuestos por discos pequeños y baratos se consideraban una alternativa rentable a los discos grandes y costosos. Hoy en día, los RAID se utilizan para una mayor confiabilidad y tasa de transferencia de datos en lugar de por razones económicas. Por lo tanto, la I en RAID, que antes significaba "económico", ahora significa "independiente."
11.8.1 Mejora de la confiabilidad mediante redundancia
Consideremos primero la confiabilidad de un RAID de HDD. La posibilidad de que algún disco de un conjunto de N discos fallará es mucho mayor que la posibilidad de que un solo disco falle.ESTRUCTURACIÓN DE RAID
El almacenamiento RAID se puede estructurar de varias formas. Por ejemplo, un sistema puede tener unidades directamente conectadas a sus buses. En este caso, El sistema operativo o el software del sistema pueden implementar la funcionalidad RAID. Alternativamente, un controlador de host inteligente puede controlar varios dispositivos conectados y puede implementar RAID en esos dispositivos en hardware. Finalmente, una matriz de almacenamiento puede ser usada. Una matriz de almacenamiento, como se acaba de comentar, es una unidad independiente con su propio controlador, caché y unidades. Se adjunta al host a través de uno o más controladores estándares (por ejemplo, FC). Esta configuración común permite que un sistema operativo o un software sin funcionalidad RAID pueda tener almacenamiento protegido por RAID.
Suponga que el tiempo medio entre fallas (MTBF) de un solo disco dura 100.000 horas. Luego, el MTBF de algún disco en una matriz de 100 discos serán 100.000 / 100 = 1.000 horas, o 41,66 días, ¡que no es mucho tiempo! Si almacenamos solo una copia de los datos, cada falla del disco resultará en la pérdida de una cantidad significativa de datos, y una tasa tan alta de pérdida de datos es inaceptable.
La solución al problema de la fiabilidad es introducir redundancia; almacenamos información adicional que normalmente no se necesita pero que se puede usar en el evento de falla del disco para reconstruir la información perdida. Por lo tanto, incluso si falla un disco, los datos no se han perdido. RAID también se puede aplicar a dispositivos NVM, aunque los dispositivos NVM no tienen partes móviles y, por lo tanto, es menos probable que fallen como los discos duros.
El enfoque más simple (pero más caro) para introducir redundancia es para duplicar cada unidad. Esta técnica se llama reflejo. El disco lógico consta de dos unidades físicas y cada escritura se realiza en ambas unidades. El resultado se llama volumen reflejado. Si una de las unidades del volumen falla, los datos se pueden leer del otro. Los datos se perderán solo si la segunda unidad falla antes de que se reemplace la primera unidad defectuosa.
El MTBF de un volumen reflejado, donde la falla es la pérdida de datos depende de dos

Continuar navegando