Teoría + comprensión profunda de experimentos del sistema de archivos Linux y análisis de registros

1. Conocimiento profundo del sistema de archivos de Linux

1. Descripción general de inodo y bloque

Los datos del archivo incluyen metainformación y datos reales. El
archivo se almacena en el disco duro. La unidad de almacenamiento más pequeña del disco duro es un "sector". Cada sector almacena un
bloque (bloque) de 512 bytes .

  • Ocho sectores consecutivos forman un bloque
  • Es la unidad más pequeña de acceso a archivos

inodo (nodo de índice)

  • La traducción al chino es "nodo índice", también llamado i-nodo.
  • Se utiliza para almacenar metainformación de archivos.
    Inserte la descripción de la imagen aquí

2. Contenido de inodo

El inodo contiene mucha metainformación del archivo, pero no incluye el nombre del archivo , por ejemplo:

  • Tamaño del archivo
  • UserID del propietario del archivo
  • GroupID del archivo
  • Permisos de lectura, escritura y ejecución de archivos
  • Marca de tiempo del archivo
  • ...

Utilice el comando stat para ver la información de inodo de un archivo

[root@localhost ~]# stat anaconda-ks.cfg

Los archivos del sistema Linux tienen tres atributos de tiempo principales

  • ctime (hora de cambio)
    última vez que se cambió el archivo o directorio (atributo)
  • atime (tiempo de acceso) la
    última vez que se accedió al archivo o directorio
  • mtime (tiempo de modificación) la
    última vez que se modificó el archivo o directorio (contenido)
    . La estructura del archivo de directorio
  • El directorio también es una especie de archivo
  • La estructura del archivo de directorio es la siguiente:
    Inserte la descripción de la imagen aquí

Cada inodo tiene un número. El sistema operativo usa el número de inodo para identificar diferentes archivos. El sistema Linux no usa el nombre de archivo, pero usa el número de inodo para identificar el archivo. Para los usuarios, el nombre de archivo es solo otro nombre para el número de inodo para una fácil identificación.

(1) El número del inodo

Cuando un usuario accede a un archivo, parece que el usuario abre el archivo a través del nombre del archivo, pero el proceso interno real del sistema se divide en los siguientes tres pasos:

  • El sistema encuentra el número de inodo correspondiente a este nombre de archivo
  • Obtener información de inodo por número de inodo
  • De acuerdo con la información del inodo, busque el bloque donde se encuentran los datos del archivo y lea los datos

Hay dos formas comunes de ver el número de inodo:

  • ls -i Comando: ver directamente el número de inodo correspondiente al nombre del archivo
  • stat Comando: Ver el número de inodo viendo la información del inodo del archivo
[root@localhost ~]# stat anaconda-ks.cfg
或者
[root@localhost ~]# ls -i anaconda-ks.cfg 

Por lo tanto, cuando un usuario intenta acceder a un archivo en el sistema Linux, el sistema primero encontrará su inodo correspondiente según el nombre del archivo para ver si el usuario tiene permiso para acceder al archivo. Si lo hay, apunta al bloque de datos correspondiente, si no, devuelve Permiso denegado.

La estructura de un disco duro después de la partición es como se muestra en la siguiente figura:
Inserte la descripción de la imagen aquí

(2) Resumen de almacenamiento de archivos

Inserte la descripción de la imagen aquí

(3) El tamaño del inodo

Inode también consume espacio en el disco duro, por lo que al formatear, el sistema operativo divide automáticamente el disco duro en dos áreas. Uno es el área de datos, que almacena los datos del archivo; el otro es el área de inodo, que almacena la información contenida en el inodo. El tamaño de cada inodo es generalmente de 128 bytes o 256 bytes. Normalmente, no es necesario prestar atención al tamaño de un único inodo, sino al número total de inodos. El número total de inodos se da al formatear, ejecute el comando "df -i" para ver el número total de inodos correspondientes a cada partición del disco duro y el número de inodos ya utilizados.

[root@localhost ~]# df -i

Debido a la separación del número de inodo y el nombre del archivo, algunos sistemas Unix / Linux tienen los siguientes fenómenos únicos:

  • El nombre del archivo contiene caracteres especiales y es posible que no se elimine normalmente. En este momento, elimine el inodo directamente, que puede desempeñar el papel de eliminar archivos
  • Mueva archivos o cambie el nombre de los archivos, simplemente cambie el nombre del archivo sin afectar el número de inodo
  • Después de abrir un archivo, el sistema utilizará el número de inodo para identificar el archivo, independientemente del nombre del archivo.

Esta situación hace que las actualizaciones de software sean simples, y las actualizaciones se pueden realizar sin apagar el software, sin reiniciar. Porque el sistema reconoce el archivo en ejecución mediante el número de inodo, no el nombre del archivo. Al actualizar, el archivo de la nueva versión generará un nuevo inodo con el mismo nombre de archivo, que no afectará al archivo en ejecución. Cuando se ejecute el software la próxima vez, el nombre del archivo apuntará automáticamente al archivo de la nueva versión y se reciclará el inodo del archivo de la versión anterior.

