¿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 al dispositivo de almacenamiento directamente, sino que el dispositivo de almacenamiento se presenta (por 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 forma, 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 del dispositivo de almacenamiento.

Esta imagen muestra lo que acabo de explicar:

ingrese la descripción de la imagen aquí

¿Estoy correcto en mi entendimiento?

Respuestas:


15

En Linux (y en los Unixes de la década de 1980), un dispositivo de almacenamiento (a menudo una partición de disco en algún disco duro o en algún SSD ) es un dispositivo de bloque (vea esto ), así que es una [sub] secuencia de bloques (que es el unidad básica de E / S física ). 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 discos SATA grandes nuevos tienen un tamaño de bloque de 4Kbytes, lea el wikipage de formato avanzado), y cuando cree un sistema de archivos (con mkfs, por ejemplo , mke2fs (8)) puede especificar un tamaño de bloque lógico que es un múltiplo (a menudo una potencia pequeña de dos, incluido 1) de ese tamaño de bloque físico. Lea también sobre direccionamiento de bloque lógico .

En el pasado (piense en las estaciones de trabajo Sun3 de la década de 1990) el disco estaba hecho de cilindros con cabezales organizados en sectores (lea el wikipage de CHS ), con un sector que contiene un bloque. Hoy en día, estos aún permanecen, pero son un artefacto artificial proporcionado por el controlador del disco duro (el circuito en el propio disco). En algunos sistemas operativos, el controlador del dispositivo de bloque reprogramaba y reordenaba las solicitudes de E / S para minimizar el movimiento del cabezal del disco y la latencia rotacional .

De esta forma, 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 del dispositivo de almacenamiento.

Sí, pero lo malo está en los detalles (p. Ej., Leer sobre TRIM y Amplificación de escritura , específicos para 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 sistemas de archivos remotos y en clúster , incluidos SMB y NFS ; lea también sobre Logical Volume Manager ).

Lea los sistemas operativos: tres piezas fáciles (y su parte de persistencia ).

Tenga en cuenta que los dispositivos de bloque se han ido en FreeBSD (en realidad, proporcionan una abstracción común para los dispositivos de caracteres y bloques). Sospecho que incluso en Windows el sistema operativo sabe sobre particiones, tamaño de bloque, etc. (pero debe verificar).


Windows también maneja particiones en discos, y cada partición puede usar un sistema de archivos diferente (tal vez FAT-32 en uno y NTFS en otro). El sistema de archivos puede acceder a las particiones a nivel de bloque, o los bloques se pueden combinar en "grupos". En cualquier partición dada, el tamaño del clúster sería fijo.
Simon B

Más o menos lo sabía, porque MSDOS lo hizo principalmente.
Basile Starynkevitch

En realidad, FreeBSD todavía usa lo que usted llama "dispositivos de bloque". No hay forma de acceder a un disco duro que no sea una gran variedad de bloques. Solo se llaman dispositivos de caracteres / sin formato en FreeBSD. Todavía acceden al dispositivo como una gran variedad de bloques. Lo único que falta en FreeBSD es el almacenamiento en caché a nivel de dispositivo, que no es necesario ya que el sistema de archivos ya proporciona almacenamiento en caché.
juhist

3

Todo lo que dice Basile Starynkevitch es correcto. Agregaré 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: "sin procesar" y "cocidos". Los dispositivos sin formato solo se podían abordar en fragmentos que eran múltiplos de su tamaño de fragmento de almacenamiento nativo. Por lo tanto, un dispositivo de disco sin formato solo puede leerse o escribirse uno o varios bloques a la vez, no solo un byte o dos. Los dispositivos cocinados agregaron una capa que permitiría operaciones tan pequeñas, así como varias otras características.

Los sistemas de archivos trabajaron con dispositivos sin formato y, por lo tanto, no los vieron como una gran variedad de bytes, sino más bien como una gran variedad de bloques, como explicó BS.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.