¿Un sistema de archivos "ve" el dispositivo de almacenamiento como una matriz de bytes (muy grande)?

12

Quiero saber cómo escribe y lee un sistema de archivos desde un dispositivo de almacenamiento.

Creo que así es como funciona:

Un sistema de archivos no accede directamente al dispositivo de almacenamiento, sino que el dispositivo de almacenamiento se presenta (mediante el controlador del dispositivo del dispositivo de almacenamiento) al sistema de archivos como una matriz de bytes (muy grande).

Por ejemplo, si el sistema de archivos desea acceder a un disco duro, simplemente accederá a la matriz de bytes que representa el disco duro.

De esta manera, un sistema de archivos puede funcionar con cualquier tipo de dispositivo de almacenamiento (disco duro tradicional, SSD, unidad flash USB, etc.), y solo se cambia el controlador de dispositivo para el dispositivo de almacenamiento.

Esta imagen muestra lo que acabo de explicar:

¿Tengo razón en mi comprensión?

    
pregunta joseph_m 23.06.2017 - 12:23

2 respuestas

15

En Linux (y en la era de la década de 1980, Unixes), un dispositivo de almacenamiento (muy a menudo una partición de disco en algunos disco duro , o en algunos SSD ) es un bloque dispositivo (consulte this ) así que es una secuencia [sub-] de blocks (que es la unidad básica de Physical I / O) . El tamaño del bloque físico depende del hardware (los discos IDE antiguos tenían un tamaño de bloque de 512 bytes, los nuevos discos grandes SATA tienen una tamaño de bloque de 4Kbytes, lea wikipage de Formato avanzado ), y cuando cree un sistema de archivos (con, por ejemplo, mkfs , vea mke2fs (8) ) puede especificar un tamaño de bloque lógico que sea múltiple (a menudo una pequeña potencia de dos, incluido 1) de ese tamaño de bloque físico. Lea también sobre direccionamiento de bloques lógicos .

En el pasado (piense en las estaciones de trabajo Sun3 de la década de 1990) el disco estaba hecho de cilindros con cabezas organizadas en sectores (lea CHS wikipage), con un sector que contiene un bloque. Hoy en día, aún permanecen, pero son un artefacto artificial provisto por el controlador del disco duro (el circuito en el propio disco). En algunos sistemas operativos, el controlador de dispositivo de bloque reprogramó y reordenó las solicitudes de IO para minimizar el movimiento de la cabeza del disco y latencia rotacional .

  

De esta manera, un sistema de archivos puede funcionar con cualquier tipo de dispositivo de almacenamiento (disco duro tradicional, SSD, unidad flash USB, etc.), y solo se cambia el controlador de dispositivo para el dispositivo de almacenamiento.

Sí, pero el mal está en los detalles (p. ej., lea sobre TRIM y Write Amplification , específico de los SSD). Y los detalles son importantes, por lo que la implementación real es menos simple que su figura. Lea más sobre sistemas de archivos (y piense en clustered & sistemas de archivos remotos, incluidos SMB & NFS ; lea también acerca de Logical Volume Manager ).

Lea Sistemas operativos: tres piezas sencillas (y su persistencia parte).

Observe que los dispositivos de bloque desaparecen en FreeBSD (en realidad, proporciona Una abstracción común para dispositivos de caracteres y bloques. Sospecho que incluso en Windows el sistema operativo conoce las particiones, el tamaño del bloque, etc. (pero debe verificar).

    
respondido por el Basile Starynkevitch 23.06.2017 - 12:33
3

Todo lo que dice Basile Starynkevitch es correcto. Añadiré un poco más. De hecho, las unidades de disco eran unidades de "bloque", pero los dispositivos de bloque (y muchos otros dispositivos) se presentaron en dos formas: "en bruto" y "cocinado". Los dispositivos sin formato solo se podían tratar en fragmentos que eran múltiplos de su tamaño de almacenamiento nativo. Por lo tanto, un dispositivo de disco sin formato solo se puede leer o escribir uno o varios bloques a la vez, no solo un byte o dos. Los dispositivos cocinados agregaron una capa que permitiría operaciones más pequeñas, así como varias otras características.

Los sistemas de archivos funcionaron con dispositivos en bruto y, por lo tanto, no los vieron como una gran variedad de bytes, sino como una gran variedad de bloques, como B.S. explicado.

    
respondido por el Topher 29.06.2017 - 20:51

Lea otras preguntas en las etiquetas