3. Vincular archivos

Hay dos tipos de archivos de enlace en el sistema Linux: uno es similar al archivo de función de acceso directo de Windows, que se puede conectar rápidamente al archivo o directorio de destino, llamado enlace suave ; el otro es a través del enlace de inodo del sistema de archivos. El nuevo nombre de archivo generado en lugar del nuevo archivo se denomina vínculo físico .

Inserte la descripción de la imagen aquí

① Enlace duro

Generalmente, existe una correspondencia uno a uno entre el nombre del archivo y el número de inodo, y cada número de inodo corresponde a un nombre de archivo. Pero el sistema Linux permite que varios nombres de archivos apunten al mismo número de inodo. Esto significa que puede acceder al mismo contenido con diferentes nombres de archivo.

El formato básico del comando de creación de enlaces físicos es:
Inserte la descripción de la imagen aquí

Después de ejecutar este comando, el archivo de origen y el archivo de destino tienen el mismo número de inodo y ambos apuntan al mismo inodo. El "número de enlaces" en la información del inodo aumentará en 1.

Cuando un archivo tiene varios vínculos físicos, la modificación del contenido del archivo afectará a todos los nombres de archivo, pero eliminar un nombre de archivo no afecta el acceso de otro nombre de archivo. Eliminar un nombre de archivo solo reducirá el "número de enlaces" en el inodo en 1. Cabe señalar que no se permiten enlaces físicos a directorios.

Use el comando mkdir para crear un nuevo directorio / app / kgc, el número de enlaces físicos debe ser 2, porque el directorio común en sí es un enlace físico y el directorio oculto bajo el directorio kgc. (Punto) es otro directorio de este directorio Los enlaces físicos también se pueden considerar como 1 conexión.

②Conexión suave

Un enlace suave es para crear un archivo separado, y este archivo permitirá que la lectura de datos apunte al nombre del archivo al que está conectado. Por ejemplo, aunque los números de inodo del archivo A y del archivo B son diferentes, el contenido del archivo A es la ruta del archivo B. Al leer el archivo A, el sistema dirigirá automáticamente al visitante al archivo B. En este momento, el archivo A se denomina "enlace flexible" o "enlace simbólico" del
archivo B. Esto significa que el archivo A depende del archivo B y existe. Si se elimina el archivo B, abra el archivo A Se informará un error. Esta es la mayor diferencia entre enlaces blandos y enlaces duros: el archivo A apunta al nombre de archivo del archivo B, no al número de inodo del archivo B, y el "número de enlaces" del inodo del archivo B no cambiará.
La creación de enlaces blandos El formato básico del comando es:
Inserte la descripción de la imagen aquí

4. Recuperación de archivos de tipo EXT

Eliminar un archivo en realidad no borra los datos del nodo y bloque de inodo, sino que elimina el nombre del archivo en el bloque en el directorio padre del archivo. Linux controla la eliminación de archivos por el número de enlaces. Solo cuando no hay ningún enlace en un archivo, el archivo se eliminará.

En la operación y mantenimiento de sistemas Linux, a menudo nos encontramos con situaciones en las que se pierden datos de archivos debido a operaciones descuidadas y errores operativos, especialmente para algunos principiantes en empresas cliente. Por supuesto, lo que se quiere decir aquí es la eliminación completa, es decir, la situación que no se puede recuperar a través de la "papelera de reciclaje", como usar "rm
-rf" para eliminar datos. Para el sistema de archivos EXT en Linux, las herramientas de recuperación disponibles son debugfs, ext3grep, extundelete, etc. Entre ellos, extundelete es una herramienta de recuperación de datos de Linux de código abierto que admite sistemas de archivos ext3 y ext4.

Después de que los datos se eliminan por error, lo primero que debe hacer es desinstalar la partición donde se encuentran los datos eliminados. Si los datos de la partición raíz se eliminan por error, debe ingresar al sistema en modo de usuario único y configurar la partición raíz en modo de solo lectura Montar. La razón de esto es muy simple, porque después de eliminar el archivo, solo se borra el puntero de sector en el nodo inodo del archivo. El archivo real aún se almacena en el disco. Si el disco continúa montado en modo lectura-escritura, estos se eliminan Los bloques de datos de los archivos pueden ser reasignados por el sistema operativo. Una vez que estas bases de datos se sobrescriben con datos nuevos, estos datos se pierden realmente y las herramientas de recuperación también son débiles. Por lo tanto, montar el disco en modo de solo lectura puede minimizar el riesgo de que los datos se sobrescriban en la base de datos y aumentar el porcentaje de recuperación exitosa de datos.

experimentar

