¿Qué sucede si elimino perdido + encontrado

38

Cuando crea algunos sistemas de archivos Linux como ext3, se crea un directorio 'perdido + encontrado'. De acuerdo con esto, los archivos se colocarán allí si los archivos se dañaron por algún tipo de bloqueo del sistema.

¿Qué sucede si este directorio se elimina y el sistema se bloquea? Si se elimina la carpeta, ¿puedo crear un nuevo directorio con mkdir perdido + encontrado o hay atributos que solo se pueden establecer cuando se está creando el sistema de archivos?

Zoredache
fuente

Respuestas:

35

fsck recreará el directorio perdido + encontrado si falta.

En el inicio, la mayoría de las distribuciones ejecutan fsck si se detecta que el sistema de archivos no se desmonta limpiamente. Como fsck crea el directorio perdido + encontrado si falta, lo creará y colocará todo lo que encuentre en ese directorio.

Dave Cheney
fuente
15

Si no puede o no desea ejecutar fsck, puede volver a crear los lost+founddirectorios con mklost+found:

mklost + found preasigna bloques de disco al directorio perdido + encontrado de modo que cuando se ejecuta e2fsck (8) para recuperar un sistema de archivos, no es necesario asignar bloques en el sistema de archivos para almacenar una gran cantidad de archivos no vinculados. Esto asegura que e2fsck no tendrá que asignar bloques de datos en el sistema de archivos durante la recuperación.

Andrés
fuente
En RHEL 6.4, ni fscktampoco e2fsckdonde recrear esto por mí, no importa si el directorio se monta o no. cd <root-dir-of-the-mount> && mklost+foundlo hizo.
Luis Antolín Cano
7

Un directorio perdido + encontrado preexistente con un tamaño lo suficientemente grande como para contener una gran cantidad de archivos no vinculados supone una carga menor para e2fsck para crear el directorio y aumentarlo al tamaño apropiado.

Todavía intentará hacerlo, pero ante un sistema de archivos corrupto, puede ser más arriesgado.

Los fsck muy antiguos para otros sistemas de archivos en otras plataformas no pudieron crear / perder + encontrar, ni pudieron hacer crecer. Esta es la historia de la justificación de / lost + found. Pero la lógica actual es simplemente facilitar el trabajo de e2fsck.

carlito
fuente
44
No es que no puedan crear el objeto perdido + encontrado, es que es una mala idea crear archivos / directorios en un sistema de archivos que ya está arruinado. En cambio, simplemente preconstruye un directorio que ya es lo suficientemente grande como para almacenar las entradas de directorio de los inodos masticados que encuentre en un sistema de archivos arruinado cuando intente limpiarlo.
chris
5

Si no tiene lost+found, e2fsck(no he inspeccionado el código para otras fsckimplementaciones) le ofreceré crearlo. Pero también puede recrearlo usted mismo si lo desea; No hay nada particularmente especial en ese directorio (al menos no al inspeccionar el código).

Chris Jester-Young
fuente
2
fsck debería recrear perdido + encontrado si es necesario, ¿no?
David Schmitt
2
Gracias, he comprobado el código de e2fsck y, de hecho, ofrece recrearlo para usted. (Sin embargo, esto no está garantizado para tener éxito, razón por la cual también es útil un perdido + encontrado pre-creado). ¡Genial!
Chris Jester-Young
66
@ ChrisJester-Young: su respuesta es incorrecta. lost+foundes un directorio especial Tiene bloques de disco previamente asignados para que las herramientas de recuperación no necesiten asignar bloques durante la recuperación. Las herramientas como mklost+foundexisten específicamente porque mkdirno lo crearán correctamente. Ver linux.die.net/man/8/mklost+found
aggregate1166877
2

e2fsck recreará lo perdido + encontrado, y también destruirá cualquier archivo que pueda estar en el camino con el mismo nombre para asegurarse de que pueda crearlo como un directorio.

Tenga en cuenta que muchos sistemas de archivos de Unix más antiguos exigían que perdida + encontrada se adjunte específicamente al inodo número 2, de ahí la necesidad de volver a crear el sistema de archivos en la mayoría de los casos si el directorio se pierde. e2fsck simplemente busca cualquier inodo libre, aparentemente no necesita específicamente el inodo 2, lo que hace que la recuperación sea mucho más simple que en los viejos tiempos.

Alex North-Keys
fuente
1

Puede crear ese directorio simplemente usando mkdir. Debe ser propiedad de root, con un grupo de root o wheel. Aparte de eso, no hay nada especialmente especial al respecto. En el caso de una falla de energía o apagado incorrecto cuando el sistema se inicia, debería iniciar automáticamente fsck. fsck pasará por el sistema e intentará recuperar los archivos corruptos que encuentre. Cualquier archivo que se encuentre que esté potencialmente dañado se moverá allí.

El otro caso para que los archivos se muevan allí es si fsck encuentra un archivo cuyo inodo principal falta. Este suele ser el caso si un bloque se corrompe en el disco en la ubicación específica donde se almacena el inodo de una carpeta. Reasignará su inodo principal para que sea la carpeta perdida + encontrada.

Editar: no estoy seguro de si este último caso volverá a crear el directorio. Lo dejaría solo para estar seguro. No se me ocurre ninguna razón para eliminarlo. Sin embargo, nada malo sucederá sin él.

TrueDuality
fuente
1
¿Estás seguro de que está bien solo para crear mkdir?
Sí, la asignación de espacio no está vinculada al inodo de los directorios ni a la ruta. La asignación de espacio reservado es más una señal en alguna memoria que requiere privilegios de raíz / kernel y llamadas especiales para acceder de las cuales fsck está al tanto, solo utiliza ese espacio copiando archivos potencialmente corruptos o rotos en esa memoria y creando un archivo con un inodo apuntando a la nueva memoria. Las operaciones de archivo se comportarán normalmente en esos archivos, pero cualquier cambio, como mover o guardar, extraerá los datos de la memoria reservada.
TrueDuality
1

Además, en Debian 6 y Ubuntu 12 LTS, se cronenvió el paquete /etc/cron.daily/standardque detecta los lost+founddirectorios que faltan en los sistemas de archivos locales y envía recordatorios diarios al respecto por correo electrónico, recomendando el uso de mklost+found.

Sin embargo, esto se eliminó en el momento de Debian 7 y Ubuntu 14 LTS, respectivamente, porque se había vuelto obsoleto.

Josip Rodin
fuente