¿Qué hace fsck -p (preen) en ext4?

16

Estaba leyendo una publicación de blog sobre la reparación del sistema de archivos y el autor publicó una buena pregunta ... fsck -pse supone que corrige errores menores automáticamente sin intervención humana. Pero, ¿qué solucionará exactamente cuando se le indique que preen el sistema de archivos? ¿Qué errores solucionará y qué hará que se detenga y le diga al usuario que debe ejecutar fsck de forma interactiva? ¿Hay una lista de algún tipo?

He estado buscando en Google y todo lo que encuentro es la página de manual, que realmente no dice qué -psolucionará o qué activará la bandera práctica. Estoy específicamente interesado en el sistema de archivos ext4.

Bart Silverstrim
fuente

Respuestas:

18

La respuesta a su pregunta se encuentra en el e2fsck/problems.carchivo del código fuente de e2fsprogs . Buscar la PR_PREEN_OKbandera debería ayudarlo a comenzar.

Como el manejo completo de errores es un poco más complicado, debido a la multitud de diferentes condiciones de error que pueden ocurrir, se le recomienda que observe más de cerca el código si le preocupa un caso específico. Sin embargo, las listas a continuación se extrajeron de los comentarios a las condiciones de error y deberían darle una visión general aproximada sobre los efectos del modo preen.

Los siguientes errores / advertencias se manejan actualmente automáticamente cuando -pse especifica el indicador:

  • Reubicar pista
  • El inodo del diario no es válido
  • El superbloque de diario está corrupto
  • El indicador de superbloque has_journal está claro pero tiene un diario
  • El indicador Superblock needs_recovery está establecido pero no está presente el diario
  • La revisión del sistema de archivos es 0, pero las banderas de características están configuradas
  • Sugerencia de superbloque para superbloque externo
  • Descriptor de grupo N marcado sin inicializar sin conjunto de características.
  • mapa de bits del bloque del grupo N no inicializado pero mapa de bits de inodo en uso.
  • El descriptor de grupo N tiene un recuento de inodes no utilizado no válido.
  • Mapa de bits del último bloque de grupo sin inicializar.
  • Se establece el indicador test_fs (y ext4 está disponible)
  • El último tiempo de montaje es en el futuro (fraudulento)
  • El último tiempo de escritura es en el futuro (falsificado)
  • La suma de comprobación del grupo de bloque (pregunta de bloqueo) no es válida.
  • El directorio raíz tiene establecido dtime
  • El inodo reservado tiene mal modo
  • El inodo eliminado tiene cero dtime
  • Inode en uso, pero dtime establecido
  • Directorio de longitud cero
  • Inode tiene i_size incorrecto
  • Inode tiene i_blocks incorrectos
  • Superbloque malo en grupo
  • Descriptores de grupo de bloque incorrecto en grupo
  • Bloque reclamado sin motivo
  • Error al asignar bloques para reubicar metadatos
  • Error al asignar el búfer de bloque durante el proceso de reubicación
  • Reubicar la información del grupo de metadatos de X a Y
  • Reubicar la información del grupo de metadatos a X
  • Error de lectura de bloque durante el proceso de reubicación
  • Error de escritura de bloque durante el proceso de reubicación
  • Indicador inmutable establecido en un dispositivo o inodo de socket
  • Tamaño distinto de cero para dispositivo, quince o zócalo
  • La revisión del sistema de archivos es 0, pero las banderas de características están configuradas
  • El inodo del diario no está en uso, pero contiene datos
  • El diario tiene mal modo
  • Indicador INDEX_FL establecido en un sistema de archivos no HTREE
  • Indicador INDEX_FL establecido en un no directorio
  • Nodo raíz no válido en el directorio HTREE
  • Versión hash no compatible en el directorio HTREE
  • Indicador incompatible en el nodo raíz HTREE
  • HTREE demasiado profundo
  • inode inválido-> i_extra_isize
  • entrada de ea no válida-> e_name_len
  • entrada de ea no válida-> e_value_offs
  • entrada de ea no válida-> e_value_block
  • entrada ea inválida-> e_value_size
  • entrada ea inválida-> e_hash
  • falta inodo EXTENTS_FL, pero es un inodo de extensión
  • Inode no debe tener EOFBLOCKS_FL establecido
  • La entrada del directorio tiene un inodo eliminado o no utilizado
  • Tipo de archivo de directorio no establecido
  • Tipo de archivo de directorio establecido en el sistema de archivos
  • Nodo raíz HTREE no válido
  • Límite HTREE no válido
  • Recuento de HTREE no válido
  • El nodo interior HTREE tiene hashes fuera de orden en la tabla
  • Inode encontrado en el grupo donde se establece _INODE_UNINIT
  • Inodo encontrado en el área de inodes del grupo no utilizado
  • i_blocks_hi debería ser cero
  • / perdido + encontrado no encontrado
  • Inodo de longitud cero no conectado
  • Inode ref cuenta mal
  • El relleno al final del mapa de bits de inodo no está configurado.
  • El relleno al final del mapa de bits del bloque no está configurado.
  • Bloquear encabezado de diferencias de mapa de bits
  • Bloque no utilizado, pero marcado en mapa de bits
  • Bloque usado, pero no marcado usado en mapa de bits
  • Bloquear diferencias de mapa de bits final
  • Cabecera de diferencias de mapa de bits de Inode
  • Inode no utilizado, pero marcado en mapa de bits
  • Inode usado, pero no marcado usado en bitmap
  • Inode diferencias de mapa de bits final
  • Los inodos libres cuentan para el grupo incorrecto
  • Los directorios cuentan para el grupo incorrecto
  • Los inodos libres cuentan mal
  • Los bloques gratuitos cuentan para el grupo incorrecto
  • Los bloques libres cuentan mal
  • Rango de bloque no utilizado, pero marcado en mapa de bits
  • Rango de bloque utilizado, pero no marcado como utilizado en mapa de bits
  • Rango de inodo no utilizado, pero marcado en mapa de bits
  • Rango de inodo usado, pero no marcado usado en mapa de bits
  • Grupo N bloque (s) en uso pero el grupo está marcado BLOCK_UNINIT
  • Grupo N inodo (s) en uso pero el grupo está marcado INODE_UNINIT
  • Recree el diario si se establece el indicador E2F_FLAG_JOURNAL_INODE

