Algunas ideas ridículas para los fabricantes de discos duros

El disco duro ha perdido terreno recientemente en la lucha contra los SSD, del lado del cual hay velocidad y falta de pánico, miedo a las vibraciones, ahorrándose solo debido al bajo costo de colocar un gigabyte de datos y más ciclos de reescritura. Pensemos si las siguientes ideas ayudarán a dar una ventaja para HDD.

Un disco duro consta de uno o varios discos delgados con una superficie ferromagnética montada en un husillo, girados por el motor a una velocidad de varios miles de revoluciones por minuto. Una parte separada es un bloque de cabezas que se mueve a lo largo del radio del disco. Si se usaron sistemas anteriores que movieron el bloque de cabezales en línea recta (como el sistema que se usa en CD / DVD), ahora se usa generalmente el eje de balancín. Las cabezas se fijan en un extremo de la viga, y un sistema móvil se encuentra en el otro lado. Al principio, los servos eran responsables de todos los movimientos, pero después de que aprendieron a hacer imanes fuertes "mucho y de manera económica", se comenzó a utilizar el mecanismo de interacción del campo magnético del imán y los campos electromagnéticos de la bobina de alambre a la que se suministró la corriente eléctrica.

Como almacenamiento, un disco duro ofrece tres dimensiones:
  • “encuadernador”: se encuentra a cierta distancia del centro del disco, a lo largo de la cual ocurren las operaciones de lectura y escritura, y antes de iniciarlas, debe mover el bloque de la cabeza a uno u otro cilindro;
  • cabeza: a cada lado del disco en la superficie de la cual se pueden colocar los datos, y sobre la cual se coloca la cabeza respectivamente, también existe el concepto de una "pista" que define los datos colocados en una superficie específica en un cilindro dado;
  • segmento: una parte de la circunferencia de la pista ubicada en una de las superficies de trabajo a lo largo de la cual se encuentra una parte de datos.


Para leer el segmento de datos, el disco duro debe mover el bloque de cabezales al cilindro deseado, seleccionar el flujo de datos de la cabeza deseada y esperar hasta que el disco se convierta en el segmento deseado debajo del bloque de cabezas y solo entonces se pueden leer o escribir los datos.
El tiempo de acceso a los datos varía según la suerte que tenga, y hay varias situaciones.

Caso 1: tiene suerte, y después de recibir un comando para leer, el disco duro vio que el bloque de la cabeza se encuentra en el cilindro deseado, comienza a leer los datos y la lectura del primer segmento es lo que necesita. Para calcular la suerte que tiene, intentemos calcular el tiempo que llevará esta operación:
Defina las variables:
  • t1 es la hora en que se envió el comando al disco duro;
  • t2-tiempo de procesamiento de comandos por el disco duro;
  • t3- ;
  • t4- ;
  • t5- ;
  • t6-

t3 y t4 para el caso descrito tienden a cero y los ignoraremos, así como el tiempo de transmisión del comando t1 (para 10-12 bytes del comando, esto será 1/100 parte de los datos) y el tiempo de procesamiento del comando t2 (depende de la complejidad de los cálculos y la velocidad procesador, pero suponemos que es lo suficientemente rápido como para ignorar este período).

Quedan t5 y t6 para calcular estos valores, tomamos las características de las interfaces y la lectura de flujo desde el disco (la velocidad de lectura de un cierto número de segmentos seguidos de una pista). Para simplificar los cálculos, definimos que un segmento de 1000 bytes (en realidad son 512 o 4096 bytes de datos más una cierta cantidad de datos de servicio), y la lectura de flujo es de 50 Mb / s (hay más, hay menos).

t5 - 1000 bytes * (1 / 50,000,000 bytes / s) = 20 μs por lectura / escritura de un segmento
t6 - depende de la velocidad de transferencia de datos, calculemos para diferentes interfaces:

IDE
  • DMA33 - 33 Mb / s = 1000 * (1/33 000 000) = 30 μs (más del tiempo dedicado a leer)
  • DMA66 - 66 Mb / s = 1000 * (1/66 000 000) = 15 μs
  • DMA100 - 100 Mb / s = 1000 * (1/100 000 000) = 10 μs

SATA
  • SATA I -1500 Gbit / s = 150 Mb / s = 1000 * (1/150 000 000) = 6.6 μs
  • SATA II / SAS -3000 Gbit / s = 300 Mb / s = 1000 * (1/300 000 000) = 3.3 μs
  • SATA III / SAS 2-6000 Gb / s = 600 Mb / s = 1000 * (1/600 000 000) = 1.6 μs


