Discussion:
inodes lleno
(demasiado antiguo para responder)
Francesco Moi
2004-02-09 15:13:33 UTC
Permalink
Hola.

Haciendo 'df -i', me he econtrado con este problema:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/hd1 100000 100000 0 100% /

Es decir, tengo el disco duro lleno de nodos. Por ello, tengo
muchos problemas para recibir el correo electrónico (los emails
son devueltos con el error 'disk quota exceeded'), y para
crear ficheros nuevos.

He borrado algunos de los ficheros que no me servían para nada,
y he conseguido liberar algo de espacio, pero me gustaría saber:

1) Cómo descubrir en qué directorios hay más nodos.
2) Cómo descubrir si 'sendmail' me está llenando algún directorio
de ficheros inútiles.
3) Si puedo aumentar el número de inodes disponible.

Gracias de antemano, y un saludo a todos/as.
Iván Sánchez Ortega
2004-02-09 15:25:53 UTC
Permalink
Francesco Moi dixit:

[...]
Post by Francesco Moi
He borrado algunos de los ficheros que no me servían para nada,
1) Cómo descubrir en qué directorios hay más nodos.
En aquellos en los que tengas más ficheros, o ficheros más grandes. Recuerda
que un i-nodo equivale a 4 KBs (si mal no recuerdo), y que un fichero menor
que 4 KBs ocupa dos i-nodos (uno para el propio fichero, y otro para los
meta-datos del fichero - fecha, nombre, permisos).

Por norma general, la definición de los ficheros *no* es lo preocupante. Así
que ponte a comprobar el tamaño de tus directorios con "du" en consola. Y,
si tienes modo gráfico, usa filelight o fsview.
Post by Francesco Moi
2) Cómo descubrir si 'sendmail' me está llenando algún directorio
de ficheros inútiles.
Comprueba el tamaño de /var/log , o bórralo directamente (después de leer
los logs por encima, claro).
Post by Francesco Moi
3) Si puedo aumentar el número de inodes disponible.
Borra cosas o aumenta el tamaño de la partición ;-)

- --
- ----------------------------------
Iván Sánchez Ortega -ivansanchez-arroba-escomposlinux-punto-org

http://acm.asoc.fi.upm.es/~mr/
Proudly running Debian Woody 3.0 Linux with 2.4.20 kernel, KDE3, and PHP4
generating this signature.
Uptime: 16:23:01 up 4:49, 3 users, load average: 0.16, 0.25, 0.20
J.A. Gutierrez
2004-02-10 08:51:11 UTC
Permalink
Iván Sánchez Ortega <ivansanchez-@rroba-escomposlinux-.punto.-org> wrote:
: -----BEGIN PGP SIGNED MESSAGE-----
: Hash: SHA1

: Francesco Moi dixit:

: [...]
:> He borrado algunos de los ficheros que no me servían para nada,
:> y he conseguido liberar algo de espacio, pero me gustaría saber:
:>
:> 1) Cómo descubrir en qué directorios hay más nodos.

: En aquellos en los que tengas más ficheros, o ficheros más grandes. Recuerda
: que un i-nodo equivale a 4 KBs (si mal no recuerdo), y que un fichero menor


Error: Lo que ocurre es que cuando se crea un sistema de ficheros
ext2/3, se debe reservar un numero concreto de inodos. Para calcular
este numero, por defecto, se toma un inodo por cada 4 Kb.

Se puede cambiar usando las opciones:

-T fs-type
-N number-of-inodes
-i bytes-per-inode

(Notese que "bytes-per-inode" no indica que el espacio ocupado
por un inodo cambie, si no que se reserva un inodo por cada tantos
bytes)

: que 4 KBs ocupa dos inodos (uno para el propio fichero, y otro para los
: meta-datos del fichero - fecha, nombre, permisos).

Eso no es correcto.

Cada fichero ocupa exactamente 1 inodo, independientemente
del tama~no del fichero. Ese inodo almacena cosas como
permisos, identificador del inodo, fechas, etc

(seria mas correcto decir cada enlace, ya que un fichero
puede tener p.e. dos hard links, y entonces obviamente, "ocupa"
dos inodos)


: Por norma general, la definición de los ficheros *no* es lo preocupante. Así
: que ponte a comprobar el tamaño de tus directorios con "du" en consola. Y,
: si tienes modo gráfico, usa filelight o fsview.

En este caso, evidentemente, si que es preocupante.

:> 2) Cómo descubrir si 'sendmail' me está llenando algún directorio
:> de ficheros inútiles.

: Comprueba el tamaño de /var/log , o bórralo directamente (después de leer
: los logs por encima, claro).

Eso no suele servir.
Salvo fallos gordos, el numero de ficheros de log es constante
(rotado por los procesos correspondientes).