Las siguientes condiciones de error provocan el aborto del proceso fsck no interactivo, incluso si -pse establece el indicador:

  • Bloquear mapa de bits no en grupo
  • El mapa de bits de Inode no está en el grupo
  • La tabla de inodo no está en el grupo
  • El tamaño del sistema de archivos es incorrecto
  • El recuento de inodos en el superbloque es incorrecto
  • Hurd no admite la función de tipo de archivo
  • El diario tiene un tipo de superbloque desconocido
  • Pregunte si deberíamos borrar el diario
  • El superbloque de diario tiene un conjunto de indicadores de características de solo lectura desconocido
  • El superbloque de diario tiene un conjunto de indicadores de características incompatibles desconocidos
  • El diario tiene un número de versión no compatible
  • Pregunte si deberíamos ejecutar el diario de todos modos
  • Bloques reservados sin resize_inode
  • Resize_inode no está habilitado, pero cambiar el tamaño del inodo no es cero
  • Cambiar tamaño de inodo no válido
  • El último tiempo de montaje es en el futuro
  • El último tiempo de escritura es en el futuro
  • la suma de comprobación del descriptor de grupo N no es válida.
  • El directorio raíz no es un inodo
  • El mapa de bits de bloque entra en conflicto con algún otro bloque fs
  • Inode bitmap entra en conflicto con algún otro bloque fs
  • La tabla de Inode entra en conflicto con algún otro bloque fs
  • El mapa de bits del bloque está en un bloque incorrecto
  • Inode bitmap está en un bloque defectuoso
  • Número de bloque ilegal en inodo
  • El número de bloque se superpone a los metadatos de fs
  • Inode tiene bloqueos ilegales (pregunta de cierre)
  • Demasiados bloques malos en inodo
  • Número de bloque ilegal en inodo de bloque incorrecto
  • El inodo de bloque incorrecto tiene bloques ilegales (pregunta de bloqueo)
  • Bloque incorrecto utilizado como bloque indirecto bloque incorrecto
  • La inconsistencia no se puede solucionar
  • Mensaje de bloqueo primario incorrecto
  • Suprimir mensajes de solicitud
  • Indicador Imagic establecido en un inodo cuando el sistema de archivos no lo admite
  • Indicador de compresión establecido en un inodo cuando el sistema de archivos no lo admite
  • Tratar con inodos que eran parte de una lista enlazada huérfana
  • Tratar con inodos que formaban parte de una lista enlazada huérfana corrupta (pregunta de cierre)
  • Error al leer el bloque de atributos extendidos
  • Bloque de atributo extendido no válido
  • Recuento de referencia de atributo extendido incorrecto
  • Múltiples bloques EA no compatibles
  • Error de colisión de asignación de EA
  • Nombre de atributo extendido incorrecto
  • Valor de atributo extendido incorrecto
  • Inode demasiado grande (pregunta de cierre)
  • Directorio demasiado grande
  • Archivo normal demasiado grande
  • Enlace simbólico demasiado grande
  • El bloque defectuoso tiene un bloqueo indirecto que entra en conflicto con el bloqueo del sistema de archivos
  • Cambiar el tamaño del inodo falló
  • el inodo parece ser un directorio
  • Error al leer el árbol de extensión
  • Error al iterar extensiones
  • Bloque inicial malo en extensión
  • La extensión termina más allá del sistema de archivos
  • Indicador EXTENTS_FL establecido en un sistema de archivos sin extensión
  • inodo tiene extensiones, falta superbloque INCOMPAT_EXTENTS
  • El enlace simbólico rápido tiene EXTENTS_FL establecido
  • Las extensiones están fuera de servicio.
  • Inode tiene un nodo de extensión no válido
  • ¿Clonar bloques duplicados / malos?
  • Número de inodo incorrecto para '.'
  • La entrada del directorio tiene un número de inodo incorrecto
  • La entrada de dirección es un enlace a '.'
  • Los puntos de entrada del directorio al inodo ahora se encuentran en un bloque defectuoso
  • La entrada del directorio contiene un enlace a un directorio
  • La entrada del directorio contiene un enlace a la dirección raíz
  • La entrada del directorio tiene caracteres ilegales en su nombre
  • Desaparecido '.' en el directorio inode
  • Falta '..' en el directorio inode
  • La primera entrada en el directorio inode no contiene '.'
  • La segunda entrada en el directorio inode no contiene '..'
  • i_faddr debería ser cero
  • i_file_acl debería ser cero
  • i_dir_acl debería ser cero
  • i_frag debería ser cero
  • i_fsize debería ser cero
  • inodo tiene mal modo
  • directorio dañado
  • nombre de archivo demasiado largo
  • El inodo del directorio tiene un bloque faltante (agujero)
  • '.' no es NULL terminado
  • '..' no es NULL terminado
  • Dispositivo de caracteres ilegales inode
  • Dispositivo de bloqueo ilegal inodo
  • Duplicar '.' entrada
  • Entrada duplicada
  • Rec_len final está mal
  • Error al leer el bloque de directorio
  • Error al escribir el bloque de directorio
  • Entrada de directorio para '.' es grande. ¿División?
  • Inodo FIFO ilegal
  • Enchufe ilegal inode
  • Tipo de archivo de directorio incorrecto
  • El nombre de archivo del directorio es nulo
  • Enlace simbólico no válido
  • i_file_acl (bloque de atributo extendido) es malo
  • El sistema de archivos contiene archivos grandes, pero no tiene ese indicador en SB
  • Borrar directorio HTREE no válido
  • Bloque defectuoso en el nodo interior de htree
  • Se encontró una entrada de directorio duplicada
  • Nombre de archivo no exclusivo encontrado
  • i_blocks_hi debería ser cero
  • Bloque inesperado de HTREE
  • Inodo de raíz no asignado
  • No hay espacio en perdido + encontrado
  • Inodo de directorio no conectado
  • .. la entrada es incorrecta
  • Perdido + encontrado no un directorio
  • Inodo desacoplado
  • Superbloque corrupto
  • Fragmentos no admitidos
  • Error al determinar el tamaño del dispositivo físico del sistema de archivos
  • El diario externo tiene (no soportado) múltiples sistemas de archivos
  • No puedo encontrar el diario externo
  • El diario externo tiene un superbloque malo
  • Superblock tiene un UUID de diario incorrecto
  • Error al asignar mapa de bits de inodo
  • Error al asignar mapa de bits de bloque
  • Error al asignar información de enlace icount
  • Error al asignar la matriz de bloque de directorio
  • Error al escanear inodes
  • Error al iterar sobre bloques
  • Error al almacenar información de recuento de inodo
  • Error al almacenar información de bloqueo de directorio
  • Error al leer el inodo (para borrar)
  • Error al asignar estructura de recuento
  • Error al leer el bloque de atributo extendido mientras se reparaba el recuento
  • Error al escribir el bloque de atributo extendido al corregir el recuento
  • Error al asignar la estructura de asignación de la región EA
  • Error al escanear inodes
  • Error al asignar mapa de bits de inodo
  • Error interno: no se pudo encontrar dir_info
  • Error al asignar la estructura icount
  • Error al iterar sobre bloques de directorio
  • Error al ubicar el inodo
  • Error al ajustar la cuenta de EA
  • Error al asignar mapa de bits de inodo
  • Error al crear el directorio raíz
  • El inodo raíz no es un directorio; abortando
  • No puede continuar sin un inodo raíz.
  • Error interno: no se pudo encontrar dir_info
  • Error de programación: los puntos finales de mapa de bits no coinciden
  • Error interno: fudging end of bitmap
  • Error al copiar en el mapa de bits de inodo de reemplazo
  • Error al copiar en el mapa de bits del bloque de reemplazo
Noé
fuente
Noah si sabes esto, ¿es posible crear / inyectar todos estos errores (o lo que sea posible)? Estoy tratando de investigar la causa de estos errores y la posible solución de estos errores.
AnkurTank