[Linux]Sistema de archivos

[Linux]Sistema de archivos

El sistema de archivos es una parte del sistema operativo que se encarga de organizar, almacenar y administrar archivos y directorios almacenados en dispositivos externos, así como la estrategia del sistema operativo para administrar archivos en dispositivos periféricos. Este artículo explica el sistema de archivos Ext2. El sistema operativo Linux utiliza la serie Ext de sistemas de archivos.

Comprender la estructura del disco

La estructura física del disco.

El disco es el único dispositivo mecánico de la computadora. Se utiliza como periférico para almacenar grandes cantidades de datos. El diagrama esquemático de la estructura física interna del disco es el siguiente:

imagen-20230714161627226

  • Disco (como el disco plateado en la imagen de arriba): compuesto por múltiples platos, cada lado de los cuales puede almacenar datos
  • Cabezal magnético: hay un cabezal magnético a cada lado de cada disco, y el cabezal magnético puede leer y escribir datos en la superficie del disco correspondiente.

El principio del almacenamiento de datos en disco: la esencia de los datos en una computadora es la diferencia entre 0 y 1, por lo que el disco solo necesita usar magnetismo para representar el 0 y 1 de los datos.

estructura de almacenamiento en disco

imagen-20230905144406099

La superficie de cada plato del disco se divide en varias partes:

  • Pista: la superficie del disco se divide en muchos círculos concéntricos. Cada círculo concéntrico se llama pista. Cada pista tiene un número y la más externa es la pista 0.
  • Sector: Cada pista se divide en varios sectores, la capacidad de almacenamiento de cada sector es de 512 bytes, cada sector tiene un número.

Los discos almacenan datos en unidades de sectores. Un archivo de disco ocupará uno o más sectores para su almacenamiento. Para cargar un archivo de disco en la memoria, debe ubicar uno o más sectores donde se encuentra el archivo de disco.

imagen-20230714163115337

Cómo localizar sectores:

  • Localice en qué superficie del disco se encuentran los datos, es decir, qué cabezal correspondiente está seleccionado.
  • Localice en qué pista del disco se encuentran los datos.
  • Ubica el sector en la pista donde se encuentran los datos.

Números correspondientes a culatas, cilindros (equivalentes a orugas) y sectores. Puede ubicar el sector al que desea acceder en el disco. Este método de posicionamiento de datos del disco se llama CHS.

Estructura lógica del disco

Las razones por las que es necesario abstraer los discos en estructuras lógicas:

  • El sistema operativo es software y el disco es hardware. Como periférico, los discos se pueden cambiar. Para evitar fallas en el modo de direccionamiento de la estructura física debido a cambios en los periféricos, el sistema operativo utiliza direcciones lógicas y deja la conversión lógica y física. a software intermedio Controlador de capa para lograr el desacoplamiento del sistema operativo y los periféricos
  • La unidad básica de almacenamiento en disco es de 512 bytes. Para reducir el número de IO y mejorar la eficiencia, la unidad básica de una operación de IO es 4 KB (redimensionable). El sistema operativo considera la unidad básica de un IO como un bloque, por lo que un Se requiere un conjunto de niveles de bloque.Dirección para acceder

imagen-20230905154453166

La estructura lógica de un disco es similar a una cinta estirada: un disco se abstrae en una cinta estirada y un círculo de cinta es similar a una pista. El diagrama de estructura lógica es el siguiente:

imagen-20230905194551006

El tamaño de un sector es de 512 bytes y la unidad básica de una operación IO del sistema operativo es 4 KB, por lo que el sistema operativo abstrae los datos de una operación IO en bloques de datos. El diagrama de estructura lógica es el siguiente:

imagen-20230905194510903

El sistema operativo finalmente abstrae todo el disco en múltiples bloques de datos consecutivos, es decir, convierte la estructura física en una estructura lógica lineal, por lo que el sistema operativo puede considerar el disco como una estructura de matriz con los subíndices correspondientes, y cada subíndice apunta a un bloque de datos. , cada subíndice también se denomina dirección de bloque lógico o LBA para abreviar. Después de que el sistema operativo trata el disco como una estructura de matriz, cada operación de IO consiste en encontrar la primera dirección del bloque de datos y luego leer el número correspondiente de sectores a partir de esta dirección.

Solución de almacenamiento para el sistema de archivos EXT2

El sistema operativo considera el disco como bloques de datos organizados por una estructura de matriz y, debido a la gran cantidad de bloques de datos, el sistema operativo divide la estructura de matriz en múltiples particiones. El diagrama de estructura lógica es el siguiente:

imagen-20230905194607220

Después de particionar el disco, el sistema operativo divide cada partición en varios grupos para una administración más conveniente. El diagrama de estructura lógica es el siguiente:

imagen-20230905195029269

  • Entre las muchas particiones de un disco, generalmente hay un área en la primera partición Boot Block, que almacena información relacionada con el inicio del sistema operativo. Cuando la computadora arranca, carga los datos del disco y usa los datos de esta área para completar el operación de arranque.

Después de dividir el disco en varios grupos, el sistema operativo aplica la política de administración de un grupo a cada grupo para administrar todo el disco. Las estrategias de gestión específicas del SO son las siguientes:

imagen-20230905195437760

  • Super Block: registra información importante del sistema de archivos de partición para que el sistema operativo pueda usar y administrar correctamente el sistema de archivos.

    • El sistema Linux utiliza la serie Ext de sistemas de archivos.
    • Super Block puede existir en cada grupo y se actualiza de manera uniforme para evitar que se dañe e inutilice todo el sistema de archivos.
  • Tabla de descriptores de grupo: registra la información detallada de los atributos de la reorganización.

  • Mapa de bits de bloque: cada bit indica si un bloque de datos en un bloque de datos está libre y disponible, y cada bit corresponde a un bloque de datos en un bloque de datos.

  • Mapa de bits de inodo: cada bit indica si un inodo está libre y disponible, y cada bit corresponde a un inodo en la tabla de inodos.

  • Tabla de inodos: registra los nodos de índice de todos los archivos de este grupo.

    • El registro interno del inodo son todos los atributos del archivo correspondiente. Debido a la previsibilidad de los atributos del archivo, el tamaño de un inodo es de 128 bytes.
    • Cada inodo tiene su propio número de inodo, y el número de inodo también corresponde al número de atributo del archivo.
    • El inodo registra internamente el número de bloque de datos correspondiente al almacenamiento del contenido del archivo.
  • Bloques de datos: registra el contenido del archivo.

    • El área de bloques de datos está dividida internamente en varios bloques de datos de 4 KB de tamaño.
    • El contenido de un archivo utilizará varios bloques de datos según el tamaño.

Cada una de las áreas anteriores del grupo puede utilizar varios bloques de datos.

Aplicaciones específicas del inodo.

  • El sistema operativo Linux distingue los archivos por su número de inodo y el nombre del archivo no se registra en el nodo de inodo.

  • Los directorios como archivos también tienen sus propios nodos de inodo.

  • Lo que se registra en el archivo del directorio es la relación de mapeo entre el número de inodo y el nombre del archivo en el directorio.

  • El proceso de consulta de archivos en el sistema operativo Linux:

    1. En el directorio correspondiente del archivo, busque el número de inodo del archivo correspondiente.
    2. Busque el grupo con el número de inodo correspondiente en la partición donde se encuentra el directorio correspondiente y combínelo con la tabla de inodo para encontrar el nodo de inodo del archivo.
    3. Encuentre el bloque de datos correspondiente a través del nodo de inodo.
  • El proceso de eliminación de archivos en el sistema operativo Linux:

    1. En el directorio correspondiente del archivo, busque el número de inodo del archivo correspondiente.
    2. Busque el grupo con el número de inodo correspondiente en la partición donde se encuentra el directorio correspondiente y combínelo con la tabla de inodo para encontrar el nodo de inodo del archivo.
    3. Establezca el mapa de bits en el mapa de bits del bloque correspondiente al bloque de datos registrado en el nodo de inodo en 0.
    4. Establezca el mapa de bits correspondiente al nodo de inodo en el mapa de bits de inodo en 0.
  • El proceso de agregar archivos en el sistema operativo Linux:

    1. Consulte el mapa de bits del inodo en el grupo del directorio donde se creará el archivo y busque el inodo no utilizado.
    2. Escriba los atributos del archivo en el inodo recién creado.
    3. Agregue la relación de mapeo entre el nombre del archivo y el número de inodo al bloque de datos del archivo en el directorio.
  • El proceso de modificación de archivos en el sistema operativo Linux:

    1. En el directorio correspondiente del archivo, busque el número de inodo del archivo correspondiente.
    2. Busque el grupo con el número de inodo correspondiente en la partición donde se encuentra el directorio correspondiente y combínelo con la tabla de inodo para encontrar el nodo de inodo del archivo. Si es un archivo vacío, el bloque de datos correspondiente se asignará de acuerdo con el tamaño de los datos escritos, el mapa de bits correspondiente del bloque de datos se establecerá en 1 y la información del bloque de datos se escribirá en el inodo.
    3. Actualice y escriba los datos modificados en el bloque de datos correspondiente.
  • Puede ver el número de inodo correspondiente al archivo usando el lscomando de Linux con opciones:-i

imagen-20230906185210904

Detalles adicionales

Recuperación de archivo

Si un archivo se elimina accidentalmente, primero evite las operaciones con el archivo para evitar que se sobrescriban los datos del archivo eliminado, y luego use el registro y otras técnicas para encontrar el número de inodo correspondiente al archivo eliminado y establezca el mapa de bits correspondiente al número de inodo en 1. correspondiente a El bloque de datos se establece en 1, completando así la recuperación del archivo.

La estrategia para encontrar el grupo correspondiente por número de inodo.

En una partición, el número de inodo utilizado por cada grupo tiene un rango. El grupo donde se encuentra el inodo se puede determinar rápidamente por el rango del número de inodo.

Finalización de la partición y agrupación

Al instalar el sistema operativo, las particiones se configurarán de acuerdo con el tamaño de cada partición especificado por el usuario, y luego se formateará cada partición. El formateo es cuando el sistema operativo escribe información de administración del sistema de archivos en la partición.