¿Por qué dividí la velocidad SATA por 10 a pesar de que el byte es de 8 bits? El hecho es que la transmisión se produce en modo serie y para transferir datos de manera confiable, se usan señales de sincronización (bits de inicio y parada, hola puerto COM ) o los datos se codifican para no obtener un canal saturado en la salida , la codificación se usa de tal manera que a pesar de por el valor del flujo de bytes original (todos 0 o 255), como resultado obtenemos una combinación con un número igual de ceros y unos, la frecuencia de la señal también disminuye debido a la transcodificación de la señal (sí, la frecuencia es más baja y la velocidad es más alta).

En total, entendemos que si tiene suerte, recibirá sus datos en 21.6 - 50 μs, y de los cálculos de este caso usted comprende por qué los fabricantes crean nuevas interfaces de alta velocidad, a pesar de que la velocidad de lectura de los discos es mucho más lenta (cuanto más rápida sea la interfaz de comunicación, más más rápido, sus datos se pueden transferir desde el momento en que están listos entre el remitente y el destinatario).

Caso 2: no tiene tanta suerte, y necesita mover el bloque de la cabeza a otro cilindro, y después de encontrar el cilindro deseado, debe esperar hasta que el disco gire 180 grados para acceder al segmento deseado.

Desafortunadamente, no sé el tiempo de mover y colocar la cabeza, pero puede calcular cuánto tiempo lleva mover el segmento en un círculo, y tomar el tiempo de posicionamiento igual a la mitad del tiempo de rotación del disco, y este valor es conocido, por lo que consideramos el tiempo de rotación del disco (la mitad para el posicionamiento , media vuelta del disco de lectura).

Para calcular, necesita averiguar cuántas revoluciones ocurren por segundo, y luego averiguar el período dividiendo 1 entre el número de revoluciones:

5400 rpm - 1 (5400/60) = 11ms
5900 rpm - T = 10 ms
7200 rpm - T = 8 ms
10,000 rpm - T = 6 ms
15,000 rpm - T = 4 ms

¿Encuentras algún significado familiar? ¡Derecha! El tiempo promedio de acceso a datos para un disco es aproximadamente igual o igual al período de rotación del disco, ¿por qué el promedio? Debido a que hay:

Caso 3: no tiene suerte, el bloque de la cabeza está en el primer cilindro y el segmento está en el último, el tiempo de movimiento del bloque de la cabeza tomó casi o tanto como el período de rotación del disco después de que el bloque de la cabeza se posicionó en el cilindro deseado, y la lectura de los datos comenzó, resultó que obtuvimos el siguiente segmento después del deseado, y para leerlo, debe esperar hasta que el disco haga otra revolución, mientras no digo nada sobre el caso 4: cuando los datos no son del primer tiempo (y posiblemente posteriores) fueron pr leer (cuente cuánto tiempo se toma con calma, Minium * T 2 vol.).

¿Qué conclusión se puede hacer en esta etapa? "Eureka: ¡necesitas girar el husillo hasta 100500 revoluciones!". Pero no todo es tan simple, si girabas en un carrusel, debes saber que si el carrusel no gira demasiado rápido, entonces es fácil permanecer en él en cualquier parte, si el carrusel se desenrolla demasiado rápido, la única forma de permanecer es estar más cerca del centro y mantenerlo apretado. Qué sucederá con los discos si se desenroscan fuertemente: primero, los bordes del disco comenzarán a dispersarse en diferentes direcciones debido a las fuerzas centrífugas, y el disco comenzará a expandirse al principio aumentando en diferentes direcciones, y dado que la velocidad de rotación no disminuye y el tamaño del disco aumenta, los centrífugos también aumentan fuerzas, lo que conduce a la destrucción de los enlaces moleculares y obtenemos "bigbadabum", y varias piezas del disco.Esto se debe a la acción de las fuerzas centrífugas, los discos de alta velocidad tienen un diámetro menor para que no se rompan.

Aquí aparece la primera idea ridícula : por qué es imposible hacer dos bloques de cabezas ubicados uno frente al otro en lugar de uno (y si funciona con dos, entonces intente 3, 4 puede incluso 5, 6). Lo que esto nos brinda:

1) con un aumento en el número de partes, la confiabilidad del sistema "disminuye", pero como obtenemos un sistema de respaldo, "aumentamos la confiabilidad".

2) los bloques de cabezales se mueven sincrónicamente (los pulsos causados ​​por el movimiento de las cabezas no funcionan durante la lectura / escritura de datos), y si el segmento acaba de deslizarse, el segundo bloque de cabeza tendrá la oportunidad de leerlo a través de T rev / 2 (para esto, en el caso clásico, necesitamos giraría el huso el doble de rápido).

3) los bloques de cabezales actúan en tareas separadas (la influencia de los pulsos de movimiento del bloque de cabeza no es esencial para las operaciones de lectura / escritura), el controlador que sabe dónde está ubicado este o aquel segmento puede mover el bloque de cabezas que es más ventajoso en su posición, para reducir el tiempo perdido en la rotación del huso y el número las operaciones de entrada / salida se duplicarán.

4) Hay dos situaciones en las que necesitamos procesar una gran cantidad de datos a la vez:

-copiar / mover un archivo grande (Hola Blu-ray);
-Leer-modificar-escribir un archivo (hola a las bases de datos).

En la versión clásica del disco duro, al copiar, leemos el bloque de datos en el búfer, movemos el bloque de cabezales a otra parte, escribimos datos, devolvemos un nuevo dato, con una pequeña cantidad de búfer, perdemos una gran cantidad de tiempo al mover el bloque de cabezas con una gran cantidad de datos . En el caso de una modificación de un solo archivo, llenamos el búfer, lo modificamos (esto se puede hacer en paralelo con la lectura, tan pronto como se reciben los primeros datos en la configuración requerida), y después de la modificación, escribimos. En un esquema modificado, podemos copiar el archivo a la velocidad máxima, leer los datos con un bloque de cabezales y escribir el segundo bloque a la velocidad más alta posible, que dependerá principalmente de la fragmentación del archivo, ahora para discos duros esto es posible si se usan dos unidades uno leyóescribir a otro

El segundo aspecto del funcionamiento del disco duro es su confiabilidad, y en particular las fallas típicas, omita las fallas lógicas del programa, esto debe repararse en otro lugar, solo mencionaré fallas que dependen de las características de diseño del disco duro:
  • bloqueo del husillo durante el inicio (bueno, existe la posibilidad de desplazar el husillo con una acción externa, iniciar el disco, leer los datos y enviarlo al reposo);
  • atascamiento del eje durante la operación (aquí las consecuencias ya dependen de su suerte);
  • , , , () ( , );
  • , , , , , ;
  • , , , , .

Todos saben que el mayor valor no es el costo del disco duro (hola $ -a), sino esos gigabytes de "información útil" cuidadosamente recopilada. Para guardar datos, se utilizan sistemas RAID de diferentes niveles, para lo cual es necesario usar varios discos duros. Aquí es donde surge la segunda idea ridícula : usar la tecnología RAID dentro de una sola unidad.

En el caso de una falla completa del disco, ciertamente no se guardará, pero en caso de pérdida de datos de 1-2 segmentos, ayudará completamente a corregir la situación.

El primer enfoque, que se implementa fácilmente mediante software, es colocar toda la superficie, o solo datos críticos o importantes (segmento 0, tabla de partición, archivos de configuración del sistema) utilizando la tecnología RAID 5: A + B = Suma, obteniendo dos partes de tres podemos restaurar fácilmente el tercero, la duplicación o duplicación se usa bastante, por ejemplo, varias entradas de la tabla maestra de archivos se duplican en NTFS, pero esto no ahorra mucho en caso de una falla grave, además, el "duplicado" pierde la mitad del volumen en el doble, mientras que en el caso de recopilar estadísticas segmentos ilegibles, es posible darse cuenta de la posibilidad de colocación de datos en un "A + B + C + D + E + E + F + G = I", perderemos 1/9 del volumen, pero aumentaremos la posibilidad de recuperación de datos en caso de pérdida de un segmento de datos.

El segundo enfoque relacionado con la modificación de la lógica del trabajo del controlador es usar datos con una suma de verificación para colocar datos no en una pista, sino en diferentes superficies de los discos, esta implementación salvará la situación cuando uno de los cabezales de trabajo dejó de responder por completo, siempre leemos los valores de otras superficies recibirán los datos iniciales, pero al guardar los datos podemos calmar solemnemente a la víctima.

En realidad, la tercera idea ridícula (aunque se refiere a unidades ya externas como clase) será la siguiente: delegar el soporte para la asignación de archivos y el soporte del sistema de archivos al controlador de disco.

gracias: owniumo
Ya tenemos : Disco duro cinético para almacenamiento de objetos escalable


Cómo esto ayudará: el procesador central solo transmitirá el descriptor de archivo y qué pieza necesita, dejando de distraerse por las interrupciones asociadas con la construcción de la cadena FAT, por ejemplo, y el controlador calculará dónde se almacenan las piezas especificadas y le dará al controlador solo la pieza deseada del archivo.

Puedes implementar esto:
  • desarrollo y reemplazo del firmware de fábrica (posiblemente en el hardware actual, pero costoso en términos de modificaciones posteriores y el número de opciones de disco, hola a los desarrolladores de aplicaciones móviles);
  • desarrollo de un sistema de archivos que admitirá el firmware de los fabricantes de discos;
  • desarrollo e implementación de un lenguaje de programación en el firmware con la ayuda de la cual puede describir el trabajo con el sistema de archivos

Aquí hay tres ideas ridículas que son difíciles de poner a prueba, pero no te dan una buena noche de sueño.

PD El uso aleatorio de marcas registradas o patentes es aleatorio. Todas las ideas originales están disponibles para su uso bajo un acuerdo de licencia de Ant Hill .

Source: https://habr.com/ru/post/es383225/


All Articles