Quotas de Disco en Linux


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 ( . .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:






Mapear un directorio desde fstap

Hola a todos, en esta ocacion les mostrare como mapear un directorio desde el carchivo /etc/fstap, hacer esto en muchos casos es muy conveniente ya que puedes trabajar desde el directorio donde te sientas mas agusto.
Primero les mostrare lo que hay en el directorio destino que al principio no debe haber nada por que lo voy a crear desde cero.


Ahora miren lo que hay en el directorio origen.


Como pueden ver son dos directorios totalmente diferentes uno esta vacio y el otro contiene una lista de subdirectorios, ahora lo que vamos hacer es que cada que se inicie el sistema el directorio /home se mapee al directorio /srv/home, esto lo hacemos de la siguiente forma desde el archivo /etc/fstap.


Como pueden ver lo unico que hice en este archivo fue agregar la ultima linea que esta resaltada con rojo y especifique en esta linea cual era el directorio que queria mapear y donde lo queria mapear, para que esta funcion sirva debemos especificar las opciones de montaje que en este caso la opcion es bind para poder mapear el contenido de este directorio a otro, Ahora miren el resultado despues de montar las particiones especificadas en el archivo /etc/fstap.




Con el comando mount -a monto las particiones del archivo y luego lo que hice fue listar el directorio donde mepie el contenido del directorio /home.

Ahora les mostrare como mapeamos un directorio por red, es lo mismo que conectar una unidad de red lo primero que debemos hacer es tener acceso al servidor donde esta la unidad que queremos conectar, en este caso la el servicio es samba.



Luego de tener acceso al servidor ahora vamos a la maquina y en el archivo /etc/fstap especificamos lo siguiente.


Agregamos la linea que esta resaltada en color Rojo y como ven solo es necesario especificar la ruta del directorio en el servidor y luego decirle donde queremos montarlo, despues de esto el tipo de sistema de archivos que en este caso es CIFS para trabajar con SAMBA y por ultimo las opciones con que vamos a montar esta unidad como es necesario autenticarnos en las opciones debe aparecer el nombre de usuario y la contraseña.

Ahora montamos las particiones que estan en el archivo fstap y deberiamos conectarnos al servidor por medio de esta unidad que conectamos en el archivo.



Y como ven ahi estan los mismo archivos que vimos al comienzo cuando ingresamos al servidor por medio grafico.
Espero que esta informacion les haya servido para afianzar sus conocimientos acerca de linux.

Contenidos de interes:
 

Geek By The System Copyright © 2011 -- Template created by O Pregador -- Powered by Blogger