La estrategia de grabación de inodos en los bloques de datos correspondientes.

El nodo de inodo utiliza una matriz para registrar el bloque de datos correspondiente, de modo que se pueda determinar el tamaño del nodo de inodo. Sin embargo, si un dato en la matriz solo puede corresponder a un bloque de datos, entonces el bloque de datos que un nodo de inodo puede apuntar es limitado, por lo que el nodo inodo utiliza La estrategia de indexación de tres niveles asigna el bloque de datos correspondiente, dividiendo la matriz en tres partes, y cada parte adopta un método de indexación diferente.

  • Índice directo: el bloque de datos correspondiente al número de bloque de datos registrado en la matriz es el contenido del archivo.

imagen-20230906194729795

  • Índice secundario: el bloque de datos correspondiente al número del registro de matriz registra los números de otros bloques de datos. Los bloques de datos correspondientes a los números de bloque de datos registrados en el bloque de datos almacenan el contenido del archivo.

imagen-20230906200755543

  • Índice de tercer nivel: el bloque de datos correspondiente al número del registro de matriz registra los números de otros bloques de datos. Los bloques de datos correspondientes a los números de bloque de datos registrados en el bloque de datos también almacenan los números de otros bloques de datos y estos números apuntan a Un bloque de datos que almacena el contenido del archivo.

imagen-20230906200729829

Problemas con el mapeo de inodos

La solución de almacenamiento EXT2 tiene un problema de agrupación, los bloques de datos se agotan, los inodos no se agotan o los inodos se agotan y los bloques de datos no se agotan, y si ocurre esta situación, no se puede resolver.

Enlaces blandos y duros

Crea enlaces blandos y duros

  • Crear enlaces suaves: en los sistemas Linux, ln -s 被链接的文件名 软链接名字el comando puede crear enlaces suaves.

imagen-20230906204649180

  • Cree un vínculo físico: en los sistemas Linux, ln 被链接的文件名 硬链接名字el comando puede crear un vínculo físico.

imagen-20230906204755632

La diferencia entre enlaces blandos y duros

  • Enlace suave:

    • Un enlace suave tiene su propio número de inodo y es un archivo independiente.
    • El enlace suave almacena la información de la ruta del archivo vinculado.

    imagen-20230906205521110

  • Enlace duro:

    • Los enlaces físicos y los archivos vinculados comparten el mismo número de inodo, y los enlaces físicos y los archivos vinculados utilizan el mismo inodo.
    • La esencia de crear un enlace físico es agregar un conjunto de asignaciones entre números de inodo y nombres de archivos en el directorio, y realizar una operación +1 en el recuento de referencias en el inodo correspondiente.
    • Cuando el recuento de referencias en el inodo es 0, significa que el archivo no tiene un nombre de archivo ni su asignación de número de inodo, y el archivo se eliminará.

imagen-20230906205541812

Escenarios de uso de enlaces físicos y blandos

  • Los enlaces suaves son adecuados para situaciones en las que la ruta a un determinado archivo es engorrosa. Puede acceder al archivo sin ingresar la ruta o escribirla. La función es similar al acceso directo en el sistema Windows.

imagen-20230906210227330

  • Los enlaces físicos permiten que los sistemas Linux funcionen utilizando rutas relativas.

imagen-20230907101923784

De hecho, hay un enlace físico en cada directorio .. El enlace es el directorio actual. .El enlace físico implementa la función de acceder a archivos en el directorio actual con una ruta relativa.

imagen-20230907102632778

Después de crear un nuevo directorio en el directorio, el sistema Linux creará un ..enlace físico para el nuevo directorio. El enlace es el directorio de nivel superior. ..El enlace físico implementa la función de acceder a los archivos del directorio de nivel superior utilizando una ruta relativa.

Se puede ver que la cantidad de enlaces físicos en un directorio (en el directorio ..) = la cantidad de directorios en el directorio + 2 (el directorio en sí y el directorio .):

imagen-20230907103328715

Nota: Los usuarios no pueden crear enlaces físicos a directorios para evitar problemas de bucle de ruta. El sistema mantiene los enlaces físicos del directorio por sí mismo.

tres veces de archivo

  • Acceder a la última hora de acceso
  • Modificar el contenido del archivo hora de la última modificación
  • Cambiar propiedad hora de la última modificación

stat 文件名Verifique la información del archivo, incluidas las tres veces del archivo:

imagen-20230907104607935

Cuando se accede a un archivo, la hora de acceso se actualiza:

imagen-20230907104658713

Nota: En la última versión de Linux, para ahorrar tiempo perdido causado por las operaciones de IO, si solo ve los datos, es posible que el tiempo de acceso no se modifique inmediatamente.

Cuando se modifica el contenido del archivo, se actualizarán los tiempos de Modificación y Cambio:

imagen-20230907105102128

Al modificar los atributos del archivo, se actualizará la hora de cambio:

imagen-20230907105256043

Supongo que te gusta

Origin blog.csdn.net/csdn_myhome/article/details/132733284
Recomendado
Clasificación