Verifica mas bien que no tengas mensajes atascados (mailq); busca
ficheros modificados recientemente, busca directorios y ordenalos
por numero de links.

:> 3) Si puedo aumentar el número de inodes disponible.

: Borra cosas o aumenta el tamaño de la partición ;-)

mas que el tama~no de la particion, el numero de inodos del
sistema de ficheros correspondiente a esa particion.

Que yo sepa, no es posible incrementar el numero de inodos
sin hacer el tipico proceso backup-newfs-restore
--
finger ***@shiva.cps.unizar.es for PGP /
.mailcap tip of the day: / La vida es una carcel
application/ms-tnef; cat '%s' > /dev/null / con las puertas abiertas
text/x-vcard; cat '%s' > /dev/null / (A. Calamaro)
Francesco Moi
2004-02-10 19:11:42 UTC
Permalink
Gracias por la ayuda.

Haciendo un 'du' del total de directorios, me he encontrado
con:
249008 ./var/log/httpd

Es decir, el fichero de logs de Apache tiene casi 250.000 nodos,
¿correcto?.

Dentro de este directorio, tengo:
-rw-r--r-- 1 root root 5151164 Feb 10 11:10 access_log
-rw-r--r-- 1 root root 72596619 Feb 10 01:30 access_log.1
-rw-r--r-- 1 root root 234310 Feb 10 11:09 error_log
-rw-r--r-- 1 root root 2289687 Feb 10 01:31 error_log.1

¿Me puedo cargar estos ficheros (tengo hecha copia de seguridad)?

Gracias por anticipado.
Jaroslaw Filiochowski
2004-02-11 03:28:37 UTC
Permalink
Francesco Moi wrote:
| Gracias por la ayuda.
|
| Haciendo un 'du' del total de directorios, me he encontrado
| con:
| 249008 ./var/log/httpd
|
| Es decir, el fichero de logs de Apache tiene casi 250.000 nodos,
| ¿correcto?.

No.
'du' (a secas, sin aliases) saca el resultado en bloques de 512 bytes.
Dado que los inodes suelen ser de 4096 bytes, esos serían sobre unos 30.000

El problema que tienes se puede solucionar borrando ficheros (= inodos),
pero la causa puede ser básicamente una de estas:
- - que tengas demasiados ficheros pequeños, si el número de "ficheros +
directorios + algo más" supera el número de inodos
- - demasiados enlaces duros por ahí bailando, con lo que los directorios
ocupan más de la cuenta (una entrada por enlace)
- - demasiados enlaces blandos, cada uno ocupando entrada de directorio +
un inodo (para la ruta del fichero destino)

Soluciones:
- - 'du -lbs --exclude=. --exclude=.. * .* | sort -n'
- - 'find -type d -printf "%s %p/%n\n" | sort -n'
- - 'find -type l' y 'du -Lbs --exclude=. --exclude=.. * .* | sort -n'

| Dentro de este directorio, tengo:
| -rw-r--r-- 1 root root 5151164 Feb 10 11:10 access_log
| -rw-r--r-- 1 root root 72596619 Feb 10 01:30 access_log.1
| -rw-r--r-- 1 root root 234310 Feb 10 11:09 error_log
| -rw-r--r-- 1 root root 2289687 Feb 10 01:31 error_log.1
|
| ¿Me puedo cargar estos ficheros (tengo hecha copia de seguridad)?

Sí, en principio puedes cargarte todos los ficheros de /var/log (los
directorios posiblemente también)
Samuel
2004-02-11 08:28:08 UTC
Permalink
El Wed, 11 Feb 2004 04:28:37 +0100, Jaroslaw Filiochowski
Post by J.A. Gutierrez
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
| Gracias por la ayuda.
|
| Haciendo un 'du' del total de directorios, me he encontrado
| 249008 ./var/log/httpd
|
| Es decir, el fichero de logs de Apache tiene casi 250.000 nodos,
| ¿correcto?.
No.
'du' (a secas, sin aliases) saca el resultado en bloques de 512 bytes.
Dado que los inodes suelen ser de 4096 bytes, esos serían sobre unos 30.000
Me parece que no has dicho lo que querías decir. Un inodo no ocupa unos
4KB, sino que se reserva espacio para uno por cada por cada 4KB(equivale
a asumir ese tamaño como tamaño medio de fichero). Cada fichero "gasta"
un único i-node, así que lo que tiene que buscar este hombre son muchos
ficheros pequeños que muy probablemente estarán en /var o /tmp como han
explicado en este mismo hilo.

Saludos

Samuel

/--------------------------------------------------------\
|Samuel Moñux Salvador ----- smonux at telefonica.net|
|PGP Key pgp.rediris.es ----- KeyID 0x822583C2 |
\--------------------------------------------------------/

Loading...