Espacio reservado para root en un sistema de archivos, ¿por qué?

105

Entiendo que, de forma predeterminada, los sistemas de archivos recién creados se crearán con el 5% del espacio asignado para la raíz. También sé que puedes cambiar el espacio definido con:

tune2fs -m 1 /dev/sdXY

Sin embargo, tengo curiosidad acerca de cuál es el propósito real de este espacio reservado. ¿Tiene algún propósito práctico que merezca más del 5% de espacio en algunas circunstancias?

La razón por la que me he topado con esta pregunta es que recientemente construimos un almacén de archivos de 1TB, y no podía entender por qué un df -h nos hizo perder el 5% de nuestra capacidad.

adaptado
fuente
1
Bien, ahora eso es un desperdicio masivo de espacio 'no disponible'. Tal vez el 5% debería limitarse a tamaños de unidad más pequeños que X (por ejemplo, 5% del espacio en disco a un máximo de 100 MB).
tshepang
3
En mi sistema de archivos de 8 TB, 400 GB desaparecieron, ¡esta es la verdadera pérdida de espacio! :)
Ilia Rostovtsev

Respuestas:

102

Ahorrar espacio para procesos raíz importantes (y posibles acciones de rescate) es una de las razones.

Pero hay otro. Ext3 es bastante bueno para evitar la fragmentación del sistema de archivos, pero una vez que supera el 95% de su capacidad, ese comportamiento cae por el precipicio y, de repente, el rendimiento del sistema de archivos se vuelve un desastre. Por lo tanto, dejar un 5% reservado le da un búfer contra esto.

Ext4 debería ser mejor en esto, como lo explicó el desarrollador / gurú del sistema de archivos Linux Theodore Ts'o :

Si establece el recuento de bloques reservados en cero, no afectará mucho el rendimiento, excepto si se ejecuta durante largos períodos de tiempo (con muchas creaciones y eliminaciones de archivos) mientras el sistema de archivos está casi lleno (es decir, por encima del 95%), en ese momento estarás sujeto a problemas de fragmentación. El asignador de bloques múltiples de Ext4 es mucho más resistente a la fragmentación, porque se esfuerza mucho más por encontrar bloques contiguos, por lo que incluso si no habilita las otras funciones ext4, verá mejores resultados simplemente montando un sistema de archivos ext3 usando ext4 antes del sistema de archivos se llena por completo.

Si solo está utilizando el sistema de archivos para el archivo a largo plazo, donde los archivos no cambian muy a menudo (es decir, una gran tienda de mp3 o video), obviamente no importará.

mattdm
fuente
3
Como se señaló en superuser.com/a/1257550/38062 , estas cifras de "90%" y "95%" tienen su origen en las mediciones contra Berkeley FFS realizadas en la década de 1980. En las décadas posteriores, otras personas han desafiado esta sabiduría recibida repetida con frecuencia.
JdeBP
1
No hay mitigación de rendimiento para usuarios normales con este espacio reservado. Simplemente no obtendrán espacio en el dispositivo antes de lo esperado. Sin embargo, la raíz tendrá suficiente espacio para solucionar cualquier problema que llene el disco.
crististm
44

Si permite que otros inicien sesión en su sistema, a través de ssh, por ejemplo, tener estos 5% de bloques reservados garantiza que los usuarios externos no puedan llenar el disco. Incluso si no permite que otros inicien sesión en su sistema, los bloques reservados evitan que los programas que no se ejecutan como root llenen su disco.

LawrenceC
fuente
Gracias por esto, realmente luché con qué respuesta marcar como correcta: la respuesta fue votada como la primera y acertada, mattdm está marcado como correcto debido a los antecedentes y detalles adicionales que me ayudaron a entender el "Por qué" más.
suitupgeek
22

Con los bloques reservados a sus usuarios, y los servicios que se ejecutan como usuarios específicos en lugar de ejecutarse como root, no pueden llenar un sistema de archivos y potencialmente romper otras cosas que necesitan escribir en dicho sistema de archivos, aunque los servicios que se ejecutan como root aún pueden hacerlo completamente lleno por supuesto

También le brinda espacio para trabajar cuando los usuarios se quejan de que el disco está lleno o los servicios comienzan a fallar porque el sistema de archivos está lleno. Por ejemplo, podría archivar algunos archivos en archivos zip / gz / 7zip antes de eliminarlos (aunque si el sistema de archivos estuviera completamente lleno, es probable que tenga algún otro sistema de archivos disponible en el que pueda crear el archivo).

El 5% ha sido el valor predeterminado durante mucho tiempo, desde cuando los discos eran mucho más pequeños (decenas de megabytes en lugar de cientos de gigabytes), por lo que el 5% no era tanto. Afortunadamente, puede ajustarse fácilmente a un porcentaje menor como usted dice, o establecerse en un número específico de bloques si usa tune2fsla -ropción en lugar de -m. En ambos casos se puede dar un parámetro de 0 a convertir la reserva por completo - Yo no haría esto para /, /tmp, /vary así sucesivamente, pero es posible que desee para un sistema de archivos que sólo actúa como almacenamiento de usuario (por ejemplo un archivo- mundial compartir) o uno que solo contenga archivos de tamaño fijo (como máquinas virtuales de tamaño fijo) que solo crecerán cuando cree uno nuevo.

David Spillett
fuente
22

El valor predeterminado del 5% está destinado a particiones del sistema. Por ejemplo, si su espacio en disco se llena, los registros del sistema ( /var/log) y el buzón de la raíz ( /var/mail/root) aún pueden recibir información importante. Para una /homepartición de almacenamiento de datos o general, no es necesario dejar espacio para la raíz. Para necesidades especiales, puede cambiar el usuario que obtiene el espacio de emergencia ( tune2fs -u 1234).

Hay otra razón para no permitir que un sistema de archivos ext [234] se llene, que es la fragmentación .

Gilles
fuente