[root@localhost ~]# yum -y install e2fsprogs-devel e2fsprogs-libs
[root@localhost	~]#	wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar. bz2
[root@localhost ~]# tar -jxvf extundelete-0.2.4.tar.bz2
[root@localhost ~]# cd extundelete-0.2.4
[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete&& make && make install
[root@localhost extundelete-0.2.4]# ln -s /usr/local/extundelete/bin/* /usr/bin/
[root@localhost ~]# fdisk -l
[root@localhost ~]# fdisk /dev/sdb                      ###进入并创建硬盘分区
[root@localhost ~]# mkfs.ext3 /dev/sdb1
[root@localhost ~]# mkdir /data/
[root@localhost ~]# mount /dev/sdb1 /data/ 
[root@localhost ~]# cd /data/ 
[root@localhost test]# echo a > a 
[root@localhost test]# echo b > b 
[root@localhost test]# echo c > c 
[root@localhost test]# echo d > d 
[root@localhost test]# ls
[root@localhost test]# rm -rf a b                      ###模拟故障
[root@localhost ~]# umount /data/                      ###开始恢复
[root@localhost ~]# extundelete /dev/sdb1 --restore-all
[root@localhost ~]# ls
[root@localhost ~]# cd RECOVERED_FILES/
[root@localhost RECOVERED_FILES]# ls                   ###可以查看到被删除的a和b

Copia de seguridad y recuperación de archivos de tipo 5.xfs

La herramienta extundelete solo puede restaurar archivos de tipo EXT y no puede restaurar archivos de tipo xfs de forma predeterminada en los sistemas CentOS 7. Actualmente no existe una herramienta de recuperación de archivos madura para el sistema de archivos xfs, por lo que se recomienda realizar una copia de seguridad de los datos con anticipación para evitar la pérdida de datos.

Los archivos de tipo xfs se pueden respaldar y restaurar utilizando las herramientas xfsdump y xfsrestore. Si las herramientas xfsdump y xfsrestore no están instaladas en el sistema, puede instalarlas mediante el comando yum install -y xfsdump. xfsdump realiza una copia de seguridad de un sistema de archivos xfs en orden de inodo. Hay dos niveles de respaldo para xfsdump: 0 significa respaldo completo; 1-9 significa respaldo incremental. El nivel de copia de seguridad predeterminado de xfsdump es 0. El formato de comando de xfsdump es: xfsdump -f ubicación de almacenamiento de respaldo en la ruta de respaldo o archivo de dispositivo.

Los parámetros de copia de seguridad más utilizados incluyen los siguientes:

  • f: especifique el directorio del archivo de respaldo;
  • L: especifique la etiqueta de sesión de etiqueta;
  • M: etiqueta de medios de etiqueta de dispositivo designada;
  • s: Realice una copia de seguridad de un solo archivo, la ruta no puede ser seguida directamente por -s.

experimentar

[root@localhost ~]# fdisk /dev/sdb                                 ###进入并创建硬盘分区
[root@localhost ~]# partprobe /dev/sdb
[root@localhost ~]# mkfs.xfs /dev/sdb1
[root@localhost ~]# mkdir /date
[root@localhost ~]# mount /dev/sdb1 /date/
[root@localhost ~]# cd /date 
[root@localhost date]# cp /etc/passwd ./ 
[root@localhost date]# mkdir test 
[root@localhost date]# touch test/a 
[root@localhost date]# tree /date
[root@localhost ~]# xfsdump -f /opt/dump_sdb1 /dev/sdb1            ###使用 xfsdump 命令备份整个分区
please enter label for this dump session (timeout in 300 sec)
-> dump_sdb1	                                                   ###指定备份会话标签
please enter label for media in drive 0 (timeout in 300 sec)
-> sdb1	                                                           ###指定设备标签,就是对要备份的设备做一个描述
[root@localhost ~]# xfsdump   -I	                               ###查看备份信息与内容
[root@localhost ~]# cd /date/                                      ###开始删除之前创建的内容,模拟数据丢失
[root@localhost date]# ls passwd test
[root@localhost date]# rm -rf ./* 
[root@localhost date]# ls 
[root@localhost ~]# xfsrestore -f /opt/dump_sdb1 /date/            ###开始恢复
[root@localhost ~]# ls /date/

Al usar xfsdump, debe prestar atención a las siguientes limitaciones:

  • xfsdump no admite la copia de seguridad del sistema de archivos que no está montado, por lo que solo se puede realizar una copia de seguridad del sistema de archivos montado;
  • xfsdump debe usar privilegios de root para operar (involucrando las relaciones del sistema de archivos);
  • xfsdump solo puede respaldar el sistema de archivos XFS;
  • Los datos (archivos o medios de almacenamiento) respaldados por xfsdump solo pueden ser analizados por xfsrestore;
  • xfsdump distingue cada archivo de respaldo por el
    UUID del sistema de archivos , por lo que no se pueden respaldar dos sistemas de archivos con el mismo UUID.

Inserte la descripción de la imagen aquí

Dos, analiza el archivo de registro

1. Archivos de registro

Inserte la descripción de la imagen aquí

2. Registros del kernel y del sistema

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

3. Registro de usuario

Inserte la descripción de la imagen aquí

4. Registro del programa

Inserte la descripción de la imagen aquí

5. Estrategia de gestión de registros

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/ZG_66/article/details/107559563
Recomendado
Clasificación