En esta ocasión les mostrare como implementar Quotas
de Disco en Linux, esta implementación es muy útil cuando queremos que un
usuario no se sobre pase de un límite de almacenamiento especificado, debido a que en nuestras organizaciones pueden haber
usuarios que no sean consientes o no tengan la cultura de guardar en sus
cuentas la información necesaria y no almacenar tanta basura en sus cuentas que
lo que hacen es saturar el disco duro del servidor.
El objetivo de esta entrada es que aprendamos a administrar
de una manera organizada el almacenamiento por usuarios que alojamos en
nuestros discos duros, al final de este post los usuarios no podrán almacenar
en su cuenta un tamaño máximo al que les especificaremos en la Quota, pero
hablemos ahora un poco acerca de la Teoría.
¿Qué son las Quotas de Disco?
Como lo hemos venido diciendo las Quotas de Disco es una implementación
que se hace para darle un límite de almacenamiento a un usuario especifico, también
se puede especificar una Quota para un directorio en especial, esta implementación
nos permite administrar y darle orden al almacenamiento que se haga en nuestra
unidad de almacenamiento o Disco Duro.
"En informática, una cuota de disco es un
límite establecido por el administrador del sistema que restringe ciertos
aspectos del uso del sistema de archivos en los sistemas
operativos modernos. El objetivo de la utilización de las cuotas de
disco es limitar la asignación de espacio en el disco duro de
una manera razonable." Wikipedia
Implementación
Bueno entrando en materia con la implementacion de esta funcion, lo primero que voy hacer es crear un volumen logico utilizando LVM donde voy a implementar las Quotas por usuarios y tambien por grupos.
Como pueden ver el volumen lo cree solo de 600 MB debemos
tener en cuenta esto para no asignar una Quota que sobre pase la capacidad de
la partición, Ahora lo que hare será montar la partición en un directorio
dentro del Sistema, en esta caso voy a utilizar el directorio /home para esto
voy a agregar una línea en el archivo /etc/fstap para que cuando inicie el
sistema suba automáticamente esta partición.
Si ven bien la línea resaltada en color Rojo verán que la partición
va a ser montada con unas opciones especiales las cuales son, ursquota y grpquota
esto lo hacemos para que la partición soporte Quotas de Usuario y Quotas de
Grupo.
Ahora lo que haremos es montar la partición en el directorio
/home, para esto utilizamos el comando mount -a para montar todo lo que
haya en el archivo /etc/fstap.
Como se muestra en la imagen anterior la particion se monto con las opciones que especificamos anteriormente, ahora ya tenemos una particion con soporte para Quotas verifiquemos que la particion si fue montada correctamente.
Ahora lo que haremos es chequear el soporte de las quotas para esta particion.
Para chequear la partición para verificar que si soporte
Quotas utilizamos el comando Quotacheck lo podemos lanzar sin ningún parámetro
o le podemos especificar que es lo que queremos chequear, en mi caso yo lo
lance con las opciones -ugmv.
u = Quota de usuario
g = Quota de Grupo
m = No-remount, evita que no se monte la partición como solo
lectura.
a = Esta opción la podemos utilizar para chequear todas las
particiones que soporten Quotas.
Luego de haber hecho el chequeo lance el comando quotaon /home para encender las Quotas en esta particion, para verificar que las quotas si se hayan encendido en la particion listamos los archivos en el directorio que hemos montado el volumen en esta caso ls -l /home y deberan haber dos archivos con el nombre de aquota.group y aquota.user dependiendo la version de quota que tengas en tu maquina.
Ahora lo que resta es especificar la quota para cada usuario, primero creare los usuarios en el sistema en este caso tendre 10 usuarios.
Para la creacion de estos usuarios utilice un script para automatizar el proceso, ahora que ya tenemos los usuarios procedamos a modificar la Quota por cada uno de ellos, para esto utilizamos el comando edquota
de la siguiente manera.
edquota -u
edquota -g
Esta es la sintaxis del comando, lo que va hacer es abrir un editor de texto donde podremos especificar la quota maxima de almacenamiento para cada usuario o para un grupo dependiendo la opcion que usemos.
Como ven en la imagen hay dos campos resaltados en color Rojo ya que hay dos formas de espesificar la Quota, una es por Bloques y la otra por Inodos.
Por Bloques:
Un bloque corresponde a 1KB osea que si un archivo pesa 1KB habra 1 bloque utilizado y la Quota se aplicara por la cantidad de Bloques que sean permitidos alamacenar por el ususario, por ejemplo si tienes un archivo que pese 2048 Bytes que equivalen a 2KB tendrias dos Bloques utilizados en ese archivo, en mi caso voy hacer la formula para saber cuanta es mi quota de almacenamiento en MB dependiendo los Bloques que especifique.
Total Bloques = 102400
1 Bloque = 1 KB
1 KB = 0.0009765625 MB
Formula: 102400 Bloques * 0.0009765625 MB = 100 MB
Miremos en consola si es verdadera esto.
Como pueden ver la quota para el usuario1 es de 100 MB.
Por Inodo:
"Un inodo o inode en inglés (Index Node) es un número que actúa
como apuntador para el sistema de archivos de Linux y le indica en que bloques
específicos del disco duro se encuentran los datos de un archivo. También el
inodo en su referencia guarda información sobre permisos, propietario,
atributos, etc. Se podría ver en una analogía simple que un inodo es como un
número de serie único para cada archivo del sistema y a través de este número
el sistema recupera sus datos (bloques) y sus atributos (permisos, propietario,
fechas, etc.)" LinuxTotal
Com podemos haber leido un inodo es una direccion unica que apunta a un archivo en especial, entonces si limitamos la cantidad de Inodos estamos limitando la cantidad de Archivos que puede almacenar un usuario.
Ejemplo:
El usuario2 tendra como quota limite 10 Inodos, como se muestra acontinuacion.
Ahora voy a entrar como el usuario2 y creare 9 archivos por que recuaerden que en cada direcorio hay dos subdirectorios que no se pueden borrar que son ( . y .bash_history ) para crear estos archivos voy a usar el comando For que me ayudara a autmatizar la creacion de estos archivos .txt, al lanzar este comando me debera aparecer error al crear el archivo 9.txt ya que se sobre pasa la Quota de Inodos.
Como ven solo me dejo crear 8 de los 9 archivos y luego me
saco un error donde me dice que la Quota se excedió, si miramos ahora cuantos archivos quedaron en este directorio con el usuario2 como propietario veremos que habran solo 10.
En la imagen se muestra que hay 12 archivos pero hay que descontar 2 de ellos que son los que aparecen resaltados en rojo.
Una ves entendido esto les explico sobre los parametros Soft y Hard que aparecen al momento de configurar la Quota,
El parametro Soft: quiere decir "Sueve" es un limitante para la Quota que te advierte que ya estas llegando al limite y te da un tiempo para que reduzcas la Quota borrando archivos, esta valor de tiempo se puede configurar con el comando edquota -t y en caso de que pase el tiempo establecido y no hayas reducido la quota ya no podras almacenar mas informacion con ese usuario.
El parametro Hard: Hard significa "Duro" es el limite de la quota, a diferencia de Soft esta opcion no te permite seguir almacenando mas informacion, lo que se especifique en esta opcion sera la cantidad maxima que puedas almacenar con ese usuario.
Ahora les mostrare algo que puede ser muy util cuando tenemos muchos usuarios y queremos que todos tengan el mismo prototipo de Quota o tenga la misma cantidad de almacenamiento que los demas, para esto usamos la opcion -p del comando edquota pero primero debemos haber configurado la quota de un usuario anteriormente, les mostrare como se realiza.
Primero voy hacer la demostracion con un solo usuario.
Como ven la configuracion de la Quota para el usuario1 se reflejo en la configuracion del usuario2, Ahora voy a lanzar un script que me copie el prototipo de la quota de usuario1 para los demas usuarios.
Creo que esta opcion les ayudara de mucho a automatizar la configuracion de muchos mas usuarios, imaginensen si tuvieran 100 usuarios esto les puede reducir el tiempo de ir usuario por usuario haciendo esto.
Espero esta informacion les haya servido, si tienen dudas con gusto se las respondere.
Sitios de Interes: