Entonces, un cliente mío recibió un correo electrónico de Linode hoy diciendo que su servidor estaba haciendo explotar el servicio de respaldo de Linode. ¿Por qué? Demasiados archivos Me reí y luego corrí:
# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda 2.5M 2.4M 91K 97% /
Mierda. 2,4 millones de inodos en uso. ¿Qué demonios ha estado pasando?
He buscado los sospechosos obvios ( /var/{log,cache}y el directorio desde donde están alojados todos los sitios) pero no encuentro nada realmente sospechoso. En algún lugar de esta bestia, estoy seguro de que hay un directorio que contiene un par de millones de archivos.
Para el contexto uno de mis mis servidores ocupados utiliza 200k inodos y mi escritorio (una vieja instalación con más de 4 TB de almacenamiento ocasión) es sólo algo más de un millón. Hay un problema.
Entonces mi pregunta es, ¿cómo puedo encontrar dónde está el problema? ¿Hay un dupara inodes?
fuente

Respuestas:
Verifique
/lost+founden caso de que haya un problema de disco y se haya detectado una gran cantidad de basura como archivos separados, posiblemente de forma incorrecta.Verifique
iostatsi alguna aplicación todavía produce archivos como locos.find / -xdev -type d -size +100kle dirá si hay un directorio que usa más de 100kB de espacio en disco. Ese sería un directorio que contiene muchos archivos, o que contenía muchos archivos en el pasado. Es posible que desee ajustar la figura del tamaño.No creo que haya una combinación de opciones para GNU
dupara que cuente 1 por entrada de directorio. Puede hacerlo produciendo la lista de archivosfindy contando un poco en awk. Aquí hay unadupara inodes. Probado mínimamente, no intenta hacer frente a los nombres de archivo que contienen nuevas líneas.Uso:
du-inodes /. Imprime una lista de directorios no vacíos con el recuento total de entradas en ellos y sus subdirectorios de forma recursiva. Redireccione la salida a un archivo y revísela a su gusto.sort -k1nr <root.du-inodes | headte dirá los mayores delincuentes.fuente
awk: line 2: find: regular expression compile failed (bad class -- [], [^] or [) [^ awk: line 2: syntax error at or near ] `/tmp/tmpw99dhs': Permission deniedPuede verificar con este script:
Esto imprime los 10 subdirectorios principales por conteo de archivos. Si desea una x superior, cambie
headconhead -n x, dondexes un número natural mayor que 0.Para obtener resultados 100% seguros, ejecute este script con privilegios de root:
fuente
10: read: Illegal option -d... borró la-dbandera de lareadesperanza de que no pasara nada malo. Te avisará cuando termine de ejecutarse ...A menudo más rápido que buscar, si su base de datos de localización está actualizada:
Esto descarga toda la base de datos de localización, elimina todo lo que haya pasado el último '/' en la ruta, luego la ordenación y "uniq -c" le dan el número de archivos / directorios por directorio. "sort -n" se canalizó a tail para obtener los diez directorios con más cosas en ellos.
fuente
find /path/to/parent -xdev > filelistprimero, luego dirija directamente para leer la entrada de esa lista.Otro sugiere:
http://www.iasptk.com/20314-ubuntu-find-large-files-fast-from-command-line
Use estas búsquedas para encontrar los archivos más grandes en su servidor.
Encuentra archivos de más de 1 GB
Encuentra archivos de más de 100 MB
Encuentra archivos de más de 10 MB
La primera parte es el comando de búsqueda que utiliza el indicador "-size" para buscar archivos de diferentes tamaños medidos en kilobytes.
El último bit al final que comienza con "-exec" permite especificar un comando que queremos ejecutar en cada archivo que encontramos. Aquí el comando "ls -lh" para incluir toda la información que se ve al enumerar el contenido de un directorio. La h hacia el final es especialmente útil, ya que imprime el tamaño de cada archivo en un formato legible para humanos.
fuente
Esto funcionó para mí cuando el otro falló en Android a través del shell:
fuente
Me gusta usar algo como
du --inodes -d 1encontrar un directorio que recursivamente o directamente contenga muchos archivos.También me gusta esta respuesta: https://unix.stackexchange.com/a/123052
fuente